stop(StopAppRequest request) {
(timeout, callback) -> waitGetAppStopped(response.getName(), timeout, callback), response);
}
- /** Updates the app with the supplied name. */
+ /**
+ * Updates the app with the supplied name. This is a full replacement: fields omitted from the
+ * request are cleared, so send the complete app.
+ */
public App update(UpdateAppRequest request) {
return impl.update(request);
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/AppsService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/AppsService.java
index ac6340281..c6984c6d6 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/AppsService.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/AppsService.java
@@ -80,7 +80,10 @@ GetAppPermissionLevelsResponse getPermissionLevels(
/** Stops the active deployment of the app in the workspace. */
App stop(StopAppRequest stopAppRequest);
- /** Updates the app with the supplied name. */
+ /**
+ * Updates the app with the supplied name. This is a full replacement: fields omitted from the
+ * request are cleared, so send the complete app.
+ */
App update(UpdateAppRequest updateAppRequest);
/** Updates the thumbnail for an app. */
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/ComputeStatus.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/ComputeStatus.java
index 19bc1f492..64a0a658c 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/ComputeStatus.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/ComputeStatus.java
@@ -9,7 +9,7 @@
@Generated
public class ComputeStatus {
- /** The number of compute instances used and billed for this application. */
+ /** The number of active compute instances currently used and billed for this application. */
@JsonProperty("active_instances")
private Long activeInstances;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/bundledeployments/CompleteVersionRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/bundledeployments/CompleteVersionRequest.java
index eca781d7c..b3712d682 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/bundledeployments/CompleteVersionRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/bundledeployments/CompleteVersionRequest.java
@@ -12,16 +12,13 @@
@Generated
public class CompleteVersionRequest {
/**
- * The reason for completing the version. Must be a terminal reason: VERSION_COMPLETE_SUCCESS,
- * VERSION_COMPLETE_FAILURE, or VERSION_COMPLETE_FORCE_ABORT.
+ * The reason for completing the version. Must be VERSION_COMPLETE_SUCCESS or
+ * VERSION_COMPLETE_FAILURE.
*/
@JsonProperty("completion_reason")
private VersionComplete completionReason;
- /**
- * If true, force-completes the version even if the caller is not the original creator. The
- * completion_reason must be VERSION_COMPLETE_FORCE_ABORT when force is true.
- */
+ /** If true, force-completes the version even if the caller is not the original creator. */
@JsonProperty("force")
private Boolean force;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayAPI.java
index 81e8288e0..7bfc75e26 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayAPI.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayAPI.java
@@ -87,6 +87,18 @@ public ModelService createModelService(CreateModelServiceRequest request) {
return impl.createModelService(request);
}
+ /**
+ * Creates a skill in a Unity Catalog schema and provisions its managed bundle storage. Specify
+ * its name in `skill_id`. The request contains an optional comment but no bundle bytes. Upload
+ * bundle files through the Files API, then call FinalizeSkill.
+ *
+ * You must be the owner of the parent schema or have `CREATE_VOLUME` and `USE_SCHEMA` on it,
+ * plus `USE_CATALOG` on the parent catalog.
+ */
+ public Skill createSkill(CreateSkillRequest request) {
+ return impl.createSkill(request);
+ }
+
public void deleteMcpService(String name) {
deleteMcpService(new DeleteMcpServiceRequest().setName(name));
}
@@ -150,6 +162,38 @@ public void deleteModelService(DeleteModelServiceRequest request) {
impl.deleteModelService(request);
}
+ public void deleteSkill(String name) {
+ deleteSkill(new DeleteSkillRequest().setName(name));
+ }
+
+ /**
+ * Deletes the skill identified by its resource name and makes its managed bundle path
+ * unavailable. Managed bundle data is deleted asynchronously. Optionally supply an `etag` to make
+ * the delete conditional on the skill not having changed since it was read.
+ *
+ *
You must be the owner of the skill or have `MANAGE` on it, plus `USE_CATALOG` on the parent
+ * catalog and `USE_SCHEMA` on the parent schema.
+ */
+ public void deleteSkill(DeleteSkillRequest request) {
+ impl.deleteSkill(request);
+ }
+
+ /**
+ * Finalizes a skill after its bundle is uploaded. This method reads SKILL.md through the Files
+ * API using the caller's authorization. Its YAML frontmatter must contain an
+ * agentskills.io-compliant `name` and a nonblank `description` within the configured UTF-8 byte
+ * limit. On success, it replaces `bundle_name` and `description`; refreshes `finalize_time`,
+ * `update_time`, and `updated_by`; and returns the updated skill. `comment` is preserved.
+ * Re-finalization uses the latest SKILL.md and is last-write-wins without an etag precondition.
+ * Validation failures do not change metadata.
+ *
+ *
You must be the owner of the skill or have `READ_VOLUME` on it, plus `USE_CATALOG` on the
+ * parent catalog and `USE_SCHEMA` on the parent schema.
+ */
+ public Skill finalizeSkill(FinalizeSkillRequest request) {
+ return impl.finalizeSkill(request);
+ }
+
public McpService getMcpService(String name) {
return getMcpService(new GetMcpServiceRequest().setName(name));
}
@@ -212,6 +256,20 @@ public ModelService getModelService(GetModelServiceRequest request) {
return impl.getModelService(request);
}
+ public Skill getSkill(String name) {
+ return getSkill(new GetSkillRequest().setName(name));
+ }
+
+ /**
+ * Returns the skill identified by its resource name.
+ *
+ *
You must be the owner of the skill or have `READ_VOLUME`, `READ_METADATA`, or `MANAGE` on
+ * it, plus `USE_CATALOG` on the parent catalog and `USE_SCHEMA` on the parent schema.
+ */
+ public Skill getSkill(GetSkillRequest request) {
+ return impl.getSkill(request);
+ }
+
/**
* Lists the MCP services in a Unity Catalog schema. Provide `parent` as
* `schemas/{catalog}.{schema}`. Results are paginated; pass the returned `next_page_token` to
@@ -282,6 +340,32 @@ public Iterable listModelServices(ListModelServicesRequest request
});
}
+ public Iterable listSkills(String parent) {
+ return listSkills(new ListSkillsRequest().setParent(parent));
+ }
+
+ /**
+ * Lists skills in a Unity Catalog schema. Provide `parent` as `schemas/{catalog}.{schema}`.
+ * Results are paginated; pass the returned `next_page_token` to fetch subsequent pages.
+ *
+ * Requires `USE_CATALOG` on the parent catalog and `USE_SCHEMA` on the parent schema. Only
+ * skills the caller can access as owner or through `READ_VOLUME`, `READ_METADATA`, or `MANAGE`
+ * are returned.
+ */
+ public Iterable listSkills(ListSkillsRequest request) {
+ return Paginator.newTokenPagination(
+ request,
+ impl::listSkills,
+ ListSkillsResponse::getSkills,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+
/**
* Updates an MCP service. Only the fields named in `update_mask` are changed; the resource name
* is immutable. Optionally supply an `etag` to make the update conditional on the MCP service not
@@ -328,6 +412,19 @@ public ModelService updateModelService(UpdateModelServiceRequest request) {
return impl.updateModelService(request);
}
+ /**
+ * Updates a skill. Only fields named in `update_mask` are changed; currently only `comment` is
+ * supported. The resource name is immutable. Optionally supply an `etag` to make the update
+ * conditional on the skill not having changed since it was read. Bundle files, grants, tags, and
+ * ownership are unchanged.
+ *
+ * You must be the owner of the skill or have `MANAGE` on it, plus `USE_CATALOG` on the parent
+ * catalog and `USE_SCHEMA` on the parent schema.
+ */
+ public Skill updateSkill(UpdateSkillRequest request) {
+ return impl.updateSkill(request);
+ }
+
public AiGatewayService impl() {
return impl;
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayImpl.java
index e0497f189..2ecb81d0f 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayImpl.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayImpl.java
@@ -91,6 +91,24 @@ public ModelService createModelService(CreateModelServiceRequest request) {
}
}
+ @Override
+ public Skill createSkill(CreateSkillRequest request) {
+ String path = "/api/2.1/unity-catalog/skills";
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request.getSkill()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, Skill.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
@Override
public void deleteMcpService(DeleteMcpServiceRequest request) {
String path = String.format("/api/2.1/unity-catalog/%s", request.getName());
@@ -160,6 +178,40 @@ public void deleteModelService(DeleteModelServiceRequest request) {
}
}
+ @Override
+ public void deleteSkill(DeleteSkillRequest request) {
+ String path = String.format("/api/2.1/unity-catalog/%s", request.getName());
+ try {
+ Request req = new Request("DELETE", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public Skill finalizeSkill(FinalizeSkillRequest request) {
+ String path = String.format("/api/2.1/unity-catalog/%s/finalize", request.getName());
+ try {
+ Request req = new Request("POST", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, Skill.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
@Override
public McpService getMcpService(GetMcpServiceRequest request) {
String path = String.format("/api/2.1/unity-catalog/%s", request.getName());
@@ -229,6 +281,23 @@ public ModelService getModelService(GetModelServiceRequest request) {
}
}
+ @Override
+ public Skill getSkill(GetSkillRequest request) {
+ String path = String.format("/api/2.1/unity-catalog/%s", request.getName());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, Skill.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
@Override
public ListMcpServicesResponse listMcpServices(ListMcpServicesRequest request) {
String path = "/api/2.1/unity-catalog/mcp-services";
@@ -281,6 +350,23 @@ public ListModelServicesResponse listModelServices(ListModelServicesRequest requ
}
}
+ @Override
+ public ListSkillsResponse listSkills(ListSkillsRequest request) {
+ String path = "/api/2.1/unity-catalog/skills";
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ListSkillsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
@Override
public McpService updateMcpService(UpdateMcpServiceRequest request) {
String path = String.format("/api/2.1/unity-catalog/%s", request.getName());
@@ -336,4 +422,22 @@ public ModelService updateModelService(UpdateModelServiceRequest request) {
throw new DatabricksException("IO error: " + e.getMessage(), e);
}
}
+
+ @Override
+ public Skill updateSkill(UpdateSkillRequest request) {
+ String path = String.format("/api/2.1/unity-catalog/%s", request.getName());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request.getSkill()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, Skill.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayService.java
index 01d02623b..b8d888d03 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayService.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AiGatewayService.java
@@ -65,6 +65,16 @@ ModelProviderService createModelProviderService(
*/
ModelService createModelService(CreateModelServiceRequest createModelServiceRequest);
+ /**
+ * Creates a skill in a Unity Catalog schema and provisions its managed bundle storage. Specify
+ * its name in `skill_id`. The request contains an optional comment but no bundle bytes. Upload
+ * bundle files through the Files API, then call FinalizeSkill.
+ *
+ *
You must be the owner of the parent schema or have `CREATE_VOLUME` and `USE_SCHEMA` on it,
+ * plus `USE_CATALOG` on the parent catalog.
+ */
+ Skill createSkill(CreateSkillRequest createSkillRequest);
+
/**
* Deletes the MCP service identified by its resource name. Optionally supply an `etag` to make
* the delete conditional on the MCP service not having changed since it was read.
@@ -103,6 +113,30 @@ void deleteModelProviderService(
*/
void deleteModelService(DeleteModelServiceRequest deleteModelServiceRequest);
+ /**
+ * Deletes the skill identified by its resource name and makes its managed bundle path
+ * unavailable. Managed bundle data is deleted asynchronously. Optionally supply an `etag` to make
+ * the delete conditional on the skill not having changed since it was read.
+ *
+ *
You must be the owner of the skill or have `MANAGE` on it, plus `USE_CATALOG` on the parent
+ * catalog and `USE_SCHEMA` on the parent schema.
+ */
+ void deleteSkill(DeleteSkillRequest deleteSkillRequest);
+
+ /**
+ * Finalizes a skill after its bundle is uploaded. This method reads SKILL.md through the Files
+ * API using the caller's authorization. Its YAML frontmatter must contain an
+ * agentskills.io-compliant `name` and a nonblank `description` within the configured UTF-8 byte
+ * limit. On success, it replaces `bundle_name` and `description`; refreshes `finalize_time`,
+ * `update_time`, and `updated_by`; and returns the updated skill. `comment` is preserved.
+ * Re-finalization uses the latest SKILL.md and is last-write-wins without an etag precondition.
+ * Validation failures do not change metadata.
+ *
+ *
You must be the owner of the skill or have `READ_VOLUME` on it, plus `USE_CATALOG` on the
+ * parent catalog and `USE_SCHEMA` on the parent schema.
+ */
+ Skill finalizeSkill(FinalizeSkillRequest finalizeSkillRequest);
+
/**
* Returns the MCP service identified by its resource name.
*
@@ -141,6 +175,14 @@ ModelProviderService getModelProviderService(
*/
ModelService getModelService(GetModelServiceRequest getModelServiceRequest);
+ /**
+ * Returns the skill identified by its resource name.
+ *
+ *
You must be the owner of the skill or have `READ_VOLUME`, `READ_METADATA`, or `MANAGE` on
+ * it, plus `USE_CATALOG` on the parent catalog and `USE_SCHEMA` on the parent schema.
+ */
+ Skill getSkill(GetSkillRequest getSkillRequest);
+
/**
* Lists the MCP services in a Unity Catalog schema. Provide `parent` as
* `schemas/{catalog}.{schema}`. Results are paginated; pass the returned `next_page_token` to
@@ -175,6 +217,16 @@ ListModelProviderServicesResponse listModelProviderServices(
*/
ListModelServicesResponse listModelServices(ListModelServicesRequest listModelServicesRequest);
+ /**
+ * Lists skills in a Unity Catalog schema. Provide `parent` as `schemas/{catalog}.{schema}`.
+ * Results are paginated; pass the returned `next_page_token` to fetch subsequent pages.
+ *
+ *
Requires `USE_CATALOG` on the parent catalog and `USE_SCHEMA` on the parent schema. Only
+ * skills the caller can access as owner or through `READ_VOLUME`, `READ_METADATA`, or `MANAGE`
+ * are returned.
+ */
+ ListSkillsResponse listSkills(ListSkillsRequest listSkillsRequest);
+
/**
* Updates an MCP service. Only the fields named in `update_mask` are changed; the resource name
* is immutable. Optionally supply an `etag` to make the update conditional on the MCP service not
@@ -214,4 +266,15 @@ ModelProviderService updateModelProviderService(
* for the model service owner. Adding an inference table additionally requires `CREATE_TABLE`.
*/
ModelService updateModelService(UpdateModelServiceRequest updateModelServiceRequest);
+
+ /**
+ * Updates a skill. Only fields named in `update_mask` are changed; currently only `comment` is
+ * supported. The resource name is immutable. Optionally supply an `etag` to make the update
+ * conditional on the skill not having changed since it was read. Bundle files, grants, tags, and
+ * ownership are unchanged.
+ *
+ *
You must be the owner of the skill or have `MANAGE` on it, plus `USE_CATALOG` on the parent
+ * catalog and `USE_SCHEMA` on the parent schema.
+ */
+ Skill updateSkill(UpdateSkillRequest updateSkillRequest);
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java
index 173dde824..515086420 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ConnectionType.java
@@ -35,6 +35,7 @@ public enum ConnectionType {
SQLDW,
SQLSERVER,
TERADATA,
+ TIKTOK_ADS,
UNKNOWN_CONNECTION_TYPE,
WORKDAY_RAAS,
ZENDESK,
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/CreateSkillRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/CreateSkillRequest.java
new file mode 100644
index 000000000..d799849f5
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/CreateSkillRequest.java
@@ -0,0 +1,87 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+@Generated
+public class CreateSkillRequest {
+ /**
+ * Name of the parent schema. Format: `schemas/{catalog}.{schema}`. Each `{...}` component is
+ * capped at 255 characters individually.
+ */
+ @JsonIgnore
+ @QueryParam("parent")
+ private String parent;
+
+ /**
+ * The skill to create. `comment` is the only accepted client input and may be omitted. Do not set
+ * `name`; the server derives it from `parent` and `skill_id`.
+ */
+ @JsonProperty("skill")
+ private Skill skill;
+
+ /**
+ * Name for the skill, e.g. "basic-math". The server normalizes this identifier to lowercase. It
+ * is independent of the bundle name read from SKILL.md.
+ */
+ @JsonIgnore
+ @QueryParam("skill_id")
+ private String skillId;
+
+ public CreateSkillRequest setParent(String parent) {
+ this.parent = parent;
+ return this;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public CreateSkillRequest setSkill(Skill skill) {
+ this.skill = skill;
+ return this;
+ }
+
+ public Skill getSkill() {
+ return skill;
+ }
+
+ public CreateSkillRequest setSkillId(String skillId) {
+ this.skillId = skillId;
+ return this;
+ }
+
+ public String getSkillId() {
+ return skillId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateSkillRequest that = (CreateSkillRequest) o;
+ return Objects.equals(parent, that.parent)
+ && Objects.equals(skill, that.skill)
+ && Objects.equals(skillId, that.skillId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(parent, skill, skillId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateSkillRequest.class)
+ .add("parent", parent)
+ .add("skill", skill)
+ .add("skillId", skillId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/DeleteSkillRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/DeleteSkillRequest.java
new file mode 100644
index 000000000..adf54cfea
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/DeleteSkillRequest.java
@@ -0,0 +1,63 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+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 DeleteSkillRequest {
+ /**
+ * Optimistic concurrency token from the most recent read. When set, the delete succeeds only if
+ * the resource has not changed. Leave unset for an unconditional delete. For REST requests,
+ * URL-encode the base64 string returned by the API when setting the `etag` query parameter.
+ */
+ @JsonIgnore
+ @QueryParam("etag")
+ private String etag;
+
+ /**
+ * Full resource name of the skill. Format: `skills/{catalog}.{schema}.{skill}`. Each `{...}`
+ * component is capped at 255 characters individually.
+ */
+ @JsonIgnore private String name;
+
+ public DeleteSkillRequest setEtag(String etag) {
+ this.etag = etag;
+ return this;
+ }
+
+ public String getEtag() {
+ return etag;
+ }
+
+ public DeleteSkillRequest 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;
+ DeleteSkillRequest that = (DeleteSkillRequest) o;
+ return Objects.equals(etag, that.etag) && Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(etag, name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(DeleteSkillRequest.class).add("etag", etag).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/FinalizeSkillRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/FinalizeSkillRequest.java
new file mode 100644
index 000000000..8183182de
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/FinalizeSkillRequest.java
@@ -0,0 +1,44 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+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 FinalizeSkillRequest {
+ /**
+ * Full resource name of the skill. Format: `skills/{catalog}.{schema}.{skill}`. Each `{...}`
+ * component is capped at 255 characters individually.
+ */
+ @JsonIgnore private String name;
+
+ public FinalizeSkillRequest 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;
+ FinalizeSkillRequest that = (FinalizeSkillRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(FinalizeSkillRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/GetSkillRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/GetSkillRequest.java
new file mode 100644
index 000000000..61c44640e
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/GetSkillRequest.java
@@ -0,0 +1,44 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+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 GetSkillRequest {
+ /**
+ * Full resource name of the skill. Format: `skills/{catalog}.{schema}.{skill}`. Each `{...}`
+ * component is capped at 255 characters individually.
+ */
+ @JsonIgnore private String name;
+
+ public GetSkillRequest 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;
+ GetSkillRequest that = (GetSkillRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(GetSkillRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListSkillsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListSkillsRequest.java
new file mode 100644
index 000000000..d0cdd558a
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListSkillsRequest.java
@@ -0,0 +1,87 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+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 ListSkillsRequest {
+ /**
+ * Maximum number of skills to return. Defaults to 100 when unset or 0; the maximum is 100. Use
+ * `page_token` to retrieve additional pages.
+ */
+ @JsonIgnore
+ @QueryParam("page_size")
+ private Long pageSize;
+
+ /** Opaque pagination token from a previous request. */
+ @JsonIgnore
+ @QueryParam("page_token")
+ private String pageToken;
+
+ /**
+ * Name of the parent schema. Format: `schemas/{catalog}.{schema}`. Each `{...}` component is
+ * capped at 255 characters individually.
+ *
+ *
Required: skill listing is schema-scoped, so `parent` must be set; an unset or empty
+ * `parent` is rejected with INVALID_PARAMETER_VALUE.
+ */
+ @JsonIgnore
+ @QueryParam("parent")
+ private String parent;
+
+ public ListSkillsRequest setPageSize(Long pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ public Long getPageSize() {
+ return pageSize;
+ }
+
+ public ListSkillsRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ public ListSkillsRequest 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;
+ ListSkillsRequest that = (ListSkillsRequest) o;
+ return Objects.equals(pageSize, that.pageSize)
+ && Objects.equals(pageToken, that.pageToken)
+ && Objects.equals(parent, that.parent);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(pageSize, pageToken, parent);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSkillsRequest.class)
+ .add("pageSize", pageSize)
+ .add("pageToken", pageToken)
+ .add("parent", parent)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListSkillsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListSkillsResponse.java
new file mode 100644
index 000000000..cdef8f889
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ListSkillsResponse.java
@@ -0,0 +1,60 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+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 listing skills. */
+@Generated
+public class ListSkillsResponse {
+ /** Pagination token for retrieving the next page of results. */
+ @JsonProperty("next_page_token")
+ private String nextPageToken;
+
+ /** The list of skills. */
+ @JsonProperty("skills")
+ private Collection skills;
+
+ public ListSkillsResponse setNextPageToken(String nextPageToken) {
+ this.nextPageToken = nextPageToken;
+ return this;
+ }
+
+ public String getNextPageToken() {
+ return nextPageToken;
+ }
+
+ public ListSkillsResponse setSkills(Collection skills) {
+ this.skills = skills;
+ return this;
+ }
+
+ public Collection getSkills() {
+ return skills;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListSkillsResponse that = (ListSkillsResponse) o;
+ return Objects.equals(nextPageToken, that.nextPageToken) && Objects.equals(skills, that.skills);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(nextPageToken, skills);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSkillsResponse.class)
+ .add("nextPageToken", nextPageToken)
+ .add("skills", skills)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/McpServiceConfigSourceConnection.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/McpServiceConfigSourceConnection.java
index de61b9bd9..880dc5a23 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/McpServiceConfigSourceConnection.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/McpServiceConfigSourceConnection.java
@@ -5,6 +5,7 @@
import com.databricks.sdk.support.Generated;
import com.databricks.sdk.support.ToStringer;
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
import java.util.Objects;
/**
@@ -30,6 +31,15 @@ public class McpServiceConfigSourceConnection {
@JsonProperty("name")
private String name;
+ /**
+ * Options needed to build the U2M authorize request, returned as a flat map. When set, it
+ * includes: `authorization_endpoint` (OAuth authorize URL), `token_endpoint` (token-exchange
+ * URL), `oauth_scope` (space-separated scopes to request), `client_id` (OAuth client id), and
+ * `oauth_provider` (the OAuth provider).
+ */
+ @JsonProperty("options")
+ private Map options;
+
public McpServiceConfigSourceConnection setIsDeleted(Boolean isDeleted) {
this.isDeleted = isDeleted;
return this;
@@ -48,17 +58,28 @@ public String getName() {
return name;
}
+ public McpServiceConfigSourceConnection setOptions(Map options) {
+ this.options = options;
+ return this;
+ }
+
+ public Map getOptions() {
+ return options;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
McpServiceConfigSourceConnection that = (McpServiceConfigSourceConnection) o;
- return Objects.equals(isDeleted, that.isDeleted) && Objects.equals(name, that.name);
+ return Objects.equals(isDeleted, that.isDeleted)
+ && Objects.equals(name, that.name)
+ && Objects.equals(options, that.options);
}
@Override
public int hashCode() {
- return Objects.hash(isDeleted, name);
+ return Objects.hash(isDeleted, name, options);
}
@Override
@@ -66,6 +87,7 @@ public String toString() {
return new ToStringer(McpServiceConfigSourceConnection.class)
.add("isDeleted", isDeleted)
.add("name", name)
+ .add("options", options)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth.java
new file mode 100644
index 000000000..86f51ac71
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth.java
@@ -0,0 +1,72 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+/**
+ * Header-based API-key authentication for a custom provider: the secret is forwarded on outbound
+ * requests under a caller-chosen HTTP header, as `: `.
+ */
+@Generated
+public class ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth {
+ /**
+ * HTTP header name that carries the API key on outbound requests (e.g.,
+ * `Ocp-Apim-Subscription-Key`). The value forwarded under this header is supplied via
+ * `api_key_value`.
+ */
+ @JsonProperty("api_key_name")
+ private String apiKeyName;
+
+ /**
+ * Secret value forwarded under the `api_key_name` header on outbound requests. Supplied as inline
+ * plaintext via `ProviderSecret.plaintext`.
+ */
+ @JsonProperty("api_key_value")
+ private ModelProviderServiceConfigProviderSecret apiKeyValue;
+
+ public ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth setApiKeyName(String apiKeyName) {
+ this.apiKeyName = apiKeyName;
+ return this;
+ }
+
+ public String getApiKeyName() {
+ return apiKeyName;
+ }
+
+ public ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth setApiKeyValue(
+ ModelProviderServiceConfigProviderSecret apiKeyValue) {
+ this.apiKeyValue = apiKeyValue;
+ return this;
+ }
+
+ public ModelProviderServiceConfigProviderSecret getApiKeyValue() {
+ return apiKeyValue;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth that =
+ (ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth) o;
+ return Objects.equals(apiKeyName, that.apiKeyName)
+ && Objects.equals(apiKeyValue, that.apiKeyValue);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(apiKeyName, apiKeyValue);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth.class)
+ .add("apiKeyName", apiKeyName)
+ .add("apiKeyValue", apiKeyValue)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigCustomProviderDirectConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigCustomProviderDirectConfig.java
index 9620a1ed0..017ab13c0 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigCustomProviderDirectConfig.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigCustomProviderDirectConfig.java
@@ -8,8 +8,8 @@
import java.util.Objects;
/**
- * Direct form of a custom provider configuration. Set `api_key` to the bearer token sent in the
- * `Authorization` header.
+ * Direct form of a custom provider configuration. Set `api_key` to send the secret as an
+ * `Authorization` bearer token, or `header_auth` to forward it under a caller-chosen HTTP header.
*/
@Generated
public class ModelProviderServiceConfigCustomProviderDirectConfig {
@@ -26,6 +26,14 @@ public class ModelProviderServiceConfigCustomProviderDirectConfig {
@JsonProperty("base_url")
private String baseUrl;
+ /**
+ * Header-based API-key auth: the secret is forwarded on outbound requests under a caller-chosen
+ * HTTP header rather than as an `Authorization` bearer token. Set this instead of `api_key` for
+ * header auth.
+ */
+ @JsonProperty("header_auth")
+ private ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth headerAuth;
+
public ModelProviderServiceConfigCustomProviderDirectConfig setApiKey(
ModelProviderServiceConfigProviderSecret apiKey) {
this.apiKey = apiKey;
@@ -45,18 +53,30 @@ public String getBaseUrl() {
return baseUrl;
}
+ public ModelProviderServiceConfigCustomProviderDirectConfig setHeaderAuth(
+ ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth headerAuth) {
+ this.headerAuth = headerAuth;
+ return this;
+ }
+
+ public ModelProviderServiceConfigCustomProviderApiKeyHeaderAuth getHeaderAuth() {
+ return headerAuth;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ModelProviderServiceConfigCustomProviderDirectConfig that =
(ModelProviderServiceConfigCustomProviderDirectConfig) o;
- return Objects.equals(apiKey, that.apiKey) && Objects.equals(baseUrl, that.baseUrl);
+ return Objects.equals(apiKey, that.apiKey)
+ && Objects.equals(baseUrl, that.baseUrl)
+ && Objects.equals(headerAuth, that.headerAuth);
}
@Override
public int hashCode() {
- return Objects.hash(apiKey, baseUrl);
+ return Objects.hash(apiKey, baseUrl, headerAuth);
}
@Override
@@ -64,6 +84,7 @@ public String toString() {
return new ToStringer(ModelProviderServiceConfigCustomProviderDirectConfig.class)
.add("apiKey", apiKey)
.add("baseUrl", baseUrl)
+ .add("headerAuth", headerAuth)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig.java
index 0c7b01925..2d8b570bb 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig.java
@@ -28,6 +28,16 @@ public class ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig {
@JsonProperty("region")
private String region;
+ /**
+ * Reference to a Unity Catalog service credential authorizing Gemini Enterprise requests. On
+ * Create, supply `service_credential.name` as `credentials/{name}`; required when using
+ * service-credential authentication and mutually exclusive with `api_key`. The credential is
+ * referenced by name; its value is not carried here. On read, the resolved `id` and `is_deleted`
+ * are also populated. Supported only on GCP-hosted workspaces.
+ */
+ @JsonProperty("service_credential")
+ private ModelProviderServiceConfigServiceCredential serviceCredential;
+
public ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig setApiKey(
ModelProviderServiceConfigProviderSecret apiKey) {
this.apiKey = apiKey;
@@ -57,6 +67,16 @@ public String getRegion() {
return region;
}
+ public ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig setServiceCredential(
+ ModelProviderServiceConfigServiceCredential serviceCredential) {
+ this.serviceCredential = serviceCredential;
+ return this;
+ }
+
+ public ModelProviderServiceConfigServiceCredential getServiceCredential() {
+ return serviceCredential;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -65,12 +85,13 @@ public boolean equals(Object o) {
(ModelProviderServiceConfigGeminiEnterpriseProviderDirectConfig) o;
return Objects.equals(apiKey, that.apiKey)
&& Objects.equals(projectId, that.projectId)
- && Objects.equals(region, that.region);
+ && Objects.equals(region, that.region)
+ && Objects.equals(serviceCredential, that.serviceCredential);
}
@Override
public int hashCode() {
- return Objects.hash(apiKey, projectId, region);
+ return Objects.hash(apiKey, projectId, region, serviceCredential);
}
@Override
@@ -79,6 +100,7 @@ public String toString() {
.add("apiKey", apiKey)
.add("projectId", projectId)
.add("region", region)
+ .add("serviceCredential", serviceCredential)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigProviderSecret.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigProviderSecret.java
index 6d01d4bcc..fd27145e3 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigProviderSecret.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigProviderSecret.java
@@ -22,6 +22,15 @@ public class ModelProviderServiceConfigProviderSecret {
@JsonProperty("plaintext")
private String plaintext;
+ /**
+ * Reference to a customer-owned UC Secret that carries this secret value. The value is read at
+ * invoke time under the model provider service owner's access and is never copied onto the model
+ * provider service, so rotating the UC Secret takes effect with no change to the model provider
+ * service. On Create, supply `secret_reference.name` as `secrets/{catalog}.{schema}.{secret}`.
+ */
+ @JsonProperty("secret_reference")
+ private ModelProviderServiceConfigSecretReference secretReference;
+
public ModelProviderServiceConfigProviderSecret setPlaintext(String plaintext) {
this.plaintext = plaintext;
return this;
@@ -31,23 +40,35 @@ public String getPlaintext() {
return plaintext;
}
+ public ModelProviderServiceConfigProviderSecret setSecretReference(
+ ModelProviderServiceConfigSecretReference secretReference) {
+ this.secretReference = secretReference;
+ return this;
+ }
+
+ public ModelProviderServiceConfigSecretReference getSecretReference() {
+ return secretReference;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ModelProviderServiceConfigProviderSecret that = (ModelProviderServiceConfigProviderSecret) o;
- return Objects.equals(plaintext, that.plaintext);
+ return Objects.equals(plaintext, that.plaintext)
+ && Objects.equals(secretReference, that.secretReference);
}
@Override
public int hashCode() {
- return Objects.hash(plaintext);
+ return Objects.hash(plaintext, secretReference);
}
@Override
public String toString() {
return new ToStringer(ModelProviderServiceConfigProviderSecret.class)
.add("plaintext", plaintext)
+ .add("secretReference", secretReference)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigSecretReference.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigSecretReference.java
new file mode 100644
index 000000000..4ca32c60b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigSecretReference.java
@@ -0,0 +1,52 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+/**
+ * Reference to a customer-owned UC Secret backing a secret-bearing provider field, in the
+ * `ProviderSecret.secret_reference` arm.
+ */
+@Generated
+public class ModelProviderServiceConfigSecretReference {
+ /**
+ * Resource name of the bound UC Secret, in the form `secrets/{catalog}.{schema}.{secret}`. On
+ * Create the caller supplies the name here. On read it reflects the secret's current name at read
+ * time.
+ */
+ @JsonProperty("name")
+ private String name;
+
+ public ModelProviderServiceConfigSecretReference 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;
+ ModelProviderServiceConfigSecretReference that = (ModelProviderServiceConfigSecretReference) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ModelProviderServiceConfigSecretReference.class)
+ .add("name", name)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableType.java
index 055549976..03dbb51fe 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableType.java
@@ -7,6 +7,7 @@
/** The type of Unity Catalog securable. */
@Generated
public enum SecurableType {
+ AGENT_SERVICE,
CATALOG,
CLEAN_ROOM,
CONNECTION,
@@ -24,6 +25,7 @@ public enum SecurableType {
RECIPIENT,
SCHEMA,
SHARE,
+ SKILL,
STAGING_TABLE,
STORAGE_CREDENTIAL,
TABLE,
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/Skill.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/Skill.java
new file mode 100644
index 000000000..3daa5b1f2
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/Skill.java
@@ -0,0 +1,250 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.Timestamp;
+import java.util.Objects;
+
+/**
+ * A Skill is an agentskills.io bundle registered in Unity Catalog. Clients transfer bundle bytes
+ * through the Files API. FinalizeSkill reads the uploaded SKILL.md and projects its frontmatter
+ * onto the Skill metadata.
+ */
+@Generated
+public class Skill {
+ /**
+ * Name from the most recently successfully finalized SKILL.md. It may differ from the final
+ * component of the Skill resource name. Unset until FinalizeSkill succeeds.
+ */
+ @JsonProperty("bundle_name")
+ private String bundleName;
+
+ /**
+ * User-provided comment for the skill. Free-text, user-editable via UpdateSkill (listed in its
+ * `update_mask`). DISTINCT from `description`, which is the server-parsed, OUTPUT_ONLY SKILL.md
+ * frontmatter value: `comment` is the customer's own annotation and is preserved across bundle
+ * re-uploads. When `comment` is in the update mask, omitting it clears the field, while an
+ * explicitly empty string is retained.
+ */
+ @JsonProperty("comment")
+ private String comment;
+
+ /** Time the skill was created. */
+ @JsonProperty("create_time")
+ private Timestamp createTime;
+
+ /** Creator identity. */
+ @JsonProperty("created_by")
+ private String createdBy;
+
+ /**
+ * Description from the most recently successfully finalized SKILL.md. Unset until FinalizeSkill
+ * succeeds.
+ */
+ @JsonProperty("description")
+ private String description;
+
+ /** Owner of the skill. */
+ @JsonProperty("effective_owner")
+ private String effectiveOwner;
+
+ /**
+ * Optimistic concurrency token returned on every read. To make an Update or Delete conditional,
+ * pass the last-read value in that request's `etag` field. In REST responses, this value is a
+ * base64 string; URL-encode it when setting the `etag` query parameter.
+ */
+ @JsonProperty("etag")
+ private String etag;
+
+ /** Time of the most recent successful FinalizeSkill. Unset until one succeeds. */
+ @JsonProperty("finalize_time")
+ private Timestamp finalizeTime;
+
+ /** Metastore hosting the skill. */
+ @JsonProperty("metastore_id")
+ private String metastoreId;
+
+ /**
+ * Resource name of the skill. Format: `skills/{catalog}.{schema}.{skill}`. Each `{...}` component
+ * is capped at 255 characters individually. Server-derived on Create from `parent` + `skill_id`;
+ * required and immutable on Update/Get/Delete.
+ */
+ @JsonProperty("name")
+ private String name;
+
+ /**
+ * Time of the most recent Skill metadata mutation. Uploading bundle files alone does not change
+ * this value.
+ */
+ @JsonProperty("update_time")
+ private Timestamp updateTime;
+
+ /** Identity of the last updater. */
+ @JsonProperty("updated_by")
+ private String updatedBy;
+
+ public Skill setBundleName(String bundleName) {
+ this.bundleName = bundleName;
+ return this;
+ }
+
+ public String getBundleName() {
+ return bundleName;
+ }
+
+ public Skill setComment(String comment) {
+ this.comment = comment;
+ return this;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public Skill setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ return this;
+ }
+
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public Skill setCreatedBy(String createdBy) {
+ this.createdBy = createdBy;
+ return this;
+ }
+
+ public String getCreatedBy() {
+ return createdBy;
+ }
+
+ public Skill setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public Skill setEffectiveOwner(String effectiveOwner) {
+ this.effectiveOwner = effectiveOwner;
+ return this;
+ }
+
+ public String getEffectiveOwner() {
+ return effectiveOwner;
+ }
+
+ public Skill setEtag(String etag) {
+ this.etag = etag;
+ return this;
+ }
+
+ public String getEtag() {
+ return etag;
+ }
+
+ public Skill setFinalizeTime(Timestamp finalizeTime) {
+ this.finalizeTime = finalizeTime;
+ return this;
+ }
+
+ public Timestamp getFinalizeTime() {
+ return finalizeTime;
+ }
+
+ public Skill setMetastoreId(String metastoreId) {
+ this.metastoreId = metastoreId;
+ return this;
+ }
+
+ public String getMetastoreId() {
+ return metastoreId;
+ }
+
+ public Skill setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Skill setUpdateTime(Timestamp updateTime) {
+ this.updateTime = updateTime;
+ return this;
+ }
+
+ public Timestamp getUpdateTime() {
+ return updateTime;
+ }
+
+ public Skill setUpdatedBy(String updatedBy) {
+ this.updatedBy = updatedBy;
+ return this;
+ }
+
+ public String getUpdatedBy() {
+ return updatedBy;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Skill that = (Skill) o;
+ return Objects.equals(bundleName, that.bundleName)
+ && Objects.equals(comment, that.comment)
+ && Objects.equals(createTime, that.createTime)
+ && Objects.equals(createdBy, that.createdBy)
+ && Objects.equals(description, that.description)
+ && Objects.equals(effectiveOwner, that.effectiveOwner)
+ && Objects.equals(etag, that.etag)
+ && Objects.equals(finalizeTime, that.finalizeTime)
+ && Objects.equals(metastoreId, that.metastoreId)
+ && Objects.equals(name, that.name)
+ && Objects.equals(updateTime, that.updateTime)
+ && Objects.equals(updatedBy, that.updatedBy);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ bundleName,
+ comment,
+ createTime,
+ createdBy,
+ description,
+ effectiveOwner,
+ etag,
+ finalizeTime,
+ metastoreId,
+ name,
+ updateTime,
+ updatedBy);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(Skill.class)
+ .add("bundleName", bundleName)
+ .add("comment", comment)
+ .add("createTime", createTime)
+ .add("createdBy", createdBy)
+ .add("description", description)
+ .add("effectiveOwner", effectiveOwner)
+ .add("etag", etag)
+ .add("finalizeTime", finalizeTime)
+ .add("metastoreId", metastoreId)
+ .add("name", name)
+ .add("updateTime", updateTime)
+ .add("updatedBy", updatedBy)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/UpdateSkillRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/UpdateSkillRequest.java
new file mode 100644
index 000000000..7cb03cf0a
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/UpdateSkillRequest.java
@@ -0,0 +1,107 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.catalog;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+@Generated
+public class UpdateSkillRequest {
+ /**
+ * Optimistic concurrency token from the most recent read. When set, the update succeeds only if
+ * the resource has not changed. Leave unset for an unconditional update. For REST requests,
+ * URL-encode the base64 string returned by the API when setting the `etag` query parameter.
+ */
+ @JsonIgnore
+ @QueryParam("etag")
+ private String etag;
+
+ /**
+ * Resource name of the skill. Format: `skills/{catalog}.{schema}.{skill}`. Each `{...}` component
+ * is capped at 255 characters individually. Server-derived on Create from `parent` + `skill_id`;
+ * required and immutable on Update/Get/Delete.
+ */
+ @JsonIgnore private String name;
+
+ /**
+ * The skill with the updated field values. `name` identifies the resource
+ * (`skills/{catalog}.{schema}.{skill}`); only fields listed in `update_mask` are applied.
+ */
+ @JsonProperty("skill")
+ private Skill skill;
+
+ /**
+ * Fields to update; validated against `skill`. REQUIRED, matching the sibling Update RPCs.
+ * `comment` is the only mutable field.
+ */
+ @JsonIgnore
+ @QueryParam("update_mask")
+ private FieldMask updateMask;
+
+ public UpdateSkillRequest setEtag(String etag) {
+ this.etag = etag;
+ return this;
+ }
+
+ public String getEtag() {
+ return etag;
+ }
+
+ public UpdateSkillRequest setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public UpdateSkillRequest setSkill(Skill skill) {
+ this.skill = skill;
+ return this;
+ }
+
+ public Skill getSkill() {
+ return skill;
+ }
+
+ public UpdateSkillRequest setUpdateMask(FieldMask updateMask) {
+ this.updateMask = updateMask;
+ return this;
+ }
+
+ public FieldMask getUpdateMask() {
+ return updateMask;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateSkillRequest that = (UpdateSkillRequest) o;
+ return Objects.equals(etag, that.etag)
+ && Objects.equals(name, that.name)
+ && Objects.equals(skill, that.skill)
+ && Objects.equals(updateMask, that.updateMask);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(etag, name, skill, updateMask);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateSkillRequest.class)
+ .add("etag", etag)
+ .add("name", name)
+ .add("skill", skill)
+ .add("updateMask", updateMask)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java
index c1e0073fb..e9c242a21 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java
@@ -91,14 +91,14 @@ public class CleanRoomAsset {
/**
* View details available to all collaborators of the clean room. Present if and only if
- * **asset_type** is **VIEW**
+ * **asset_type** is **VIEW** or **METRIC_VIEW**
*/
@JsonProperty("view")
private CleanRoomAssetView view;
/**
* Local details for a view that are only available to its owner. Present if and only if
- * **asset_type** is **VIEW**
+ * **asset_type** is **VIEW** or **METRIC_VIEW**
*/
@JsonProperty("view_local_details")
private CleanRoomAssetViewLocalDetails viewLocalDetails;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAssetJarAnalysis.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAssetJarAnalysis.java
index 1011c6401..25ecbfdf6 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAssetJarAnalysis.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAssetJarAnalysis.java
@@ -23,8 +23,8 @@ public class CleanRoomAssetJarAnalysis {
private String description;
/**
- * The serverless environment version used to execute the JAR analysis (e.g. "4"). Defaults to
- * "4-scala-preview" if not specified.
+ * The serverless environment version used to execute the JAR analysis (e.g. "4"). If not
+ * specified, uses the service-configured JAR analysis default.
*/
@JsonProperty("environment_version")
private String environmentVersion;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java
index deacceef8..b9dced31d 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java
@@ -30,18 +30,38 @@ public LakeviewAPI(LakeviewService mock) {
/**
* Create a draft dashboard.
*
- * Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public Dashboard create(CreateDashboardRequest request) {
return impl.create(request);
}
- /** Create dashboard schedule. */
+ /**
+ * Create dashboard schedule.
+ *
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
+ */
public Schedule createSchedule(CreateScheduleRequest request) {
return impl.createSchedule(request);
}
- /** Create schedule subscription. */
+ /**
+ * Create schedule subscription.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
public Subscription createSubscription(CreateSubscriptionRequest request) {
return impl.createSubscription(request);
}
@@ -51,7 +71,14 @@ public void deleteSchedule(String dashboardId, String scheduleId) {
new DeleteScheduleRequest().setDashboardId(dashboardId).setScheduleId(scheduleId));
}
- /** Delete dashboard schedule. */
+ /**
+ * Delete dashboard schedule.
+ *
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
+ */
public void deleteSchedule(DeleteScheduleRequest request) {
impl.deleteSchedule(request);
}
@@ -64,7 +91,17 @@ public void deleteSubscription(String dashboardId, String scheduleId, String sub
.setSubscriptionId(subscriptionId));
}
- /** Delete schedule subscription. */
+ /**
+ * Delete schedule subscription.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
public void deleteSubscription(DeleteSubscriptionRequest request) {
impl.deleteSubscription(request);
}
@@ -76,7 +113,10 @@ public Dashboard get(String dashboardId) {
/**
* Get a draft dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public Dashboard get(GetDashboardRequest request) {
return impl.get(request);
@@ -104,7 +144,17 @@ public Schedule getSchedule(String dashboardId, String scheduleId) {
new GetScheduleRequest().setDashboardId(dashboardId).setScheduleId(scheduleId));
}
- /** Get dashboard schedule. */
+ /**
+ * Get dashboard schedule.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
public Schedule getSchedule(GetScheduleRequest request) {
return impl.getSchedule(request);
}
@@ -118,7 +168,17 @@ public Subscription getSubscription(
.setSubscriptionId(subscriptionId));
}
- /** Get schedule subscription. */
+ /**
+ * Get schedule subscription.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
public Subscription getSubscription(GetSubscriptionRequest request) {
return impl.getSubscription(request);
}
@@ -126,7 +186,10 @@ public Subscription getSubscription(GetSubscriptionRequest request) {
/**
* List dashboards.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public Iterable list(ListDashboardsRequest request) {
return Paginator.newTokenPagination(
@@ -146,7 +209,17 @@ public Iterable listSchedules(String dashboardId) {
return listSchedules(new ListSchedulesRequest().setDashboardId(dashboardId));
}
- /** List dashboard schedules. */
+ /**
+ * List dashboard schedules.
+ *
+ * The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
public Iterable listSchedules(ListSchedulesRequest request) {
return Paginator.newTokenPagination(
request,
@@ -166,7 +239,17 @@ public Iterable listSubscriptions(String dashboardId, String sched
new ListSubscriptionsRequest().setDashboardId(dashboardId).setScheduleId(scheduleId));
}
- /** List schedule subscriptions. */
+ /**
+ * List schedule subscriptions.
+ *
+ * The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
public Iterable listSubscriptions(ListSubscriptionsRequest request) {
return Paginator.newTokenPagination(
request,
@@ -192,7 +275,10 @@ public Dashboard migrate(MigrateDashboardRequest request) {
/**
* Publish the current draft dashboard.
*
- * Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public PublishedDashboard publish(PublishRequest request) {
return impl.publish(request);
@@ -201,7 +287,10 @@ public PublishedDashboard publish(PublishRequest request) {
/**
* Revert a dashboard's definition in draft mode to the last published version.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public RevertDashboardResponse revert(RevertDashboardRequest request) {
return impl.revert(request);
@@ -214,7 +303,10 @@ public void trash(String dashboardId) {
/**
* Trash a dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public void trash(TrashDashboardRequest request) {
impl.trash(request);
@@ -227,7 +319,10 @@ public void unpublish(String dashboardId) {
/**
* Unpublish the dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public void unpublish(UnpublishDashboardRequest request) {
impl.unpublish(request);
@@ -236,13 +331,23 @@ public void unpublish(UnpublishDashboardRequest request) {
/**
* Update a draft dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
public Dashboard update(UpdateDashboardRequest request) {
return impl.update(request);
}
- /** Update dashboard schedule. */
+ /**
+ * Update dashboard schedule.
+ *
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
+ */
public Schedule updateSchedule(UpdateScheduleRequest request) {
return impl.updateSchedule(request);
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java
index 8d9997452..54be52dff 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java
@@ -16,26 +16,66 @@ public interface LakeviewService {
/**
* Create a draft dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
Dashboard create(CreateDashboardRequest createDashboardRequest);
- /** Create dashboard schedule. */
+ /**
+ * Create dashboard schedule.
+ *
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
+ */
Schedule createSchedule(CreateScheduleRequest createScheduleRequest);
- /** Create schedule subscription. */
+ /**
+ * Create schedule subscription.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
Subscription createSubscription(CreateSubscriptionRequest createSubscriptionRequest);
- /** Delete dashboard schedule. */
+ /**
+ * Delete dashboard schedule.
+ *
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
+ */
void deleteSchedule(DeleteScheduleRequest deleteScheduleRequest);
- /** Delete schedule subscription. */
+ /**
+ * Delete schedule subscription.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
void deleteSubscription(DeleteSubscriptionRequest deleteSubscriptionRequest);
/**
* Get a draft dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
Dashboard get(GetDashboardRequest getDashboardRequest);
@@ -50,23 +90,66 @@ public interface LakeviewService {
*/
PublishedDashboard getPublished(GetPublishedDashboardRequest getPublishedDashboardRequest);
- /** Get dashboard schedule. */
+ /**
+ * Get dashboard schedule.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
Schedule getSchedule(GetScheduleRequest getScheduleRequest);
- /** Get schedule subscription. */
+ /**
+ * Get schedule subscription.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
Subscription getSubscription(GetSubscriptionRequest getSubscriptionRequest);
/**
* List dashboards.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
ListDashboardsResponse list(ListDashboardsRequest listDashboardsRequest);
- /** List dashboard schedules. */
+ /**
+ * List dashboard schedules.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
ListSchedulesResponse listSchedules(ListSchedulesRequest listSchedulesRequest);
- /** List schedule subscriptions. */
+ /**
+ * List schedule subscriptions.
+ *
+ *
The caller must be a workspace user with one of the following [entitlements]: Workspace
+ * access, Databricks SQL access, or Consumer access.
+ *
+ *
Account-level users who are not members of the workspace cannot call this endpoint, even if
+ * the dashboard has been shared with them.
+ *
+ *
[entitlements]: https://docs.databricks.com/security/auth/entitlements
+ */
ListSubscriptionsResponse listSubscriptions(ListSubscriptionsRequest listSubscriptionsRequest);
/**
@@ -78,38 +161,60 @@ public interface LakeviewService {
/**
* Publish the current draft dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
PublishedDashboard publish(PublishRequest publishRequest);
/**
* Revert a dashboard's definition in draft mode to the last published version.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
RevertDashboardResponse revert(RevertDashboardRequest revertDashboardRequest);
/**
* Trash a dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
void trash(TrashDashboardRequest trashDashboardRequest);
/**
* Unpublish the dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
void unpublish(UnpublishDashboardRequest unpublishDashboardRequest);
/**
* Update a draft dashboard.
*
- *
Requires the Databricks SQL access entitlement.
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
*/
Dashboard update(UpdateDashboardRequest updateDashboardRequest);
- /** Update dashboard schedule. */
+ /**
+ * Update dashboard schedule.
+ *
+ *
Requires the [Databricks SQL access] entitlement. Grant Databricks SQL access in addition to
+ * Workspace access.
+ *
+ *
[Databricks SQL access]: https://docs.databricks.com/security/auth/entitlements
+ */
Schedule updateSchedule(UpdateScheduleRequest updateScheduleRequest);
}
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 39d8db2af..b7924adf3 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
@@ -27,7 +27,12 @@ public AccountIamV2API(AccountIamV2Service mock) {
impl = mock;
}
- /** Creates a group membership (assigns a principal to a group). */
+ /**
+ * Creates a group membership (assigns a principal to a group).
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
+ */
public DirectGroupMember createDirectGroupMember(CreateDirectGroupMemberRequest request) {
return impl.createDirectGroupMember(request);
}
@@ -92,7 +97,12 @@ public void deleteDirectGroupMember(long groupId, long principalId) {
new DeleteDirectGroupMemberRequest().setGroupId(groupId).setPrincipalId(principalId));
}
- /** Deletes a group membership (unassigns a principal from a group). */
+ /**
+ * Deletes a group membership (unassigns a principal from a group).
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
+ */
public void deleteDirectGroupMember(DeleteDirectGroupMemberRequest request) {
impl.deleteDirectGroupMember(request);
}
@@ -101,7 +111,12 @@ public void deleteGroup(String groupId) {
deleteGroup(new DeleteGroupRequest().setGroupId(groupId));
}
- /** Deletes a group from the Databricks account by its internal ID. */
+ /**
+ * Deletes a group from the Databricks account by its internal ID.
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
+ */
public void deleteGroup(DeleteGroupRequest request) {
impl.deleteGroup(request);
}
@@ -450,6 +465,9 @@ public ResolveUserResponse resolveUser(ResolveUserRequest request) {
*
*
When AIM is enabled and the group is an external identity (its external_id is set), only
* external_id can be updated; its other fields are sourced from your identity provider.
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
*/
public Group updateGroup(UpdateGroupRequest request) {
return impl.updateGroup(request);
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 d7f4307b5..11320faf2 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
@@ -13,7 +13,12 @@
*/
@Generated
public interface AccountIamV2Service {
- /** Creates a group membership (assigns a principal to a group). */
+ /**
+ * Creates a group membership (assigns a principal to a group).
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
+ */
DirectGroupMember createDirectGroupMember(
CreateDirectGroupMemberRequest createDirectGroupMemberRequest);
@@ -64,10 +69,20 @@ WorkspaceAssignment createWorkspaceAssignment(
WorkspaceAssignmentDetail createWorkspaceAssignmentDetail(
CreateWorkspaceAssignmentDetailRequest createWorkspaceAssignmentDetailRequest);
- /** Deletes a group membership (unassigns a principal from a group). */
+ /**
+ * Deletes a group membership (unassigns a principal from a group).
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
+ */
void deleteDirectGroupMember(DeleteDirectGroupMemberRequest deleteDirectGroupMemberRequest);
- /** Deletes a group from the Databricks account by its internal ID. */
+ /**
+ * Deletes a group from the Databricks account by its internal ID.
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
+ */
void deleteGroup(DeleteGroupRequest deleteGroupRequest);
/** Deletes a service principal from the Databricks account by its internal ID. */
@@ -217,6 +232,9 @@ ResolveServicePrincipalResponse resolveServicePrincipal(
*
*
When AIM is enabled and the group is an external identity (its external_id is set), only
* external_id can be updated; its other fields are sourced from your identity provider.
+ *
+ *
Authorization: the caller must be an account admin or a manager of the group (holds the
+ * `roles/group.manager` role on it).
*/
Group updateGroup(UpdateGroupRequest updateGroupRequest);
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/BaseRun.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/BaseRun.java
index 8824fbcfb..d64419342 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/BaseRun.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/BaseRun.java
@@ -64,9 +64,10 @@ public class BaseRun {
* the client-set performance target on the request depending on whether the performance mode is
* supported by the job type.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("effective_performance_target")
private PerformanceTarget effectivePerformanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/CreateJob.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/CreateJob.java
index 9559a9eff..d89d8a37e 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/CreateJob.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/CreateJob.java
@@ -145,9 +145,10 @@ public class CreateJob {
* performance or cost-efficiency for the run. The performance target does not apply to tasks that
* run on Serverless GPU compute.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("performance_target")
private PerformanceTarget performanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeploymentSpec.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeploymentSpec.java
index 7e68e97f6..788d3353e 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeploymentSpec.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/DeploymentSpec.java
@@ -23,11 +23,11 @@ public class DeploymentSpec {
*
*
Example script contents:
*
- *
# Plain Python: python train.py --epochs 10
+ *
```bash # Plain Python: python train.py --epochs 10
*
*
# Multi-GPU via accelerate: accelerate launch train.py --config config.yaml
*
- *
# Distributed via torchrun: torchrun --nproc_per_node=8 train.py
+ *
# Distributed via torchrun: torchrun --nproc_per_node=8 train.py ```
*/
@JsonProperty("command_path")
private String commandPath;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobEmailNotifications.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobEmailNotifications.java
index 6c56a80cc..7140b4559 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobEmailNotifications.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobEmailNotifications.java
@@ -35,6 +35,20 @@ public class JobEmailNotifications {
@JsonProperty("on_failure")
private Collection onFailure;
+ /**
+ * A list of email addresses to notify when platform-initiated maintenance completes for a
+ * continuous job.
+ */
+ @JsonProperty("on_maintenance_complete")
+ private Collection onMaintenanceComplete;
+
+ /**
+ * A list of email addresses to notify when platform-initiated maintenance starts for a continuous
+ * job.
+ */
+ @JsonProperty("on_maintenance_start")
+ private Collection onMaintenanceStart;
+
/**
* A list of email addresses to be notified when a run begins. If not specified on job creation,
* reset, or update, the list is empty, and notifications are not sent.
@@ -89,6 +103,24 @@ public Collection getOnFailure() {
return onFailure;
}
+ public JobEmailNotifications setOnMaintenanceComplete(Collection onMaintenanceComplete) {
+ this.onMaintenanceComplete = onMaintenanceComplete;
+ return this;
+ }
+
+ public Collection getOnMaintenanceComplete() {
+ return onMaintenanceComplete;
+ }
+
+ public JobEmailNotifications setOnMaintenanceStart(Collection onMaintenanceStart) {
+ this.onMaintenanceStart = onMaintenanceStart;
+ return this;
+ }
+
+ public Collection getOnMaintenanceStart() {
+ return onMaintenanceStart;
+ }
+
public JobEmailNotifications setOnStart(Collection onStart) {
this.onStart = onStart;
return this;
@@ -126,6 +158,8 @@ public boolean equals(Object o) {
&& Objects.equals(
onDurationWarningThresholdExceeded, that.onDurationWarningThresholdExceeded)
&& Objects.equals(onFailure, that.onFailure)
+ && Objects.equals(onMaintenanceComplete, that.onMaintenanceComplete)
+ && Objects.equals(onMaintenanceStart, that.onMaintenanceStart)
&& Objects.equals(onStart, that.onStart)
&& Objects.equals(onStreamingBacklogExceeded, that.onStreamingBacklogExceeded)
&& Objects.equals(onSuccess, that.onSuccess);
@@ -137,6 +171,8 @@ public int hashCode() {
noAlertForSkippedRuns,
onDurationWarningThresholdExceeded,
onFailure,
+ onMaintenanceComplete,
+ onMaintenanceStart,
onStart,
onStreamingBacklogExceeded,
onSuccess);
@@ -148,6 +184,8 @@ public String toString() {
.add("noAlertForSkippedRuns", noAlertForSkippedRuns)
.add("onDurationWarningThresholdExceeded", onDurationWarningThresholdExceeded)
.add("onFailure", onFailure)
+ .add("onMaintenanceComplete", onMaintenanceComplete)
+ .add("onMaintenanceStart", onMaintenanceStart)
.add("onStart", onStart)
.add("onStreamingBacklogExceeded", onStreamingBacklogExceeded)
.add("onSuccess", onSuccess)
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobSettings.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobSettings.java
index ec3c688d8..9db2217e9 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobSettings.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/JobSettings.java
@@ -141,9 +141,10 @@ public class JobSettings {
* performance or cost-efficiency for the run. The performance target does not apply to tasks that
* run on Serverless GPU compute.
*
- * * `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("performance_target")
private PerformanceTarget performanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairHistoryItem.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairHistoryItem.java
index 7a0e6d77f..f52d4e92b 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairHistoryItem.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairHistoryItem.java
@@ -15,9 +15,10 @@ public class RepairHistoryItem {
* the client-set performance target on the request depending on whether the performance mode is
* supported by the job type.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("effective_performance_target")
private PerformanceTarget effectivePerformanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairRun.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairRun.java
index c31d6f4fb..94217cf5b 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairRun.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RepairRun.java
@@ -74,9 +74,10 @@ public class RepairRun {
* compute performance or cost-efficiency for the run. This field overrides the performance target
* defined on the job level.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("performance_target")
private PerformanceTarget performanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Run.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Run.java
index 619290fae..af0d6c6c4 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Run.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/Run.java
@@ -65,9 +65,10 @@ public class Run {
* the client-set performance target on the request depending on whether the performance mode is
* supported by the job type.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("effective_performance_target")
private PerformanceTarget effectivePerformanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunNow.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunNow.java
index 09f7343ac..d8cc4556b 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunNow.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/RunNow.java
@@ -96,9 +96,10 @@ public class RunNow {
* compute performance or cost-efficiency for the run. This field overrides the performance target
* defined on the job level.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("performance_target")
private PerformanceTarget performanceTarget;
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 e4a53f5bc..49bed2e70 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
@@ -118,9 +118,10 @@ public class RunTask {
* the client-set performance target on the request depending on whether the performance mode is
* supported by the job type.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("effective_performance_target")
private PerformanceTarget effectivePerformanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitRun.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitRun.java
index 7793d8ad7..a9b7b7fb3 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitRun.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/SubmitRun.java
@@ -76,9 +76,10 @@ public class SubmitRun {
* performance or cost-efficiency for the run. The performance target does not apply to tasks that
* run on Serverless GPU compute.
*
- *
* `STANDARD`: Enables cost-efficient execution of serverless workloads. *
- * `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid scaling and
- * optimized cluster performance.
+ *
* `PERFORMANCE_OPTIMIZED`: Prioritizes fast startup and execution times through rapid
+ * scaling and optimized cluster performance. * `STANDARD`: Enables cost-efficient execution of
+ * serverless workloads. * `COST_OPTIMIZED`: Enables lower job costs by optimizing compute for
+ * your selected target duration time. Must provide a duration target.
*/
@JsonProperty("performance_target")
private PerformanceTarget performanceTarget;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TaskEmailNotifications.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TaskEmailNotifications.java
index 440ad8cf8..2db79f819 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TaskEmailNotifications.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TaskEmailNotifications.java
@@ -35,6 +35,20 @@ public class TaskEmailNotifications {
@JsonProperty("on_failure")
private Collection onFailure;
+ /**
+ * A list of email addresses to notify when platform-initiated maintenance completes for a
+ * continuous job.
+ */
+ @JsonProperty("on_maintenance_complete")
+ private Collection onMaintenanceComplete;
+
+ /**
+ * A list of email addresses to notify when platform-initiated maintenance starts for a continuous
+ * job.
+ */
+ @JsonProperty("on_maintenance_start")
+ private Collection onMaintenanceStart;
+
/**
* A list of email addresses to be notified when a run begins. If not specified on job creation,
* reset, or update, the list is empty, and notifications are not sent.
@@ -89,6 +103,24 @@ public Collection getOnFailure() {
return onFailure;
}
+ public TaskEmailNotifications setOnMaintenanceComplete(Collection onMaintenanceComplete) {
+ this.onMaintenanceComplete = onMaintenanceComplete;
+ return this;
+ }
+
+ public Collection getOnMaintenanceComplete() {
+ return onMaintenanceComplete;
+ }
+
+ public TaskEmailNotifications setOnMaintenanceStart(Collection onMaintenanceStart) {
+ this.onMaintenanceStart = onMaintenanceStart;
+ return this;
+ }
+
+ public Collection getOnMaintenanceStart() {
+ return onMaintenanceStart;
+ }
+
public TaskEmailNotifications setOnStart(Collection onStart) {
this.onStart = onStart;
return this;
@@ -126,6 +158,8 @@ public boolean equals(Object o) {
&& Objects.equals(
onDurationWarningThresholdExceeded, that.onDurationWarningThresholdExceeded)
&& Objects.equals(onFailure, that.onFailure)
+ && Objects.equals(onMaintenanceComplete, that.onMaintenanceComplete)
+ && Objects.equals(onMaintenanceStart, that.onMaintenanceStart)
&& Objects.equals(onStart, that.onStart)
&& Objects.equals(onStreamingBacklogExceeded, that.onStreamingBacklogExceeded)
&& Objects.equals(onSuccess, that.onSuccess);
@@ -137,6 +171,8 @@ public int hashCode() {
noAlertForSkippedRuns,
onDurationWarningThresholdExceeded,
onFailure,
+ onMaintenanceComplete,
+ onMaintenanceStart,
onStart,
onStreamingBacklogExceeded,
onSuccess);
@@ -148,6 +184,8 @@ public String toString() {
.add("noAlertForSkippedRuns", noAlertForSkippedRuns)
.add("onDurationWarningThresholdExceeded", onDurationWarningThresholdExceeded)
.add("onFailure", onFailure)
+ .add("onMaintenanceComplete", onMaintenanceComplete)
+ .add("onMaintenanceStart", onMaintenanceStart)
.add("onStart", onStart)
.add("onStreamingBacklogExceeded", onStreamingBacklogExceeded)
.add("onSuccess", onSuccess)
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/WebhookNotifications.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/WebhookNotifications.java
index 72d92748d..a14ee51cd 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/WebhookNotifications.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/WebhookNotifications.java
@@ -25,6 +25,22 @@ public class WebhookNotifications {
@JsonProperty("on_failure")
private Collection onFailure;
+ /**
+ * An optional list of system notification IDs to call when platform-initiated maintenance
+ * completes for a continuous job. A maximum of 3 destinations can be specified for the
+ * `on_maintenance_complete` property.
+ */
+ @JsonProperty("on_maintenance_complete")
+ private Collection onMaintenanceComplete;
+
+ /**
+ * An optional list of system notification IDs to call when platform-initiated maintenance starts
+ * for a continuous job. A maximum of 3 destinations can be specified for the
+ * `on_maintenance_start` property.
+ */
+ @JsonProperty("on_maintenance_start")
+ private Collection onMaintenanceStart;
+
/**
* An optional list of system notification IDs to call when the run starts. A maximum of 3
* destinations can be specified for the `on_start` property.
@@ -69,6 +85,24 @@ public Collection getOnFailure() {
return onFailure;
}
+ public WebhookNotifications setOnMaintenanceComplete(Collection onMaintenanceComplete) {
+ this.onMaintenanceComplete = onMaintenanceComplete;
+ return this;
+ }
+
+ public Collection getOnMaintenanceComplete() {
+ return onMaintenanceComplete;
+ }
+
+ public WebhookNotifications setOnMaintenanceStart(Collection onMaintenanceStart) {
+ this.onMaintenanceStart = onMaintenanceStart;
+ return this;
+ }
+
+ public Collection getOnMaintenanceStart() {
+ return onMaintenanceStart;
+ }
+
public WebhookNotifications setOnStart(Collection onStart) {
this.onStart = onStart;
return this;
@@ -105,6 +139,8 @@ public boolean equals(Object o) {
return Objects.equals(
onDurationWarningThresholdExceeded, that.onDurationWarningThresholdExceeded)
&& Objects.equals(onFailure, that.onFailure)
+ && Objects.equals(onMaintenanceComplete, that.onMaintenanceComplete)
+ && Objects.equals(onMaintenanceStart, that.onMaintenanceStart)
&& Objects.equals(onStart, that.onStart)
&& Objects.equals(onStreamingBacklogExceeded, that.onStreamingBacklogExceeded)
&& Objects.equals(onSuccess, that.onSuccess);
@@ -115,6 +151,8 @@ public int hashCode() {
return Objects.hash(
onDurationWarningThresholdExceeded,
onFailure,
+ onMaintenanceComplete,
+ onMaintenanceStart,
onStart,
onStreamingBacklogExceeded,
onSuccess);
@@ -125,6 +163,8 @@ public String toString() {
return new ToStringer(WebhookNotifications.class)
.add("onDurationWarningThresholdExceeded", onDurationWarningThresholdExceeded)
.add("onFailure", onFailure)
+ .add("onMaintenanceComplete", onMaintenanceComplete)
+ .add("onMaintenanceStart", onMaintenanceStart)
.add("onStart", onStart)
.add("onStreamingBacklogExceeded", onStreamingBacklogExceeded)
.add("onSuccess", onSuccess)
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/AppendSessionItemsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/AppendSessionItemsRequest.java
new file mode 100644
index 000000000..826c011ef
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/AppendSessionItemsRequest.java
@@ -0,0 +1,66 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collection;
+import java.util.Objects;
+
+/** Request to append items to a session. */
+@Generated
+public class AppendSessionItemsRequest {
+ /**
+ * Items to append atomically in request order. Concurrent append requests are serialized into one
+ * committed order without exposing a numeric sequence in the public contract.
+ */
+ @JsonProperty("items")
+ private Collection items;
+
+ /**
+ * Resource name of the containing session, in the form
+ * `session-stores/{session_store_id}/sessions/{session_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ public AppendSessionItemsRequest setItems(Collection items) {
+ this.items = items;
+ return this;
+ }
+
+ public Collection getItems() {
+ return items;
+ }
+
+ public AppendSessionItemsRequest 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;
+ AppendSessionItemsRequest that = (AppendSessionItemsRequest) o;
+ return Objects.equals(items, that.items) && Objects.equals(parent, that.parent);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(items, parent);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(AppendSessionItemsRequest.class)
+ .add("items", items)
+ .add("parent", parent)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/AppendSessionItemsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/AppendSessionItemsResponse.java
new file mode 100644
index 000000000..0f67aaa9b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/AppendSessionItemsResponse.java
@@ -0,0 +1,46 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 containing appended items. */
+@Generated
+public class AppendSessionItemsResponse {
+ /** Persisted session items with service-assigned fields. */
+ @JsonProperty("session_items")
+ private Collection sessionItems;
+
+ public AppendSessionItemsResponse setSessionItems(Collection sessionItems) {
+ this.sessionItems = sessionItems;
+ return this;
+ }
+
+ public Collection getSessionItems() {
+ return sessionItems;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ AppendSessionItemsResponse that = (AppendSessionItemsResponse) o;
+ return Objects.equals(sessionItems, that.sessionItems);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(sessionItems);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(AppendSessionItemsResponse.class)
+ .add("sessionItems", sessionItems)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ClearSessionItemsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ClearSessionItemsRequest.java
new file mode 100644
index 000000000..06169fa14
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ClearSessionItemsRequest.java
@@ -0,0 +1,45 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.Objects;
+
+/** Request to clear all items from a session. */
+@Generated
+public class ClearSessionItemsRequest {
+ /**
+ * Resource name of the containing session, in the form
+ * `session-stores/{session_store_id}/sessions/{session_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ public ClearSessionItemsRequest 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;
+ ClearSessionItemsRequest that = (ClearSessionItemsRequest) o;
+ return Objects.equals(parent, that.parent);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(parent);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ClearSessionItemsRequest.class).add("parent", parent).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ClearSessionItemsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ClearSessionItemsResponse.java
new file mode 100644
index 000000000..689635bf7
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ClearSessionItemsResponse.java
@@ -0,0 +1,29 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import java.util.Objects;
+
+/** Response from clearing items from a session. */
+@Generated
+public class ClearSessionItemsResponse {
+
+ @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(ClearSessionItemsResponse.class).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateManagedMemoryEntryRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateManagedMemoryEntryRequest.java
new file mode 100644
index 000000000..c9b643d50
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateManagedMemoryEntryRequest.java
@@ -0,0 +1,80 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+@Generated
+public class CreateManagedMemoryEntryRequest {
+ /** The managed memory entry to create. */
+ @JsonProperty("managed_memory_entry")
+ private ManagedMemoryEntry managedMemoryEntry;
+
+ /** Optional caller-selected managed memory entry ID. The service generates an ID when omitted. */
+ @JsonIgnore
+ @QueryParam("managed_memory_entry_id")
+ private String managedMemoryEntryId;
+
+ /**
+ * Managed memory store that will contain the entry, in the form
+ * `memory-stores/{managed_memory_store_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ public CreateManagedMemoryEntryRequest setManagedMemoryEntry(
+ ManagedMemoryEntry managedMemoryEntry) {
+ this.managedMemoryEntry = managedMemoryEntry;
+ return this;
+ }
+
+ public ManagedMemoryEntry getManagedMemoryEntry() {
+ return managedMemoryEntry;
+ }
+
+ public CreateManagedMemoryEntryRequest setManagedMemoryEntryId(String managedMemoryEntryId) {
+ this.managedMemoryEntryId = managedMemoryEntryId;
+ return this;
+ }
+
+ public String getManagedMemoryEntryId() {
+ return managedMemoryEntryId;
+ }
+
+ public CreateManagedMemoryEntryRequest 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;
+ CreateManagedMemoryEntryRequest that = (CreateManagedMemoryEntryRequest) o;
+ return Objects.equals(managedMemoryEntry, that.managedMemoryEntry)
+ && Objects.equals(managedMemoryEntryId, that.managedMemoryEntryId)
+ && Objects.equals(parent, that.parent);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryEntry, managedMemoryEntryId, parent);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateManagedMemoryEntryRequest.class)
+ .add("managedMemoryEntry", managedMemoryEntry)
+ .add("managedMemoryEntryId", managedMemoryEntryId)
+ .add("parent", parent)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateManagedMemoryStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateManagedMemoryStoreRequest.java
new file mode 100644
index 000000000..eedc280f6
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateManagedMemoryStoreRequest.java
@@ -0,0 +1,67 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+@Generated
+public class CreateManagedMemoryStoreRequest {
+ /** The managed memory store to create. */
+ @JsonProperty("managed_memory_store")
+ private ManagedMemoryStore managedMemoryStore;
+
+ /**
+ * Caller-provided, workspace-unique managed memory store ID. It must be 3-56 characters, begin
+ * with a lowercase letter, contain only lowercase letters, digits, and hyphens, and end with a
+ * letter or digit.
+ */
+ @JsonIgnore
+ @QueryParam("managed_memory_store_id")
+ private String managedMemoryStoreId;
+
+ public CreateManagedMemoryStoreRequest setManagedMemoryStore(
+ ManagedMemoryStore managedMemoryStore) {
+ this.managedMemoryStore = managedMemoryStore;
+ return this;
+ }
+
+ public ManagedMemoryStore getManagedMemoryStore() {
+ return managedMemoryStore;
+ }
+
+ public CreateManagedMemoryStoreRequest setManagedMemoryStoreId(String managedMemoryStoreId) {
+ this.managedMemoryStoreId = managedMemoryStoreId;
+ return this;
+ }
+
+ public String getManagedMemoryStoreId() {
+ return managedMemoryStoreId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateManagedMemoryStoreRequest that = (CreateManagedMemoryStoreRequest) o;
+ return Objects.equals(managedMemoryStore, that.managedMemoryStore)
+ && Objects.equals(managedMemoryStoreId, that.managedMemoryStoreId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryStore, managedMemoryStoreId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateManagedMemoryStoreRequest.class)
+ .add("managedMemoryStore", managedMemoryStore)
+ .add("managedMemoryStoreId", managedMemoryStoreId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateSessionRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateSessionRequest.java
new file mode 100644
index 000000000..3bef73bfb
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateSessionRequest.java
@@ -0,0 +1,84 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+@Generated
+public class CreateSessionRequest {
+ /**
+ * Resource name of the containing session store, in the form `session-stores/{session_store_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ /**
+ * The session to create. `actor_id` is required. A session with `parent_session_id` is a child
+ * and must use its parent's `actor_id`. Independent forks are created only through `ForkSession`.
+ */
+ @JsonProperty("session")
+ private Session session;
+
+ /**
+ * Optional caller-selected session ID. The service generates a UUID when this field is omitted.
+ * The ID must be unique; a collision returns `ALREADY_EXISTS`.
+ */
+ @JsonIgnore
+ @QueryParam("session_id")
+ private String sessionId;
+
+ public CreateSessionRequest setParent(String parent) {
+ this.parent = parent;
+ return this;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public CreateSessionRequest setSession(Session session) {
+ this.session = session;
+ return this;
+ }
+
+ public Session getSession() {
+ return session;
+ }
+
+ public CreateSessionRequest setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateSessionRequest that = (CreateSessionRequest) o;
+ return Objects.equals(parent, that.parent)
+ && Objects.equals(session, that.session)
+ && Objects.equals(sessionId, that.sessionId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(parent, session, sessionId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateSessionRequest.class)
+ .add("parent", parent)
+ .add("session", session)
+ .add("sessionId", sessionId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateSessionStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateSessionStoreRequest.java
new file mode 100644
index 000000000..6a5e542b1
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/CreateSessionStoreRequest.java
@@ -0,0 +1,65 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+@Generated
+public class CreateSessionStoreRequest {
+ /** The session store to create. */
+ @JsonProperty("session_store")
+ private SessionStore sessionStore;
+
+ /**
+ * Caller-provided, workspace-unique session store ID. It must be 3-55 characters, begin with a
+ * lowercase letter, and contain only lowercase letters, digits, and hyphens.
+ */
+ @JsonIgnore
+ @QueryParam("session_store_id")
+ private String sessionStoreId;
+
+ public CreateSessionStoreRequest setSessionStore(SessionStore sessionStore) {
+ this.sessionStore = sessionStore;
+ return this;
+ }
+
+ public SessionStore getSessionStore() {
+ return sessionStore;
+ }
+
+ public CreateSessionStoreRequest setSessionStoreId(String sessionStoreId) {
+ this.sessionStoreId = sessionStoreId;
+ return this;
+ }
+
+ public String getSessionStoreId() {
+ return sessionStoreId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ CreateSessionStoreRequest that = (CreateSessionStoreRequest) o;
+ return Objects.equals(sessionStore, that.sessionStore)
+ && Objects.equals(sessionStoreId, that.sessionStoreId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(sessionStore, sessionStoreId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(CreateSessionStoreRequest.class)
+ .add("sessionStore", sessionStore)
+ .add("sessionStoreId", sessionStoreId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteManagedMemoryEntryRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteManagedMemoryEntryRequest.java
new file mode 100644
index 000000000..eccd74bd5
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteManagedMemoryEntryRequest.java
@@ -0,0 +1,44 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 DeleteManagedMemoryEntryRequest {
+ /**
+ * Resource name in the form
+ * `memory-stores/{managed_memory_store_id}/entries/{managed_memory_entry_id}`.
+ */
+ @JsonIgnore private String name;
+
+ public DeleteManagedMemoryEntryRequest 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;
+ DeleteManagedMemoryEntryRequest that = (DeleteManagedMemoryEntryRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(DeleteManagedMemoryEntryRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteManagedMemoryStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteManagedMemoryStoreRequest.java
new file mode 100644
index 000000000..b2b7842c0
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteManagedMemoryStoreRequest.java
@@ -0,0 +1,41 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 DeleteManagedMemoryStoreRequest {
+ /** Resource name in the form `memory-stores/{managed_memory_store_id}`. */
+ @JsonIgnore private String name;
+
+ public DeleteManagedMemoryStoreRequest 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;
+ DeleteManagedMemoryStoreRequest that = (DeleteManagedMemoryStoreRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(DeleteManagedMemoryStoreRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteSessionRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteSessionRequest.java
new file mode 100644
index 000000000..ff06c8007
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteSessionRequest.java
@@ -0,0 +1,41 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 DeleteSessionRequest {
+ /** Resource name in the form `session-stores/{session_store_id}/sessions/{session_id}`. */
+ @JsonIgnore private String name;
+
+ public DeleteSessionRequest 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;
+ DeleteSessionRequest that = (DeleteSessionRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(DeleteSessionRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteSessionStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteSessionStoreRequest.java
new file mode 100644
index 000000000..78b74685b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/DeleteSessionStoreRequest.java
@@ -0,0 +1,41 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 DeleteSessionStoreRequest {
+ /** Resource name in the form `session-stores/{session_store_id}`. */
+ @JsonIgnore private String name;
+
+ public DeleteSessionStoreRequest 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;
+ DeleteSessionStoreRequest that = (DeleteSessionStoreRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(DeleteSessionStoreRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ExtractMemoriesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ExtractMemoriesRequest.java
new file mode 100644
index 000000000..a3fbd994b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ExtractMemoriesRequest.java
@@ -0,0 +1,110 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+/** Request to synchronously extract memories from a single session. */
+@Generated
+public class ExtractMemoriesRequest {
+ /**
+ * When true, extract and return the entries without writing them to the memory store. Defaults to
+ * false, which persists the extracted entries and returns them.
+ */
+ @JsonProperty("dry_run")
+ private Boolean dryRun;
+
+ /** Instructions steering what is extracted from the session. */
+ @JsonProperty("instructions")
+ private String instructions;
+
+ /**
+ * Managed memory store the extracted entries are written to, in the form
+ * `memory-stores/{managed_memory_store_id}`.
+ */
+ @JsonProperty("memory_store")
+ private String memoryStore;
+
+ /** Identifier of the session whose transcript is distilled into memories. */
+ @JsonIgnore private String sessionId;
+
+ /** Session store containing the session, in the form `session-stores/{session_store_id}`. */
+ @JsonIgnore private String sessionStore;
+
+ public ExtractMemoriesRequest setDryRun(Boolean dryRun) {
+ this.dryRun = dryRun;
+ return this;
+ }
+
+ public Boolean getDryRun() {
+ return dryRun;
+ }
+
+ public ExtractMemoriesRequest setInstructions(String instructions) {
+ this.instructions = instructions;
+ return this;
+ }
+
+ public String getInstructions() {
+ return instructions;
+ }
+
+ public ExtractMemoriesRequest setMemoryStore(String memoryStore) {
+ this.memoryStore = memoryStore;
+ return this;
+ }
+
+ public String getMemoryStore() {
+ return memoryStore;
+ }
+
+ public ExtractMemoriesRequest setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public ExtractMemoriesRequest setSessionStore(String sessionStore) {
+ this.sessionStore = sessionStore;
+ return this;
+ }
+
+ public String getSessionStore() {
+ return sessionStore;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ExtractMemoriesRequest that = (ExtractMemoriesRequest) o;
+ return Objects.equals(dryRun, that.dryRun)
+ && Objects.equals(instructions, that.instructions)
+ && Objects.equals(memoryStore, that.memoryStore)
+ && Objects.equals(sessionId, that.sessionId)
+ && Objects.equals(sessionStore, that.sessionStore);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(dryRun, instructions, memoryStore, sessionId, sessionStore);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ExtractMemoriesRequest.class)
+ .add("dryRun", dryRun)
+ .add("instructions", instructions)
+ .add("memoryStore", memoryStore)
+ .add("sessionId", sessionId)
+ .add("sessionStore", sessionStore)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ExtractMemoriesResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ExtractMemoriesResponse.java
new file mode 100644
index 000000000..8174ea9f0
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ExtractMemoriesResponse.java
@@ -0,0 +1,62 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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;
+
+/** Result of a single-session memory extraction. */
+@Generated
+public class ExtractMemoriesResponse {
+ /** The memory entries written by this extraction. */
+ @JsonProperty("entries")
+ private Collection entries;
+
+ /**
+ * Correlation identifier for this extraction, for logging and tracing. Not a fetchable resource.
+ */
+ @JsonProperty("name")
+ private String name;
+
+ public ExtractMemoriesResponse setEntries(Collection entries) {
+ this.entries = entries;
+ return this;
+ }
+
+ public Collection getEntries() {
+ return entries;
+ }
+
+ public ExtractMemoriesResponse 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;
+ ExtractMemoriesResponse that = (ExtractMemoriesResponse) o;
+ return Objects.equals(entries, that.entries) && Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(entries, name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ExtractMemoriesResponse.class)
+ .add("entries", entries)
+ .add("name", name)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ForkSessionRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ForkSessionRequest.java
new file mode 100644
index 000000000..8792dcf03
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ForkSessionRequest.java
@@ -0,0 +1,128 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Map;
+import java.util.Objects;
+
+/** Request to fork a session. */
+@Generated
+public class ForkSessionRequest {
+ /**
+ * Opaque caller-provided identifier for the application actor associated with the forked session.
+ */
+ @JsonProperty("actor_id")
+ private String actorId;
+
+ /** Optional metadata for the fork. */
+ @JsonProperty("metadata")
+ private Map metadata;
+
+ /**
+ * Resource name of the containing session store, in the form `session-stores/{session_store_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ /** Optional unique ID for the forked session. A collision returns `ALREADY_EXISTS`. */
+ @JsonProperty("session_id")
+ private String sessionId;
+
+ /** ID of the session to copy. */
+ @JsonProperty("source_session_id")
+ private String sourceSessionId;
+
+ /**
+ * Optional last item ID to copy through, inclusively. When omitted, the fork atomically copies
+ * all items committed before the fork operation begins.
+ */
+ @JsonProperty("up_to_item_id")
+ private String upToItemId;
+
+ public ForkSessionRequest setActorId(String actorId) {
+ this.actorId = actorId;
+ return this;
+ }
+
+ public String getActorId() {
+ return actorId;
+ }
+
+ public ForkSessionRequest setMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ public Map getMetadata() {
+ return metadata;
+ }
+
+ public ForkSessionRequest setParent(String parent) {
+ this.parent = parent;
+ return this;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public ForkSessionRequest setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public ForkSessionRequest setSourceSessionId(String sourceSessionId) {
+ this.sourceSessionId = sourceSessionId;
+ return this;
+ }
+
+ public String getSourceSessionId() {
+ return sourceSessionId;
+ }
+
+ public ForkSessionRequest setUpToItemId(String upToItemId) {
+ this.upToItemId = upToItemId;
+ return this;
+ }
+
+ public String getUpToItemId() {
+ return upToItemId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ForkSessionRequest that = (ForkSessionRequest) o;
+ return Objects.equals(actorId, that.actorId)
+ && Objects.equals(metadata, that.metadata)
+ && Objects.equals(parent, that.parent)
+ && Objects.equals(sessionId, that.sessionId)
+ && Objects.equals(sourceSessionId, that.sourceSessionId)
+ && Objects.equals(upToItemId, that.upToItemId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(actorId, metadata, parent, sessionId, sourceSessionId, upToItemId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ForkSessionRequest.class)
+ .add("actorId", actorId)
+ .add("metadata", metadata)
+ .add("parent", parent)
+ .add("sessionId", sessionId)
+ .add("sourceSessionId", sourceSessionId)
+ .add("upToItemId", upToItemId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ForkSessionResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ForkSessionResponse.java
new file mode 100644
index 000000000..037d55320
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ForkSessionResponse.java
@@ -0,0 +1,43 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+/** Response from forking a session. */
+@Generated
+public class ForkSessionResponse {
+ /** The newly-created independent top-level session. */
+ @JsonProperty("session")
+ private Session session;
+
+ public ForkSessionResponse setSession(Session session) {
+ this.session = session;
+ return this;
+ }
+
+ public Session getSession() {
+ return session;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ForkSessionResponse that = (ForkSessionResponse) o;
+ return Objects.equals(session, that.session);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(session);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ForkSessionResponse.class).add("session", session).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetManagedMemoryEntryRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetManagedMemoryEntryRequest.java
new file mode 100644
index 000000000..f5d3ee1d6
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetManagedMemoryEntryRequest.java
@@ -0,0 +1,67 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+@Generated
+public class GetManagedMemoryEntryRequest {
+ /**
+ * Resource name in the form
+ * `memory-stores/{managed_memory_store_id}/entries/{managed_memory_entry_id}`.
+ */
+ @JsonIgnore private String name;
+
+ /**
+ * Fields to return, using proto field names such as `content` (not `contents`). An omitted or
+ * empty mask returns the full entry, including `content`; a non-empty mask returns only the
+ * requested fields.
+ */
+ @JsonIgnore
+ @QueryParam("read_mask")
+ private FieldMask readMask;
+
+ public GetManagedMemoryEntryRequest setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public GetManagedMemoryEntryRequest setReadMask(FieldMask readMask) {
+ this.readMask = readMask;
+ return this;
+ }
+
+ public FieldMask getReadMask() {
+ return readMask;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ GetManagedMemoryEntryRequest that = (GetManagedMemoryEntryRequest) o;
+ return Objects.equals(name, that.name) && Objects.equals(readMask, that.readMask);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, readMask);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(GetManagedMemoryEntryRequest.class)
+ .add("name", name)
+ .add("readMask", readMask)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetManagedMemoryStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetManagedMemoryStoreRequest.java
new file mode 100644
index 000000000..d27c1b7ef
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetManagedMemoryStoreRequest.java
@@ -0,0 +1,41 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 GetManagedMemoryStoreRequest {
+ /** Resource name in the form `memory-stores/{managed_memory_store_id}`. */
+ @JsonIgnore private String name;
+
+ public GetManagedMemoryStoreRequest 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;
+ GetManagedMemoryStoreRequest that = (GetManagedMemoryStoreRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(GetManagedMemoryStoreRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetSessionRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetSessionRequest.java
new file mode 100644
index 000000000..a699a6ddb
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetSessionRequest.java
@@ -0,0 +1,41 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 GetSessionRequest {
+ /** Resource name in the form `session-stores/{session_store_id}/sessions/{session_id}`. */
+ @JsonIgnore private String name;
+
+ public GetSessionRequest 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;
+ GetSessionRequest that = (GetSessionRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(GetSessionRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetSessionStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetSessionStoreRequest.java
new file mode 100644
index 000000000..0796da6c0
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/GetSessionStoreRequest.java
@@ -0,0 +1,41 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 GetSessionStoreRequest {
+ /** Resource name in the form `session-stores/{session_store_id}`. */
+ @JsonIgnore private String name;
+
+ public GetSessionStoreRequest 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;
+ GetSessionStoreRequest that = (GetSessionStoreRequest) o;
+ return Objects.equals(name, that.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(GetSessionStoreRequest.class).add("name", name).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryEntriesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryEntriesRequest.java
new file mode 100644
index 000000000..ecc8494e4
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryEntriesRequest.java
@@ -0,0 +1,154 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+@Generated
+public class ListManagedMemoryEntriesRequest {
+ /** Customer-provided identifier for the actor whose entries are listed. */
+ @JsonIgnore
+ @QueryParam("actor_id")
+ private String actorId;
+
+ /**
+ * Maximum number of entries to return. The service may return fewer entries than requested.
+ * Defaults to 10; must be between 1 and 100.
+ */
+ @JsonIgnore
+ @QueryParam("page_size")
+ private Long pageSize;
+
+ /** Opaque pagination token from a previous ListManagedMemoryEntries response. */
+ @JsonIgnore
+ @QueryParam("page_token")
+ private String pageToken;
+
+ /**
+ * Managed memory store whose entries are listed, in the form
+ * `memory-stores/{managed_memory_store_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ /** Optional path prefix used to restrict entries within the actor partition. */
+ @JsonIgnore
+ @QueryParam("path_prefix")
+ private String pathPrefix;
+
+ /**
+ * Fields to return in each entry, using proto field names such as `content` (not `contents`). An
+ * omitted or empty mask returns each full entry, including `content`; a non-empty mask returns
+ * only the requested fields.
+ */
+ @JsonIgnore
+ @QueryParam("read_mask")
+ private FieldMask readMask;
+
+ /**
+ * Optional session identifier. When set, only entries with this exact `session_id` are returned.
+ * Omitted-session (cross-session) entries are not included. Ignored when path is set.
+ */
+ @JsonIgnore
+ @QueryParam("session_id")
+ private String sessionId;
+
+ public ListManagedMemoryEntriesRequest setActorId(String actorId) {
+ this.actorId = actorId;
+ return this;
+ }
+
+ public String getActorId() {
+ return actorId;
+ }
+
+ public ListManagedMemoryEntriesRequest setPageSize(Long pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ public Long getPageSize() {
+ return pageSize;
+ }
+
+ public ListManagedMemoryEntriesRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ public ListManagedMemoryEntriesRequest setParent(String parent) {
+ this.parent = parent;
+ return this;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public ListManagedMemoryEntriesRequest setPathPrefix(String pathPrefix) {
+ this.pathPrefix = pathPrefix;
+ return this;
+ }
+
+ public String getPathPrefix() {
+ return pathPrefix;
+ }
+
+ public ListManagedMemoryEntriesRequest setReadMask(FieldMask readMask) {
+ this.readMask = readMask;
+ return this;
+ }
+
+ public FieldMask getReadMask() {
+ return readMask;
+ }
+
+ public ListManagedMemoryEntriesRequest setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListManagedMemoryEntriesRequest that = (ListManagedMemoryEntriesRequest) o;
+ return Objects.equals(actorId, that.actorId)
+ && Objects.equals(pageSize, that.pageSize)
+ && Objects.equals(pageToken, that.pageToken)
+ && Objects.equals(parent, that.parent)
+ && Objects.equals(pathPrefix, that.pathPrefix)
+ && Objects.equals(readMask, that.readMask)
+ && Objects.equals(sessionId, that.sessionId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(actorId, pageSize, pageToken, parent, pathPrefix, readMask, sessionId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListManagedMemoryEntriesRequest.class)
+ .add("actorId", actorId)
+ .add("pageSize", pageSize)
+ .add("pageToken", pageToken)
+ .add("parent", parent)
+ .add("pathPrefix", pathPrefix)
+ .add("readMask", readMask)
+ .add("sessionId", sessionId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryEntriesResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryEntriesResponse.java
new file mode 100644
index 000000000..10b1e26e6
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryEntriesResponse.java
@@ -0,0 +1,62 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 containing managed memory entries. */
+@Generated
+public class ListManagedMemoryEntriesResponse {
+ /** Managed memory entries matching the request and its read mask. */
+ @JsonProperty("managed_memory_entries")
+ private Collection managedMemoryEntries;
+
+ /** Opaque pagination token. This field is omitted when there are no more results. */
+ @JsonProperty("next_page_token")
+ private String nextPageToken;
+
+ public ListManagedMemoryEntriesResponse setManagedMemoryEntries(
+ Collection managedMemoryEntries) {
+ this.managedMemoryEntries = managedMemoryEntries;
+ return this;
+ }
+
+ public Collection getManagedMemoryEntries() {
+ return managedMemoryEntries;
+ }
+
+ public ListManagedMemoryEntriesResponse 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;
+ ListManagedMemoryEntriesResponse that = (ListManagedMemoryEntriesResponse) o;
+ return Objects.equals(managedMemoryEntries, that.managedMemoryEntries)
+ && Objects.equals(nextPageToken, that.nextPageToken);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryEntries, nextPageToken);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListManagedMemoryEntriesResponse.class)
+ .add("managedMemoryEntries", managedMemoryEntries)
+ .add("nextPageToken", nextPageToken)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryStoresRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryStoresRequest.java
new file mode 100644
index 000000000..e8d2067bc
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryStoresRequest.java
@@ -0,0 +1,64 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 ListManagedMemoryStoresRequest {
+ /**
+ * Maximum number of stores to return. The service may return fewer stores than requested.
+ * Defaults to 10; must be between 1 and 100.
+ */
+ @JsonIgnore
+ @QueryParam("page_size")
+ private Long pageSize;
+
+ /** Opaque pagination token from a previous ListManagedMemoryStores response. */
+ @JsonIgnore
+ @QueryParam("page_token")
+ private String pageToken;
+
+ public ListManagedMemoryStoresRequest setPageSize(Long pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ public Long getPageSize() {
+ return pageSize;
+ }
+
+ public ListManagedMemoryStoresRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListManagedMemoryStoresRequest that = (ListManagedMemoryStoresRequest) o;
+ return Objects.equals(pageSize, that.pageSize) && Objects.equals(pageToken, that.pageToken);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(pageSize, pageToken);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListManagedMemoryStoresRequest.class)
+ .add("pageSize", pageSize)
+ .add("pageToken", pageToken)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryStoresResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryStoresResponse.java
new file mode 100644
index 000000000..13af808d0
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListManagedMemoryStoresResponse.java
@@ -0,0 +1,62 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 containing managed memory stores in the caller's workspace. */
+@Generated
+public class ListManagedMemoryStoresResponse {
+ /** Managed memory stores in the caller's workspace. */
+ @JsonProperty("managed_memory_stores")
+ private Collection managedMemoryStores;
+
+ /** Opaque pagination token. This field is omitted when there are no more results. */
+ @JsonProperty("next_page_token")
+ private String nextPageToken;
+
+ public ListManagedMemoryStoresResponse setManagedMemoryStores(
+ Collection managedMemoryStores) {
+ this.managedMemoryStores = managedMemoryStores;
+ return this;
+ }
+
+ public Collection getManagedMemoryStores() {
+ return managedMemoryStores;
+ }
+
+ public ListManagedMemoryStoresResponse 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;
+ ListManagedMemoryStoresResponse that = (ListManagedMemoryStoresResponse) o;
+ return Objects.equals(managedMemoryStores, that.managedMemoryStores)
+ && Objects.equals(nextPageToken, that.nextPageToken);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryStores, nextPageToken);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListManagedMemoryStoresResponse.class)
+ .add("managedMemoryStores", managedMemoryStores)
+ .add("nextPageToken", nextPageToken)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionItemsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionItemsRequest.java
new file mode 100644
index 000000000..d09aa2ddb
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionItemsRequest.java
@@ -0,0 +1,99 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 ListSessionItemsRequest {
+ /**
+ * Sort order. Supported values are `create_time asc` and `create_time desc`. The default is
+ * `create_time desc`, which returns the most recently appended items first. Equal timestamps are
+ * resolved by committed append order in the requested direction.
+ */
+ @JsonIgnore
+ @QueryParam("order_by")
+ private String orderBy;
+
+ /** Maximum number of items to return. Defaults to 10; must be between 1 and 100. */
+ @JsonIgnore
+ @QueryParam("page_size")
+ private Long pageSize;
+
+ /** Token returned by a previous list request. */
+ @JsonIgnore
+ @QueryParam("page_token")
+ private String pageToken;
+
+ /**
+ * Resource name of the containing session, in the form
+ * `session-stores/{session_store_id}/sessions/{session_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ public ListSessionItemsRequest setOrderBy(String orderBy) {
+ this.orderBy = orderBy;
+ return this;
+ }
+
+ public String getOrderBy() {
+ return orderBy;
+ }
+
+ public ListSessionItemsRequest setPageSize(Long pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ public Long getPageSize() {
+ return pageSize;
+ }
+
+ public ListSessionItemsRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ public ListSessionItemsRequest 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;
+ ListSessionItemsRequest that = (ListSessionItemsRequest) o;
+ return Objects.equals(orderBy, that.orderBy)
+ && Objects.equals(pageSize, that.pageSize)
+ && Objects.equals(pageToken, that.pageToken)
+ && Objects.equals(parent, that.parent);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(orderBy, pageSize, pageToken, parent);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSessionItemsRequest.class)
+ .add("orderBy", orderBy)
+ .add("pageSize", pageSize)
+ .add("pageToken", pageToken)
+ .add("parent", parent)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionItemsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionItemsResponse.java
new file mode 100644
index 000000000..27ed7bd1e
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionItemsResponse.java
@@ -0,0 +1,61 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 containing a page of session items. */
+@Generated
+public class ListSessionItemsResponse {
+ /** Token to retrieve the next page. */
+ @JsonProperty("next_page_token")
+ private String nextPageToken;
+
+ /** Session items in the requested page. */
+ @JsonProperty("session_items")
+ private Collection sessionItems;
+
+ public ListSessionItemsResponse setNextPageToken(String nextPageToken) {
+ this.nextPageToken = nextPageToken;
+ return this;
+ }
+
+ public String getNextPageToken() {
+ return nextPageToken;
+ }
+
+ public ListSessionItemsResponse setSessionItems(Collection sessionItems) {
+ this.sessionItems = sessionItems;
+ return this;
+ }
+
+ public Collection getSessionItems() {
+ return sessionItems;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListSessionItemsResponse that = (ListSessionItemsResponse) o;
+ return Objects.equals(nextPageToken, that.nextPageToken)
+ && Objects.equals(sessionItems, that.sessionItems);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(nextPageToken, sessionItems);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSessionItemsResponse.class)
+ .add("nextPageToken", nextPageToken)
+ .add("sessionItems", sessionItems)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionStoresRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionStoresRequest.java
new file mode 100644
index 000000000..167d9f2cf
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionStoresRequest.java
@@ -0,0 +1,61 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 ListSessionStoresRequest {
+ /** Maximum number of session stores to return. Defaults to 10; must be between 1 and 100. */
+ @JsonIgnore
+ @QueryParam("page_size")
+ private Long pageSize;
+
+ /** Token returned by a previous list request. */
+ @JsonIgnore
+ @QueryParam("page_token")
+ private String pageToken;
+
+ public ListSessionStoresRequest setPageSize(Long pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ public Long getPageSize() {
+ return pageSize;
+ }
+
+ public ListSessionStoresRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListSessionStoresRequest that = (ListSessionStoresRequest) o;
+ return Objects.equals(pageSize, that.pageSize) && Objects.equals(pageToken, that.pageToken);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(pageSize, pageToken);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSessionStoresRequest.class)
+ .add("pageSize", pageSize)
+ .add("pageToken", pageToken)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionStoresResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionStoresResponse.java
new file mode 100644
index 000000000..d96651695
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionStoresResponse.java
@@ -0,0 +1,61 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 containing a page of session stores. */
+@Generated
+public class ListSessionStoresResponse {
+ /** Token to retrieve the next page. */
+ @JsonProperty("next_page_token")
+ private String nextPageToken;
+
+ /** Session stores in the requested page. */
+ @JsonProperty("session_stores")
+ private Collection sessionStores;
+
+ public ListSessionStoresResponse setNextPageToken(String nextPageToken) {
+ this.nextPageToken = nextPageToken;
+ return this;
+ }
+
+ public String getNextPageToken() {
+ return nextPageToken;
+ }
+
+ public ListSessionStoresResponse setSessionStores(Collection sessionStores) {
+ this.sessionStores = sessionStores;
+ return this;
+ }
+
+ public Collection getSessionStores() {
+ return sessionStores;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListSessionStoresResponse that = (ListSessionStoresResponse) o;
+ return Objects.equals(nextPageToken, that.nextPageToken)
+ && Objects.equals(sessionStores, that.sessionStores);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(nextPageToken, sessionStores);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSessionStoresResponse.class)
+ .add("nextPageToken", nextPageToken)
+ .add("sessionStores", sessionStores)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionsRequest.java
new file mode 100644
index 000000000..dd1041334
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionsRequest.java
@@ -0,0 +1,118 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 ListSessionsRequest {
+ /**
+ * Filter expression. Supported fields include `actor_id` and `metadata`; for example, `actor_id =
+ * "support-customer-123"`.
+ */
+ @JsonIgnore
+ @QueryParam("filter")
+ private String filter;
+
+ /**
+ * Sort order. Defaults to `last_activity_time desc`. Page-token continuation is exactly-once when
+ * ordering by `create_time` (immutable); ordering by `last_activity_time` is best-effort, because
+ * that value changes as a session gains activity, so a session updated between page requests may
+ * be repeated or skipped. To enumerate every session exactly once, order by `create_time`.
+ */
+ @JsonIgnore
+ @QueryParam("order_by")
+ private String orderBy;
+
+ /** Maximum number of sessions to return. Defaults to 10; must be between 1 and 100. */
+ @JsonIgnore
+ @QueryParam("page_size")
+ private Long pageSize;
+
+ /** Token returned by a previous list request. */
+ @JsonIgnore
+ @QueryParam("page_token")
+ private String pageToken;
+
+ /**
+ * Resource name of the containing session store, in the form `session-stores/{session_store_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ public ListSessionsRequest setFilter(String filter) {
+ this.filter = filter;
+ return this;
+ }
+
+ public String getFilter() {
+ return filter;
+ }
+
+ public ListSessionsRequest setOrderBy(String orderBy) {
+ this.orderBy = orderBy;
+ return this;
+ }
+
+ public String getOrderBy() {
+ return orderBy;
+ }
+
+ public ListSessionsRequest setPageSize(Long pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ public Long getPageSize() {
+ return pageSize;
+ }
+
+ public ListSessionsRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ public ListSessionsRequest 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;
+ ListSessionsRequest that = (ListSessionsRequest) o;
+ return Objects.equals(filter, that.filter)
+ && Objects.equals(orderBy, that.orderBy)
+ && Objects.equals(pageSize, that.pageSize)
+ && Objects.equals(pageToken, that.pageToken)
+ && Objects.equals(parent, that.parent);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(filter, orderBy, pageSize, pageToken, parent);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSessionsRequest.class)
+ .add("filter", filter)
+ .add("orderBy", orderBy)
+ .add("pageSize", pageSize)
+ .add("pageToken", pageToken)
+ .add("parent", parent)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionsResponse.java
new file mode 100644
index 000000000..dd0786afd
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ListSessionsResponse.java
@@ -0,0 +1,61 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 containing a page of sessions. */
+@Generated
+public class ListSessionsResponse {
+ /** Token to retrieve the next page. */
+ @JsonProperty("next_page_token")
+ private String nextPageToken;
+
+ /** Sessions in the requested page. */
+ @JsonProperty("sessions")
+ private Collection sessions;
+
+ public ListSessionsResponse setNextPageToken(String nextPageToken) {
+ this.nextPageToken = nextPageToken;
+ return this;
+ }
+
+ public String getNextPageToken() {
+ return nextPageToken;
+ }
+
+ public ListSessionsResponse setSessions(Collection sessions) {
+ this.sessions = sessions;
+ return this;
+ }
+
+ public Collection getSessions() {
+ return sessions;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ListSessionsResponse that = (ListSessionsResponse) o;
+ return Objects.equals(nextPageToken, that.nextPageToken)
+ && Objects.equals(sessions, that.sessions);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(nextPageToken, sessions);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ListSessionsResponse.class)
+ .add("nextPageToken", nextPageToken)
+ .add("sessions", sessions)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntry.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntry.java
new file mode 100644
index 000000000..ff9f89324
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntry.java
@@ -0,0 +1,176 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.Timestamp;
+import java.util.Objects;
+
+/** A workspace-scoped entry in a managed memory store. */
+@Generated
+public class ManagedMemoryEntry {
+ /** Customer-provided identifier for the actor whose memory this entry represents. */
+ @JsonProperty("actor_id")
+ private String actorId;
+
+ /** Optional free-form memory content. */
+ @JsonProperty("content")
+ private String content;
+
+ /** Time when the entry was created. */
+ @JsonProperty("create_time")
+ private Timestamp createTime;
+
+ /** Human-readable description of the memory entry. */
+ @JsonProperty("description")
+ private String description;
+
+ /**
+ * Resource name in the form
+ * `memory-stores/{managed_memory_store_id}/entries/{managed_memory_entry_id}`.
+ */
+ @JsonProperty("name")
+ private String name;
+
+ /**
+ * Absolute, case-sensitive path identifying the entry within its actor and optional session.
+ * Paths must begin with `/` and must not contain empty, `.` or `..` segments.
+ */
+ @JsonProperty("path")
+ private String path;
+
+ /**
+ * Optional identifier for the session associated with this memory entry. When omitted, the entry
+ * applies across the actor's sessions.
+ */
+ @JsonProperty("session_id")
+ private String sessionId;
+
+ /** Which writer created this entry. Caller sets this on Create; immutable after creation. */
+ @JsonProperty("source_type")
+ private ManagedMemoryEntrySourceType sourceType;
+
+ /** Time when the entry was last updated. */
+ @JsonProperty("update_time")
+ private Timestamp updateTime;
+
+ public ManagedMemoryEntry setActorId(String actorId) {
+ this.actorId = actorId;
+ return this;
+ }
+
+ public String getActorId() {
+ return actorId;
+ }
+
+ public ManagedMemoryEntry setContent(String content) {
+ this.content = content;
+ return this;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public ManagedMemoryEntry setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ return this;
+ }
+
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public ManagedMemoryEntry setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public ManagedMemoryEntry setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public ManagedMemoryEntry setPath(String path) {
+ this.path = path;
+ return this;
+ }
+
+ public String getPath() {
+ return path;
+ }
+
+ public ManagedMemoryEntry setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public ManagedMemoryEntry setSourceType(ManagedMemoryEntrySourceType sourceType) {
+ this.sourceType = sourceType;
+ return this;
+ }
+
+ public ManagedMemoryEntrySourceType getSourceType() {
+ return sourceType;
+ }
+
+ public ManagedMemoryEntry setUpdateTime(Timestamp updateTime) {
+ this.updateTime = updateTime;
+ return this;
+ }
+
+ public Timestamp getUpdateTime() {
+ return updateTime;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ManagedMemoryEntry that = (ManagedMemoryEntry) o;
+ return Objects.equals(actorId, that.actorId)
+ && Objects.equals(content, that.content)
+ && Objects.equals(createTime, that.createTime)
+ && Objects.equals(description, that.description)
+ && Objects.equals(name, that.name)
+ && Objects.equals(path, that.path)
+ && Objects.equals(sessionId, that.sessionId)
+ && Objects.equals(sourceType, that.sourceType)
+ && Objects.equals(updateTime, that.updateTime);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ actorId, content, createTime, description, name, path, sessionId, sourceType, updateTime);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ManagedMemoryEntry.class)
+ .add("actorId", actorId)
+ .add("content", content)
+ .add("createTime", createTime)
+ .add("description", description)
+ .add("name", name)
+ .add("path", path)
+ .add("sessionId", sessionId)
+ .add("sourceType", sourceType)
+ .add("updateTime", updateTime)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntrySearchResult.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntrySearchResult.java
new file mode 100644
index 000000000..95decfac9
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntrySearchResult.java
@@ -0,0 +1,61 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+/** One relevance-ranked managed memory search result. */
+@Generated
+public class ManagedMemoryEntrySearchResult {
+ /** Managed memory entry matching the query. */
+ @JsonProperty("managed_memory_entry")
+ private ManagedMemoryEntry managedMemoryEntry;
+
+ /** Relevance score for the result. Higher scores are more relevant. */
+ @JsonProperty("score")
+ private Double score;
+
+ public ManagedMemoryEntrySearchResult setManagedMemoryEntry(
+ ManagedMemoryEntry managedMemoryEntry) {
+ this.managedMemoryEntry = managedMemoryEntry;
+ return this;
+ }
+
+ public ManagedMemoryEntry getManagedMemoryEntry() {
+ return managedMemoryEntry;
+ }
+
+ public ManagedMemoryEntrySearchResult setScore(Double score) {
+ this.score = score;
+ return this;
+ }
+
+ public Double getScore() {
+ return score;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ManagedMemoryEntrySearchResult that = (ManagedMemoryEntrySearchResult) o;
+ return Objects.equals(managedMemoryEntry, that.managedMemoryEntry)
+ && Objects.equals(score, that.score);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryEntry, score);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ManagedMemoryEntrySearchResult.class)
+ .add("managedMemoryEntry", managedMemoryEntry)
+ .add("score", score)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntrySourceType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntrySourceType.java
new file mode 100644
index 000000000..595f17fac
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryEntrySourceType.java
@@ -0,0 +1,12 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+
+/** Identifies the source that created a managed memory entry. */
+@Generated
+public enum ManagedMemoryEntrySourceType {
+ MANAGED_MEMORY_ENTRY_SOURCE_TYPE_AGENT,
+ MANAGED_MEMORY_ENTRY_SOURCE_TYPE_DREAMER,
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryStore.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryStore.java
new file mode 100644
index 000000000..e2004502e
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/ManagedMemoryStore.java
@@ -0,0 +1,186 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.Timestamp;
+import java.util.Objects;
+
+/** A workspace-scoped managed memory store backed by service-managed storage. */
+@Generated
+public class ManagedMemoryStore {
+ /** Time when the store was created. */
+ @JsonProperty("create_time")
+ private Timestamp createTime;
+
+ /**
+ * Workspace-local user ID of the authenticated principal that created the store. This is
+ * immutable server-set attribution and does not grant access; authorization is evaluated from the
+ * authenticated request context.
+ */
+ @JsonProperty("creator_user_id")
+ private String creatorUserId;
+
+ /** Human-readable description of the memory store. */
+ @JsonProperty("description")
+ private String description;
+
+ /**
+ * Deprecated compatibility alias for the caller-provided managed memory store ID. Canonical
+ * clients provide the ID through `CreateMemoryStoreRequest.managed_memory_store_id` and use
+ * `name` as the resource identifier.
+ */
+ @JsonProperty("display_name")
+ private String displayName;
+
+ /** Resource name in the form `memory-stores/{managed_memory_store_id}`. */
+ @JsonProperty("name")
+ private String name;
+
+ /**
+ * Deprecated alias for `creator_user_id`. This identifies the original creator, not a
+ * transferable owner. Use `creator_user_id` instead.
+ */
+ @JsonProperty("owner_user_id")
+ private String ownerUserId;
+
+ /** Service-managed storage backing this memory store. */
+ @JsonProperty("storage_backend")
+ private StorageBackend storageBackend;
+
+ /** Time when the store was last updated. */
+ @JsonProperty("update_time")
+ private Timestamp updateTime;
+
+ /** Workspace that owns the memory store. */
+ @JsonProperty("workspace_id")
+ private Long workspaceId;
+
+ public ManagedMemoryStore setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ return this;
+ }
+
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public ManagedMemoryStore setCreatorUserId(String creatorUserId) {
+ this.creatorUserId = creatorUserId;
+ return this;
+ }
+
+ public String getCreatorUserId() {
+ return creatorUserId;
+ }
+
+ public ManagedMemoryStore setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public ManagedMemoryStore setDisplayName(String displayName) {
+ this.displayName = displayName;
+ return this;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public ManagedMemoryStore setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public ManagedMemoryStore setOwnerUserId(String ownerUserId) {
+ this.ownerUserId = ownerUserId;
+ return this;
+ }
+
+ public String getOwnerUserId() {
+ return ownerUserId;
+ }
+
+ public ManagedMemoryStore setStorageBackend(StorageBackend storageBackend) {
+ this.storageBackend = storageBackend;
+ return this;
+ }
+
+ public StorageBackend getStorageBackend() {
+ return storageBackend;
+ }
+
+ public ManagedMemoryStore setUpdateTime(Timestamp updateTime) {
+ this.updateTime = updateTime;
+ return this;
+ }
+
+ public Timestamp getUpdateTime() {
+ return updateTime;
+ }
+
+ public ManagedMemoryStore setWorkspaceId(Long workspaceId) {
+ this.workspaceId = workspaceId;
+ return this;
+ }
+
+ public Long getWorkspaceId() {
+ return workspaceId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ ManagedMemoryStore that = (ManagedMemoryStore) o;
+ return Objects.equals(createTime, that.createTime)
+ && Objects.equals(creatorUserId, that.creatorUserId)
+ && Objects.equals(description, that.description)
+ && Objects.equals(displayName, that.displayName)
+ && Objects.equals(name, that.name)
+ && Objects.equals(ownerUserId, that.ownerUserId)
+ && Objects.equals(storageBackend, that.storageBackend)
+ && Objects.equals(updateTime, that.updateTime)
+ && Objects.equals(workspaceId, that.workspaceId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ createTime,
+ creatorUserId,
+ description,
+ displayName,
+ name,
+ ownerUserId,
+ storageBackend,
+ updateTime,
+ workspaceId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(ManagedMemoryStore.class)
+ .add("createTime", createTime)
+ .add("creatorUserId", creatorUserId)
+ .add("description", description)
+ .add("displayName", displayName)
+ .add("name", name)
+ .add("ownerUserId", ownerUserId)
+ .add("storageBackend", storageBackend)
+ .add("updateTime", updateTime)
+ .add("workspaceId", workspaceId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonAPI.java
new file mode 100644
index 000000000..97c139490
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonAPI.java
@@ -0,0 +1,308 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.logging.Logger;
+import com.databricks.sdk.core.logging.LoggerFactory;
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.Paginator;
+
+/**
+ * APIs for managing agent memory and durable session state. This interface is under active
+ * development and may change.
+ */
+@Generated
+public class MasonAPI {
+ private static final Logger LOG = LoggerFactory.getLogger(MasonAPI.class);
+
+ private final MasonService impl;
+
+ /** Regular-use constructor */
+ public MasonAPI(ApiClient apiClient) {
+ impl = new MasonImpl(apiClient);
+ }
+
+ /** Constructor for mocks */
+ public MasonAPI(MasonService mock) {
+ impl = mock;
+ }
+
+ /** Appends items to a session. */
+ public AppendSessionItemsResponse appendSessionItems(AppendSessionItemsRequest request) {
+ return impl.appendSessionItems(request);
+ }
+
+ /** Clears all items from a session. */
+ public ClearSessionItemsResponse clearSessionItems(ClearSessionItemsRequest request) {
+ return impl.clearSessionItems(request);
+ }
+
+ /**
+ * Creates a managed memory entry using exclusive-create semantics. Callers may choose the entry
+ * ID; the service generates one when it is omitted. Returns `ALREADY_EXISTS` when an entry with
+ * the same actor, session, and path already exists. Omitted `session_id` is its own uniqueness
+ * key: two omitted-session entries with the same actor and path conflict, but an omitted-session
+ * entry does not conflict with a session-scoped entry at the same actor and path.
+ */
+ public ManagedMemoryEntry createMemory(CreateManagedMemoryEntryRequest request) {
+ return impl.createMemory(request);
+ }
+
+ /** Creates a managed memory store in the caller's workspace. */
+ public ManagedMemoryStore createMemoryStore(CreateManagedMemoryStoreRequest request) {
+ return impl.createMemoryStore(request);
+ }
+
+ /** Creates a session within a session store. */
+ public Session createSession(CreateSessionRequest request) {
+ return impl.createSession(request);
+ }
+
+ /** Creates a session store. */
+ public SessionStore createSessionStore(CreateSessionStoreRequest request) {
+ return impl.createSessionStore(request);
+ }
+
+ public void deleteMemory(String name) {
+ deleteMemory(new DeleteManagedMemoryEntryRequest().setName(name));
+ }
+
+ /**
+ * Deletes a managed memory entry by resource name. Returns `NOT_FOUND` when the entry does not
+ * exist in the caller's workspace.
+ */
+ public void deleteMemory(DeleteManagedMemoryEntryRequest request) {
+ impl.deleteMemory(request);
+ }
+
+ public void deleteMemoryStore(String name) {
+ deleteMemoryStore(new DeleteManagedMemoryStoreRequest().setName(name));
+ }
+
+ /**
+ * Deletes a managed memory store by resource name. Returns `NOT_FOUND` when the store does not
+ * exist in the caller's workspace.
+ */
+ public void deleteMemoryStore(DeleteManagedMemoryStoreRequest request) {
+ impl.deleteMemoryStore(request);
+ }
+
+ public void deleteSession(String name) {
+ deleteSession(new DeleteSessionRequest().setName(name));
+ }
+
+ /**
+ * Deletes a session, its items, and any descendant sessions recursively. Independently retained
+ * memory is not deleted.
+ */
+ public void deleteSession(DeleteSessionRequest request) {
+ impl.deleteSession(request);
+ }
+
+ public void deleteSessionStore(String name) {
+ deleteSessionStore(new DeleteSessionStoreRequest().setName(name));
+ }
+
+ /**
+ * Deletes a session store, its sessions and items, and its service-managed storage. Memory
+ * entries retained by a separate Memory Store are not deleted.
+ */
+ public void deleteSessionStore(DeleteSessionStoreRequest request) {
+ impl.deleteSessionStore(request);
+ }
+
+ /**
+ * Synchronously extracts memories from a single session into the given memory store, returning
+ * the entries that were written.
+ */
+ public ExtractMemoriesResponse extractMemories(ExtractMemoriesRequest request) {
+ return impl.extractMemories(request);
+ }
+
+ /** Forks a session into an independent top-level copy. */
+ public ForkSessionResponse forkSession(ForkSessionRequest request) {
+ return impl.forkSession(request);
+ }
+
+ public ManagedMemoryEntry getMemory(String name) {
+ return getMemory(new GetManagedMemoryEntryRequest().setName(name));
+ }
+
+ /**
+ * Retrieves a managed memory entry, including its content, by resource name. Returns `NOT_FOUND`
+ * when the entry does not exist in the caller's workspace.
+ */
+ public ManagedMemoryEntry getMemory(GetManagedMemoryEntryRequest request) {
+ return impl.getMemory(request);
+ }
+
+ public ManagedMemoryStore getMemoryStore(String name) {
+ return getMemoryStore(new GetManagedMemoryStoreRequest().setName(name));
+ }
+
+ /**
+ * Retrieves a managed memory store by resource name. Returns `NOT_FOUND` when the store does not
+ * exist in the caller's workspace.
+ */
+ public ManagedMemoryStore getMemoryStore(GetManagedMemoryStoreRequest request) {
+ return impl.getMemoryStore(request);
+ }
+
+ public Session getSession(String name) {
+ return getSession(new GetSessionRequest().setName(name));
+ }
+
+ /** Gets a session by resource name. */
+ public Session getSession(GetSessionRequest request) {
+ return impl.getSession(request);
+ }
+
+ public SessionStore getSessionStore(String name) {
+ return getSessionStore(new GetSessionStoreRequest().setName(name));
+ }
+
+ /** Gets a session store by resource name. */
+ public SessionStore getSessionStore(GetSessionStoreRequest request) {
+ return impl.getSessionStore(request);
+ }
+
+ public Iterable listMemories(String parent, String actorId) {
+ return listMemories(
+ new ListManagedMemoryEntriesRequest().setParent(parent).setActorId(actorId));
+ }
+
+ /**
+ * Lists managed memory entries for one actor. An exact `path` filters entries across sessions,
+ * ignoring session metadata. Otherwise, `session_id` and `path_prefix` restrict the actor
+ * partition. `read_mask` selects fields in each returned entry.
+ */
+ public Iterable listMemories(ListManagedMemoryEntriesRequest request) {
+ return Paginator.newTokenPagination(
+ request,
+ impl::listMemories,
+ ListManagedMemoryEntriesResponse::getManagedMemoryEntries,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+
+ /** Lists managed memory stores in the caller's workspace. */
+ public Iterable listMemoryStores(ListManagedMemoryStoresRequest request) {
+ return Paginator.newTokenPagination(
+ request,
+ impl::listMemoryStores,
+ ListManagedMemoryStoresResponse::getManagedMemoryStores,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+
+ public Iterable listSessionItems(String parent) {
+ return listSessionItems(new ListSessionItemsRequest().setParent(parent));
+ }
+
+ /** Lists items in a session. */
+ public Iterable listSessionItems(ListSessionItemsRequest request) {
+ return Paginator.newTokenPagination(
+ request,
+ impl::listSessionItems,
+ ListSessionItemsResponse::getSessionItems,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+
+ /** Lists session stores. */
+ public Iterable listSessionStores(ListSessionStoresRequest request) {
+ return Paginator.newTokenPagination(
+ request,
+ impl::listSessionStores,
+ ListSessionStoresResponse::getSessionStores,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+
+ public Iterable listSessions(String parent) {
+ return listSessions(new ListSessionsRequest().setParent(parent));
+ }
+
+ /** Lists sessions within a session store. */
+ public Iterable listSessions(ListSessionsRequest request) {
+ return Paginator.newTokenPagination(
+ request,
+ impl::listSessions,
+ ListSessionsResponse::getSessions,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+
+ /** Pops the newest item from a session. */
+ public PopSessionItemResponse popSessionItem(PopSessionItemRequest request) {
+ return impl.popSessionItem(request);
+ }
+
+ /**
+ * Searches managed memory entries by text query for one actor. Returns matching entries and
+ * scores ranked by relevance; `read_mask` selects fields in each returned entry.
+ */
+ public Iterable searchMemories(
+ SearchManagedMemoryEntriesRequest request) {
+ return Paginator.newTokenPagination(
+ request,
+ impl::searchMemories,
+ SearchManagedMemoryEntriesResponse::getResults,
+ response -> {
+ String token = response.getNextPageToken();
+ if (token == null || token.isEmpty()) {
+ return null;
+ }
+ return request.setPageToken(token);
+ });
+ }
+
+ /** Updates selected mutable fields on a managed memory entry. Identity fields are immutable. */
+ public ManagedMemoryEntry updateMemory(UpdateManagedMemoryEntryRequest request) {
+ return impl.updateMemory(request);
+ }
+
+ /** Updates a managed memory store's description. */
+ public ManagedMemoryStore updateMemoryStore(UpdateManagedMemoryStoreRequest request) {
+ return impl.updateMemoryStore(request);
+ }
+
+ /** Updates a session's mutable fields. */
+ public Session updateSession(UpdateSessionRequest request) {
+ return impl.updateSession(request);
+ }
+
+ /** Updates a session store's description and metadata. */
+ public SessionStore updateSessionStore(UpdateSessionStoreRequest request) {
+ return impl.updateSessionStore(request);
+ }
+
+ public MasonService impl() {
+ return impl;
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonImpl.java
new file mode 100644
index 000000000..9e40d6689
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonImpl.java
@@ -0,0 +1,497 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.core.ApiClient;
+import com.databricks.sdk.core.DatabricksException;
+import com.databricks.sdk.core.http.Request;
+import com.databricks.sdk.support.Generated;
+import java.io.IOException;
+
+/** Package-local implementation of Mason */
+@Generated
+class MasonImpl implements MasonService {
+ private final ApiClient apiClient;
+
+ public MasonImpl(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ @Override
+ public AppendSessionItemsResponse appendSessionItems(AppendSessionItemsRequest request) {
+ String path = String.format("/api/2.0/agents/%s/items:append", request.getParent());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, AppendSessionItemsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ClearSessionItemsResponse clearSessionItems(ClearSessionItemsRequest request) {
+ String path = String.format("/api/2.0/agents/%s/items:clear", request.getParent());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ClearSessionItemsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ManagedMemoryEntry createMemory(CreateManagedMemoryEntryRequest request) {
+ String path = String.format("/api/2.0/agents/%s/entries", request.getParent());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request.getManagedMemoryEntry()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ManagedMemoryEntry.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ManagedMemoryStore createMemoryStore(CreateManagedMemoryStoreRequest request) {
+ String path = "/api/2.0/agents/memory-stores";
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request.getManagedMemoryStore()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ManagedMemoryStore.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public Session createSession(CreateSessionRequest request) {
+ String path = String.format("/api/2.0/agents/%s/sessions", request.getParent());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request.getSession()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, Session.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public SessionStore createSessionStore(CreateSessionStoreRequest request) {
+ String path = "/api/2.0/agents/session-stores";
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request.getSessionStore()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, SessionStore.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void deleteMemory(DeleteManagedMemoryEntryRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("DELETE", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void deleteMemoryStore(DeleteManagedMemoryStoreRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("DELETE", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void deleteSession(DeleteSessionRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("DELETE", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void deleteSessionStore(DeleteSessionStoreRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("DELETE", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ apiClient.execute(req, Void.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ExtractMemoriesResponse extractMemories(ExtractMemoriesRequest request) {
+ String path =
+ String.format(
+ "/api/2.0/agents/%s/sessions/%s/extractions",
+ request.getSessionStore(), request.getSessionId());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ExtractMemoriesResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ForkSessionResponse forkSession(ForkSessionRequest request) {
+ String path = String.format("/api/2.0/agents/%s/sessions:fork", request.getParent());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ForkSessionResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ManagedMemoryEntry getMemory(GetManagedMemoryEntryRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ManagedMemoryEntry.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ManagedMemoryStore getMemoryStore(GetManagedMemoryStoreRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ManagedMemoryStore.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public Session getSession(GetSessionRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, Session.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public SessionStore getSessionStore(GetSessionStoreRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, SessionStore.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListManagedMemoryEntriesResponse listMemories(ListManagedMemoryEntriesRequest request) {
+ String path = String.format("/api/2.0/agents/%s/entries", request.getParent());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ListManagedMemoryEntriesResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListManagedMemoryStoresResponse listMemoryStores(ListManagedMemoryStoresRequest request) {
+ String path = "/api/2.0/agents/memory-stores";
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ListManagedMemoryStoresResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListSessionItemsResponse listSessionItems(ListSessionItemsRequest request) {
+ String path = String.format("/api/2.0/agents/%s/items", request.getParent());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ListSessionItemsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListSessionStoresResponse listSessionStores(ListSessionStoresRequest request) {
+ String path = "/api/2.0/agents/session-stores";
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ListSessionStoresResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ListSessionsResponse listSessions(ListSessionsRequest request) {
+ String path = String.format("/api/2.0/agents/%s/sessions", request.getParent());
+ try {
+ Request req = new Request("GET", path);
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ListSessionsResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public PopSessionItemResponse popSessionItem(PopSessionItemRequest request) {
+ String path = String.format("/api/2.0/agents/%s/items:pop", request.getParent());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, PopSessionItemResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public SearchManagedMemoryEntriesResponse searchMemories(
+ SearchManagedMemoryEntriesRequest request) {
+ String path = String.format("/api/2.0/agents/%s/entries:search", request.getParent());
+ try {
+ Request req = new Request("POST", path, apiClient.serialize(request));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, SearchManagedMemoryEntriesResponse.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ManagedMemoryEntry updateMemory(UpdateManagedMemoryEntryRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req =
+ new Request("PATCH", path, apiClient.serialize(request.getManagedMemoryEntry()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ManagedMemoryEntry.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public ManagedMemoryStore updateMemoryStore(UpdateManagedMemoryStoreRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req =
+ new Request("PATCH", path, apiClient.serialize(request.getManagedMemoryStore()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, ManagedMemoryStore.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public Session updateSession(UpdateSessionRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request.getSession()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, Session.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public SessionStore updateSessionStore(UpdateSessionStoreRequest request) {
+ String path = String.format("/api/2.0/agents/%s", request.getName());
+ try {
+ Request req = new Request("PATCH", path, apiClient.serialize(request.getSessionStore()));
+
+ ApiClient.setQuery(req, request);
+ req.withHeader("Accept", "application/json");
+ req.withHeader("Content-Type", "application/json");
+ if (apiClient.workspaceId() != null) {
+ req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId());
+ }
+ return apiClient.execute(req, SessionStore.class);
+ } catch (IOException e) {
+ throw new DatabricksException("IO error: " + e.getMessage(), e);
+ }
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonService.java
new file mode 100644
index 000000000..a160bce42
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/MasonService.java
@@ -0,0 +1,136 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+
+/**
+ * APIs for managing agent memory and durable session state. This interface is under active
+ * development and may change.
+ *
+ * This is the high-level interface, that contains generated methods.
+ *
+ *
Evolving: this interface is under development. Method signatures may change.
+ */
+@Generated
+public interface MasonService {
+ /** Appends items to a session. */
+ AppendSessionItemsResponse appendSessionItems(
+ AppendSessionItemsRequest appendSessionItemsRequest);
+
+ /** Clears all items from a session. */
+ ClearSessionItemsResponse clearSessionItems(ClearSessionItemsRequest clearSessionItemsRequest);
+
+ /**
+ * Creates a managed memory entry using exclusive-create semantics. Callers may choose the entry
+ * ID; the service generates one when it is omitted. Returns `ALREADY_EXISTS` when an entry with
+ * the same actor, session, and path already exists. Omitted `session_id` is its own uniqueness
+ * key: two omitted-session entries with the same actor and path conflict, but an omitted-session
+ * entry does not conflict with a session-scoped entry at the same actor and path.
+ */
+ ManagedMemoryEntry createMemory(CreateManagedMemoryEntryRequest createManagedMemoryEntryRequest);
+
+ /** Creates a managed memory store in the caller's workspace. */
+ ManagedMemoryStore createMemoryStore(
+ CreateManagedMemoryStoreRequest createManagedMemoryStoreRequest);
+
+ /** Creates a session within a session store. */
+ Session createSession(CreateSessionRequest createSessionRequest);
+
+ /** Creates a session store. */
+ SessionStore createSessionStore(CreateSessionStoreRequest createSessionStoreRequest);
+
+ /**
+ * Deletes a managed memory entry by resource name. Returns `NOT_FOUND` when the entry does not
+ * exist in the caller's workspace.
+ */
+ void deleteMemory(DeleteManagedMemoryEntryRequest deleteManagedMemoryEntryRequest);
+
+ /**
+ * Deletes a managed memory store by resource name. Returns `NOT_FOUND` when the store does not
+ * exist in the caller's workspace.
+ */
+ void deleteMemoryStore(DeleteManagedMemoryStoreRequest deleteManagedMemoryStoreRequest);
+
+ /**
+ * Deletes a session, its items, and any descendant sessions recursively. Independently retained
+ * memory is not deleted.
+ */
+ void deleteSession(DeleteSessionRequest deleteSessionRequest);
+
+ /**
+ * Deletes a session store, its sessions and items, and its service-managed storage. Memory
+ * entries retained by a separate Memory Store are not deleted.
+ */
+ void deleteSessionStore(DeleteSessionStoreRequest deleteSessionStoreRequest);
+
+ /**
+ * Synchronously extracts memories from a single session into the given memory store, returning
+ * the entries that were written.
+ */
+ ExtractMemoriesResponse extractMemories(ExtractMemoriesRequest extractMemoriesRequest);
+
+ /** Forks a session into an independent top-level copy. */
+ ForkSessionResponse forkSession(ForkSessionRequest forkSessionRequest);
+
+ /**
+ * Retrieves a managed memory entry, including its content, by resource name. Returns `NOT_FOUND`
+ * when the entry does not exist in the caller's workspace.
+ */
+ ManagedMemoryEntry getMemory(GetManagedMemoryEntryRequest getManagedMemoryEntryRequest);
+
+ /**
+ * Retrieves a managed memory store by resource name. Returns `NOT_FOUND` when the store does not
+ * exist in the caller's workspace.
+ */
+ ManagedMemoryStore getMemoryStore(GetManagedMemoryStoreRequest getManagedMemoryStoreRequest);
+
+ /** Gets a session by resource name. */
+ Session getSession(GetSessionRequest getSessionRequest);
+
+ /** Gets a session store by resource name. */
+ SessionStore getSessionStore(GetSessionStoreRequest getSessionStoreRequest);
+
+ /**
+ * Lists managed memory entries for one actor. An exact `path` filters entries across sessions,
+ * ignoring session metadata. Otherwise, `session_id` and `path_prefix` restrict the actor
+ * partition. `read_mask` selects fields in each returned entry.
+ */
+ ListManagedMemoryEntriesResponse listMemories(
+ ListManagedMemoryEntriesRequest listManagedMemoryEntriesRequest);
+
+ /** Lists managed memory stores in the caller's workspace. */
+ ListManagedMemoryStoresResponse listMemoryStores(
+ ListManagedMemoryStoresRequest listManagedMemoryStoresRequest);
+
+ /** Lists items in a session. */
+ ListSessionItemsResponse listSessionItems(ListSessionItemsRequest listSessionItemsRequest);
+
+ /** Lists session stores. */
+ ListSessionStoresResponse listSessionStores(ListSessionStoresRequest listSessionStoresRequest);
+
+ /** Lists sessions within a session store. */
+ ListSessionsResponse listSessions(ListSessionsRequest listSessionsRequest);
+
+ /** Pops the newest item from a session. */
+ PopSessionItemResponse popSessionItem(PopSessionItemRequest popSessionItemRequest);
+
+ /**
+ * Searches managed memory entries by text query for one actor. Returns matching entries and
+ * scores ranked by relevance; `read_mask` selects fields in each returned entry.
+ */
+ SearchManagedMemoryEntriesResponse searchMemories(
+ SearchManagedMemoryEntriesRequest searchManagedMemoryEntriesRequest);
+
+ /** Updates selected mutable fields on a managed memory entry. Identity fields are immutable. */
+ ManagedMemoryEntry updateMemory(UpdateManagedMemoryEntryRequest updateManagedMemoryEntryRequest);
+
+ /** Updates a managed memory store's description. */
+ ManagedMemoryStore updateMemoryStore(
+ UpdateManagedMemoryStoreRequest updateManagedMemoryStoreRequest);
+
+ /** Updates a session's mutable fields. */
+ Session updateSession(UpdateSessionRequest updateSessionRequest);
+
+ /** Updates a session store's description and metadata. */
+ SessionStore updateSessionStore(UpdateSessionStoreRequest updateSessionStoreRequest);
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/PopSessionItemRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/PopSessionItemRequest.java
new file mode 100644
index 000000000..f56aa5646
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/PopSessionItemRequest.java
@@ -0,0 +1,45 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.Objects;
+
+/** Request to pop an item from a session. */
+@Generated
+public class PopSessionItemRequest {
+ /**
+ * Resource name of the containing session, in the form
+ * `session-stores/{session_store_id}/sessions/{session_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ public PopSessionItemRequest 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;
+ PopSessionItemRequest that = (PopSessionItemRequest) o;
+ return Objects.equals(parent, that.parent);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(parent);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PopSessionItemRequest.class).add("parent", parent).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/PopSessionItemResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/PopSessionItemResponse.java
new file mode 100644
index 000000000..baa6c9129
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/PopSessionItemResponse.java
@@ -0,0 +1,43 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+/** Response containing the popped item. */
+@Generated
+public class PopSessionItemResponse {
+ /** Removed item, if any. */
+ @JsonProperty("item")
+ private SessionItem item;
+
+ public PopSessionItemResponse setItem(SessionItem item) {
+ this.item = item;
+ return this;
+ }
+
+ public SessionItem getItem() {
+ return item;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PopSessionItemResponse that = (PopSessionItemResponse) o;
+ return Objects.equals(item, that.item);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(item);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(PopSessionItemResponse.class).add("item", item).toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SearchManagedMemoryEntriesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SearchManagedMemoryEntriesRequest.java
new file mode 100644
index 000000000..e0bfc3b7c
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SearchManagedMemoryEntriesRequest.java
@@ -0,0 +1,196 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+/**
+ * Request to search managed memory entries by text query for one actor. Search returns a
+ * relevance-ranked top-N result set and does not currently paginate.
+ */
+@Generated
+public class SearchManagedMemoryEntriesRequest {
+ /** Customer-provided identifier for the actor whose entries are searched. */
+ @JsonProperty("actor_id")
+ private String actorId;
+
+ /** Deprecated alias for `page_size`. When both fields are set, their values must match. */
+ @JsonProperty("limit")
+ private Long limit;
+
+ /**
+ * Maximum number of relevance-ranked entries to return. Defaults to 10 and must be between 1 and
+ * 100.
+ */
+ @JsonProperty("page_size")
+ private Long pageSize;
+
+ /**
+ * Reserved for pagination compatibility. The server currently ignores this field because Search
+ * returns a ranked top-N result set.
+ */
+ @JsonProperty("page_token")
+ private String pageToken;
+
+ /**
+ * Managed memory store whose entries are searched, in the form
+ * `memory-stores/{managed_memory_store_id}`.
+ */
+ @JsonIgnore private String parent;
+
+ /**
+ * Optional absolute, case-sensitive path prefix used to restrict searched entries within the
+ * actor partition. The prefix must begin with `/` and must not contain empty, `.` or `..`
+ * segments.
+ */
+ @JsonProperty("path_prefix")
+ private String pathPrefix;
+
+ /** Free-form search query. */
+ @JsonProperty("query")
+ private String query;
+
+ /**
+ * Fields to return in each matching entry, using proto field names such as `content` (not
+ * `contents`). An omitted or empty mask returns each full entry, including `content`; a non-empty
+ * mask returns only the requested fields. Search scores are always returned.
+ *
+ *
The field mask must be a single string, with multiple fields separated by commas (no
+ * spaces). The field path is relative to the resource object, using a dot (`.`) to navigate
+ * sub-fields (e.g., `author.given_name`). Specification of elements in sequence or map fields is
+ * not allowed, as only the entire collection field can be specified. Field names must exactly
+ * match the resource field names.
+ */
+ @JsonProperty("read_mask")
+ private FieldMask readMask;
+
+ /**
+ * Optional session identifier. When set, only entries with this exact `session_id` are searched.
+ * Omitted-session (cross-session) entries are not included.
+ */
+ @JsonProperty("session_id")
+ private String sessionId;
+
+ public SearchManagedMemoryEntriesRequest setActorId(String actorId) {
+ this.actorId = actorId;
+ return this;
+ }
+
+ public String getActorId() {
+ return actorId;
+ }
+
+ public SearchManagedMemoryEntriesRequest setLimit(Long limit) {
+ this.limit = limit;
+ return this;
+ }
+
+ public Long getLimit() {
+ return limit;
+ }
+
+ public SearchManagedMemoryEntriesRequest setPageSize(Long pageSize) {
+ this.pageSize = pageSize;
+ return this;
+ }
+
+ public Long getPageSize() {
+ return pageSize;
+ }
+
+ public SearchManagedMemoryEntriesRequest setPageToken(String pageToken) {
+ this.pageToken = pageToken;
+ return this;
+ }
+
+ public String getPageToken() {
+ return pageToken;
+ }
+
+ public SearchManagedMemoryEntriesRequest setParent(String parent) {
+ this.parent = parent;
+ return this;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public SearchManagedMemoryEntriesRequest setPathPrefix(String pathPrefix) {
+ this.pathPrefix = pathPrefix;
+ return this;
+ }
+
+ public String getPathPrefix() {
+ return pathPrefix;
+ }
+
+ public SearchManagedMemoryEntriesRequest setQuery(String query) {
+ this.query = query;
+ return this;
+ }
+
+ public String getQuery() {
+ return query;
+ }
+
+ public SearchManagedMemoryEntriesRequest setReadMask(FieldMask readMask) {
+ this.readMask = readMask;
+ return this;
+ }
+
+ public FieldMask getReadMask() {
+ return readMask;
+ }
+
+ public SearchManagedMemoryEntriesRequest setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SearchManagedMemoryEntriesRequest that = (SearchManagedMemoryEntriesRequest) o;
+ return Objects.equals(actorId, that.actorId)
+ && Objects.equals(limit, that.limit)
+ && Objects.equals(pageSize, that.pageSize)
+ && Objects.equals(pageToken, that.pageToken)
+ && Objects.equals(parent, that.parent)
+ && Objects.equals(pathPrefix, that.pathPrefix)
+ && Objects.equals(query, that.query)
+ && Objects.equals(readMask, that.readMask)
+ && Objects.equals(sessionId, that.sessionId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ actorId, limit, pageSize, pageToken, parent, pathPrefix, query, readMask, sessionId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(SearchManagedMemoryEntriesRequest.class)
+ .add("actorId", actorId)
+ .add("limit", limit)
+ .add("pageSize", pageSize)
+ .add("pageToken", pageToken)
+ .add("parent", parent)
+ .add("pathPrefix", pathPrefix)
+ .add("query", query)
+ .add("readMask", readMask)
+ .add("sessionId", sessionId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SearchManagedMemoryEntriesResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SearchManagedMemoryEntriesResponse.java
new file mode 100644
index 000000000..11106a14b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SearchManagedMemoryEntriesResponse.java
@@ -0,0 +1,84 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 containing managed memory entries ranked by relevance. */
+@Generated
+public class SearchManagedMemoryEntriesResponse {
+ /**
+ * Deprecated compatibility alias for clients migrating to `results`. This contains the same
+ * entries in the same order, but omits their relevance scores.
+ */
+ @JsonProperty("managed_memory_entries")
+ private Collection managedMemoryEntries;
+
+ /**
+ * Opaque pagination token. Search currently returns an unpaginated ranked top-N result set, so
+ * the server does not populate this field.
+ */
+ @JsonProperty("next_page_token")
+ private String nextPageToken;
+
+ /** Canonical matching entries and relevance scores, ordered most relevant first. */
+ @JsonProperty("results")
+ private Collection results;
+
+ public SearchManagedMemoryEntriesResponse setManagedMemoryEntries(
+ Collection managedMemoryEntries) {
+ this.managedMemoryEntries = managedMemoryEntries;
+ return this;
+ }
+
+ public Collection getManagedMemoryEntries() {
+ return managedMemoryEntries;
+ }
+
+ public SearchManagedMemoryEntriesResponse setNextPageToken(String nextPageToken) {
+ this.nextPageToken = nextPageToken;
+ return this;
+ }
+
+ public String getNextPageToken() {
+ return nextPageToken;
+ }
+
+ public SearchManagedMemoryEntriesResponse setResults(
+ Collection results) {
+ this.results = results;
+ return this;
+ }
+
+ public Collection getResults() {
+ return results;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SearchManagedMemoryEntriesResponse that = (SearchManagedMemoryEntriesResponse) o;
+ return Objects.equals(managedMemoryEntries, that.managedMemoryEntries)
+ && Objects.equals(nextPageToken, that.nextPageToken)
+ && Objects.equals(results, that.results);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryEntries, nextPageToken, results);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(SearchManagedMemoryEntriesResponse.class)
+ .add("managedMemoryEntries", managedMemoryEntries)
+ .add("nextPageToken", nextPageToken)
+ .add("results", results)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/Session.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/Session.java
new file mode 100644
index 000000000..1d9e6a9a4
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/Session.java
@@ -0,0 +1,191 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.Timestamp;
+import java.util.Map;
+import java.util.Objects;
+
+/** A durable logical interaction stored within a Session Store. */
+@Generated
+public class Session {
+ /**
+ * Opaque caller-provided identifier for the application actor associated with the session.
+ *
+ * This is application data and has no Databricks authentication or authorization semantics.
+ * Use the same value as the Managed Memory Entry `actor_id` when storing memories associated with
+ * this actor. Every session must set it. A child session must use the same value as its parent.
+ */
+ @JsonProperty("actor_id")
+ private String actorId;
+
+ /** Time when the session was created. */
+ @JsonProperty("create_time")
+ private Timestamp createTime;
+
+ /** Time when the session's item history was last mutated. */
+ @JsonProperty("last_activity_time")
+ private Timestamp lastActivityTime;
+
+ /** Mutable caller-defined string labels. */
+ @JsonProperty("metadata")
+ private Map metadata;
+
+ /** Resource name in the form `session-stores/{session_store_id}/sessions/{session_id}`. */
+ @JsonProperty("name")
+ private String name;
+
+ /**
+ * Immediate parent session ID. Set only at creation for child sessions, immutable thereafter, and
+ * restricted to the same store.
+ */
+ @JsonProperty("parent_session_id")
+ private String parentSessionId;
+
+ /**
+ * Top-level session ID in the spawn tree. This equals `session_id` for a root or fork and is
+ * inherited transitively by child sessions.
+ */
+ @JsonProperty("root_session_id")
+ private String rootSessionId;
+
+ /**
+ * Unique session ID. The service generates a UUID unless the caller supplies
+ * `CreateSessionRequest.session_id`.
+ */
+ @JsonProperty("session_id")
+ private String sessionId;
+
+ /** Time when session resource fields last changed. */
+ @JsonProperty("update_time")
+ private Timestamp updateTime;
+
+ public Session setActorId(String actorId) {
+ this.actorId = actorId;
+ return this;
+ }
+
+ public String getActorId() {
+ return actorId;
+ }
+
+ public Session setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ return this;
+ }
+
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public Session setLastActivityTime(Timestamp lastActivityTime) {
+ this.lastActivityTime = lastActivityTime;
+ return this;
+ }
+
+ public Timestamp getLastActivityTime() {
+ return lastActivityTime;
+ }
+
+ public Session setMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ public Map getMetadata() {
+ return metadata;
+ }
+
+ public Session setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Session setParentSessionId(String parentSessionId) {
+ this.parentSessionId = parentSessionId;
+ return this;
+ }
+
+ public String getParentSessionId() {
+ return parentSessionId;
+ }
+
+ public Session setRootSessionId(String rootSessionId) {
+ this.rootSessionId = rootSessionId;
+ return this;
+ }
+
+ public String getRootSessionId() {
+ return rootSessionId;
+ }
+
+ public Session setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ return this;
+ }
+
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ public Session setUpdateTime(Timestamp updateTime) {
+ this.updateTime = updateTime;
+ return this;
+ }
+
+ public Timestamp getUpdateTime() {
+ return updateTime;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Session that = (Session) o;
+ return Objects.equals(actorId, that.actorId)
+ && Objects.equals(createTime, that.createTime)
+ && Objects.equals(lastActivityTime, that.lastActivityTime)
+ && Objects.equals(metadata, that.metadata)
+ && Objects.equals(name, that.name)
+ && Objects.equals(parentSessionId, that.parentSessionId)
+ && Objects.equals(rootSessionId, that.rootSessionId)
+ && Objects.equals(sessionId, that.sessionId)
+ && Objects.equals(updateTime, that.updateTime);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ actorId,
+ createTime,
+ lastActivityTime,
+ metadata,
+ name,
+ parentSessionId,
+ rootSessionId,
+ sessionId,
+ updateTime);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(Session.class)
+ .add("actorId", actorId)
+ .add("createTime", createTime)
+ .add("lastActivityTime", lastActivityTime)
+ .add("metadata", metadata)
+ .add("name", name)
+ .add("parentSessionId", parentSessionId)
+ .add("rootSessionId", rootSessionId)
+ .add("sessionId", sessionId)
+ .add("updateTime", updateTime)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SessionItem.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SessionItem.java
new file mode 100644
index 000000000..7e44022ea
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SessionItem.java
@@ -0,0 +1,83 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.google.protobuf.Timestamp;
+import java.util.Objects;
+
+/** A transcript entry in a session's history. */
+@Generated
+public class SessionItem {
+ /**
+ * Server-assigned time when the append commits. Values are nondecreasing within a session. Item
+ * listing orders by this timestamp; equal timestamps are resolved by committed append order.
+ */
+ @JsonProperty("create_time")
+ private Timestamp createTime;
+
+ /**
+ * Complete SDK-native, JSON-compatible item. The service stores and returns this value without
+ * interpreting provider-specific fields such as `type`, `role`, or `content`.
+ */
+ @JsonProperty("data")
+ private JsonNode data;
+
+ /** Stable service-generated item ID. */
+ @JsonProperty("item_id")
+ private String itemId;
+
+ public SessionItem setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ return this;
+ }
+
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public SessionItem setData(JsonNode data) {
+ this.data = data;
+ return this;
+ }
+
+ public JsonNode getData() {
+ return data;
+ }
+
+ public SessionItem setItemId(String itemId) {
+ this.itemId = itemId;
+ return this;
+ }
+
+ public String getItemId() {
+ return itemId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SessionItem that = (SessionItem) o;
+ return Objects.equals(createTime, that.createTime)
+ && Objects.equals(data, that.data)
+ && Objects.equals(itemId, that.itemId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(createTime, data, itemId);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(SessionItem.class)
+ .add("createTime", createTime)
+ .add("data", data)
+ .add("itemId", itemId)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SessionStore.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SessionStore.java
new file mode 100644
index 000000000..0557dff75
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/SessionStore.java
@@ -0,0 +1,126 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.Timestamp;
+import java.util.Map;
+import java.util.Objects;
+
+/** A workspace-scoped session store. */
+@Generated
+public class SessionStore {
+ /** Time when the store was created. */
+ @JsonProperty("create_time")
+ private Timestamp createTime;
+
+ /**
+ * Workspace-local user ID of the authenticated principal that created the store. This is
+ * immutable server-set attribution and does not grant access; authorization is evaluated from the
+ * authenticated request context.
+ */
+ @JsonProperty("creator_user_id")
+ private String creatorUserId;
+
+ /** Human-readable description of the session store. */
+ @JsonProperty("description")
+ private String description;
+
+ /** Mutable caller-defined string labels. */
+ @JsonProperty("metadata")
+ private Map metadata;
+
+ /** Resource name in the form `session-stores/{session_store_id}`. */
+ @JsonProperty("name")
+ private String name;
+
+ /** Time when the store was last updated. */
+ @JsonProperty("update_time")
+ private Timestamp updateTime;
+
+ public SessionStore setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
+ return this;
+ }
+
+ public Timestamp getCreateTime() {
+ return createTime;
+ }
+
+ public SessionStore setCreatorUserId(String creatorUserId) {
+ this.creatorUserId = creatorUserId;
+ return this;
+ }
+
+ public String getCreatorUserId() {
+ return creatorUserId;
+ }
+
+ public SessionStore setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public SessionStore setMetadata(Map metadata) {
+ this.metadata = metadata;
+ return this;
+ }
+
+ public Map getMetadata() {
+ return metadata;
+ }
+
+ public SessionStore setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public SessionStore setUpdateTime(Timestamp updateTime) {
+ this.updateTime = updateTime;
+ return this;
+ }
+
+ public Timestamp getUpdateTime() {
+ return updateTime;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SessionStore that = (SessionStore) o;
+ return Objects.equals(createTime, that.createTime)
+ && Objects.equals(creatorUserId, that.creatorUserId)
+ && Objects.equals(description, that.description)
+ && Objects.equals(metadata, that.metadata)
+ && Objects.equals(name, that.name)
+ && Objects.equals(updateTime, that.updateTime);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(createTime, creatorUserId, description, metadata, name, updateTime);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(SessionStore.class)
+ .add("createTime", createTime)
+ .add("creatorUserId", creatorUserId)
+ .add("description", description)
+ .add("metadata", metadata)
+ .add("name", name)
+ .add("updateTime", updateTime)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/StorageBackend.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/StorageBackend.java
new file mode 100644
index 000000000..6d969b0b7
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/StorageBackend.java
@@ -0,0 +1,60 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+import com.databricks.sdk.support.ToStringer;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Objects;
+
+/** Service-managed storage backing a managed memory store. */
+@Generated
+public class StorageBackend {
+ /** Backend-specific identifier. For Lakebase, this is the project ID. */
+ @JsonProperty("backend_id")
+ private String backendId;
+
+ /** Type of the storage backend. */
+ @JsonProperty("backend_type")
+ private StorageBackendType backendType;
+
+ public StorageBackend setBackendId(String backendId) {
+ this.backendId = backendId;
+ return this;
+ }
+
+ public String getBackendId() {
+ return backendId;
+ }
+
+ public StorageBackend setBackendType(StorageBackendType backendType) {
+ this.backendType = backendType;
+ return this;
+ }
+
+ public StorageBackendType getBackendType() {
+ return backendType;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ StorageBackend that = (StorageBackend) o;
+ return Objects.equals(backendId, that.backendId)
+ && Objects.equals(backendType, that.backendType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(backendId, backendType);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(StorageBackend.class)
+ .add("backendId", backendId)
+ .add("backendType", backendType)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/StorageBackendType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/StorageBackendType.java
new file mode 100644
index 000000000..076f00bca
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/StorageBackendType.java
@@ -0,0 +1,11 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+import com.databricks.sdk.support.Generated;
+
+/** Type of service-managed storage backing a managed memory store. */
+@Generated
+public enum StorageBackendType {
+ STORAGE_BACKEND_TYPE_LAKEBASE,
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateManagedMemoryEntryRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateManagedMemoryEntryRequest.java
new file mode 100644
index 000000000..3e39c634b
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateManagedMemoryEntryRequest.java
@@ -0,0 +1,81 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+@Generated
+public class UpdateManagedMemoryEntryRequest {
+ /** The managed memory entry to update. */
+ @JsonProperty("managed_memory_entry")
+ private ManagedMemoryEntry managedMemoryEntry;
+
+ /**
+ * Resource name in the form
+ * `memory-stores/{managed_memory_store_id}/entries/{managed_memory_entry_id}`.
+ */
+ @JsonIgnore private String name;
+
+ /** Fields to update. Only `content` and `description` may be updated. */
+ @JsonIgnore
+ @QueryParam("update_mask")
+ private FieldMask updateMask;
+
+ public UpdateManagedMemoryEntryRequest setManagedMemoryEntry(
+ ManagedMemoryEntry managedMemoryEntry) {
+ this.managedMemoryEntry = managedMemoryEntry;
+ return this;
+ }
+
+ public ManagedMemoryEntry getManagedMemoryEntry() {
+ return managedMemoryEntry;
+ }
+
+ public UpdateManagedMemoryEntryRequest setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public UpdateManagedMemoryEntryRequest setUpdateMask(FieldMask updateMask) {
+ this.updateMask = updateMask;
+ return this;
+ }
+
+ public FieldMask getUpdateMask() {
+ return updateMask;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateManagedMemoryEntryRequest that = (UpdateManagedMemoryEntryRequest) o;
+ return Objects.equals(managedMemoryEntry, that.managedMemoryEntry)
+ && Objects.equals(name, that.name)
+ && Objects.equals(updateMask, that.updateMask);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryEntry, name, updateMask);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateManagedMemoryEntryRequest.class)
+ .add("managedMemoryEntry", managedMemoryEntry)
+ .add("name", name)
+ .add("updateMask", updateMask)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateManagedMemoryStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateManagedMemoryStoreRequest.java
new file mode 100644
index 000000000..2778b903e
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateManagedMemoryStoreRequest.java
@@ -0,0 +1,78 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+@Generated
+public class UpdateManagedMemoryStoreRequest {
+ /** The managed memory store to update. `name` is taken from the URL. */
+ @JsonProperty("managed_memory_store")
+ private ManagedMemoryStore managedMemoryStore;
+
+ /** Resource name in the form `memory-stores/{managed_memory_store_id}`. */
+ @JsonIgnore private String name;
+
+ /** Only `description` may be updated. */
+ @JsonIgnore
+ @QueryParam("update_mask")
+ private FieldMask updateMask;
+
+ public UpdateManagedMemoryStoreRequest setManagedMemoryStore(
+ ManagedMemoryStore managedMemoryStore) {
+ this.managedMemoryStore = managedMemoryStore;
+ return this;
+ }
+
+ public ManagedMemoryStore getManagedMemoryStore() {
+ return managedMemoryStore;
+ }
+
+ public UpdateManagedMemoryStoreRequest setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public UpdateManagedMemoryStoreRequest setUpdateMask(FieldMask updateMask) {
+ this.updateMask = updateMask;
+ return this;
+ }
+
+ public FieldMask getUpdateMask() {
+ return updateMask;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateManagedMemoryStoreRequest that = (UpdateManagedMemoryStoreRequest) o;
+ return Objects.equals(managedMemoryStore, that.managedMemoryStore)
+ && Objects.equals(name, that.name)
+ && Objects.equals(updateMask, that.updateMask);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(managedMemoryStore, name, updateMask);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateManagedMemoryStoreRequest.class)
+ .add("managedMemoryStore", managedMemoryStore)
+ .add("name", name)
+ .add("updateMask", updateMask)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateSessionRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateSessionRequest.java
new file mode 100644
index 000000000..6104d6fee
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateSessionRequest.java
@@ -0,0 +1,79 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+@Generated
+public class UpdateSessionRequest {
+ /** Resource name in the form `session-stores/{session_store_id}/sessions/{session_id}`. */
+ @JsonIgnore private String name;
+
+ /** Session to update. */
+ @JsonProperty("session")
+ private Session session;
+
+ /**
+ * Fields to update. Only `metadata` is mutable; any other path returns `INVALID_PARAMETER_VALUE`.
+ */
+ @JsonIgnore
+ @QueryParam("update_mask")
+ private FieldMask updateMask;
+
+ public UpdateSessionRequest setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public UpdateSessionRequest setSession(Session session) {
+ this.session = session;
+ return this;
+ }
+
+ public Session getSession() {
+ return session;
+ }
+
+ public UpdateSessionRequest setUpdateMask(FieldMask updateMask) {
+ this.updateMask = updateMask;
+ return this;
+ }
+
+ public FieldMask getUpdateMask() {
+ return updateMask;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateSessionRequest that = (UpdateSessionRequest) o;
+ return Objects.equals(name, that.name)
+ && Objects.equals(session, that.session)
+ && Objects.equals(updateMask, that.updateMask);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, session, updateMask);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateSessionRequest.class)
+ .add("name", name)
+ .add("session", session)
+ .add("updateMask", updateMask)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateSessionStoreRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateSessionStoreRequest.java
new file mode 100644
index 000000000..27ea6b8a3
--- /dev/null
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/mason/UpdateSessionStoreRequest.java
@@ -0,0 +1,80 @@
+// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT.
+
+package com.databricks.sdk.service.mason;
+
+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 com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.protobuf.FieldMask;
+import java.util.Objects;
+
+@Generated
+public class UpdateSessionStoreRequest {
+ /** Resource name in the form `session-stores/{session_store_id}`. */
+ @JsonIgnore private String name;
+
+ /** Session store to update. */
+ @JsonProperty("session_store")
+ private SessionStore sessionStore;
+
+ /**
+ * Fields to update. Only `description` and `metadata` are mutable; any other path returns
+ * `INVALID_PARAMETER_VALUE`.
+ */
+ @JsonIgnore
+ @QueryParam("update_mask")
+ private FieldMask updateMask;
+
+ public UpdateSessionStoreRequest setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public UpdateSessionStoreRequest setSessionStore(SessionStore sessionStore) {
+ this.sessionStore = sessionStore;
+ return this;
+ }
+
+ public SessionStore getSessionStore() {
+ return sessionStore;
+ }
+
+ public UpdateSessionStoreRequest setUpdateMask(FieldMask updateMask) {
+ this.updateMask = updateMask;
+ return this;
+ }
+
+ public FieldMask getUpdateMask() {
+ return updateMask;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UpdateSessionStoreRequest that = (UpdateSessionStoreRequest) o;
+ return Objects.equals(name, that.name)
+ && Objects.equals(sessionStore, that.sessionStore)
+ && Objects.equals(updateMask, that.updateMask);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, sessionStore, updateMask);
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringer(UpdateSessionStoreRequest.class)
+ .add("name", name)
+ .add("sessionStore", sessionStore)
+ .add("updateMask", updateMask)
+ .toString();
+ }
+}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/BackfillFeaturesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/BackfillFeaturesRequest.java
index 6b8cbb010..9d81b1e61 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/BackfillFeaturesRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/BackfillFeaturesRequest.java
@@ -6,6 +6,7 @@
import com.databricks.sdk.support.ToStringer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Collection;
+import java.util.Map;
import java.util.Objects;
@Generated
@@ -14,6 +15,13 @@ public class BackfillFeaturesRequest {
@JsonProperty("backfill_ranges")
private Collection backfillRanges;
+ /**
+ * The budget policy ID, in UUID format, used to attribute the serverless compute cost of this
+ * backfill. If not specified, a default budget policy may be applied.
+ */
+ @JsonProperty("budget_policy_id")
+ private String budgetPolicyId;
+
/** Full names of the features to backfill. */
@JsonProperty("feature_full_names")
private Collection featureFullNames;
@@ -22,6 +30,17 @@ public class BackfillFeaturesRequest {
@JsonProperty("request_id")
private String requestId;
+ /**
+ * Custom tags to associate with this backfill. They are applied to the backfill job and forwarded
+ * to the underlying compute as Databricks resource tags, so backfill cost can be attributed in
+ * the billing system tables. These tags apply only to the backfill compute; they are not applied
+ * to the Unity Catalog Feature resources themselves, whose tags are managed separately through
+ * the Unity Catalog tagging API. A maximum of 25 tags is supported; keys and values are subject
+ * to the same limitations as Databricks resource tags.
+ */
+ @JsonProperty("tags")
+ private Map tags;
+
public BackfillFeaturesRequest setBackfillRanges(Collection backfillRanges) {
this.backfillRanges = backfillRanges;
return this;
@@ -31,6 +50,15 @@ public Collection getBackfillRanges() {
return backfillRanges;
}
+ public BackfillFeaturesRequest setBudgetPolicyId(String budgetPolicyId) {
+ this.budgetPolicyId = budgetPolicyId;
+ return this;
+ }
+
+ public String getBudgetPolicyId() {
+ return budgetPolicyId;
+ }
+
public BackfillFeaturesRequest setFeatureFullNames(Collection featureFullNames) {
this.featureFullNames = featureFullNames;
return this;
@@ -49,27 +77,40 @@ public String getRequestId() {
return requestId;
}
+ public BackfillFeaturesRequest setTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ public Map getTags() {
+ return tags;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BackfillFeaturesRequest that = (BackfillFeaturesRequest) o;
return Objects.equals(backfillRanges, that.backfillRanges)
+ && Objects.equals(budgetPolicyId, that.budgetPolicyId)
&& Objects.equals(featureFullNames, that.featureFullNames)
- && Objects.equals(requestId, that.requestId);
+ && Objects.equals(requestId, that.requestId)
+ && Objects.equals(tags, that.tags);
}
@Override
public int hashCode() {
- return Objects.hash(backfillRanges, featureFullNames, requestId);
+ return Objects.hash(backfillRanges, budgetPolicyId, featureFullNames, requestId, tags);
}
@Override
public String toString() {
return new ToStringer(BackfillFeaturesRequest.class)
.add("backfillRanges", backfillRanges)
+ .add("budgetPolicyId", budgetPolicyId)
.add("featureFullNames", featureFullNames)
.add("requestId", requestId)
+ .add("tags", tags)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CronSchedule.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CronSchedule.java
index 9e387c2d1..5788d8334 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CronSchedule.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CronSchedule.java
@@ -12,9 +12,9 @@
public class CronSchedule {
/**
* The cron expression defining the schedule (e.g., "0 0 * * *" for daily at midnight). The
- * schedule is interpreted in the UTC time zone. Required when mode is MANUAL (or unset). Left
- * empty when mode is DERIVED, where the service computes it (aligned to UTC) from the features'
- * window timing and fills it in on the response.
+ * schedule is interpreted in timezone_id (defaults to UTC). Required when mode is MANUAL (or
+ * unset). Left empty when mode is DERIVED, where the service computes it (aligned to UTC) from
+ * the features' window timing and fills it in on the response.
*/
@JsonProperty("cron_expression")
private String cronExpression;
@@ -23,6 +23,14 @@ public class CronSchedule {
@JsonProperty("mode")
private CronScheduleMode mode;
+ /**
+ * A Java timezone ID. The schedule is resolved with respect to this timezone. Defaults to UTC
+ * when omitted. Can only be configured for MANUAL schedules; DERIVED schedules are always aligned
+ * to UTC.
+ */
+ @JsonProperty("timezone_id")
+ private String timezoneId;
+
public CronSchedule setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
return this;
@@ -41,17 +49,28 @@ public CronScheduleMode getMode() {
return mode;
}
+ public CronSchedule setTimezoneId(String timezoneId) {
+ this.timezoneId = timezoneId;
+ return this;
+ }
+
+ public String getTimezoneId() {
+ return timezoneId;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
CronSchedule that = (CronSchedule) o;
- return Objects.equals(cronExpression, that.cronExpression) && Objects.equals(mode, that.mode);
+ return Objects.equals(cronExpression, that.cronExpression)
+ && Objects.equals(mode, that.mode)
+ && Objects.equals(timezoneId, that.timezoneId);
}
@Override
public int hashCode() {
- return Objects.hash(cronExpression, mode);
+ return Objects.hash(cronExpression, mode, timezoneId);
}
@Override
@@ -59,6 +78,7 @@ public String toString() {
return new ToStringer(CronSchedule.class)
.add("cronExpression", cronExpression)
.add("mode", mode)
+ .add("timezoneId", timezoneId)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PurgeFeatureEntitiesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PurgeFeatureEntitiesRequest.java
index d31fc7668..0d2f53743 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PurgeFeatureEntitiesRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PurgeFeatureEntitiesRequest.java
@@ -6,6 +6,7 @@
import com.databricks.sdk.support.ToStringer;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Collection;
+import java.util.Map;
import java.util.Objects;
/**
@@ -13,6 +14,13 @@
*/
@Generated
public class PurgeFeatureEntitiesRequest {
+ /**
+ * The budget policy ID, in UUID format, used to attribute the serverless compute cost of this
+ * purge. If not specified, a default budget policy may be applied.
+ */
+ @JsonProperty("budget_policy_id")
+ private String budgetPolicyId;
+
/**
* Fully qualified name of the Unity Catalog Delta table containing the entity keys to purge. The
* table may contain a subset of each feature's entity-key columns. A partial key match deletes
@@ -34,6 +42,26 @@ public class PurgeFeatureEntitiesRequest {
@JsonProperty("request_id")
private String requestId;
+ /**
+ * Custom tags to associate with this purge. They are applied to the purge job and forwarded to
+ * the underlying compute as Databricks resource tags, so purge cost can be attributed in the
+ * billing system tables. These tags apply only to the purge compute; they are not applied to the
+ * Unity Catalog Feature resources themselves, whose tags are managed separately through the Unity
+ * Catalog tagging API. A maximum of 25 tags is supported; keys and values are subject to the same
+ * limitations as Databricks resource tags.
+ */
+ @JsonProperty("tags")
+ private Map tags;
+
+ public PurgeFeatureEntitiesRequest setBudgetPolicyId(String budgetPolicyId) {
+ this.budgetPolicyId = budgetPolicyId;
+ return this;
+ }
+
+ public String getBudgetPolicyId() {
+ return budgetPolicyId;
+ }
+
public PurgeFeatureEntitiesRequest setEntitiesTable(String entitiesTable) {
this.entitiesTable = entitiesTable;
return this;
@@ -61,27 +89,40 @@ public String getRequestId() {
return requestId;
}
+ public PurgeFeatureEntitiesRequest setTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+ public Map getTags() {
+ return tags;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PurgeFeatureEntitiesRequest that = (PurgeFeatureEntitiesRequest) o;
- return Objects.equals(entitiesTable, that.entitiesTable)
+ return Objects.equals(budgetPolicyId, that.budgetPolicyId)
+ && Objects.equals(entitiesTable, that.entitiesTable)
&& Objects.equals(features, that.features)
- && Objects.equals(requestId, that.requestId);
+ && Objects.equals(requestId, that.requestId)
+ && Objects.equals(tags, that.tags);
}
@Override
public int hashCode() {
- return Objects.hash(entitiesTable, features, requestId);
+ return Objects.hash(budgetPolicyId, entitiesTable, features, requestId, tags);
}
@Override
public String toString() {
return new ToStringer(PurgeFeatureEntitiesRequest.class)
+ .add("budgetPolicyId", budgetPolicyId)
.add("entitiesTable", entitiesTable)
.add("features", features)
.add("requestId", requestId)
+ .add("tags", tags)
.toString();
}
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/oauth2/FederationPolicy.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/oauth2/FederationPolicy.java
index 6bcf8c410..83ef8eeb6 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/oauth2/FederationPolicy.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/oauth2/FederationPolicy.java
@@ -29,7 +29,10 @@ public class FederationPolicy {
@JsonProperty("name")
private String name;
- /** */
+ /**
+ * audit_mode INCLUDE is required on both this message field and its leaf fields so the OIDC
+ * policy configuration is captured in create/update audit logs (see go/auditlogs).
+ */
@JsonProperty("oidc_policy")
private OidcFederationPolicy oidcPolicy;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/AvroTransformerOptions.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/AvroTransformerOptions.java
index e867d6693..08b523c2b 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/AvroTransformerOptions.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/AvroTransformerOptions.java
@@ -10,7 +10,8 @@
@Generated
public class AvroTransformerOptions {
/**
- * (Optional) Parse mode for Avro data. Valid values: FAILFAST, PERMISSIVE. Defaults to FAILFAST.
+ * (Optional) Parse mode for Avro data. Valid values: FAILFAST, PERMISSIVE. Defaults to
+ * PERMISSIVE.
*/
@JsonProperty("parse_mode")
private ParseMode parseMode;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionSourceType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionSourceType.java
index e314ce506..d99ddfae2 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionSourceType.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/IngestionSourceType.java
@@ -23,8 +23,10 @@ public enum IngestionSourceType {
SALESFORCE,
SERVICENOW,
SHAREPOINT,
+ SMARTSHEET,
SQLSERVER,
TERADATA,
+ TIKTOK_ADS,
WORKDAY_RAAS,
ZENDESK,
}
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/ProtobufTransformerOptions.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/ProtobufTransformerOptions.java
index 3431a361a..4094c7dcd 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/ProtobufTransformerOptions.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/pipelines/ProtobufTransformerOptions.java
@@ -19,7 +19,7 @@ public class ProtobufTransformerOptions {
/**
* (Optional) Parse mode for Protobuf data. Valid values: FAILFAST, PERMISSIVE. Defaults to
- * FAILFAST.
+ * PERMISSIVE.
*/
@JsonProperty("parse_mode")
private ParseMode parseMode;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/SpotInstancePolicy.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/SpotInstancePolicy.java
index 262a17545..ffd0758f9 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/SpotInstancePolicy.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/SpotInstancePolicy.java
@@ -9,12 +9,9 @@
*
* The breakdown of how the EndpointSpotInstancePolicy converts to per cloud configurations is:
*
- *
+-------+--------------------------------------+--------------------------------+ | Cloud |
- * COST_OPTIMIZED | RELIABILITY_OPTIMIZED |
- * +-------+--------------------------------------+--------------------------------+ | AWS | On
- * Demand Driver with Spot Executors | On Demand Driver and Executors | | AZURE | On Demand Driver
- * and Executors | On Demand Driver and Executors |
- * +-------+--------------------------------------+--------------------------------+
+ *
- AWS, COST_OPTIMIZED: On Demand Driver with Spot Executors. - AWS, RELIABILITY_OPTIMIZED: On
+ * Demand Driver and Executors. - AZURE, COST_OPTIMIZED: On Demand Driver and Executors. - AZURE,
+ * RELIABILITY_OPTIMIZED: On Demand Driver and Executors.
*/
@Generated
public enum SpotInstancePolicy {
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/DeleteTagAssignmentRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/DeleteTagAssignmentRequest.java
index 6524440d2..a4dd8def2 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/DeleteTagAssignmentRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/DeleteTagAssignmentRequest.java
@@ -17,7 +17,7 @@ public class DeleteTagAssignmentRequest {
/**
* The type of entity to which the tag is assigned. Allowed values are apps, dashboards,
- * designerfiles, geniespaces, notebooks
+ * geniespaces, notebooks
*/
@JsonIgnore private String entityType;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/GetTagAssignmentRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/GetTagAssignmentRequest.java
index 96de7bfe4..05227b7e1 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/GetTagAssignmentRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/GetTagAssignmentRequest.java
@@ -17,7 +17,7 @@ public class GetTagAssignmentRequest {
/**
* The type of entity to which the tag is assigned. Allowed values are apps, dashboards,
- * designerfiles, geniespaces, notebooks
+ * geniespaces, notebooks
*/
@JsonIgnore private String entityType;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/ListTagAssignmentsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/ListTagAssignmentsRequest.java
index c59d0cbda..926202986 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/ListTagAssignmentsRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/ListTagAssignmentsRequest.java
@@ -18,7 +18,7 @@ public class ListTagAssignmentsRequest {
/**
* The type of entity to which the tag is assigned. Allowed values are apps, dashboards,
- * designerfiles, geniespaces, notebooks
+ * geniespaces, notebooks
*/
@JsonIgnore private String entityType;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/TagAssignment.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/TagAssignment.java
index c6047acd5..2cddc0d88 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/TagAssignment.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/TagAssignment.java
@@ -18,7 +18,7 @@ public class TagAssignment {
/**
* The type of entity to which the tag is assigned. Allowed values are apps, dashboards,
- * designerfiles, geniespaces, notebooks
+ * geniespaces, notebooks
*/
@JsonProperty("entity_type")
private String entityType;
diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/UpdateTagAssignmentRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/UpdateTagAssignmentRequest.java
index e01a473f5..21f6e0c33 100644
--- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/UpdateTagAssignmentRequest.java
+++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/tags/UpdateTagAssignmentRequest.java
@@ -19,7 +19,7 @@ public class UpdateTagAssignmentRequest {
/**
* The type of entity to which the tag is assigned. Allowed values are apps, dashboards,
- * designerfiles, geniespaces, notebooks
+ * geniespaces, notebooks
*/
@JsonIgnore private String entityType;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/JsonTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/JsonTest.java
index 6c5bab5e1..d14f043bd 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/JsonTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/JsonTest.java
@@ -2,7 +2,6 @@
import com.databricks.sdk.core.utils.SerDeUtils;
import com.databricks.sdk.service.catalog.UpdateVolumeRequestContent;
-import com.databricks.sdk.service.compute.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/MockingTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/MockingTest.java
index d2806a6c1..2b440570c 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/MockingTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/MockingTest.java
@@ -3,7 +3,11 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;
-import com.databricks.sdk.service.compute.*;
+import com.databricks.sdk.service.compute.ClusterDetails;
+import com.databricks.sdk.service.compute.ClustersAPI;
+import com.databricks.sdk.service.compute.ClustersService;
+import com.databricks.sdk.service.compute.GetClusterRequest;
+import com.databricks.sdk.service.compute.State;
import java.util.concurrent.TimeoutException;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/AzureMsiCredentialsProviderTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/AzureMsiCredentialsProviderTest.java
index d25d0396f..51cf986af 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/AzureMsiCredentialsProviderTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/AzureMsiCredentialsProviderTest.java
@@ -6,7 +6,11 @@
import com.databricks.sdk.core.http.HttpClient;
import com.databricks.sdk.core.http.Request;
import com.databricks.sdk.core.http.Response;
-import com.databricks.sdk.core.oauth.*;
+import com.databricks.sdk.core.oauth.AzureMsiTokenSource;
+import com.databricks.sdk.core.oauth.CachedTokenSource;
+import com.databricks.sdk.core.oauth.OAuthHeaderFactory;
+import com.databricks.sdk.core.oauth.Token;
+import com.databricks.sdk.core.oauth.TokenSource;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.net.URL;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/ErrorMapperTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/ErrorMapperTest.java
index d65a3f65e..9b0f173a8 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/ErrorMapperTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/ErrorMapperTest.java
@@ -2,7 +2,25 @@
import com.databricks.sdk.VariableSource;
import com.databricks.sdk.core.DatabricksError;
-import com.databricks.sdk.core.error.platform.*;
+import com.databricks.sdk.core.error.platform.Aborted;
+import com.databricks.sdk.core.error.platform.AlreadyExists;
+import com.databricks.sdk.core.error.platform.BadRequest;
+import com.databricks.sdk.core.error.platform.Cancelled;
+import com.databricks.sdk.core.error.platform.DataLoss;
+import com.databricks.sdk.core.error.platform.DeadlineExceeded;
+import com.databricks.sdk.core.error.platform.InvalidParameterValue;
+import com.databricks.sdk.core.error.platform.NotFound;
+import com.databricks.sdk.core.error.platform.NotImplemented;
+import com.databricks.sdk.core.error.platform.PermissionDenied;
+import com.databricks.sdk.core.error.platform.RequestLimitExceeded;
+import com.databricks.sdk.core.error.platform.ResourceAlreadyExists;
+import com.databricks.sdk.core.error.platform.ResourceConflict;
+import com.databricks.sdk.core.error.platform.ResourceDoesNotExist;
+import com.databricks.sdk.core.error.platform.ResourceExhausted;
+import com.databricks.sdk.core.error.platform.TemporarilyUnavailable;
+import com.databricks.sdk.core.error.platform.TooManyRequests;
+import com.databricks.sdk.core.error.platform.Unauthenticated;
+import com.databricks.sdk.core.error.platform.Unknown;
import com.databricks.sdk.core.http.Request;
import com.databricks.sdk.core.http.Response;
import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PlainTextErrorTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PlainTextErrorTest.java
index 97aebce9c..1fc2deefc 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PlainTextErrorTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PlainTextErrorTest.java
@@ -3,7 +3,9 @@
import static org.junit.jupiter.api.Assertions.*;
import com.databricks.sdk.core.DatabricksError;
-import com.databricks.sdk.core.error.platform.*;
+import com.databricks.sdk.core.error.platform.NotFound;
+import com.databricks.sdk.core.error.platform.PermissionDenied;
+import com.databricks.sdk.core.error.platform.Unauthenticated;
import com.databricks.sdk.core.http.Request;
import com.databricks.sdk.core.http.Response;
import java.util.Collections;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PrivateLinkInfoTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PrivateLinkInfoTest.java
index 0c6848a3a..5dcfe42fc 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PrivateLinkInfoTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/error/PrivateLinkInfoTest.java
@@ -1,6 +1,5 @@
package com.databricks.sdk.core.error;
-import com.databricks.sdk.core.error.platform.*;
import com.databricks.sdk.core.http.Request;
import com.databricks.sdk.core.http.Response;
import org.junit.jupiter.api.Test;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/oauth/AzureServicePrincipalCredentialsProviderTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/oauth/AzureServicePrincipalCredentialsProviderTest.java
index 3ffc672aa..af5ac7b22 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/core/oauth/AzureServicePrincipalCredentialsProviderTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/core/oauth/AzureServicePrincipalCredentialsProviderTest.java
@@ -3,7 +3,8 @@
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
-import com.databricks.sdk.core.*;
+import com.databricks.sdk.core.DatabricksConfig;
+import com.databricks.sdk.core.HeaderFactory;
import com.databricks.sdk.core.http.HttpClient;
import com.databricks.sdk.core.http.Response;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/DatabricksWifIT.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/DatabricksWifIT.java
index 33a146465..577a9d740 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/DatabricksWifIT.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/integration/DatabricksWifIT.java
@@ -11,7 +11,25 @@
import com.databricks.sdk.integration.framework.EnvTest;
import com.databricks.sdk.integration.framework.NameUtils;
import com.databricks.sdk.integration.framework.ResourceWithCleanup;
-import com.databricks.sdk.service.iam.*;
+import com.databricks.sdk.service.iam.AccessControlRequest;
+import com.databricks.sdk.service.iam.AccountGroup;
+import com.databricks.sdk.service.iam.AccountServicePrincipal;
+import com.databricks.sdk.service.iam.ComplexValue;
+import com.databricks.sdk.service.iam.CreateAccountGroupRequest;
+import com.databricks.sdk.service.iam.CreateAccountServicePrincipalRequest;
+import com.databricks.sdk.service.iam.DeleteWorkspaceAssignmentRequest;
+import com.databricks.sdk.service.iam.GrantRule;
+import com.databricks.sdk.service.iam.Group;
+import com.databricks.sdk.service.iam.ListAccountGroupsRequest;
+import com.databricks.sdk.service.iam.MeRequest;
+import com.databricks.sdk.service.iam.PermissionLevel;
+import com.databricks.sdk.service.iam.RuleSetResponse;
+import com.databricks.sdk.service.iam.RuleSetUpdateRequest;
+import com.databricks.sdk.service.iam.ServicePrincipal;
+import com.databricks.sdk.service.iam.UpdateObjectPermissions;
+import com.databricks.sdk.service.iam.UpdateRuleSetRequest;
+import com.databricks.sdk.service.iam.UpdateWorkspaceAssignments;
+import com.databricks.sdk.service.iam.WorkspacePermission;
import com.databricks.sdk.service.oauth2.CreateServicePrincipalFederationPolicyRequest;
import com.databricks.sdk.service.oauth2.DeleteServicePrincipalFederationPolicyRequest;
import com.databricks.sdk.service.oauth2.FederationPolicy;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java
index 8afca95e2..4a25327f3 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/ClustersExtTest.java
@@ -6,7 +6,15 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import com.databricks.sdk.service.compute.*;
+import com.databricks.sdk.service.compute.ClusterDetails;
+import com.databricks.sdk.service.compute.ClustersService;
+import com.databricks.sdk.service.compute.GetClusterRequest;
+import com.databricks.sdk.service.compute.GetSparkVersionsResponse;
+import com.databricks.sdk.service.compute.ListNodeTypesResponse;
+import com.databricks.sdk.service.compute.NodeInstanceType;
+import com.databricks.sdk.service.compute.NodeType;
+import com.databricks.sdk.service.compute.SparkVersion;
+import com.databricks.sdk.service.compute.State;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/DbfsExtTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/DbfsExtTest.java
index 6fa44cb29..21b514545 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/DbfsExtTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/DbfsExtTest.java
@@ -3,7 +3,11 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
-import com.databricks.sdk.service.files.*;
+import com.databricks.sdk.service.files.AddBlock;
+import com.databricks.sdk.service.files.Close;
+import com.databricks.sdk.service.files.Create;
+import com.databricks.sdk.service.files.CreateResponse;
+import com.databricks.sdk.service.files.DbfsService;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/JobsExtTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/JobsExtTest.java
index 66561a93e..d0e2bcc85 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/JobsExtTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/JobsExtTest.java
@@ -5,7 +5,24 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
-import com.databricks.sdk.service.jobs.*;
+import com.databricks.sdk.service.jobs.BaseJob;
+import com.databricks.sdk.service.jobs.BaseRun;
+import com.databricks.sdk.service.jobs.GetJobRequest;
+import com.databricks.sdk.service.jobs.GetRunRequest;
+import com.databricks.sdk.service.jobs.Job;
+import com.databricks.sdk.service.jobs.JobCluster;
+import com.databricks.sdk.service.jobs.JobEnvironment;
+import com.databricks.sdk.service.jobs.JobParameter;
+import com.databricks.sdk.service.jobs.JobParameterDefinition;
+import com.databricks.sdk.service.jobs.JobSettings;
+import com.databricks.sdk.service.jobs.JobsService;
+import com.databricks.sdk.service.jobs.ListJobsRequest;
+import com.databricks.sdk.service.jobs.ListJobsResponse;
+import com.databricks.sdk.service.jobs.ListRunsRequest;
+import com.databricks.sdk.service.jobs.ListRunsResponse;
+import com.databricks.sdk.service.jobs.Run;
+import com.databricks.sdk.service.jobs.RunTask;
+import com.databricks.sdk.service.jobs.Task;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
diff --git a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/SecretsExtTest.java b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/SecretsExtTest.java
index 9a924de0b..df7dd9f08 100644
--- a/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/SecretsExtTest.java
+++ b/databricks-sdk-java/src/test/java/com/databricks/sdk/mixin/SecretsExtTest.java
@@ -2,7 +2,9 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
-import com.databricks.sdk.service.workspace.*;
+import com.databricks.sdk.service.workspace.GetSecretRequest;
+import com.databricks.sdk.service.workspace.GetSecretResponse;
+import com.databricks.sdk.service.workspace.SecretsService;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import org.junit.jupiter.api.AfterEach;
diff --git a/examples/docs/pom.xml b/examples/docs/pom.xml
index 5e3a452e6..31ea69b68 100644
--- a/examples/docs/pom.xml
+++ b/examples/docs/pom.xml
@@ -24,7 +24,7 @@
com.databricks
databricks-sdk-java
- 0.156.0
+ 0.157.0
diff --git a/examples/docs/src/main/java/com/databricks/example/CliAuthAccount.java b/examples/docs/src/main/java/com/databricks/example/CliAuthAccount.java
index 012e7aa10..76937f647 100644
--- a/examples/docs/src/main/java/com/databricks/example/CliAuthAccount.java
+++ b/examples/docs/src/main/java/com/databricks/example/CliAuthAccount.java
@@ -5,35 +5,32 @@
import com.databricks.sdk.service.provisioning.Workspace;
/**
- Example for authenticating with Databricks Account through CLI.
- The authentication type can be set to either "databricks-cli" or "azure-cli".
- For details on authenticating via bricks cli, please see: ...
+ * Example for authenticating with Databricks Account through CLI. The authentication type can be
+ * set to either "databricks-cli" or "azure-cli". For details on authenticating via bricks cli,
+ * please see: ...
*/
public class CliAuthAccount {
- /**
- Get config used for authenticating with Databricks.
- @return DatabricksConfig object used for authentication
- */
- private static DatabricksConfig getConfig() {
- // Change to "azure-cli" if you want to authenticate through azure cli
- // Please authenticate using cli before using them in SDK.
- // Example: $ databricks auth login --host --account-id
- String authType = "databricks-cli";
- String profile = "";
- return new DatabricksConfig()
- .setAuthType(authType)
- .setProfile(profile);
- }
+ /**
+ * Get config used for authenticating with Databricks.
+ *
+ * @return DatabricksConfig object used for authentication
+ */
+ private static DatabricksConfig getConfig() {
+ // Change to "azure-cli" if you want to authenticate through azure cli
+ // Please authenticate using cli before using them in SDK.
+ // Example: $ databricks auth login --host --account-id
+ String authType = "databricks-cli";
+ String profile = "";
+ return new DatabricksConfig().setAuthType(authType).setProfile(profile);
+ }
- /**
- Authenticate and retrieve the list of workspaces from account
- */
- public static void main(String[] args) {
- DatabricksConfig config = getConfig();
+ /** Authenticate and retrieve the list of workspaces from account */
+ public static void main(String[] args) {
+ DatabricksConfig config = getConfig();
- AccountClient account = new AccountClient(config);
- for (Workspace w : account.workspaces().list()) {
- System.out.println(w.getWorkspaceName());
- }
+ AccountClient account = new AccountClient(config);
+ for (Workspace w : account.workspaces().list()) {
+ System.out.println(w.getWorkspaceName());
}
+ }
}
diff --git a/examples/docs/src/main/java/com/databricks/example/CliAuthWorkspace.java b/examples/docs/src/main/java/com/databricks/example/CliAuthWorkspace.java
index 2f646f243..8f263b8e4 100644
--- a/examples/docs/src/main/java/com/databricks/example/CliAuthWorkspace.java
+++ b/examples/docs/src/main/java/com/databricks/example/CliAuthWorkspace.java
@@ -6,35 +6,32 @@
import com.databricks.sdk.service.compute.ListClustersRequest;
/**
- Example for authenticating with Databricks Workspace through CLI.
- The authentication type can be set to either "databricks-cli" or "azure-cli".
- For details on authenticating via bricks cli, please see: ...
+ * Example for authenticating with Databricks Workspace through CLI. The authentication type can be
+ * set to either "databricks-cli" or "azure-cli". For details on authenticating via bricks cli,
+ * please see: ...
*/
public class CliAuthWorkspace {
- /**
- Get config used for authenticating with Databricks.
- @return DatabricksConfig object used for authentication
- */
- private static DatabricksConfig getConfig() {
- // Change to "azure-cli" if you want to authenticate through azure cli
- // Please authenticate using cli before using them in SDK.
- // Example: $ databricks auth login --host
- String authType = "databricks-cli";
- String profile = "";
- return new DatabricksConfig()
- .setAuthType(authType)
- .setProfile(profile);
- }
+ /**
+ * Get config used for authenticating with Databricks.
+ *
+ * @return DatabricksConfig object used for authentication
+ */
+ private static DatabricksConfig getConfig() {
+ // Change to "azure-cli" if you want to authenticate through azure cli
+ // Please authenticate using cli before using them in SDK.
+ // Example: $ databricks auth login --host
+ String authType = "databricks-cli";
+ String profile = "";
+ return new DatabricksConfig().setAuthType(authType).setProfile(profile);
+ }
- /**
- Authenticate and retrieve the list of clusters from the workspace
- */
- public static void main(String[] args) {
- DatabricksConfig config = getConfig();
+ /** Authenticate and retrieve the list of clusters from the workspace */
+ public static void main(String[] args) {
+ DatabricksConfig config = getConfig();
- WorkspaceClient workspace = new WorkspaceClient(config);
- for (ClusterDetails c : workspace.clusters().list(new ListClustersRequest())) {
- System.out.println(c.getClusterName());
- }
+ WorkspaceClient workspace = new WorkspaceClient(config);
+ for (ClusterDetails c : workspace.clusters().list(new ListClustersRequest())) {
+ System.out.println(c.getClusterName());
}
+ }
}
diff --git a/examples/docs/src/main/java/com/databricks/example/CliOAuthU2MExample.java b/examples/docs/src/main/java/com/databricks/example/CliOAuthU2MExample.java
index c0eb53704..4552d33d2 100644
--- a/examples/docs/src/main/java/com/databricks/example/CliOAuthU2MExample.java
+++ b/examples/docs/src/main/java/com/databricks/example/CliOAuthU2MExample.java
@@ -6,19 +6,19 @@
import com.databricks.sdk.service.compute.ListClustersRequest;
/**
- * Example for authenticating with Databricks Workspace through CLI using the external-browser auth type.
+ * Example for authenticating with Databricks Workspace through CLI using the external-browser auth
+ * type.
*
- * Before running this example, make sure to configure the host and client ID in the {@code DatabricksConfig} object.
+ *
Before running this example, make sure to configure the host and client ID in the {@code
+ * DatabricksConfig} object.
*/
public class CliOAuthU2MExample {
- public static void main(String[] args) {
- DatabricksConfig config = new DatabricksConfig()
- .setAuthType("external-browser")
- .setClientId("")
- .setHost("");
- WorkspaceClient workspace = new WorkspaceClient(config);
- for (ClusterDetails c : workspace.clusters().list(new ListClustersRequest())) {
- System.out.println(c.getClusterName());
- }
+ public static void main(String[] args) {
+ DatabricksConfig config =
+ new DatabricksConfig().setAuthType("external-browser").setClientId("").setHost("");
+ WorkspaceClient workspace = new WorkspaceClient(config);
+ for (ClusterDetails c : workspace.clusters().list(new ListClustersRequest())) {
+ System.out.println(c.getClusterName());
}
+ }
}
diff --git a/examples/docs/src/main/java/com/databricks/example/CreateJobExample.java b/examples/docs/src/main/java/com/databricks/example/CreateJobExample.java
index daeefe21d..20d9fa315 100644
--- a/examples/docs/src/main/java/com/databricks/example/CreateJobExample.java
+++ b/examples/docs/src/main/java/com/databricks/example/CreateJobExample.java
@@ -1,7 +1,11 @@
package com.databricks.sdk.examples;
import com.databricks.sdk.WorkspaceClient;
-import com.databricks.sdk.service.jobs.*;
+import com.databricks.sdk.service.jobs.CreateJob;
+import com.databricks.sdk.service.jobs.CreateResponse;
+import com.databricks.sdk.service.jobs.NotebookTask;
+import com.databricks.sdk.service.jobs.Source;
+import com.databricks.sdk.service.jobs.Task;
import java.util.*;
public class CreateJobExample {
diff --git a/examples/docs/src/main/java/com/databricks/example/GithubOIDCAuthExample.java b/examples/docs/src/main/java/com/databricks/example/GithubOIDCAuthExample.java
index 478d4a21a..c0eed6658 100644
--- a/examples/docs/src/main/java/com/databricks/example/GithubOIDCAuthExample.java
+++ b/examples/docs/src/main/java/com/databricks/example/GithubOIDCAuthExample.java
@@ -2,41 +2,41 @@
import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
-import com.databricks.sdk.service.iam.User;
-import com.databricks.sdk.service.iam.ListAccountGroupsRequest;
import com.databricks.sdk.service.iam.Group;
+import com.databricks.sdk.service.iam.ListAccountGroupsRequest;
/**
* Example demonstrating how to use GitHub OIDC authentication with Databricks.
- *
- * IMPORTANT: This example only works when running within GitHub Actions.
+ *
+ *
IMPORTANT: This example only works when running within GitHub Actions.
*/
public class GithubOIDCAuthExample {
- public static void main(String[] args) {
- // Create Databricks configuration with GitHub OIDC authentication
- // Note: This configuration assumes the code is running in GitHub Actions
- DatabricksConfig config = new DatabricksConfig()
- .setAuthType("github-oidc") // Specifies GitHub OIDC as the authentication method
- .setHost("") // Databricks account URL
- .setAccountId("") // Your Databricks account ID
- .setClientId(""); // Service Principal ID
+ public static void main(String[] args) {
+ // Create Databricks configuration with GitHub OIDC authentication
+ // Note: This configuration assumes the code is running in GitHub Actions
+ DatabricksConfig config =
+ new DatabricksConfig()
+ .setAuthType("github-oidc") // Specifies GitHub OIDC as the authentication method
+ .setHost("") // Databricks account URL
+ .setAccountId("") // Your Databricks account ID
+ .setClientId(""); // Service Principal ID
- // Initialize the Account client with the OIDC configuration
- AccountClient account = new AccountClient(config);
+ // Initialize the Account client with the OIDC configuration
+ AccountClient account = new AccountClient(config);
- try {
- // Example: List all groups in the Databricks account
- // This demonstrates that the OIDC authentication is working
- System.out.println("\nListing account groups:");
- Iterable groups = account.groups().list(new ListAccountGroupsRequest());
- for (Group group : groups) {
- System.out.println("- Group: " + group.getDisplayName() + " (ID: " + group.getId() + ")");
- }
+ try {
+ // Example: List all groups in the Databricks account
+ // This demonstrates that the OIDC authentication is working
+ System.out.println("\nListing account groups:");
+ Iterable groups = account.groups().list(new ListAccountGroupsRequest());
+ for (Group group : groups) {
+ System.out.println("- Group: " + group.getDisplayName() + " (ID: " + group.getId() + ")");
+ }
- } catch (Exception e) {
- System.err.println("Authentication failed: " + e.getMessage());
- e.printStackTrace();
- }
+ } catch (Exception e) {
+ System.err.println("Authentication failed: " + e.getMessage());
+ e.printStackTrace();
}
-}
\ No newline at end of file
+ }
+}
diff --git a/examples/docs/src/main/java/com/databricks/example/HttpProxyExample.java b/examples/docs/src/main/java/com/databricks/example/HttpProxyExample.java
index 8ab8a2360..4849a75fa 100644
--- a/examples/docs/src/main/java/com/databricks/example/HttpProxyExample.java
+++ b/examples/docs/src/main/java/com/databricks/example/HttpProxyExample.java
@@ -7,11 +7,9 @@
/**
* This example demonstrates how to use the Databricks Java SDK with an HTTP proxy.
*
- * To run this example, you must set the following system properties:
- * -Dhttps.proxyHost=
- * The host name of the HTTP proxy server.
- * -Dhttps.proxyPort=
- * The port number of the HTTP proxy server.
+ * To run this example, you must set the following system properties: -Dhttps.proxyHost= The host name of the HTTP proxy server. -Dhttps.proxyPort= The port number of
+ * the HTTP proxy server.
*/
class HttpProxyExample {
public static void main(String[] args) {
diff --git a/examples/docs/src/main/java/com/databricks/example/M2MAuthExample.java b/examples/docs/src/main/java/com/databricks/example/M2MAuthExample.java
index 60f3e8e9c..1ddc8b81c 100644
--- a/examples/docs/src/main/java/com/databricks/example/M2MAuthExample.java
+++ b/examples/docs/src/main/java/com/databricks/example/M2MAuthExample.java
@@ -8,45 +8,47 @@
import com.databricks.sdk.service.provisioning.Workspace;
/**
- Example for authenticating with Databricks Account through CLI.
- The authentication type can be set to either "databricks-cli" or "azure-cli".
- For details on authenticating via bricks cli, please see: ...
+ * Example for authenticating with Databricks Account through CLI. The authentication type can be
+ * set to either "databricks-cli" or "azure-cli". For details on authenticating via bricks cli,
+ * please see: ...
*/
public class M2MAuthExample {
- /**
- Get config used for authenticating with Databricks.
- @return DatabricksConfig object used for authentication
- */
- private static DatabricksConfig getConfig() {
- return new DatabricksConfig()
- .setHost("https://accounts.cloud.databricks.com")
- // Fill in your E2 account ID. Click on your username in the top-right corner of the accounts console to
- // display your account ID.
- .setAccountId("")
- // Create a service principal in the Account console at "User Management" -> "Service Principals" and
- // click "Create service principal". Generate a secret and paste the client ID and secret below.
- .setClientId("")
- .setClientSecret("");
- }
+ /**
+ * Get config used for authenticating with Databricks.
+ *
+ * @return DatabricksConfig object used for authentication
+ */
+ private static DatabricksConfig getConfig() {
+ return new DatabricksConfig()
+ .setHost("https://accounts.cloud.databricks.com")
+ // Fill in your E2 account ID. Click on your username in the top-right corner of the
+ // accounts console to
+ // display your account ID.
+ .setAccountId("")
+ // Create a service principal in the Account console at "User Management" -> "Service
+ // Principals" and
+ // click "Create service principal". Generate a secret and paste the client ID and secret
+ // below.
+ .setClientId("")
+ .setClientSecret("");
+ }
- /**
- Authenticate and retrieve the list of workspaces from account
- */
- public static void main(String[] args) {
- DatabricksConfig config = getConfig();
+ /** Authenticate and retrieve the list of workspaces from account */
+ public static void main(String[] args) {
+ DatabricksConfig config = getConfig();
- AccountClient account = new AccountClient(config);
- Workspace firstWorkspace = null;
- for (Workspace w : account.workspaces().list()) {
- if (w.getDeploymentName().equals("dbc-a39a1eb1-ef95")) {
- firstWorkspace = w;
- }
- System.out.println(w.getWorkspaceName());
- }
+ AccountClient account = new AccountClient(config);
+ Workspace firstWorkspace = null;
+ for (Workspace w : account.workspaces().list()) {
+ if (w.getDeploymentName().equals("dbc-a39a1eb1-ef95")) {
+ firstWorkspace = w;
+ }
+ System.out.println(w.getWorkspaceName());
+ }
- WorkspaceClient w = account.getWorkspaceClient(firstWorkspace);
- for (ClusterDetails c : w.clusters().list(new ListClustersRequest())) {
- System.out.println(c.getClusterName());
- }
+ WorkspaceClient w = account.getWorkspaceClient(firstWorkspace);
+ for (ClusterDetails c : w.clusters().list(new ListClustersRequest())) {
+ System.out.println(c.getClusterName());
}
+ }
}
diff --git a/examples/docs/src/main/java/com/databricks/example/TriggerJobToRunPythonProgram.java b/examples/docs/src/main/java/com/databricks/example/TriggerJobToRunPythonProgram.java
index 0ed094992..573c985a2 100644
--- a/examples/docs/src/main/java/com/databricks/example/TriggerJobToRunPythonProgram.java
+++ b/examples/docs/src/main/java/com/databricks/example/TriggerJobToRunPythonProgram.java
@@ -5,9 +5,13 @@
import com.databricks.sdk.service.compute.ClusterDetails;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.iam.MeRequest;
-import com.databricks.sdk.service.jobs.*;
+import com.databricks.sdk.service.jobs.Run;
+import com.databricks.sdk.service.jobs.RunTask;
+import com.databricks.sdk.service.jobs.SparkPythonTask;
+import com.databricks.sdk.service.jobs.SubmitRun;
+import com.databricks.sdk.service.jobs.SubmitRunResponse;
+import com.databricks.sdk.service.jobs.SubmitTask;
import com.databricks.sdk.support.Wait;
-
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
@@ -15,120 +19,127 @@
import java.util.*;
import java.util.concurrent.TimeoutException;
-/**
- An example class that triggers a Databricks job using the Databricks Java SDK.
- */
+/** An example class that triggers a Databricks job using the Databricks Java SDK. */
public class TriggerJobToRunPythonProgram {
- /**
- Returns a WorkspaceClient object initialized with the configuration.
- @return The WorkspaceClient object.
- */
- private static WorkspaceClient getWorkspace() {
- DatabricksConfig config = new DatabricksConfig();
- return new WorkspaceClient(config);
+ /**
+ * Returns a WorkspaceClient object initialized with the configuration.
+ *
+ * @return The WorkspaceClient object.
+ */
+ private static WorkspaceClient getWorkspace() {
+ DatabricksConfig config = new DatabricksConfig();
+ return new WorkspaceClient(config);
+ }
+
+ /**
+ * Returns a sample Python program that sleeps for 1 second and prints a message containing the
+ * current UTC time.
+ *
+ * @return The sample Python program as a string.
+ */
+ private static String getSamplePythonProgram() {
+ return "import time; time.sleep(1); print(\"This is a test run executed at: \" + time.strftime(\"%Y-%m-%d %H:%M:%S\", time.gmtime()) + \" UTC\" );";
+ }
+
+ /**
+ * Creates a Databricks cluster with the given specifications and returns the corresponding
+ * ClusterDetails object.
+ *
+ * @param testWorkspace The Databricks workspace where the cluster will be created.
+ * @return The ClusterDetails object representing the newly created cluster, or null if the
+ * creation process timed out.
+ */
+ private static ClusterDetails getCluster(WorkspaceClient testWorkspace) {
+ try {
+ CreateCluster request =
+ new CreateCluster()
+ .setClusterName("test-cluster")
+ .setSparkVersion("13.0.x-scala2.12")
+ .setNodeTypeId("i3.xlarge")
+ .setAutoterminationMinutes(10L)
+ .setNumWorkers(1L);
+ return testWorkspace.clusters().create(request).get(Duration.ofMinutes(10));
+ } catch (TimeoutException e) {
+ System.err.println(
+ "Timeout: Didn't get cluster within 10 minutes. Error Message: " + e.getMessage());
+ System.exit(1);
}
-
- /**
- Returns a sample Python program that sleeps for 1 second and prints a message containing the current UTC time.
- @return The sample Python program as a string.
- */
- private static String getSamplePythonProgram() {
- return "import time; time.sleep(1); print(\"This is a test run executed at: \" + time.strftime(\"%Y-%m-%d %H:%M:%S\", time.gmtime()) + \" UTC\" );";
+ return null;
+ }
+
+ /**
+ * Triggers a job on a specified Databricks cluster using the provided Databricks workspace. The
+ * method first creates a Python file on Databricks DBFS that contains a sample Python program.
+ * The program is then encoded using Base64, and added to the file created on DBFS. The method
+ * then creates a task for the job, which specifies the Python file on DBFS as the file to be
+ * executed, and the ID of the existing cluster to be used for the job. The task is then submitted
+ * to the workspace to trigger the job.
+ *
+ * @param testWorkspace the Databricks workspace to be used for triggering the job
+ * @param cluster the cluster on which to trigger the job
+ * @return a list of strings that contains the results of the job for each task in the job
+ */
+ private static List triggerJobOn(WorkspaceClient testWorkspace, ClusterDetails cluster) {
+ String pyFileOnDBFS =
+ String.format(
+ "/home/%s/java-sdk-test-sample.py",
+ testWorkspace.currentUser().me(new MeRequest()).getUserName());
+ String pyProgram = getSamplePythonProgram();
+
+ try {
+ testWorkspace
+ .dbfs()
+ .write(Paths.get(pyFileOnDBFS), pyProgram.getBytes(StandardCharsets.UTF_8));
+ } catch (IOException e) {
+ System.err.println("Couldn't write DBFS file: " + e.getMessage());
+ System.exit(1);
}
- /**
- Creates a Databricks cluster with the given specifications and returns the corresponding ClusterDetails object.
- @param testWorkspace The Databricks workspace where the cluster will be created.
- @return The ClusterDetails object representing the newly created cluster, or null if the creation process timed out.
- */
- private static ClusterDetails getCluster(WorkspaceClient testWorkspace) {
- try {
- CreateCluster request = new CreateCluster()
- .setClusterName("test-cluster")
- .setSparkVersion("13.0.x-scala2.12")
- .setNodeTypeId("i3.xlarge")
- .setAutoterminationMinutes(10L)
- .setNumWorkers(1L);
- return testWorkspace.clusters().create(request).get(Duration.ofMinutes(10));
- } catch (TimeoutException e) {
- System.err.println("Timeout: Didn't get cluster within 10 minutes. Error Message: " + e.getMessage());
- System.exit(1);
- }
- return null;
+ String runName = String.format("java-sdk-run-%s", System.currentTimeMillis() / 1000.0);
+
+ SubmitTask task =
+ new SubmitTask()
+ .setTaskKey("test-task")
+ .setSparkPythonTask(
+ new SparkPythonTask().setPythonFile(String.format("dbfs:%s", pyFileOnDBFS)))
+ .setExistingClusterId(cluster.getClusterId());
+
+ Wait submit =
+ testWorkspace
+ .jobs()
+ .submit(new SubmitRun().setRunName(runName).setTasks(Collections.singletonList(task)));
+
+ Long runId = submit.getResponse().getRunId();
+ System.out.printf("Starting to poll for JobID: %s%n%n", runId);
+
+ List results = new ArrayList<>();
+ try {
+ Collection tasks = submit.get().getTasks();
+ for (RunTask eachTask : tasks) {
+ Long taskRunId = eachTask.getRunId();
+ String logs = testWorkspace.jobs().getRunOutput(taskRunId).getLogs();
+ results.add(String.format("Result for taskID: %s = %s", taskRunId, logs));
+ }
+ } catch (TimeoutException e) {
+ results.add(e.getMessage());
}
- /**
- Triggers a job on a specified Databricks cluster using the provided Databricks workspace.
- The method first creates a Python file on Databricks DBFS that contains a sample Python program.
- The program is then encoded using Base64, and added to the file created on DBFS.
- The method then creates a task for the job, which specifies the Python file on DBFS as the
- file to be executed, and the ID of the existing cluster to be used for the job. The task is
- then submitted to the workspace to trigger the job.
- @param testWorkspace the Databricks workspace to be used for triggering the job
- @param cluster the cluster on which to trigger the job
- @return a list of strings that contains the results of the job for each task in the job
- */
- private static List triggerJobOn(WorkspaceClient testWorkspace, ClusterDetails cluster) {
- String pyFileOnDBFS = String.format("/home/%s/java-sdk-test-sample.py", testWorkspace.currentUser().me(new MeRequest()).getUserName());
- String pyProgram = getSamplePythonProgram();
-
- try {
- testWorkspace.dbfs().write(Paths.get(pyFileOnDBFS), pyProgram.getBytes(StandardCharsets.UTF_8));
- } catch (IOException e) {
- System.err.println("Couldn't write DBFS file: " + e.getMessage());
- System.exit(1);
- }
-
- String runName = String.format("java-sdk-run-%s", System.currentTimeMillis()/1000.0);
-
- SubmitTask task = new SubmitTask()
- .setTaskKey("test-task")
- .setSparkPythonTask(
- new SparkPythonTask()
- .setPythonFile(String.format("dbfs:%s", pyFileOnDBFS))
- )
- .setExistingClusterId(cluster.getClusterId());
-
- Wait submit = testWorkspace.jobs().submit(
- new SubmitRun()
- .setRunName(runName)
- .setTasks(Collections.singletonList(task))
- );
-
- Long runId = submit.getResponse().getRunId();
- System.out.printf("Starting to poll for JobID: %s%n%n", runId);
-
- List results = new ArrayList<>();
- try {
- Collection tasks = submit.get().getTasks();
- for(RunTask eachTask: tasks) {
- Long taskRunId = eachTask.getRunId();
- String logs = testWorkspace.jobs().getRunOutput(taskRunId).getLogs();
- results.add(String.format("Result for taskID: %s = %s", taskRunId, logs));
- }
- } catch (TimeoutException e) {
- results.add(e.getMessage());
- }
-
- return results;
- }
+ return results;
+ }
- /**
- The main method to trigger the Databricks job execution and display the result of the job.
- */
- public static void main(String[] args) {
- // Get your workspace
- WorkspaceClient testWorkspace = getWorkspace();
+ /** The main method to trigger the Databricks job execution and display the result of the job. */
+ public static void main(String[] args) {
+ // Get your workspace
+ WorkspaceClient testWorkspace = getWorkspace();
- // Get cluster you want to run the job on
- ClusterDetails cluster = getCluster(testWorkspace);
+ // Get cluster you want to run the job on
+ ClusterDetails cluster = getCluster(testWorkspace);
- // Trigger a job
- List results = triggerJobOn(testWorkspace, cluster);
-
- // Print the result of job
- results.forEach(System.out::println);
- }
+ // Trigger a job
+ List results = triggerJobOn(testWorkspace, cluster);
+ // Print the result of job
+ results.forEach(System.out::println);
+ }
}
diff --git a/examples/docs/src/main/java/com/databricks/example/UnifiedAuthWorkspace.java b/examples/docs/src/main/java/com/databricks/example/UnifiedAuthWorkspace.java
index 5b372b827..bddffd794 100644
--- a/examples/docs/src/main/java/com/databricks/example/UnifiedAuthWorkspace.java
+++ b/examples/docs/src/main/java/com/databricks/example/UnifiedAuthWorkspace.java
@@ -6,22 +6,22 @@
import com.databricks.sdk.service.compute.ListClustersRequest;
/**
- Example for authenticating with Databricks Workspace through Databricks' Unified Authentication. Unified
- Authentication takes care of inspecting your environment to determine the best way to authenticate.
-
-
- For more details, please see Authenticate with Databricks SDK for Java.
+ * Example for authenticating with Databricks Workspace through Databricks' Unified Authentication.
+ * Unified Authentication takes care of inspecting your environment to determine the best way to
+ * authenticate.
+ *
+ *
For more details, please see Authenticate
+ * with Databricks SDK for Java.
*/
public class UnifiedAuthWorkspace {
- /**
- Authenticate and retrieve the list of clusters from the workspace
- */
- public static void main(String[] args) {
- DatabricksConfig config = new DatabricksConfig();
+ /** Authenticate and retrieve the list of clusters from the workspace */
+ public static void main(String[] args) {
+ DatabricksConfig config = new DatabricksConfig();
- WorkspaceClient workspace = new WorkspaceClient(config);
- for (ClusterDetails c : workspace.clusters().list(new ListClustersRequest())) {
- System.out.println(c.getClusterName());
- }
+ WorkspaceClient workspace = new WorkspaceClient(config);
+ for (ClusterDetails c : workspace.clusters().list(new ListClustersRequest())) {
+ System.out.println(c.getClusterName());
}
+ }
}
diff --git a/examples/spring-boot-oauth-u2m-demo/pom.xml b/examples/spring-boot-oauth-u2m-demo/pom.xml
index 807da415c..dceed2ea7 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.156.0
+ 0.157.0
diff --git a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java
index 875de6e77..ae49d710d 100644
--- a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java
+++ b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/App.java
@@ -12,20 +12,19 @@
@SpringBootApplication
@EnableWebSecurity
public class App {
- public static void main(String[] args) {
- SpringApplication.run(App.class, args);
- }
+ public static void main(String[] args) {
+ SpringApplication.run(App.class, args);
+ }
- @Bean
- public HttpClient getHttpClient() {
- return new CommonsHttpClient.Builder().withTimeoutSeconds(30).build();
- }
+ @Bean
+ public HttpClient getHttpClient() {
+ return new CommonsHttpClient.Builder().withTimeoutSeconds(30).build();
+ }
- @Bean
- public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
- http.authorizeHttpRequests((requests) -> requests
- .anyRequest().permitAll());
+ @Bean
+ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+ http.authorizeHttpRequests((requests) -> requests.anyRequest().permitAll());
- return http.build();
- }
+ return http.build();
+ }
}
diff --git a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java
index bb83f8466..ee0172f3d 100644
--- a/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java
+++ b/examples/spring-boot-oauth-u2m-demo/src/main/java/com/databricks/sdk/RootController.java
@@ -10,14 +10,6 @@
import com.databricks.sdk.service.compute.ListClustersRequest;
import com.databricks.sdk.service.oauth2.CreateCustomAppIntegration;
import com.databricks.sdk.service.oauth2.CreateCustomAppIntegrationOutput;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
import java.net.MalformedURLException;
@@ -25,11 +17,17 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class RootController {
- @Autowired
- private HttpClient hc;
+ @Autowired private HttpClient hc;
// Initialized by initializeApp(). This should be initialized in a more Spring-friendly way.
private OAuthClient client;
@@ -61,28 +59,33 @@ public String setupOAuthApplication(Model model) {
@PostMapping("/initialize-app")
public String initializeApp(
- @RequestParam(name="client_id") String clientId,
- @RequestParam(name="client_secret") String clientSecret,
- @RequestParam(name="hostname") String hostname) throws IOException {
+ @RequestParam(name = "client_id") String clientId,
+ @RequestParam(name = "client_secret") String clientSecret,
+ @RequestParam(name = "hostname") String hostname)
+ throws IOException {
DatabricksConfig config = new DatabricksConfig().setHost(hostname).setHttpClient(hc).resolve();
OpenIDConnectEndpoints oidcEndpoints = config.getDatabricksOidcEndpoints();
- client = new OAuthClient.Builder()
- .withClientId(clientId)
- .withClientSecret(clientSecret)
- .withHost(hostname)
- .withRedirectUrl(getRedirectUrl())
- .withHttpClient(hc)
- .withOpenIDConnectEndpoints(oidcEndpoints)
- .withScopes(List.of("all-apis", "offline_access"))
- .build();
+ client =
+ new OAuthClient.Builder()
+ .withClientId(clientId)
+ .withClientSecret(clientSecret)
+ .withHost(hostname)
+ .withRedirectUrl(getRedirectUrl())
+ .withHttpClient(hc)
+ .withOpenIDConnectEndpoints(oidcEndpoints)
+ .withScopes(List.of("all-apis", "offline_access"))
+ .build();
return "redirect:/";
}
private String getAccountsHost(String cloud) {
switch (cloud) {
- case "aws": return "https://accounts.cloud.databricks.com";
- case "azure": return "https://accounts.azuredatabricks.net";
- case "gcp": return "https://accounts.gcp.databricks.com";
+ case "aws":
+ return "https://accounts.cloud.databricks.com";
+ case "azure":
+ return "https://accounts.azuredatabricks.net";
+ case "gcp":
+ return "https://accounts.gcp.databricks.com";
}
throw new RuntimeException("Unexpected cloud: " + cloud);
}
@@ -93,18 +96,23 @@ public String makeNewApp(
@RequestParam String password,
@RequestParam String cloud,
@RequestParam("account_id") String accountId,
- @RequestParam String hostname) throws IOException {
- DatabricksConfig c = new DatabricksConfig()
- .setUsername(username)
- .setPassword(password)
- .setHost(getAccountsHost(cloud))
- .setAccountId(accountId)
- .setHttpClient(hc);
+ @RequestParam String hostname)
+ throws IOException {
+ DatabricksConfig c =
+ new DatabricksConfig()
+ .setUsername(username)
+ .setPassword(password)
+ .setHost(getAccountsHost(cloud))
+ .setAccountId(accountId)
+ .setHttpClient(hc);
AccountClient account = new AccountClient(c);
- CreateCustomAppIntegrationOutput result = account.customAppIntegration().create(
- new CreateCustomAppIntegration()
- .setName("java-sdk-demo")
- .setRedirectUrls(Collections.singletonList(getRedirectUrl())));
+ CreateCustomAppIntegrationOutput result =
+ account
+ .customAppIntegration()
+ .create(
+ new CreateCustomAppIntegration()
+ .setName("java-sdk-demo")
+ .setRedirectUrls(Collections.singletonList(getRedirectUrl())));
return initializeApp(result.getClientId(), result.getClientSecret(), hostname);
}
@@ -122,7 +130,8 @@ public String authenticate(HttpSession session, Model model) throws MalformedURL
}
@GetMapping("/callback")
- public String callback(HttpSession session, @RequestParam Map allParams) throws IOException {
+ public String callback(HttpSession session, @RequestParam Map allParams)
+ throws IOException {
Consent consent = (Consent) session.getAttribute("consent");
consent.setHttpClient(hc);
SessionCredentials creds = consent.exchangeCallbackParameters(allParams);
@@ -136,7 +145,8 @@ public String callback(HttpSession session, @RequestParam Map al
@GetMapping("/list-clusters")
public String listClusters(Model model) {
- Iterable clustersIterable = workspace.clusters().list(new ListClustersRequest());
+ Iterable clustersIterable =
+ workspace.clusters().list(new ListClustersRequest());
List clusterNames = new ArrayList<>();
clustersIterable.forEach(c -> clusterNames.add(c.getClusterName()));
model.addAttribute("clusterNames", clusterNames);
diff --git a/lockfile.json b/lockfile.json
index a0de4f73b..40025b1af 100644
--- a/lockfile.json
+++ b/lockfile.json
@@ -1,7 +1,7 @@
{
"artifactId": "databricks-sdk-parent",
"groupId": "com.databricks",
- "version": "0.156.0",
+ "version": "0.157.0",
"lockFileVersion": 1,
"dependencies": [],
"mavenPlugins": [],
diff --git a/pom.xml b/pom.xml
index 1054ad783..71ab7ded2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.databricks
databricks-sdk-parent
- 0.156.0
+ 0.157.0
pom
Databricks SDK for Java
The Databricks SDK for Java includes functionality to accelerate development with Java for
@@ -75,41 +75,6 @@
maven-archetype-plugin
3.3.0
-
- com.diffplug.spotless
- spotless-maven-plugin
-
- 2.30.0
-
-
-
-
-
- 1.27.0
-
-
-
-
-
-
-
- pom.xml
-
-
- false
- false
-
-
- true
- true
- true
-
-
-
-
org.apache.maven.plugins
maven-surefire-plugin
diff --git a/scripts/mvn-spotless-apply.sh b/scripts/mvn-spotless-apply.sh
deleted file mode 100755
index 14f6e245d..000000000
--- a/scripts/mvn-spotless-apply.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-
-# Wrapper for `mvn spotless:apply` that exports the javac-internals flags required by
-# google-java-format on JDK 16+. Without these, GJF fails on JDK 17+ with either
-# IllegalAccessError or NoSuchMethodError when it reaches into com.sun.tools.javac.*.
-# On JDK <= 15 the flags are unrecognized and would break Maven startup, so we only
-# set them when the detected JDK major version is >= 16.
-#
-# If that JDK can't run google-java-format (most often because it's older than JDK 17,
-# which the pinned GJF 1.27.0 requires), we retry under an explicit JDK 17 install —
-# mirroring the `make fmt` -> `make fmt-jdk17` fallback. Override the fallback location
-# with JDK17_HOME, or just point JAVA_HOME at a JDK 17+ and re-run.
-
-set -euo pipefail
-
-# Location used by the JDK 17 fallback. Override for non-Debian layouts, e.g.
-# `JDK17_HOME=$(/usr/libexec/java_home -v 17) bash scripts/mvn-spotless-apply.sh`.
-JDK17_HOME="${JDK17_HOME:-/usr/lib/jvm/java-17-openjdk-amd64}"
-
-# The --add-exports flags google-java-format needs to reach into com.sun.tools.javac.*
-# on JDK 16+.
-GJF_ADD_EXPORTS="\
---add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
---add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
---add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
---add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
---add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
---add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED"
-
-# Detect the major version of the JDK Maven will actually use: $JAVA_HOME/bin/java when
-# JAVA_HOME is set, otherwise `java` from PATH. mvn resolves its JVM the same way, so the
-# add-exports gating below matches what the first attempt really runs (and re-running with
-# JAVA_HOME pointed at a JDK 17+ makes that attempt succeed without hitting the fallback).
-JAVA_BIN="java"
-if [ -n "${JAVA_HOME:-}" ] && [ -x "${JAVA_HOME}/bin/java" ]; then
- JAVA_BIN="${JAVA_HOME}/bin/java"
-fi
-
-JDK_VERSION_OUTPUT=$("$JAVA_BIN" -version 2>&1 | head -1)
-# Matches `"1.8.0_xxx"` (legacy) and `"17.0.1"` / `"25"` (modern) forms.
-JDK_MAJOR=$(echo "$JDK_VERSION_OUTPUT" | sed -E 's/.*version "([0-9]+)(\.[0-9]+)?.*/\1/')
-if [ "$JDK_MAJOR" = "1" ]; then
- JDK_MAJOR=$(echo "$JDK_VERSION_OUTPUT" | sed -E 's/.*version "1\.([0-9]+).*/\1/')
-fi
-
-DEFAULT_OPTS="${MAVEN_OPTS:-}"
-if [ "${JDK_MAJOR:-0}" -ge 16 ]; then
- DEFAULT_OPTS="$DEFAULT_OPTS $GJF_ADD_EXPORTS"
-fi
-
-# First attempt: the JDK selected above (JAVA_HOME or PATH).
-if MAVEN_OPTS="$DEFAULT_OPTS" mvn spotless:apply; then
- exit 0
-fi
-
-echo ""
-echo "==> default JDK could not run google-java-format (likely < JDK 17). Retrying with JDK 17..."
-echo ""
-
-if [ ! -x "$JDK17_HOME/bin/java" ]; then
- echo "error: JDK 17 not found at $JDK17_HOME" >&2
- echo " install it, set JDK17_HOME to a JDK 17 install, or point JAVA_HOME" >&2
- echo " at a JDK 17+ and re-run." >&2
- exit 1
-fi
-
-# JDK 17 is always >= 16, so the add-exports flags are always required here.
-exec env JAVA_HOME="$JDK17_HOME" \
- MAVEN_OPTS="${MAVEN_OPTS:-} $GJF_ADD_EXPORTS" \
- mvn spotless:apply
diff --git a/shaded/pom.xml b/shaded/pom.xml
index a03b99cbb..733606797 100644
--- a/shaded/pom.xml
+++ b/shaded/pom.xml
@@ -4,7 +4,7 @@
4.0.0
- 0.156.0
+ 0.157.0
com.databricks
diff --git a/tagging.py b/tagging.py
deleted file mode 100644
index 46f0fdae3..000000000
--- a/tagging.py
+++ /dev/null
@@ -1,1395 +0,0 @@
-# /// script
-# dependencies = ["PyGithub>=2,<3", "pyjwt<2.12.0", "charset-normalizer<3.4.6"]
-# ///
-
-import os
-import re
-import argparse
-from typing import Optional, List, Callable, Dict
-from dataclasses import dataclass, replace
-import subprocess
-import time
-import json
-from github import Auth, Github, Repository, InputGitTreeElement, InputGitAuthor
-from datetime import datetime, timezone
-
-NEXT_CHANGELOG_FILE_NAME = "NEXT_CHANGELOG.md"
-CHANGELOG_FILE_NAME = "CHANGELOG.md"
-PACKAGE_FILE_NAME = ".package.json"
-CODEGEN_FILE_NAME = ".codegen.json"
-CREATED_TAGS_FILE_NAME = "created_tags.json"
-
-# Presence of this env var switches the changelog source from a single
-# hand-maintained ``NEXT_CHANGELOG.md`` to per-PR ``//*.md``
-# fragments, and the release version from the ``## Release vX.Y.Z`` header to a
-# ``/version`` file. Its value is the fragment directory name (e.g.
-# ``.nextchanges``). Unset for every SDK repo, so their behavior is unchanged;
-# a repo opts in by setting it in the tagging workflow (see the databricks/cli
-# release workflow). The per-section ``(slug, header)`` mapping is read from
-# ``.codegen.json``'s ``nextchanges_sections`` key.
-NEXTCHANGES_DIR_ENV = "NEXTCHANGES_DIR"
-
-# File inside the fragment directory tracking the next release's version —
-# read at release time and bumped afterward, the role the ``## Release vX.Y.Z``
-# header plays in the ``NEXT_CHANGELOG.md`` flow.
-NEXTCHANGES_VERSION_FILE = "version"
-
-# ``README.md`` in a section slug is documentation (e.g. "put CLI changelog
-# fragments here"), not a changelog fragment. It is excluded from rendering and
-# preserved across releases, so teams can keep per-slug guidance in place.
-NEXTCHANGES_README_FILE = "README.md"
-"""
-This script tags the release of the SDKs using a combination of the GitHub API and Git commands.
-It reads the local repository to determine necessary changes, updates changelogs, and creates tags.
-
-### How it Works:
-- It does **not** modify the local repository directly.
-- Instead of committing and pushing changes locally, it uses the **GitHub API** to create commits and tags.
-"""
-
-
-@dataclass(frozen=True)
-class Version:
- """
- A semver 2.0.0-compliant version (https://semver.org).
-
- Mirrors the API of the `semver` PyPI package so this implementation can be
- swapped for that library if it is ever added to the wheelhouse. Supports
- parsing, stringification, and the two bumps we need: minor (for stable
- releases) and prerelease (for release trains).
- """
-
- # Permissive pattern for locating a semver version string inside larger
- # text (e.g. a changelog header). Callers use it in f-strings; strict
- # validation happens via Version.parse.
- PATTERN = r"\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?"
-
- # Strict anchored regex per https://semver.org. Rejects leading zeros in
- # numeric identifiers and invalid pre-release/build identifier charsets.
- _PARSE_REGEX = re.compile(
- r"^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)"
- r"(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)"
- r"(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?"
- r"(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"
- )
-
- major: int
- minor: int
- patch: int
- prerelease: str = ""
- build: str = ""
-
- @classmethod
- def parse(cls, text: str) -> "Version":
- """Parse a semver string, raising ValueError on malformed input."""
- match = cls._PARSE_REGEX.match(text)
- if not match:
- raise ValueError(f"Invalid semver version: {text!r}")
- major, minor, patch, prerelease, build = match.groups()
- return cls(
- major=int(major),
- minor=int(minor),
- patch=int(patch),
- prerelease=prerelease or "",
- build=build or "",
- )
-
- def __str__(self) -> str:
- result = f"{self.major}.{self.minor}.{self.patch}"
- if self.prerelease:
- result += f"-{self.prerelease}"
- if self.build:
- result += f"+{self.build}"
- return result
-
- def bump_minor(self) -> "Version":
- """
- Bump the minor version and reset patch.
-
- Per semver item 9, a pre-release version has lower precedence than
- the same MAJOR.MINOR.PATCH, so bumping to a new minor drops any
- pre-release and build metadata.
- """
- return Version(major=self.major, minor=self.minor + 1, patch=0)
-
- def bump_prerelease(self) -> "Version":
- """
- Increment the rightmost numeric identifier in the pre-release.
-
- Matches the npm `prerelease` bump semantics:
- 0.0.0-alpha.1 -> 0.0.0-alpha.2
- 0.0.0-alpha -> 0.0.0-alpha.1
- 0.0.0-rc.1.2 -> 0.0.0-rc.1.3
-
- Raises ValueError if the version has no pre-release to bump.
- Build metadata is dropped since it does not affect precedence.
- """
- if not self.prerelease:
- raise ValueError(f"Cannot bump prerelease of {self}: no pre-release component")
- parts = self.prerelease.split(".")
- for i in range(len(parts) - 1, -1, -1):
- if parts[i].isdigit():
- parts[i] = str(int(parts[i]) + 1)
- return replace(self, prerelease=".".join(parts), build="")
- # No numeric identifier exists; append ".1" to start a counter.
- return replace(self, prerelease=f"{self.prerelease}.1", build="")
-
- def next_release_version(self) -> "Version":
- """
- Default next version for the changelog after this one is released.
-
- If on a pre-release track, stay on it by bumping the pre-release
- identifier (npm convention). Otherwise, bump the minor version,
- the script's historical default for stable releases. Teams can
- override the default in the release PR.
- """
- if self.prerelease:
- return self.bump_prerelease()
- return self.bump_minor()
-
-
-def _read_local_head_sha() -> str:
- """
- Returns the SHA of the local working tree's HEAD via ``git rev-parse``.
- """
- return subprocess.check_output(["git", "rev-parse", "HEAD"], text=True).strip()
-
-
-def _release_branch() -> str:
- """
- Returns the branch this release is being cut from.
-
- The tagging workflow sets ``DECO_TAGGING_REF`` to the branch it was
- dispatched on (``github.ref_name``) so a release can be cut from a
- branch other than main. It is unset for local runs and the historical
- main-only release path, so we default to ``main`` and every existing
- caller is unaffected.
- """
- return os.environ.get("DECO_TAGGING_REF", "").strip() or "main"
-
-
-class MainAdvancedError(Exception):
- """
- Raised when the release branch (``origin/main`` by default; see
- ``_release_branch``) has advanced since the workflow's checkout —
- i.e., another commit landed during this run. The local working tree
- is now stale, so any commit produced from it would silently revert
- whatever the concurrent push added.
- """
-
-
-# GitHub does not support signing commits for GitHub Apps directly.
-# This class replaces usages for git commands such as "git add", "git commit", and "git push".
-@dataclass
-class GitHubRepo:
- def __init__(self, repo: Repository):
- self.repo = repo
- self.changed_files: list[InputGitTreeElement] = []
- # Branch the changelog-bump commit + tag land on. Defaults to
- # ``heads/main``; ``DECO_TAGGING_REF`` overrides it for a branch
- # release. See ``_release_branch``.
- self.ref = f"heads/{_release_branch()}"
- # Anchor ``self.sha`` to the **local checkout** rather than a
- # live API call. ``actions/checkout`` populates the working tree
- # at this SHA, and every subsequent file read in this run is
- # against that tree; the API HEAD is only relevant when we go
- # to push.
- self.sha = _read_local_head_sha()
-
- # Replaces "git add file"
- def add_file(self, loc: str, content: str):
- local_path = os.path.relpath(loc, os.getcwd())
- print(f"Adding file {local_path}")
- blob = self.repo.create_git_blob(content=content, encoding="utf-8")
- element = InputGitTreeElement(path=local_path, mode="100644", type="blob", sha=blob.sha)
- self.changed_files.append(element)
-
- # Replaces "git rm file"
- def delete_file(self, loc: str):
- """``git rm`` equivalent for GitHubRepo: stage a tree deletion (sha=None)."""
- local_path = os.path.relpath(loc, os.getcwd())
- print(f"Deleting file {local_path}")
- self.changed_files.append(InputGitTreeElement(path=local_path, mode="100644", type="blob", sha=None))
-
- # Replaces "git commit && git push"
- def commit_and_push(self, message: str):
- head_ref = self.repo.get_git_ref(self.ref)
- if head_ref.object.sha != self.sha:
- raise MainAdvancedError(
- f"{self.ref} advanced from {self.sha} to {head_ref.object.sha} "
- f"during this run. Local working tree is stale; aborting before "
- f"the commit would silently revert the new content. Re-run the "
- f"workflow."
- )
- base_tree = self.repo.get_git_tree(sha=head_ref.object.sha)
- new_tree = self.repo.create_git_tree(self.changed_files, base_tree)
- parent_commit = self.repo.get_git_commit(head_ref.object.sha)
-
- new_commit = self.repo.create_git_commit(message=message, tree=new_tree, parents=[parent_commit])
- # Update branch reference.
- head_ref.edit(new_commit.sha)
- self.sha = new_commit.sha
-
- def reset(self, sha: Optional[str] = None):
- self.changed_files = []
- if sha:
- self.sha = sha
- else:
- self.sha = _read_local_head_sha()
-
- def tag(self, tag_name: str, tag_message: str):
- # Create a tag pointing to the new commit
- # The email MUST be the GitHub Apps email.
- # Otherwise, the tag will not be verified.
- tagger = InputGitAuthor(
- name="Databricks SDK Release Bot", email="DECO-SDK-Tagging[bot]@users.noreply.github.com"
- )
-
- tag = self.repo.create_git_tag(tag=tag_name, message=tag_message, object=self.sha, type="commit", tagger=tagger)
- # Create a Git ref (the actual reference for the tag in the repo)
- self.repo.create_git_ref(ref=f"refs/tags/{tag_name}", sha=tag.sha)
-
-
-gh: Optional[GitHubRepo] = None
-
-
-@dataclass
-class Package:
- """
- Represents a package in the repository.
- :name: The package name.
- :path: The path to the package relative to the repository root.
- """
-
- name: str
- path: str
-
-
-@dataclass
-class TagInfo:
- """
- Represents all changes on a release.
- :package: package info.
- :version: release version for the package. Format: v..
- :content: changes for the release, as they appear in the changelog.
- When written to CHANGELOG.md, the current date (YYYY-MM-DD) is automatically added.
-
- Example (from NEXT_CHANGELOG.md):
-
- ## Release v0.56.0
-
- ### New Features and Improvements
- * Feature
- * Some improvement
-
- ### Bug Fixes
- * Bug fix
-
- ### Documentation
- * Doc Changes
-
- ### Internal Changes
- * More Changes
-
- ### API Changes
- * Add new Service
-
- Note: When written to CHANGELOG.md, the header becomes: ## Release v0.56.0 (YYYY-MM-DD)
-
- """
-
- package: Package
- version: str
- content: str
-
- def tag_name(self) -> str:
- return f"{self.package.name}/v{self.version}" if self.package.name else f"v{self.version}"
-
-
-def get_package_name(package_path: str) -> str:
- """
- Returns the package name from the package path.
- The name is found inside the .package.json file:
- {
- "package": "package_name"
- }
- """
- filepath = os.path.join(os.getcwd(), package_path, PACKAGE_FILE_NAME)
- with open(filepath, "r") as file:
- content = json.load(file)
- if "package" in content:
- return content["package"]
- # Legacy SDKs have no packages.
- return ""
-
-
-def stage_version_updates(tag_infos: List[TagInfo], packages: List[Package]) -> None:
- """
- Stages all version-related edits for the release in a single pass over
- every package the workspace already opts in via ``.package.json``.
- """
-
- # Load patterns from '.codegen.json' at the top level of the repository.
- package_file_path = os.path.join(os.getcwd(), CODEGEN_FILE_NAME)
- with open(package_file_path, "r") as file:
- codegen = json.load(file)
-
- version_patterns = codegen.get("version", {})
- dep_patterns = codegen.get("dependency_pattern", {})
- name_template = codegen.get("dependency_name_template", "")
-
- if not version_patterns and not dep_patterns:
- print("Neither `version` nor `dependency_pattern` found in .codegen.json. Nothing to update.")
- return
-
- bumped_by_dir: Dict[str, TagInfo] = {info.package.path: info for info in tag_infos}
- new_dep_versions = compute_dependency_rewrites(tag_infos, name_template)
-
- files = sorted(set(version_patterns.keys()) | set(dep_patterns.keys()))
-
- for pkg in packages:
- for filename in files:
- loc = os.path.join(os.getcwd(), pkg.path, filename)
-
- with open(loc, "r") as file:
- content = file.read()
- original = content
-
- # Own version (only when this package is being released and the
- # file has a version pattern declared).
- info = bumped_by_dir.get(pkg.path)
- if info is not None and filename in version_patterns:
- pattern = version_patterns[filename]
- previous_version = pattern.replace("$VERSION", Version.PATTERN)
- new_version = pattern.replace("$VERSION", info.version)
- content = re.sub(previous_version, new_version, content)
-
- # Sibling dependency rewrites (only when the file has a
- # dependency pattern and there is at least one bumped sibling).
- if filename in dep_patterns and new_dep_versions:
- content = rewrite_dependencies(content, dep_patterns[filename], new_dep_versions)
-
- if content != original:
- gh.add_file(loc, content)
-
-
-def compute_dependency_rewrites(
- tag_infos: List[TagInfo],
- name_template: str,
-) -> Dict[str, str]:
- """
- Returns a map of dependency-name to the new semver string for each
- bumped package.
- """
- if not name_template:
- return {}
- rewrites: Dict[str, str] = {}
- for info in tag_infos:
- # Skip legacy releases that don't have a per-package name; their
- # tag_info has an empty package.name and they can't be referenced
- # as a sibling dep anyway.
- if not info.package.name:
- continue
- dep_name = name_template.replace("$PACKAGE", info.package.name)
- rewrites[dep_name] = info.version
- return rewrites
-
-
-def rewrite_dependencies(content: str, pattern: str, new_versions: Dict[str, str]) -> str:
- """
- Apply ``pattern`` (with ``$DEPENDENCY`` and ``$VERSION`` placeholders) to
- rewrite every entry in ``content`` whose dependency name appears in
- ``new_versions``.
- """
- # Sentinel strings used to protect the placeholders through re.escape:
- # we substitute them in, escape the whole template, then swap them out
- # for the dep-name literal and Version.PATTERN. Control characters so
- # they can't collide with anything in real .codegen.json patterns.
- dep_sentinel = "\x01DEPENDENCY\x01"
- ver_sentinel = "\x01VERSION\x01"
-
- for dep_name, new_value in new_versions.items():
- regex = pattern.replace("$DEPENDENCY", dep_sentinel).replace("$VERSION", ver_sentinel)
- regex = re.escape(regex)
- regex = regex.replace(re.escape(dep_sentinel), re.escape(dep_name))
- regex = regex.replace(re.escape(ver_sentinel), Version.PATTERN)
-
- # Build the literal replacement text by substituting the same
- # placeholders directly. A lambda is used instead of a string to
- # avoid re.sub interpreting \1, \g<...>, etc. inside the value.
- replacement_text = pattern.replace("$DEPENDENCY", dep_name).replace("$VERSION", new_value)
- content = re.sub(regex, lambda _m, text=replacement_text: text, content)
- return content
-
-
-def clean_next_changelog(package_path: str) -> None:
- """
- Cleans the "NEXT_CHANGELOG.md" file. It performs 2 operations:
- * Increase the version to the next minor version.
- * Remove release notes. Sections names are kept to
- keep consistency in the section names between releases.
- """
-
- file_path = os.path.join(os.getcwd(), package_path, NEXT_CHANGELOG_FILE_NAME)
- with open(file_path, "r") as file:
- content = file.read()
-
- # Remove content between ### sections.
- cleaned_content = re.sub(r"(### [^\n]+\n)(?:.*?\n?)*?(?=###|$)", r"\1", content)
- # Ensure there is exactly one empty line before each section.
- cleaned_content = re.sub(r"(\n*)(###[^\n]+)", r"\n\n\2", cleaned_content)
- # Find the version number and compute the default next release version.
- # Teams can adjust the version in the PR if the default is not desired.
- # For stable versions, bump minor (historical default since minor releases
- # are more common than patch or major). For pre-release versions, stay on
- # the same track by bumping the pre-release identifier (npm convention).
- version_match = re.search(rf"Release v({Version.PATTERN})", cleaned_content)
- if not version_match:
- raise Exception("Version not found in the changelog")
- current = Version.parse(version_match.group(1))
- new_header = f"Release v{current.next_release_version()}"
- cleaned_content = cleaned_content.replace(version_match.group(0), new_header)
-
- # Update file with cleaned content
- gh.add_file(file_path, cleaned_content)
-
-
-def get_previous_tag_info(package: Package) -> Optional[TagInfo]:
- """
- Extracts the previous tag info from the "CHANGELOG.md" file.
- Used for failure recovery purposes.
- """
- changelog_path = os.path.join(os.getcwd(), package.path, CHANGELOG_FILE_NAME)
-
- with open(changelog_path, "r") as f:
- changelog = f.read()
-
- # Extract the latest release section using regex.
- match = re.search(
- rf"## (\[Release\] )?Release v{Version.PATTERN}.*?(?=\n## (\[Release\] )?Release v|\Z)",
- changelog,
- re.S,
- )
-
- # E.g., for new packages.
- if not match:
- return None
-
- latest_release = match.group(0)
- version_match = re.search(rf"## (\[Release\] )?Release v({Version.PATTERN})", latest_release)
-
- if not version_match:
- raise Exception("Version not found in the changelog")
-
- # Validate the extracted string is spec-compliant; fail loudly otherwise.
- version = str(Version.parse(version_match.group(2)))
- return TagInfo(package=package, version=version, content=latest_release)
-
-
-def _load_codegen_config(package_path: str = "") -> Dict:
- """
- Loads ``.codegen.json`` for a package: prefers ``/.codegen.json``
- and falls back to the repo-root file, returning an empty dict when neither
- exists. ``package_path=""`` (the default) reads the repo root, matching the
- single-package / root-config layout.
-
- Package-local lookup keeps the section taxonomy and other codegen options in
- lockstep with the package-relative directories the nextchanges helpers
- resolve, so a multi-package repo can give each package its own config
- instead of every package sharing the root file.
- """
- candidates = [os.path.join(os.getcwd(), package_path, CODEGEN_FILE_NAME)]
- root_config = os.path.join(os.getcwd(), CODEGEN_FILE_NAME)
- if root_config not in candidates:
- candidates.append(root_config)
- for candidate in candidates:
- if os.path.exists(candidate):
- with open(candidate, "r") as file:
- return json.load(file)
- return {}
-
-
-def _nextchanges_dir() -> Optional[str]:
- """
- Returns the fragment directory name when nextchanges mode is enabled
- (``NEXTCHANGES_DIR`` set to a non-empty value), else ``None``. In the
- ``None`` case the historical ``NEXT_CHANGELOG.md`` flow is used, so every
- repo that doesn't set the env var is unaffected.
- """
- return os.environ.get(NEXTCHANGES_DIR_ENV, "").strip() or None
-
-
-def _nextchanges_sections(package_path: str = "") -> List[tuple]:
- """
- Returns the ordered ``(slug, header)`` section list from the package's
- ``.codegen.json`` ``nextchanges_sections`` — the mapping of ``//``
- subdirectories to the ``### `` blocks they render into, in changelog
- order. Read via ``_load_codegen_config(package_path)`` so it matches the
- package-relative fragment directories (a multi-package repo can scope the
- taxonomy per package).
-
- Declared as a JSON object ``{"": "", ...}`` so the per-repo
- section taxonomy stays out of this shared script; insertion order in the
- object is the changelog order (JSON objects preserve order in Python 3.7+).
- Raises when nextchanges mode is on but the key is absent/empty, or is not an
- object, since there would be nothing sensible to render.
- """
- sections = _load_codegen_config(package_path).get("nextchanges_sections", {})
- if not sections:
- raise Exception(
- f"nextchanges mode is enabled ({NEXTCHANGES_DIR_ENV} set) but "
- f"`nextchanges_sections` is missing or empty in {CODEGEN_FILE_NAME}."
- )
- if not isinstance(sections, dict):
- raise Exception(
- f"`nextchanges_sections` in {CODEGEN_FILE_NAME} must be a JSON object "
- f'mapping section slug to header (e.g. {{"cli": "CLI"}}), got '
- f"{type(sections).__name__}."
- )
- return list(sections.items())
-
-
-def _render_fragment(text: str) -> str:
- """
- Render one fragment body into changelog bullets. Each line that starts with
- a ``* ``/``- `` marker (ignoring leading whitespace) becomes its own `` * ``
- bullet; a line without a marker is a continuation of the preceding bullet
- and is kept as authored. A markerless first line is itself a single bullet.
-
- So a fragment with multiple ``* ``/``- `` lines renders as multiple bullets,
- while a bullet followed by plain lines stays one bullet spanning those
- lines. Every bullet gets the leading-space ``*`` that matches CHANGELOG.md.
- """
- lines = []
- for line in text.split("\n"):
- marker = line.lstrip()
- if marker.startswith(("* ", "- ")):
- lines.append(f" * {marker[2:]}")
- elif lines:
- lines.append(line)
- else:
- lines.append(f" * {line}")
- return "\n".join(lines)
-
-
-def render_nextchanges(package_path: str) -> Optional[str]:
- """
- Render ``///*.md`` fragments into the changelog
- body: one ``### `` block per non-empty section in
- ``nextchanges_sections`` order, fragments sorted by filename. Returns
- ``None`` when there are no fragments.
-
- Every ``.md`` file under a section directory is a fragment, except
- ``README.md`` which is treated as per-slug documentation and skipped (see
- ``NEXTCHANGES_README_FILE``). Empty/whitespace-only files contribute
- nothing. Files at the ```` root or under a slug not listed in
- ``nextchanges_sections`` are ignored. Each fragment renders per
- ``_render_fragment``. Link expansion (e.g. ``(#1234)`` → markdown link) is
- assumed to have happened before release, so none here.
- """
- base = os.path.join(os.getcwd(), package_path, _nextchanges_dir())
- if not os.path.isdir(base):
- return None
-
- blocks = []
- for slug, header in _nextchanges_sections(package_path):
- section_dir = os.path.join(base, slug)
- if not os.path.isdir(section_dir):
- continue
- entries = []
- for name in sorted(os.listdir(section_dir)):
- if not name.endswith(".md") or name == NEXTCHANGES_README_FILE:
- continue
- with open(os.path.join(section_dir, name)) as f:
- text = f.read().strip()
- if not text:
- continue
- entries.append(_render_fragment(text))
- if entries:
- # Blank line after the heading, matching CHANGELOG.md.
- blocks.append(f"### {header}\n\n" + "\n".join(entries))
-
- if not blocks:
- return None
- return "\n\n".join(blocks)
-
-
-def _nextchanges_version_path(package_path: str) -> str:
- return os.path.join(os.getcwd(), package_path, _nextchanges_dir(), NEXTCHANGES_VERSION_FILE)
-
-
-def read_nextchanges_version(package: Package) -> str:
- """
- Release version for this run, read from the package's own ``/version``
- (resolved under ``package.path``, so each package in a multi-package repo
- keeps its own version source). In nextchanges mode this file — not the
- ``## Release v…`` changelog header — is the source of truth. To cut a patch
- or major release, edit it in the PR; otherwise its default (bumped to the
- next minor after the previous release by ``clean_nextchanges``) applies.
-
- Raises with an actionable message when the file is absent, so a package that
- opts into nextchanges mode without a version file fails loudly instead of
- with a bare ``FileNotFoundError``.
- """
- version_path = _nextchanges_version_path(package.path)
- if not os.path.exists(version_path):
- raise Exception(
- f"nextchanges mode is enabled ({NEXTCHANGES_DIR_ENV} set) but the version "
- f"file {os.path.relpath(version_path, os.getcwd())} is missing; each package "
- f"in nextchanges mode must provide its own /version file."
- )
- with open(version_path) as f:
- return str(Version.parse(f.read().strip().lstrip("v")))
-
-
-def get_next_tag_info_from_nextchanges(package: Package) -> Optional[TagInfo]:
- """
- nextchanges-mode counterpart of ``get_next_tag_info``: build the release
- TagInfo from ``/`` fragments. Returns ``None`` when there are no
- entries (nothing to release), unless ``allow_empty_changelog`` is set in
- ``.codegen.json`` — matching the ``NEXT_CHANGELOG.md`` skip behavior.
- """
- body = render_nextchanges(package.path)
- if body is None:
- if not _load_codegen_config(package.path).get("allow_empty_changelog", False):
- print(f"No {_nextchanges_dir()}/ entries. No changes will be made to the changelog.")
- return None
- if not _source_changed_since_last_release(package):
- print(f"No {_nextchanges_dir()}/ entries and no source changes since the last release; skipping.")
- return None
-
- version = read_nextchanges_version(package)
- # write_changelog() keys off the "## Release v…" header, so include it.
- content = f"## Release v{version}\n" + (f"\n{body}\n" if body else "")
- return TagInfo(package=package, version=version, content=content)
-
-
-def clean_nextchanges(package_path: str) -> None:
- """
- nextchanges-mode counterpart of ``clean_next_changelog``: stage deletion of
- the ``/`` fragments consumed by this release and bump ``/version``
- to the next minor (its post-release default; teams can still override it in
- a PR). Deletes every ``.md`` under each section directory — the same set
- ``render_nextchanges`` consumed, so ``README.md`` is preserved — leaving the
- section directories in place.
- """
- base = os.path.join(os.getcwd(), package_path, _nextchanges_dir())
- for slug, _ in _nextchanges_sections(package_path):
- section_dir = os.path.join(base, slug)
- if not os.path.isdir(section_dir):
- continue
- # Deletion order is irrelevant, so listdir as-is (no sort needed).
- for name in os.listdir(section_dir):
- if name.endswith(".md") and name != NEXTCHANGES_README_FILE:
- gh.delete_file(os.path.join(section_dir, name))
-
- version_path = _nextchanges_version_path(package_path)
- with open(version_path) as f:
- released = Version.parse(f.read().strip().lstrip("v"))
- gh.add_file(version_path, f"{released.next_release_version()}\n")
-
-
-def get_next_tag_info(package: Package) -> Optional[TagInfo]:
- """
- Extracts the changes for the next release. In nextchanges mode (see
- ``_nextchanges_dir``) it reads ``/`` fragments; otherwise it reads the
- package's ``NEXT_CHANGELOG.md``. The result is already processed.
- """
- if _nextchanges_dir() is not None:
- return get_next_tag_info_from_nextchanges(package)
-
- next_changelog_path = os.path.join(os.getcwd(), package.path, NEXT_CHANGELOG_FILE_NAME)
- # Read NEXT_CHANGELOG.md
- with open(next_changelog_path, "r") as f:
- next_changelog = f.read()
-
- # Remove "# NEXT CHANGELOG" line
- next_changelog = re.sub(r"^# NEXT CHANGELOG(\n+)", "", next_changelog, flags=re.MULTILINE)
-
- # Remove empty sections
- next_changelog = re.sub(r"###[^\n]+\n+(?=##|\Z)", "", next_changelog)
- # Ensure there is exactly one empty line before each section
- next_changelog = re.sub(r"(\n*)(###[^\n]+)", r"\n\n\2", next_changelog)
-
- # By default, packages whose NEXT_CHANGELOG.md has no populated
- # sections are skipped — there's nothing meaningful to release.
- # Repos like sdk-js which are still in development can opt in
- # by setting ``allow_empty_changelog: true`` in .codegen.json — but
- # even then, only when the package's source actually changed.
- if not re.search(r"###", next_changelog):
- if not _load_codegen_config(package.path).get("allow_empty_changelog", False):
- print("All sections are empty. No changes will be made to the changelog.")
- return None
- if not _source_changed_since_last_release(package):
- print("All sections are empty and no source changes since the last release; skipping.")
- return None
-
- version_match = re.search(rf"## Release v({Version.PATTERN})", next_changelog)
-
- if not version_match:
- raise Exception("Version not found in the changelog")
-
- # Validate the extracted string is spec-compliant; fail loudly otherwise.
- version = str(Version.parse(version_match.group(1)))
- return TagInfo(package=package, version=version, content=next_changelog)
-
-
-def write_changelog(tag_info: TagInfo) -> None:
- """
- Updates the changelog with a new tag info.
- """
- changelog_path = os.path.join(os.getcwd(), tag_info.package.path, CHANGELOG_FILE_NAME)
- with open(changelog_path, "r") as f:
- changelog = f.read()
-
- # Add current date to the release header.
- current_date = datetime.now(tz=timezone.utc).strftime("%Y-%m-%d")
- content_with_date = re.sub(
- rf"## Release v({Version.PATTERN})",
- rf"## Release v\1 ({current_date})",
- tag_info.content.strip(),
- )
-
- updated_changelog = re.sub(r"(# Version changelog\n\n)", f"\\1{content_with_date}\n\n\n", changelog)
- gh.add_file(changelog_path, updated_changelog)
-
-
-def process_package(package: Package) -> TagInfo:
- """
- Processes a package's changelog scaffolding for the release.
- """
- print(f"Processing package {package.name}")
- tag_info = get_next_tag_info(package)
-
- # If there are no updates, skip.
- if tag_info is None:
- return
-
- write_changelog(tag_info)
- if _nextchanges_dir() is not None:
- clean_nextchanges(package.path)
- else:
- clean_next_changelog(package.path)
- return tag_info
-
-
-def find_packages() -> List[Package]:
- """
- Returns all directories which contains a ".package.json" file.
- """
- paths = _find_directories_with_file(PACKAGE_FILE_NAME)
- return [Package(name=get_package_name(path), path=path) for path in paths]
-
-
-def _find_directories_with_file(target_file: str) -> List[str]:
- root_path = os.getcwd()
- matching_directories = []
-
- for dirpath, _, filenames in os.walk(root_path):
- if target_file in filenames:
- path = os.path.relpath(dirpath, root_path)
- # If the path is the root directory (e.g., SDK V0), set it to an empty string.
- if path == ".":
- path = ""
- matching_directories.append(path)
-
- return matching_directories
-
-
-def is_tag_applied(tag: TagInfo) -> bool:
- """
- Returns whether a tag is already applied in the repository.
-
- :param tag: The tag to check.
- :return: True if the tag is applied, False otherwise.
- :raises Exception: If the git command fails.
- """
- try:
- # Check if the specific tag exists
- result = subprocess.check_output(["git", "tag", "--list", tag.tag_name()], stderr=subprocess.PIPE, text=True)
- return result.strip() == tag.tag_name()
- except subprocess.CalledProcessError as e:
- # Raise a exception for git command errors
- raise Exception(f"Git command failed: {e.stderr.strip() or e}") from e
-
-
-def find_last_release_tag(package: Package) -> Optional[str]:
- """
- Returns the most recent ``/v*`` tag in the repository, or
- ``None`` if no such tag exists. Tags are sorted by semver ordering
- (``--sort=-v:refname``) so pre-releases sort below their stable
- counterparts.
-
- :raises Exception: If the git command fails.
- """
- pattern = f"{package.name}/v*" if package.name else "v*"
- try:
- output = subprocess.check_output(
- ["git", "tag", "--list", pattern, "--sort=-v:refname"],
- stderr=subprocess.PIPE,
- text=True,
- ).strip()
- except subprocess.CalledProcessError as e:
- raise Exception(f"Git command failed: {e.stderr.strip() or e}") from e
- if not output:
- return None
- return output.split("\n")[0].strip()
-
-
-def has_commits_since_tag(tag: str, path: str) -> bool:
- """
- Returns True iff at least one commit reachable from HEAD but not from
- ``tag`` touches ``path``. Detects both that a sibling dependency has
- unreleased changes that would ship stale (freshness) and, via
- ``_source_changed_since_last_release``, whether a package has anything to
- release under allow_empty_changelog.
-
- :raises Exception: If the git command fails.
- """
- args = ["git", "log", "--oneline", f"{tag}..HEAD", "--", path or "."]
- try:
- output = subprocess.check_output(args, stderr=subprocess.PIPE, text=True).strip()
- except subprocess.CalledProcessError as e:
- raise Exception(f"Git command failed: {e.stderr.strip() or e}") from e
- return bool(output)
-
-
-def _source_changed_since_last_release(package: Package) -> bool:
- """
- True when the package has any commits since its last release tag. A
- never-released package (no tag) counts as changed. Gates the
- ``allow_empty_changelog`` path so a package with no changelog entries
- releases only when something actually changed since it was last released.
-
- Uses the same commit-based check as ``check_dependency_freshness`` — a
- package's release bookkeeping is committed *at* its release tag, not after
- it, so it never falls in the ``tag..HEAD`` window. Sharing the check keeps
- the two consistent: a package this skips is exactly one freshness will not
- flag as stale.
- """
- tag = find_last_release_tag(package)
- if tag is None:
- return True
- return has_commits_since_tag(tag, package.path)
-
-
-def check_dependency_freshness(tag_infos: List[TagInfo], all_packages: List[Package]) -> None:
- """
- Hard-fails when a package being released depends on a sibling package
- that has unreleased commits since its last tag.
-
- Why: dependency rewrites (``stage_version_updates``) only fire for
- siblings that are *also* being released. Without this check, releasing
- package_a alone — when package_b has commits since its last tag —
- publishes ``package_a@new`` pinning the *old* package_b artifact, which
- won't have the changes package_a's source depends on. The check is
- commit-based (not changelog-based) so a missing ``NEXT_CHANGELOG.md``
- entry on package_b is still caught.
-
- No-op when ``.codegen.json`` declares no dependency pattern (legacy
- SDKs without per-package wiring).
- """
- if not tag_infos:
- return
-
- package_file_path = os.path.join(os.getcwd(), CODEGEN_FILE_NAME)
- with open(package_file_path, "r") as file:
- codegen = json.load(file)
-
- name_template = codegen.get("dependency_name_template", "")
- dep_patterns = codegen.get("dependency_pattern", {})
- if not name_template or not dep_patterns:
- return
-
- releasing_paths = {info.package.path for info in tag_infos}
- by_dep_name: Dict[str, Package] = {}
- for pkg in all_packages:
- if not pkg.name:
- continue
- by_dep_name[name_template.replace("$PACKAGE", pkg.name)] = pkg
-
- issues: List[str] = []
- for info in tag_infos:
- for filename, pattern in dep_patterns.items():
- loc = os.path.join(os.getcwd(), info.package.path, filename)
- if not os.path.exists(loc):
- continue
- with open(loc, "r") as f:
- content = f.read()
-
- for dep_name, dep_pkg in by_dep_name.items():
- if dep_pkg.path == info.package.path:
- continue
- if dep_pkg.path in releasing_paths:
- continue
-
- # Same regex construction used by ``rewrite_dependencies``,
- # so "is this dep referenced?" matches "would the rewrite
- # touch it?". Keeps the two in lockstep.
- regex = (
- re.escape(pattern)
- .replace(re.escape("$DEPENDENCY"), re.escape(dep_name))
- .replace(re.escape("$VERSION"), Version.PATTERN)
- )
- if not re.search(regex, content):
- continue
-
- last_tag = find_last_release_tag(dep_pkg)
- if last_tag is None:
- # No prior tag means the dep was never released; we
- # can't reason about staleness. Surface it anyway so
- # the human resolves it explicitly.
- issues.append(
- f"{info.package.name} depends on {dep_pkg.name}, "
- f"which has never been released. Release "
- f"{dep_pkg.name} first or include it in this run."
- )
- continue
- if has_commits_since_tag(last_tag, dep_pkg.path):
- issues.append(
- f"{info.package.name} depends on {dep_pkg.name}, "
- f"which has commits since {last_tag} but is not "
- f"being released. Either release {dep_pkg.name} "
- f"as well, or hold this release until its changes "
- f"are reverted."
- )
-
- if issues:
- raise Exception("Dependency freshness check failed:\n - " + "\n - ".join(issues))
-
-
-def find_last_tags() -> List[TagInfo]:
- """
- Finds the last tags for each package.
-
- Returns a list of TagInfo objects for each package with a non-None changelog.
- """
- packages = find_packages()
-
- return [info for info in (get_previous_tag_info(package) for package in packages) if info is not None]
-
-
-def find_pending_tags() -> List[TagInfo]:
- """
- Finds all tags that are pending to be applied.
- """
- tag_infos = find_last_tags()
- return [tag for tag in tag_infos if not is_tag_applied(tag)]
-
-
-def generate_commit_message(tag_infos: List[TagInfo]) -> str:
- """
- Generates a commit message for the release.
- """
- if not tag_infos:
- raise Exception("No tag infos provided to generate commit message")
-
- info = tag_infos[0]
- # Legacy mode for SDKs without per service packaging
- if not info.package.name:
- if len(tag_infos) > 1:
- raise Exception("Multiple packages found in legacy mode")
- return f"[Release] Release v{info.version}\n\n{info.content}"
-
- # Sort tag_infos by package name for consistency.
- tag_infos.sort(key=lambda info: info.package.name)
- titles = ", ".join(f"{info.package.name}/v{info.version}" for info in tag_infos)
- body = "\n\n".join(f"## {info.package.name}/v{info.version}\n\n{info.content}" for info in tag_infos)
- return f"[Release] {titles}\n\n{body}"
-
-
-def push_changes(tag_infos: List[TagInfo]) -> None:
- """Pushes changes to the remote repository after handling possible merge conflicts."""
-
- commit_message = generate_commit_message(tag_infos)
-
- # Create the release metadata file
- file_name = os.path.join(os.getcwd(), ".release_metadata.json")
- metadata = {"timestamp": datetime.now(tz=timezone.utc).strftime("%Y-%m-%d %H:%M:%S%z")}
- content = json.dumps(metadata, indent=4)
- gh.add_file(file_name, content)
-
- gh.commit_and_push(commit_message)
-
-
-def reset_repository(hash: Optional[str] = None) -> None:
- """
- Reset git to the specified commit. Defaults to HEAD.
-
- :param hash: The commit hash to reset to. If None, it resets to HEAD.
- """
- # Fetch the latest changes from the remote repository.
- subprocess.run(["git", "fetch"])
-
- # Determine the commit hash (default to the release branch's remote
- # head if none is provided). ``_release_branch`` is ``main`` unless
- # ``DECO_TAGGING_REF`` selects a branch release.
- commit_hash = hash or f"origin/{_release_branch()}"
-
- # ``git reset --hard`` must land before ``gh.reset(None)``, since
- # ``gh.reset(None)`` reads ``git rev-parse HEAD`` to anchor
- # ``self.sha`` to the local working tree.
- subprocess.run(["git", "reset", "--hard", commit_hash], check=True)
- gh.reset(hash)
-
-
-def retry_function(
- func: Callable[[], List[TagInfo]], cleanup: Callable[[], None], max_attempts: int = 5, delay: int = 5
-) -> List[TagInfo]:
- """
- Calls a function call up to `max_attempts` times if an exception occurs.
-
- :param func: The function to call.
- :param cleanup: Cleanup function in between retries
- :param max_attempts: The maximum number of retries.
- :param delay: The delay between retries in seconds.
- :return: The return value of the function, or None if all retries fail.
- """
- attempts = 0
- while attempts <= max_attempts:
- try:
- return func() # Call the function
- except MainAdvancedError:
- # Permanent failure: another commit landed on main during
- # this run, so the local tree is stale. Retrying with the
- # same stale tree would just hit the same mismatch — only
- # a fresh workflow run against the new main can recover.
- raise
- except Exception as e:
- attempts += 1
- print(f"Attempt {attempts} failed: {e}")
- if attempts < max_attempts:
- time.sleep(delay) # Wait before retrying
- cleanup()
- else:
- print("All retry attempts failed.")
- raise e # Re-raise the exception after max retries
-
-
-def update_changelogs(selected_packages: List[Package], all_packages: List[Package]) -> List[TagInfo]:
- """
- Updates changelogs and pushes the commits.
-
- ``selected_packages`` are the packages whose ``NEXT_CHANGELOG.md`` is
- consulted to decide what gets released this run. ``all_packages`` is
- the full repo inventory used for cross-package dep rewrites.
-
- The freshness check is deliberately *not* called here. ``process``
- runs it before entering the retry loop so a freshness violation
- fails fast — the check is deterministic against the same git state,
- so wrapping it in retry would just delay the same failure five
- times.
- """
- tag_infos = [info for info in (process_package(package) for package in selected_packages) if info is not None]
- # If any package was changed, stage version updates and push.
- if tag_infos:
- stage_version_updates(tag_infos, all_packages)
- push_changes(tag_infos)
- return tag_infos
-
-
-def preview_tag_infos(packages: List[Package]) -> List[TagInfo]:
- """
- Read-only sibling of ``process_package``: returns the TagInfos that
- would be released for ``packages`` without writing any changelog
- edits. ``process`` calls this before the retry loop so the freshness
- check has a snapshot to validate against. ``process_package`` will
- re-derive the same TagInfos when ``update_changelogs`` runs; the
- duplication is just a couple of NEXT_CHANGELOG.md reads.
- """
- return [info for info in (get_next_tag_info(package) for package in packages) if info is not None]
-
-
-def order_tag_infos_by_dependency(tag_infos: List[TagInfo]) -> List[TagInfo]:
- """
- Returns ``tag_infos`` in topological order: every package appears
- after every sibling it depends on.
- """
- if not tag_infos:
- return list(tag_infos)
-
- if any(not info.package.name for info in tag_infos) and len(tag_infos) > 1:
- raise Exception("Multiple packages found in legacy mode")
-
- package_file_path = os.path.join(os.getcwd(), CODEGEN_FILE_NAME)
- with open(package_file_path, "r") as file:
- codegen = json.load(file)
-
- name_template = codegen.get("dependency_name_template", "")
- dep_patterns = codegen.get("dependency_pattern", {})
- if not name_template or not dep_patterns:
- return list(tag_infos)
-
- by_dep_name: Dict[str, TagInfo] = {
- name_template.replace("$PACKAGE", info.package.name): info for info in tag_infos if info.package.name
- }
-
- # Adjacency: path -> set of paths it depends on (within tag_infos).
- deps: Dict[str, set] = {info.package.path: set() for info in tag_infos}
- for info in tag_infos:
- for filename, pattern in dep_patterns.items():
- loc = os.path.join(os.getcwd(), info.package.path, filename)
- if not os.path.exists(loc):
- continue
- with open(loc, "r") as f:
- content = f.read()
- for dep_name, dep_info in by_dep_name.items():
- if dep_info.package.path == info.package.path:
- continue
- regex = (
- re.escape(pattern)
- .replace(re.escape("$DEPENDENCY"), re.escape(dep_name))
- .replace(re.escape("$VERSION"), Version.PATTERN)
- )
- if re.search(regex, content):
- deps[info.package.path].add(dep_info.package.path)
-
- # Stable topological sort: at each step, emit every node whose deps
- # are already emitted, alphabetically by package name. Ties broken
- # alphabetically so the manifest is reproducible across runs.
- emitted: set = set()
- ordered: List[TagInfo] = []
- while len(ordered) < len(tag_infos):
- ready = sorted(
- (
- info
- for info in tag_infos
- if info.package.path not in emitted and deps[info.package.path].issubset(emitted)
- ),
- key=lambda info: info.package.name,
- )
- if not ready:
- remaining = [info.package.name for info in tag_infos if info.package.path not in emitted]
- raise Exception(f"Cyclic dependency detected among packages: {remaining}")
- for info in ready:
- ordered.append(info)
- emitted.add(info.package.path)
- return ordered
-
-
-def push_tags(tag_infos: List[TagInfo]) -> None:
- """
- Creates and pushes tags to the repository.
-
- Tags are emitted in topological order — dependencies before
- dependents — so downstream publishing pipelines reading
- ``created_tags.json`` can walk it sequentially without re-deriving
- the dependency graph. See ``order_tag_infos_by_dependency``.
-
- As a side effect, writes the names of successfully created tags to
- ``./created_tags.json`` so that workflows triggering this script can
- discover what was produced (the GitHub Actions workflow uploads this
- file as the ``created-tags`` artifact).
-
- Schema:
- {"tags": ["service-a/v1.2.3", "service-b/v0.4.0"]}
-
- The manifest is written even if tag creation fails partway through:
- tags that succeeded before the failure are flushed before the
- exception is re-raised, so recovery-mode runs still surface their
- output.
- """
- tag_infos = order_tag_infos_by_dependency(tag_infos)
- created: List[str] = []
- try:
- for tag_info in tag_infos:
- gh.tag(tag_info.tag_name(), tag_info.content)
- created.append(tag_info.tag_name())
- finally:
- manifest_path = os.path.join(os.getcwd(), CREATED_TAGS_FILE_NAME)
- with open(manifest_path, "w") as f:
- json.dump({"tags": created}, f)
-
-
-def run_command(command: List[str]) -> str:
- """
- Runs a command and returns the output
- """
- output = subprocess.check_output(command)
- print(f'Running command: {" ".join(command)}')
- return output.decode()
-
-
-def pull_last_release_commit() -> None:
- """
- Reset the repository to the last release.
- Uses commit for last change to .release_metadata.json, since it's only updated on releases.
- """
- commit_hash = subprocess.check_output(
- ["git", "log", "-n", "1", "--format=%H", "--", ".release_metadata.json"], text=True
- ).strip()
-
- # If no commit is found, raise an exception
- if not commit_hash:
- raise ValueError("No commit found for .release_metadata.json")
-
- # Reset the repository to the commit
- reset_repository(commit_hash)
-
-
-def _build_arg_parser() -> argparse.ArgumentParser:
- """
- Builds the CLI parser. Shared by ``get_packages_from_args`` and
- ``args_request_preview`` so both accept the same flags — parsing either one
- with an unknown flag present would otherwise error.
- """
- parser = argparse.ArgumentParser(description="Update changelogs and tag the release.")
- parser.add_argument(
- "--package",
- "-p",
- type=str,
- default="",
- help="Comma-separated list of packages to tag. Leave empty to tag all packages with pending releases.",
- )
- parser.add_argument(
- "--preview",
- action="store_true",
- help=(
- "Print the changelog section the next release would add, then exit "
- "(no writes, no network). Only supported in nextchanges mode."
- ),
- )
- return parser
-
-
-def get_packages_from_args() -> List[str]:
- """
- Retrieves the list of packages to tag.
-
- python3 ./tagging.py --package # single package
- python3 ./tagging.py --package , # multiple packages
-
- Returns an empty list when --package is omitted, which means all packages
- with pending releases will be tagged.
- """
- args = _build_arg_parser().parse_args()
- return [name.strip() for name in args.package.split(",") if name.strip()]
-
-
-def _select_packages(all_packages: List[Package]) -> List[Package]:
- """
- Narrow ``all_packages`` to the ``--package`` selection, or return all of
- them when ``--package`` is omitted. Shared by ``process`` and ``preview`` so
- the read-only preview covers exactly the release scope the same CLI
- arguments would execute — ``tagging.py --package foo --preview`` previews
- only ``foo``, not every package in the repo.
- """
- package_names = get_packages_from_args()
- if not package_names:
- return all_packages
- return [package for package in all_packages if package.name in package_names]
-
-
-def args_request_preview() -> bool:
- """Returns whether ``--preview`` was passed."""
- return _build_arg_parser().parse_args().preview
-
-
-def preview() -> None:
- """
- Print the ``## Release vX.Y.Z`` section(s) the next release would prepend to
- CHANGELOG.md, rendered from the current ``/`` fragments — without
- touching git, GitHub, or any file. Mirrors ``write_changelog``'s date stamp
- so the output matches what would land. Read-only: safe to run anytime, no
- credentials. Only meaningful in nextchanges mode.
- """
- if _nextchanges_dir() is None:
- raise Exception(f"--preview requires nextchanges mode ({NEXTCHANGES_DIR_ENV} must be set).")
-
- current_date = datetime.now(tz=timezone.utc).strftime("%Y-%m-%d")
- printed = False
- for package in _select_packages(find_packages()):
- tag_info = get_next_tag_info(package)
- if tag_info is None:
- continue
- dated = re.sub(
- rf"## Release v({Version.PATTERN})",
- rf"## Release v\1 ({current_date})",
- tag_info.content.strip(),
- )
- print(dated)
- printed = True
- if not printed:
- print(f"No {_nextchanges_dir()}/ entries — the next release would add no changelog section.")
-
-
-def init_github():
- token = os.environ["GITHUB_TOKEN"]
- repo_name = os.environ["GITHUB_REPOSITORY"]
- g = Github(auth=Auth.Token(token))
- repo = g.get_repo(repo_name)
- global gh
- gh = GitHubRepo(repo)
-
-
-def process():
- """
- Main entry point for tagging process.
-
- Tagging process consist of multiple steps:
- * For each package, update the corresponding CHANGELOG.md file based on the contents of NEXT_CHANGELOG.md file
- * If any package has been updated, commit and push the changes.
- * Apply and push the new tags matching the version.
-
- If a specific pagkage is provided as a parameter, only that package will be tagged.
-
- If any tag are pending from an early process, it will skip updating the CHANGELOG.md files and only apply the tags.
- """
-
- package_names = get_packages_from_args()
- pending_tags = find_pending_tags()
-
- # pending_tags is non-empty only when the tagging process previously failed or interrupted.
- # We must complete the interrupted tagging process before starting a new one to avoid inconsistent states and missing changelog entries.
- # Therefore, we don't support specifying packages until the previously started process has been successfully completed.
- if pending_tags and package_names:
- pending_packages = [tag.package.name for tag in pending_tags]
- raise Exception(f"Cannot release packages {package_names}. Pending release for {pending_packages}")
-
- if pending_tags:
- print("Found pending tags from previous executions, entering recovery mode.")
- pull_last_release_commit()
- push_tags(pending_tags)
- return
-
- all_packages = find_packages()
- # If packages are specified as an argument, only release those — but
- # dep rewrites and the freshness check still operate over the full
- # set. Shared with preview() so both scope identically.
- selected_packages = _select_packages(all_packages)
-
- # Run the freshness check against a read-only preview before the
- # retry loop, since the check is deterministic. A freshness
- # violation fails the run immediately, with no commits, no tags, no
- # retry storm.
- check_dependency_freshness(preview_tag_infos(selected_packages), all_packages)
-
- pending_tags = retry_function(
- func=lambda: update_changelogs(selected_packages, all_packages),
- cleanup=reset_repository,
- )
- push_tags(pending_tags)
-
-
-def validate_git_root():
- """
- Validate that the script is run from the root of the repository.
- """
- repo_root = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).strip().decode("utf-8")
- current_dir = subprocess.check_output(["pwd"]).strip().decode("utf-8")
- if repo_root != current_dir:
- raise Exception("Please run this script from the root of the repository.")
-
-
-def main():
- validate_git_root()
- # Preview is read-only: no GitHub credentials, no network, no commits.
- if args_request_preview():
- preview()
- return
- init_github()
- process()
-
-
-if __name__ == "__main__":
- main()
diff --git a/tagging.py.lock b/tagging.py.lock
deleted file mode 100755
index 2bd746a66..000000000
--- a/tagging.py.lock
+++ /dev/null
@@ -1,302 +0,0 @@
-version = 1
-revision = 3
-requires-python = ">=3.12"
-
-[manifest]
-requirements = [
- { name = "charset-normalizer", specifier = "<3.4.6" },
- { name = "pygithub", specifier = ">=2,<3" },
- { name = "pyjwt", specifier = "<2.12.0" },
-]
-
-[[package]]
-name = "certifi"
-version = "2026.2.25"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" },
-]
-
-[[package]]
-name = "cffi"
-version = "2.0.0"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-dependencies = [
- { name = "pycparser", marker = "implementation_name != 'PyPy'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" },
- { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" },
- { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" },
- { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" },
- { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" },
- { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" },
- { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" },
- { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" },
- { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" },
- { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" },
- { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" },
- { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" },
- { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" },
- { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" },
- { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" },
- { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" },
- { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" },
- { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" },
- { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" },
- { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" },
- { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" },
- { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" },
- { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" },
- { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" },
- { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" },
- { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" },
- { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" },
- { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" },
- { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" },
- { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" },
- { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" },
- { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" },
- { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" },
- { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" },
- { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" },
- { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" },
- { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" },
- { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" },
- { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" },
- { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" },
- { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" },
- { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" },
- { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" },
- { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" },
- { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" },
- { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
-]
-
-[[package]]
-name = "charset-normalizer"
-version = "3.4.5"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/9c/b6/9ee9c1a608916ca5feae81a344dffbaa53b26b90be58cc2159e3332d44ec/charset_normalizer-3.4.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed97c282ee4f994ef814042423a529df9497e3c666dca19be1d4cd1129dc7ade", size = 280976, upload-time = "2026-03-06T06:01:15.276Z" },
- { url = "https://files.pythonhosted.org/packages/f8/d8/a54f7c0b96f1df3563e9190f04daf981e365a9b397eedfdfb5dbef7e5c6c/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0294916d6ccf2d069727d65973c3a1ca477d68708db25fd758dd28b0827cff54", size = 189356, upload-time = "2026-03-06T06:01:16.511Z" },
- { url = "https://files.pythonhosted.org/packages/42/69/2bf7f76ce1446759a5787cb87d38f6a61eb47dbbdf035cfebf6347292a65/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dc57a0baa3eeedd99fafaef7511b5a6ef4581494e8168ee086031744e2679467", size = 206369, upload-time = "2026-03-06T06:01:17.853Z" },
- { url = "https://files.pythonhosted.org/packages/10/9c/949d1a46dab56b959d9a87272482195f1840b515a3380e39986989a893ae/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ed1a9a204f317ef879b32f9af507d47e49cd5e7f8e8d5d96358c98373314fc60", size = 203285, upload-time = "2026-03-06T06:01:19.473Z" },
- { url = "https://files.pythonhosted.org/packages/67/5c/ae30362a88b4da237d71ea214a8c7eb915db3eec941adda511729ac25fa2/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad83b8f9379176c841f8865884f3514d905bcd2a9a3b210eaa446e7d2223e4d", size = 196274, upload-time = "2026-03-06T06:01:20.728Z" },
- { url = "https://files.pythonhosted.org/packages/b2/07/c9f2cb0e46cb6d64fdcc4f95953747b843bb2181bda678dc4e699b8f0f9a/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:a118e2e0b5ae6b0120d5efa5f866e58f2bb826067a646431da4d6a2bdae7950e", size = 184715, upload-time = "2026-03-06T06:01:22.194Z" },
- { url = "https://files.pythonhosted.org/packages/36/64/6b0ca95c44fddf692cd06d642b28f63009d0ce325fad6e9b2b4d0ef86a52/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:754f96058e61a5e22e91483f823e07df16416ce76afa4ebf306f8e1d1296d43f", size = 193426, upload-time = "2026-03-06T06:01:23.795Z" },
- { url = "https://files.pythonhosted.org/packages/50/bc/a730690d726403743795ca3f5bb2baf67838c5fea78236098f324b965e40/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0c300cefd9b0970381a46394902cd18eaf2aa00163f999590ace991989dcd0fc", size = 191780, upload-time = "2026-03-06T06:01:25.053Z" },
- { url = "https://files.pythonhosted.org/packages/97/4f/6c0bc9af68222b22951552d73df4532b5be6447cee32d58e7e8c74ecbb7b/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c108f8619e504140569ee7de3f97d234f0fbae338a7f9f360455071ef9855a95", size = 185805, upload-time = "2026-03-06T06:01:26.294Z" },
- { url = "https://files.pythonhosted.org/packages/dd/b9/a523fb9b0ee90814b503452b2600e4cbc118cd68714d57041564886e7325/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d1028de43596a315e2720a9849ee79007ab742c06ad8b45a50db8cdb7ed4a82a", size = 208342, upload-time = "2026-03-06T06:01:27.55Z" },
- { url = "https://files.pythonhosted.org/packages/4d/61/c59e761dee4464050713e50e27b58266cc8e209e518c0b378c1580c959ba/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:19092dde50335accf365cce21998a1c6dd8eafd42c7b226eb54b2747cdce2fac", size = 193661, upload-time = "2026-03-06T06:01:29.051Z" },
- { url = "https://files.pythonhosted.org/packages/1c/43/729fa30aad69783f755c5ad8649da17ee095311ca42024742701e202dc59/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4354e401eb6dab9aed3c7b4030514328a6c748d05e1c3e19175008ca7de84fb1", size = 204819, upload-time = "2026-03-06T06:01:30.298Z" },
- { url = "https://files.pythonhosted.org/packages/87/33/d9b442ce5a91b96fc0840455a9e49a611bbadae6122778d0a6a79683dd31/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a68766a3c58fde7f9aaa22b3786276f62ab2f594efb02d0a1421b6282e852e98", size = 198080, upload-time = "2026-03-06T06:01:31.478Z" },
- { url = "https://files.pythonhosted.org/packages/56/5a/b8b5a23134978ee9885cee2d6995f4c27cc41f9baded0a9685eabc5338f0/charset_normalizer-3.4.5-cp312-cp312-win32.whl", hash = "sha256:1827734a5b308b65ac54e86a618de66f935a4f63a8a462ff1e19a6788d6c2262", size = 132630, upload-time = "2026-03-06T06:01:33.056Z" },
- { url = "https://files.pythonhosted.org/packages/70/53/e44a4c07e8904500aec95865dc3f6464dc3586a039ef0df606eb3ac38e35/charset_normalizer-3.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:728c6a963dfab66ef865f49286e45239384249672cd598576765acc2a640a636", size = 142856, upload-time = "2026-03-06T06:01:34.489Z" },
- { url = "https://files.pythonhosted.org/packages/ea/aa/c5628f7cad591b1cf45790b7a61483c3e36cf41349c98af7813c483fd6e8/charset_normalizer-3.4.5-cp312-cp312-win_arm64.whl", hash = "sha256:75dfd1afe0b1647449e852f4fb428195a7ed0588947218f7ba929f6538487f02", size = 132982, upload-time = "2026-03-06T06:01:35.641Z" },
- { url = "https://files.pythonhosted.org/packages/f5/48/9f34ec4bb24aa3fdba1890c1bddb97c8a4be1bd84ef5c42ac2352563ad05/charset_normalizer-3.4.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ac59c15e3f1465f722607800c68713f9fbc2f672b9eb649fe831da4019ae9b23", size = 280788, upload-time = "2026-03-06T06:01:37.126Z" },
- { url = "https://files.pythonhosted.org/packages/0e/09/6003e7ffeb90cc0560da893e3208396a44c210c5ee42efff539639def59b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:165c7b21d19365464e8f70e5ce5e12524c58b48c78c1f5a57524603c1ab003f8", size = 188890, upload-time = "2026-03-06T06:01:38.73Z" },
- { url = "https://files.pythonhosted.org/packages/42/1e/02706edf19e390680daa694d17e2b8eab4b5f7ac285e2a51168b4b22ee6b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:28269983f25a4da0425743d0d257a2d6921ea7d9b83599d4039486ec5b9f911d", size = 206136, upload-time = "2026-03-06T06:01:40.016Z" },
- { url = "https://files.pythonhosted.org/packages/c7/87/942c3def1b37baf3cf786bad01249190f3ca3d5e63a84f831e704977de1f/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d27ce22ec453564770d29d03a9506d449efbb9fa13c00842262b2f6801c48cce", size = 202551, upload-time = "2026-03-06T06:01:41.522Z" },
- { url = "https://files.pythonhosted.org/packages/94/0a/af49691938dfe175d71b8a929bd7e4ace2809c0c5134e28bc535660d5262/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0625665e4ebdddb553ab185de5db7054393af8879fb0c87bd5690d14379d6819", size = 195572, upload-time = "2026-03-06T06:01:43.208Z" },
- { url = "https://files.pythonhosted.org/packages/20/ea/dfb1792a8050a8e694cfbde1570ff97ff74e48afd874152d38163d1df9ae/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:c23eb3263356d94858655b3e63f85ac5d50970c6e8febcdde7830209139cc37d", size = 184438, upload-time = "2026-03-06T06:01:44.755Z" },
- { url = "https://files.pythonhosted.org/packages/72/12/c281e2067466e3ddd0595bfaea58a6946765ace5c72dfa3edc2f5f118026/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e6302ca4ae283deb0af68d2fbf467474b8b6aedcd3dab4db187e07f94c109763", size = 193035, upload-time = "2026-03-06T06:01:46.051Z" },
- { url = "https://files.pythonhosted.org/packages/ba/4f/3792c056e7708e10464bad0438a44708886fb8f92e3c3d29ec5e2d964d42/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e51ae7d81c825761d941962450f50d041db028b7278e7b08930b4541b3e45cb9", size = 191340, upload-time = "2026-03-06T06:01:47.547Z" },
- { url = "https://files.pythonhosted.org/packages/e7/86/80ddba897127b5c7a9bccc481b0cd36c8fefa485d113262f0fe4332f0bf4/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:597d10dec876923e5c59e48dbd366e852eacb2b806029491d307daea6b917d7c", size = 185464, upload-time = "2026-03-06T06:01:48.764Z" },
- { url = "https://files.pythonhosted.org/packages/4d/00/b5eff85ba198faacab83e0e4b6f0648155f072278e3b392a82478f8b988b/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5cffde4032a197bd3b42fd0b9509ec60fb70918d6970e4cc773f20fc9180ca67", size = 208014, upload-time = "2026-03-06T06:01:50.371Z" },
- { url = "https://files.pythonhosted.org/packages/c8/11/d36f70be01597fd30850dde8a1269ebc8efadd23ba5785808454f2389bde/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2da4eedcb6338e2321e831a0165759c0c620e37f8cd044a263ff67493be8ffb3", size = 193297, upload-time = "2026-03-06T06:01:51.933Z" },
- { url = "https://files.pythonhosted.org/packages/1a/1d/259eb0a53d4910536c7c2abb9cb25f4153548efb42800c6a9456764649c0/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:65a126fb4b070d05340a84fc709dd9e7c75d9b063b610ece8a60197a291d0adf", size = 204321, upload-time = "2026-03-06T06:01:53.887Z" },
- { url = "https://files.pythonhosted.org/packages/84/31/faa6c5b9d3688715e1ed1bb9d124c384fe2fc1633a409e503ffe1c6398c1/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7a80a9242963416bd81f99349d5f3fce1843c303bd404f204918b6d75a75fd6", size = 197509, upload-time = "2026-03-06T06:01:56.439Z" },
- { url = "https://files.pythonhosted.org/packages/fd/a5/c7d9dd1503ffc08950b3260f5d39ec2366dd08254f0900ecbcf3a6197c7c/charset_normalizer-3.4.5-cp313-cp313-win32.whl", hash = "sha256:f1d725b754e967e648046f00c4facc42d414840f5ccc670c5670f59f83693e4f", size = 132284, upload-time = "2026-03-06T06:01:57.812Z" },
- { url = "https://files.pythonhosted.org/packages/b9/0f/57072b253af40c8aa6636e6de7d75985624c1eb392815b2f934199340a89/charset_normalizer-3.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:e37bd100d2c5d3ba35db9c7c5ba5a9228cbcffe5c4778dc824b164e5257813d7", size = 142630, upload-time = "2026-03-06T06:01:59.062Z" },
- { url = "https://files.pythonhosted.org/packages/31/41/1c4b7cc9f13bd9d369ce3bc993e13d374ce25fa38a2663644283ecf422c1/charset_normalizer-3.4.5-cp313-cp313-win_arm64.whl", hash = "sha256:93b3b2cc5cf1b8743660ce77a4f45f3f6d1172068207c1defc779a36eea6bb36", size = 133254, upload-time = "2026-03-06T06:02:00.281Z" },
- { url = "https://files.pythonhosted.org/packages/43/be/0f0fd9bb4a7fa4fb5067fb7d9ac693d4e928d306f80a0d02bde43a7c4aee/charset_normalizer-3.4.5-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8197abe5ca1ffb7d91e78360f915eef5addff270f8a71c1fc5be24a56f3e4873", size = 280232, upload-time = "2026-03-06T06:02:01.508Z" },
- { url = "https://files.pythonhosted.org/packages/28/02/983b5445e4bef49cd8c9da73a8e029f0825f39b74a06d201bfaa2e55142a/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2aecdb364b8a1802afdc7f9327d55dad5366bc97d8502d0f5854e50712dbc5f", size = 189688, upload-time = "2026-03-06T06:02:02.857Z" },
- { url = "https://files.pythonhosted.org/packages/d0/88/152745c5166437687028027dc080e2daed6fe11cfa95a22f4602591c42db/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a66aa5022bf81ab4b1bebfb009db4fd68e0c6d4307a1ce5ef6a26e5878dfc9e4", size = 206833, upload-time = "2026-03-06T06:02:05.127Z" },
- { url = "https://files.pythonhosted.org/packages/cb/0f/ebc15c8b02af2f19be9678d6eed115feeeccc45ce1f4b098d986c13e8769/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d77f97e515688bd615c1d1f795d540f32542d514242067adcb8ef532504cb9ee", size = 202879, upload-time = "2026-03-06T06:02:06.446Z" },
- { url = "https://files.pythonhosted.org/packages/38/9c/71336bff6934418dc8d1e8a1644176ac9088068bc571da612767619c97b3/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01a1ed54b953303ca7e310fafe0fe347aab348bd81834a0bcd602eb538f89d66", size = 195764, upload-time = "2026-03-06T06:02:08.763Z" },
- { url = "https://files.pythonhosted.org/packages/b7/95/ce92fde4f98615661871bc282a856cf9b8a15f686ba0af012984660d480b/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:b2d37d78297b39a9eb9eb92c0f6df98c706467282055419df141389b23f93362", size = 183728, upload-time = "2026-03-06T06:02:10.137Z" },
- { url = "https://files.pythonhosted.org/packages/1c/e7/f5b4588d94e747ce45ae680f0f242bc2d98dbd4eccfab73e6160b6893893/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e71bbb595973622b817c042bd943c3f3667e9c9983ce3d205f973f486fec98a7", size = 192937, upload-time = "2026-03-06T06:02:11.663Z" },
- { url = "https://files.pythonhosted.org/packages/f9/29/9d94ed6b929bf9f48bf6ede6e7474576499f07c4c5e878fb186083622716/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4cd966c2559f501c6fd69294d082c2934c8dd4719deb32c22961a5ac6db0df1d", size = 192040, upload-time = "2026-03-06T06:02:13.489Z" },
- { url = "https://files.pythonhosted.org/packages/15/d2/1a093a1cf827957f9445f2fe7298bcc16f8fc5e05c1ed2ad1af0b239035e/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d5e52d127045d6ae01a1e821acfad2f3a1866c54d0e837828538fabe8d9d1bd6", size = 184107, upload-time = "2026-03-06T06:02:14.83Z" },
- { url = "https://files.pythonhosted.org/packages/0f/7d/82068ce16bd36135df7b97f6333c5d808b94e01d4599a682e2337ed5fd14/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:30a2b1a48478c3428d047ed9690d57c23038dac838a87ad624c85c0a78ebeb39", size = 208310, upload-time = "2026-03-06T06:02:16.165Z" },
- { url = "https://files.pythonhosted.org/packages/84/4e/4dfb52307bb6af4a5c9e73e482d171b81d36f522b21ccd28a49656baa680/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d8ed79b8f6372ca4254955005830fd61c1ccdd8c0fac6603e2c145c61dd95db6", size = 192918, upload-time = "2026-03-06T06:02:18.144Z" },
- { url = "https://files.pythonhosted.org/packages/08/a4/159ff7da662cf7201502ca89980b8f06acf3e887b278956646a8aeb178ab/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:c5af897b45fa606b12464ccbe0014bbf8c09191e0a66aab6aa9d5cf6e77e0c94", size = 204615, upload-time = "2026-03-06T06:02:19.821Z" },
- { url = "https://files.pythonhosted.org/packages/d6/62/0dd6172203cb6b429ffffc9935001fde42e5250d57f07b0c28c6046deb6b/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1088345bcc93c58d8d8f3d783eca4a6e7a7752bbff26c3eee7e73c597c191c2e", size = 197784, upload-time = "2026-03-06T06:02:21.86Z" },
- { url = "https://files.pythonhosted.org/packages/c7/5e/1aab5cb737039b9c59e63627dc8bbc0d02562a14f831cc450e5f91d84ce1/charset_normalizer-3.4.5-cp314-cp314-win32.whl", hash = "sha256:ee57b926940ba00bca7ba7041e665cc956e55ef482f851b9b65acb20d867e7a2", size = 133009, upload-time = "2026-03-06T06:02:23.289Z" },
- { url = "https://files.pythonhosted.org/packages/40/65/e7c6c77d7aaa4c0d7974f2e403e17f0ed2cb0fc135f77d686b916bf1eead/charset_normalizer-3.4.5-cp314-cp314-win_amd64.whl", hash = "sha256:4481e6da1830c8a1cc0b746b47f603b653dadb690bcd851d039ffaefe70533aa", size = 143511, upload-time = "2026-03-06T06:02:26.195Z" },
- { url = "https://files.pythonhosted.org/packages/ba/91/52b0841c71f152f563b8e072896c14e3d83b195c188b338d3cc2e582d1d4/charset_normalizer-3.4.5-cp314-cp314-win_arm64.whl", hash = "sha256:97ab7787092eb9b50fb47fa04f24c75b768a606af1bcba1957f07f128a7219e4", size = 133775, upload-time = "2026-03-06T06:02:27.473Z" },
- { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" },
-]
-
-[[package]]
-name = "cryptography"
-version = "46.0.5"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-dependencies = [
- { name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" },
- { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" },
- { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" },
- { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" },
- { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" },
- { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" },
- { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" },
- { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" },
- { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" },
- { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" },
- { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" },
- { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" },
- { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" },
- { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" },
- { url = "https://files.pythonhosted.org/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2", size = 7119287, upload-time = "2026-02-10T19:17:33.801Z" },
- { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" },
- { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" },
- { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" },
- { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" },
- { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" },
- { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" },
- { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" },
- { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" },
- { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" },
- { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" },
- { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" },
- { url = "https://files.pythonhosted.org/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a", size = 3003637, upload-time = "2026-02-10T19:17:52.997Z" },
- { url = "https://files.pythonhosted.org/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4", size = 3469487, upload-time = "2026-02-10T19:17:54.549Z" },
- { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" },
- { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" },
- { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" },
- { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" },
- { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" },
- { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" },
- { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" },
- { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" },
- { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" },
- { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" },
- { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" },
- { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" },
- { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" },
- { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" },
-]
-
-[[package]]
-name = "idna"
-version = "3.11"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
-]
-
-[[package]]
-name = "pycparser"
-version = "3.0"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" },
-]
-
-[[package]]
-name = "pygithub"
-version = "2.8.1"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-dependencies = [
- { name = "pyjwt", extra = ["crypto"] },
- { name = "pynacl" },
- { name = "requests" },
- { name = "typing-extensions" },
- { name = "urllib3" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/c1/74/e560bdeffea72ecb26cff27f0fad548bbff5ecc51d6a155311ea7f9e4c4c/pygithub-2.8.1.tar.gz", hash = "sha256:341b7c78521cb07324ff670afd1baa2bf5c286f8d9fd302c1798ba594a5400c9", size = 2246994, upload-time = "2025-09-02T17:41:54.674Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/07/ba/7049ce39f653f6140aac4beb53a5aaf08b4407b6a3019aae394c1c5244ff/pygithub-2.8.1-py3-none-any.whl", hash = "sha256:23a0a5bca93baef082e03411bf0ce27204c32be8bfa7abc92fe4a3e132936df0", size = 432709, upload-time = "2025-09-02T17:41:52.947Z" },
-]
-
-[[package]]
-name = "pyjwt"
-version = "2.11.0"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-sdist = { url = "https://files.pythonhosted.org/packages/5c/5a/b46fa56bf322901eee5b0454a34343cdbdae202cd421775a8ee4e42fd519/pyjwt-2.11.0.tar.gz", hash = "sha256:35f95c1f0fbe5d5ba6e43f00271c275f7a1a4db1dab27bf708073b75318ea623", size = 98019, upload-time = "2026-01-30T19:59:55.694Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/6f/01/c26ce75ba460d5cd503da9e13b21a33804d38c2165dec7b716d06b13010c/pyjwt-2.11.0-py3-none-any.whl", hash = "sha256:94a6bde30eb5c8e04fee991062b534071fd1439ef58d2adc9ccb823e7bcd0469", size = 28224, upload-time = "2026-01-30T19:59:54.539Z" },
-]
-
-[package.optional-dependencies]
-crypto = [
- { name = "cryptography" },
-]
-
-[[package]]
-name = "pynacl"
-version = "1.6.2"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-dependencies = [
- { name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/d9/9a/4019b524b03a13438637b11538c82781a5eda427394380381af8f04f467a/pynacl-1.6.2.tar.gz", hash = "sha256:018494d6d696ae03c7e656e5e74cdfd8ea1326962cc401bcf018f1ed8436811c", size = 3511692, upload-time = "2026-01-01T17:48:10.851Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/4b/79/0e3c34dc3c4671f67d251c07aa8eb100916f250ee470df230b0ab89551b4/pynacl-1.6.2-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:622d7b07cc5c02c666795792931b50c91f3ce3c2649762efb1ef0d5684c81594", size = 390064, upload-time = "2026-01-01T17:31:57.264Z" },
- { url = "https://files.pythonhosted.org/packages/eb/1c/23a26e931736e13b16483795c8a6b2f641bf6a3d5238c22b070a5112722c/pynacl-1.6.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d071c6a9a4c94d79eb665db4ce5cedc537faf74f2355e4d502591d850d3913c0", size = 809370, upload-time = "2026-01-01T17:31:59.198Z" },
- { url = "https://files.pythonhosted.org/packages/87/74/8d4b718f8a22aea9e8dcc8b95deb76d4aae380e2f5b570cc70b5fd0a852d/pynacl-1.6.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe9847ca47d287af41e82be1dd5e23023d3c31a951da134121ab02e42ac218c9", size = 1408304, upload-time = "2026-01-01T17:32:01.162Z" },
- { url = "https://files.pythonhosted.org/packages/fd/73/be4fdd3a6a87fe8a4553380c2b47fbd1f7f58292eb820902f5c8ac7de7b0/pynacl-1.6.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:04316d1fc625d860b6c162fff704eb8426b1a8bcd3abacea11142cbd99a6b574", size = 844871, upload-time = "2026-01-01T17:32:02.824Z" },
- { url = "https://files.pythonhosted.org/packages/55/ad/6efc57ab75ee4422e96b5f2697d51bbcf6cdcc091e66310df91fbdc144a8/pynacl-1.6.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:44081faff368d6c5553ccf55322ef2819abb40e25afaec7e740f159f74813634", size = 1446356, upload-time = "2026-01-01T17:32:04.452Z" },
- { url = "https://files.pythonhosted.org/packages/78/b7/928ee9c4779caa0a915844311ab9fb5f99585621c5d6e4574538a17dca07/pynacl-1.6.2-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:a9f9932d8d2811ce1a8ffa79dcbdf3970e7355b5c8eb0c1a881a57e7f7d96e88", size = 826814, upload-time = "2026-01-01T17:32:06.078Z" },
- { url = "https://files.pythonhosted.org/packages/f7/a9/1bdba746a2be20f8809fee75c10e3159d75864ef69c6b0dd168fc60e485d/pynacl-1.6.2-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:bc4a36b28dd72fb4845e5d8f9760610588a96d5a51f01d84d8c6ff9849968c14", size = 1411742, upload-time = "2026-01-01T17:32:07.651Z" },
- { url = "https://files.pythonhosted.org/packages/f3/2f/5e7ea8d85f9f3ea5b6b87db1d8388daa3587eed181bdeb0306816fdbbe79/pynacl-1.6.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3bffb6d0f6becacb6526f8f42adfb5efb26337056ee0831fb9a7044d1a964444", size = 801714, upload-time = "2026-01-01T17:32:09.558Z" },
- { url = "https://files.pythonhosted.org/packages/06/ea/43fe2f7eab5f200e40fb10d305bf6f87ea31b3bbc83443eac37cd34a9e1e/pynacl-1.6.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:2fef529ef3ee487ad8113d287a593fa26f48ee3620d92ecc6f1d09ea38e0709b", size = 1372257, upload-time = "2026-01-01T17:32:11.026Z" },
- { url = "https://files.pythonhosted.org/packages/4d/54/c9ea116412788629b1347e415f72195c25eb2f3809b2d3e7b25f5c79f13a/pynacl-1.6.2-cp314-cp314t-win32.whl", hash = "sha256:a84bf1c20339d06dc0c85d9aea9637a24f718f375d861b2668b2f9f96fa51145", size = 231319, upload-time = "2026-01-01T17:32:12.46Z" },
- { url = "https://files.pythonhosted.org/packages/ce/04/64e9d76646abac2dccf904fccba352a86e7d172647557f35b9fe2a5ee4a1/pynacl-1.6.2-cp314-cp314t-win_amd64.whl", hash = "sha256:320ef68a41c87547c91a8b58903c9caa641ab01e8512ce291085b5fe2fcb7590", size = 244044, upload-time = "2026-01-01T17:32:13.781Z" },
- { url = "https://files.pythonhosted.org/packages/33/33/7873dc161c6a06f43cda13dec67b6fe152cb2f982581151956fa5e5cdb47/pynacl-1.6.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d29bfe37e20e015a7d8b23cfc8bd6aa7909c92a1b8f41ee416bbb3e79ef182b2", size = 188740, upload-time = "2026-01-01T17:32:15.083Z" },
- { url = "https://files.pythonhosted.org/packages/be/7b/4845bbf88e94586ec47a432da4e9107e3fc3ce37eb412b1398630a37f7dd/pynacl-1.6.2-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:c949ea47e4206af7c8f604b8278093b674f7c79ed0d4719cc836902bf4517465", size = 388458, upload-time = "2026-01-01T17:32:16.829Z" },
- { url = "https://files.pythonhosted.org/packages/1e/b4/e927e0653ba63b02a4ca5b4d852a8d1d678afbf69b3dbf9c4d0785ac905c/pynacl-1.6.2-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8845c0631c0be43abdd865511c41eab235e0be69c81dc66a50911594198679b0", size = 800020, upload-time = "2026-01-01T17:32:18.34Z" },
- { url = "https://files.pythonhosted.org/packages/7f/81/d60984052df5c97b1d24365bc1e30024379b42c4edcd79d2436b1b9806f2/pynacl-1.6.2-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22de65bb9010a725b0dac248f353bb072969c94fa8d6b1f34b87d7953cf7bbe4", size = 1399174, upload-time = "2026-01-01T17:32:20.239Z" },
- { url = "https://files.pythonhosted.org/packages/68/f7/322f2f9915c4ef27d140101dd0ed26b479f7e6f5f183590fd32dfc48c4d3/pynacl-1.6.2-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:46065496ab748469cdd999246d17e301b2c24ae2fdf739132e580a0e94c94a87", size = 835085, upload-time = "2026-01-01T17:32:22.24Z" },
- { url = "https://files.pythonhosted.org/packages/3e/d0/f301f83ac8dbe53442c5a43f6a39016f94f754d7a9815a875b65e218a307/pynacl-1.6.2-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a66d6fb6ae7661c58995f9c6435bda2b1e68b54b598a6a10247bfcdadac996c", size = 1437614, upload-time = "2026-01-01T17:32:23.766Z" },
- { url = "https://files.pythonhosted.org/packages/c4/58/fc6e649762b029315325ace1a8c6be66125e42f67416d3dbd47b69563d61/pynacl-1.6.2-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:26bfcd00dcf2cf160f122186af731ae30ab120c18e8375684ec2670dccd28130", size = 818251, upload-time = "2026-01-01T17:32:25.69Z" },
- { url = "https://files.pythonhosted.org/packages/c9/a8/b917096b1accc9acd878819a49d3d84875731a41eb665f6ebc826b1af99e/pynacl-1.6.2-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c8a231e36ec2cab018c4ad4358c386e36eede0319a0c41fed24f840b1dac59f6", size = 1402859, upload-time = "2026-01-01T17:32:27.215Z" },
- { url = "https://files.pythonhosted.org/packages/85/42/fe60b5f4473e12c72f977548e4028156f4d340b884c635ec6b063fe7e9a5/pynacl-1.6.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:68be3a09455743ff9505491220b64440ced8973fe930f270c8e07ccfa25b1f9e", size = 791926, upload-time = "2026-01-01T17:32:29.314Z" },
- { url = "https://files.pythonhosted.org/packages/fa/f9/e40e318c604259301cc091a2a63f237d9e7b424c4851cafaea4ea7c4834e/pynacl-1.6.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8b097553b380236d51ed11356c953bf8ce36a29a3e596e934ecabe76c985a577", size = 1363101, upload-time = "2026-01-01T17:32:31.263Z" },
- { url = "https://files.pythonhosted.org/packages/48/47/e761c254f410c023a469284a9bc210933e18588ca87706ae93002c05114c/pynacl-1.6.2-cp38-abi3-win32.whl", hash = "sha256:5811c72b473b2f38f7e2a3dc4f8642e3a3e9b5e7317266e4ced1fba85cae41aa", size = 227421, upload-time = "2026-01-01T17:32:33.076Z" },
- { url = "https://files.pythonhosted.org/packages/41/ad/334600e8cacc7d86587fe5f565480fde569dfb487389c8e1be56ac21d8ac/pynacl-1.6.2-cp38-abi3-win_amd64.whl", hash = "sha256:62985f233210dee6548c223301b6c25440852e13d59a8b81490203c3227c5ba0", size = 239754, upload-time = "2026-01-01T17:32:34.557Z" },
- { url = "https://files.pythonhosted.org/packages/29/7d/5945b5af29534641820d3bd7b00962abbbdfee84ec7e19f0d5b3175f9a31/pynacl-1.6.2-cp38-abi3-win_arm64.whl", hash = "sha256:834a43af110f743a754448463e8fd61259cd4ab5bbedcf70f9dabad1d28a394c", size = 184801, upload-time = "2026-01-01T17:32:36.309Z" },
-]
-
-[[package]]
-name = "requests"
-version = "2.32.5"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-dependencies = [
- { name = "certifi" },
- { name = "charset-normalizer" },
- { name = "idna" },
- { name = "urllib3" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" },
-]
-
-[[package]]
-name = "typing-extensions"
-version = "4.15.0"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" },
-]
-
-[[package]]
-name = "urllib3"
-version = "2.6.3"
-source = { registry = "https://pypi-proxy.cloud.databricks.com/simple/" }
-sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
-]