diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index d958f5252..942ee31b3 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -317c6fb80e22965f39e7a663baa6e51357851cf9 \ No newline at end of file +a8f22ca52459992f111cfe000530b356243d4784 \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index d1ec58012..d5658dbc3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1446,6 +1446,18 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/disasterrecovery/Uc databricks-sdk-java/src/main/java/com/databricks/sdk/service/disasterrecovery/UcReplicationConfig.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/disasterrecovery/UpdateFailoverGroupRequest.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/disasterrecovery/WorkspaceSet.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/CreateDomainRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DeleteDomainRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/Domain.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIcon.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIconName.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsAPI.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsImpl.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsService.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/GetDomainRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsResponse.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/UpdateDomainRequest.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/environments/BaseEnvironmentType.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/environments/CreateWorkspaceBaseEnvironmentOperation.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/environments/CreateWorkspaceBaseEnvironmentRequest.java linguist-generated=true diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index a89c8ee07..66088eadd 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -21,4 +21,8 @@ * Add `AWS_SECRETS_MANAGER` and `AZURE_KEY_VAULT` enum values for `com.databricks.sdk.service.catalog.ConnectionType`. * [Breaking] Remove `firstTokenTimeout` field for `com.databricks.sdk.service.catalog.ModelServiceConfigRoutingConfig`. * [Breaking] Remove `requestTagKey` and `requestTagValue` fields for `com.databricks.sdk.service.catalog.RateLimit`. -* [Breaking] Remove `RATE_LIMIT_KEY_REQUEST_TAG` enum value for `com.databricks.sdk.service.catalog.RateLimitRateLimitKey`. \ No newline at end of file +* [Breaking] Remove `RATE_LIMIT_KEY_REQUEST_TAG` enum value for `com.databricks.sdk.service.catalog.RateLimitRateLimitKey`. +* Add `com.databricks.sdk.service.domains` package. +* Add `workspaceClient.domains()` service. +* Add `timeWindow` field for `com.databricks.sdk.service.ml.Feature`. +* Add `fullFeatureName` field for `com.databricks.sdk.service.ml.PublishSpec`. \ No newline at end of file diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java index 0eec25b18..ec2f6a317 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java @@ -119,6 +119,8 @@ import com.databricks.sdk.service.dataclassification.DataClassificationService; import com.databricks.sdk.service.dataquality.DataQualityAPI; import com.databricks.sdk.service.dataquality.DataQualityService; +import com.databricks.sdk.service.domains.DomainsAPI; +import com.databricks.sdk.service.domains.DomainsService; import com.databricks.sdk.service.environments.EnvironmentsAPI; import com.databricks.sdk.service.environments.EnvironmentsService; import com.databricks.sdk.service.files.DbfsService; @@ -324,6 +326,7 @@ public class WorkspaceClient { private DatabaseAPI databaseAPI; private DbfsExt dbfsAPI; private DbsqlPermissionsAPI dbsqlPermissionsAPI; + private DomainsAPI domainsAPI; private EntityTagAssignmentsAPI entityTagAssignmentsAPI; private EnvironmentsAPI environmentsAPI; private ExperimentsAPI experimentsAPI; @@ -468,6 +471,7 @@ public WorkspaceClient(DatabricksConfig config) { databaseAPI = new DatabaseAPI(apiClient); dbfsAPI = new DbfsExt(apiClient); dbsqlPermissionsAPI = new DbsqlPermissionsAPI(apiClient); + domainsAPI = new DomainsAPI(apiClient); entityTagAssignmentsAPI = new EntityTagAssignmentsAPI(apiClient); environmentsAPI = new EnvironmentsAPI(apiClient); experimentsAPI = new ExperimentsAPI(apiClient); @@ -959,6 +963,11 @@ public DbsqlPermissionsAPI dbsqlPermissions() { return dbsqlPermissionsAPI; } + /** Manage domains for organizing and discovering data assets. */ + public DomainsAPI domains() { + return domainsAPI; + } + /** * Tags are attributes that include keys and optional values that you can use to organize and * categorize entities in Unity Catalog. Entity tagging is supported on catalogs, schemas, tables @@ -2713,6 +2722,17 @@ public WorkspaceClient withDbsqlPermissionsAPI(DbsqlPermissionsAPI dbsqlPermissi return this; } + /** Replace the default DomainsService with a custom implementation. */ + public WorkspaceClient withDomainsImpl(DomainsService domains) { + return this.withDomainsAPI(new DomainsAPI(domains)); + } + + /** Replace the default DomainsAPI with a custom implementation. */ + public WorkspaceClient withDomainsAPI(DomainsAPI domains) { + this.domainsAPI = domains; + return this; + } + /** Replace the default EntityTagAssignmentsService with a custom implementation. */ public WorkspaceClient withEntityTagAssignmentsImpl( EntityTagAssignmentsService entityTagAssignments) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigServiceCredential.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigServiceCredential.java index 42cb658e9..c7aae67f9 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigServiceCredential.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelProviderServiceConfigServiceCredential.java @@ -8,9 +8,8 @@ import java.util.Objects; /** - * ---- Provider configuration (nested; see the `provider` oneof below) ---- The customer-owned - * Unity Catalog service credential a ModelProviderService uses to authenticate to its provider, - * referenced by name. + * The customer-owned Unity Catalog service credential a model provider service uses to authenticate + * to its provider, referenced by name. */ @Generated public class ModelProviderServiceConfigServiceCredential { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/CreateDomainRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/CreateDomainRequest.java new file mode 100644 index 000000000..da5c4efe4 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/CreateDomainRequest.java @@ -0,0 +1,61 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +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 CreateDomainRequest { + /** */ + @JsonProperty("domain") + private Domain domain; + + /** Client-supplied resource ID for the new domain. If omitted, the server generates one. */ + @JsonIgnore + @QueryParam("domain_id") + private String domainId; + + public CreateDomainRequest setDomain(Domain domain) { + this.domain = domain; + return this; + } + + public Domain getDomain() { + return domain; + } + + public CreateDomainRequest setDomainId(String domainId) { + this.domainId = domainId; + return this; + } + + public String getDomainId() { + return domainId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateDomainRequest that = (CreateDomainRequest) o; + return Objects.equals(domain, that.domain) && Objects.equals(domainId, that.domainId); + } + + @Override + public int hashCode() { + return Objects.hash(domain, domainId); + } + + @Override + public String toString() { + return new ToStringer(CreateDomainRequest.class) + .add("domain", domain) + .add("domainId", domainId) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DeleteDomainRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DeleteDomainRequest.java new file mode 100644 index 000000000..005a004d6 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DeleteDomainRequest.java @@ -0,0 +1,63 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +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 DeleteDomainRequest { + /** + * When false (default), DeleteDomain is rejected with FAILED_PRECONDITION if the domain still has + * Glossary pages. When true, those pages are deleted first and then the domain is removed. + * Forwarded to the central service. + */ + @JsonIgnore + @QueryParam("force") + private Boolean force; + + /** Full resource name of the domain to delete. Format: `domains/{domain_id}` */ + @JsonIgnore private String name; + + public DeleteDomainRequest setForce(Boolean force) { + this.force = force; + return this; + } + + public Boolean getForce() { + return force; + } + + public DeleteDomainRequest 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; + DeleteDomainRequest that = (DeleteDomainRequest) o; + return Objects.equals(force, that.force) && Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(force, name); + } + + @Override + public String toString() { + return new ToStringer(DeleteDomainRequest.class) + .add("force", force) + .add("name", name) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/Domain.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/Domain.java new file mode 100644 index 000000000..5c2116777 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/Domain.java @@ -0,0 +1,249 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +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.Collection; +import java.util.Objects; + +@Generated +public class Domain { + /** Principal IDs of the business owners (users, groups, or service principals). */ + @JsonProperty("business_owner_ids") + private Collection businessOwnerIds; + + /** Timestamp when the domain was created. */ + @JsonProperty("create_time") + private Timestamp createTime; + + /** Full description (max 4096 chars) */ + @JsonProperty("description") + private String description; + + /** Unique identifier for the domain. If omitted at Create, the server generates one. */ + @JsonProperty("domain_id") + private String domainId; + + /** + * Whether to mark the domain as a draft. If omitted on Create, the server applies a default; the + * resolved value is returned in `effective_draft`. + */ + @JsonProperty("draft") + private Boolean draft; + + /** Resolved draft state of the domain. */ + @JsonProperty("effective_draft") + private Boolean effectiveDraft; + + /** Icon to display for the domain. */ + @JsonProperty("icon") + private DomainIcon icon; + + /** + * Full resource name of the domain. The primary identifier for this resource. Format: + * `domains/{domain_id}` Identifies the domain on get, update, and delete. Not an input on create + * — to choose the id, set `CreateDomainRequest.domain_id`. + */ + @JsonProperty("name") + private String name; + + /** + * Domain ID of the parent. If absent, this is a top-level domain. If present, this domain is a + * subdomain of the specified parent. + */ + @JsonProperty("parent_domain_id") + private String parentDomainId; + + /** Short description (max 280 chars) */ + @JsonProperty("subtitle") + private String subtitle; + + /** Governed tag key associated with this domain. */ + @JsonProperty("tag_key") + private String tagKey; + + /** Principal IDs of the technical owners (users, groups, or service principals). */ + @JsonProperty("technical_owner_ids") + private Collection technicalOwnerIds; + + /** Timestamp when the domain was last updated. */ + @JsonProperty("update_time") + private Timestamp updateTime; + + public Domain setBusinessOwnerIds(Collection businessOwnerIds) { + this.businessOwnerIds = businessOwnerIds; + return this; + } + + public Collection getBusinessOwnerIds() { + return businessOwnerIds; + } + + public Domain setCreateTime(Timestamp createTime) { + this.createTime = createTime; + return this; + } + + public Timestamp getCreateTime() { + return createTime; + } + + public Domain setDescription(String description) { + this.description = description; + return this; + } + + public String getDescription() { + return description; + } + + public Domain setDomainId(String domainId) { + this.domainId = domainId; + return this; + } + + public String getDomainId() { + return domainId; + } + + public Domain setDraft(Boolean draft) { + this.draft = draft; + return this; + } + + public Boolean getDraft() { + return draft; + } + + public Domain setEffectiveDraft(Boolean effectiveDraft) { + this.effectiveDraft = effectiveDraft; + return this; + } + + public Boolean getEffectiveDraft() { + return effectiveDraft; + } + + public Domain setIcon(DomainIcon icon) { + this.icon = icon; + return this; + } + + public DomainIcon getIcon() { + return icon; + } + + public Domain setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public Domain setParentDomainId(String parentDomainId) { + this.parentDomainId = parentDomainId; + return this; + } + + public String getParentDomainId() { + return parentDomainId; + } + + public Domain setSubtitle(String subtitle) { + this.subtitle = subtitle; + return this; + } + + public String getSubtitle() { + return subtitle; + } + + public Domain setTagKey(String tagKey) { + this.tagKey = tagKey; + return this; + } + + public String getTagKey() { + return tagKey; + } + + public Domain setTechnicalOwnerIds(Collection technicalOwnerIds) { + this.technicalOwnerIds = technicalOwnerIds; + return this; + } + + public Collection getTechnicalOwnerIds() { + return technicalOwnerIds; + } + + public Domain 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; + Domain that = (Domain) o; + return Objects.equals(businessOwnerIds, that.businessOwnerIds) + && Objects.equals(createTime, that.createTime) + && Objects.equals(description, that.description) + && Objects.equals(domainId, that.domainId) + && Objects.equals(draft, that.draft) + && Objects.equals(effectiveDraft, that.effectiveDraft) + && Objects.equals(icon, that.icon) + && Objects.equals(name, that.name) + && Objects.equals(parentDomainId, that.parentDomainId) + && Objects.equals(subtitle, that.subtitle) + && Objects.equals(tagKey, that.tagKey) + && Objects.equals(technicalOwnerIds, that.technicalOwnerIds) + && Objects.equals(updateTime, that.updateTime); + } + + @Override + public int hashCode() { + return Objects.hash( + businessOwnerIds, + createTime, + description, + domainId, + draft, + effectiveDraft, + icon, + name, + parentDomainId, + subtitle, + tagKey, + technicalOwnerIds, + updateTime); + } + + @Override + public String toString() { + return new ToStringer(Domain.class) + .add("businessOwnerIds", businessOwnerIds) + .add("createTime", createTime) + .add("description", description) + .add("domainId", domainId) + .add("draft", draft) + .add("effectiveDraft", effectiveDraft) + .add("icon", icon) + .add("name", name) + .add("parentDomainId", parentDomainId) + .add("subtitle", subtitle) + .add("tagKey", tagKey) + .add("technicalOwnerIds", technicalOwnerIds) + .add("updateTime", updateTime) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIcon.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIcon.java new file mode 100644 index 000000000..3609dfe23 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIcon.java @@ -0,0 +1,56 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +/** Icon configuration for a domain. */ +@Generated +public class DomainIcon { + /** Hex color code with # prefix (e.g., "#FF5733"). */ + @JsonProperty("color") + private String color; + + /** */ + @JsonProperty("name") + private DomainIconName name; + + public DomainIcon setColor(String color) { + this.color = color; + return this; + } + + public String getColor() { + return color; + } + + public DomainIcon setName(DomainIconName name) { + this.name = name; + return this; + } + + public DomainIconName getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DomainIcon that = (DomainIcon) o; + return Objects.equals(color, that.color) && Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(color, name); + } + + @Override + public String toString() { + return new ToStringer(DomainIcon.class).add("color", color).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIconName.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIconName.java new file mode 100644 index 000000000..903279f8e --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainIconName.java @@ -0,0 +1,82 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +import com.databricks.sdk.support.Generated; + +/** Available icon names for a domain. */ +@Generated +public enum DomainIconName { + ADDRESS_BOOK, + ALARM, + ARROWS_IN, + ATOM, + BALLOON, + BANK, + BARRICADE, + BASKET, + BRIDGE, + CACTUS, + CALL_BELL, + CARROT, + CHART_PIE_SLICE, + CITY, + CLOUD, + COINS, + COMPASS_ROSE, + CRANE_TOWER, + CROWN, + CUBE_TRANSPARENT, + FADERS, + FLAG_BANNER_FOLD, + FLAG_CHECKERED, + GAVEL, + HAMBURGER, + HEAD_CIRCUIT, + HOURGLASS_HIGH, + INTERSECT_THREE, + MICROSCOPE, + MOON_STARS, + PACKAGE, + PARACHUTE, + PEPPER, + PIGGY_BANK, + PILL, + PLANET, + PLANT, + PLUGS_CONNECTED, + POPCORN, + PRESENTATION_CHART, + PUZZLE_PIECE, + RAINBOW, + RANKING, + RECEIPT, + ROCKET, + RULER, + SAILBOAT, + SCALES, + SCAN_SMILEY, + SCROLL, + SHIELD_CHECKERED, + SNEAKER, + SNOWFLAKE, + SOLAR_ROOF, + SPEEDOMETER, + STAMP, + STEPS, + STRATEGY, + SWORD, + TELEVISION_SIMPLE, + TENT, + TICKET, + TRACTOR, + TRAFFIC_CONE, + TRAIN, + TREE_EVERGREEN, + TREE_STRUCTURE, + TROLLEY_SUITCASE, + TROPHY, + TRUCK_TRAILER, + USERS_THREE, + VECTOR_THREE, +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsAPI.java new file mode 100644 index 000000000..4e6df4e9c --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsAPI.java @@ -0,0 +1,89 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.domains; + +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; + +/** Manage domains for organizing and discovering data assets. */ +@Generated +public class DomainsAPI { + private static final Logger LOG = LoggerFactory.getLogger(DomainsAPI.class); + + private final DomainsService impl; + + /** Regular-use constructor */ + public DomainsAPI(ApiClient apiClient) { + impl = new DomainsImpl(apiClient); + } + + /** Constructor for mocks */ + public DomainsAPI(DomainsService mock) { + impl = mock; + } + + /** Create a domain. If `domain_id` is omitted, the server generates one. */ + public Domain createDomain(CreateDomainRequest request) { + return impl.createDomain(request); + } + + public void deleteDomain(String name) { + deleteDomain(new DeleteDomainRequest().setName(name)); + } + + /** + * Delete a domain. By default the request fails if the domain still has Glossary pages; set + * `force` to delete those pages along with the domain. + */ + public void deleteDomain(DeleteDomainRequest request) { + impl.deleteDomain(request); + } + + public Domain getDomain(String name) { + return getDomain(new GetDomainRequest().setName(name)); + } + + /** + * Get a domain by resource name. + * + *

Authorization: external callers must have the `MANAGE DISCOVERY` permission. + */ + public Domain getDomain(GetDomainRequest request) { + return impl.getDomain(request); + } + + /** + * List domains in the account. Set `parent_domain_id` to return only the direct subdomains of a + * given domain. + * + *

Authorization: external callers must have the `MANAGE DISCOVERY` permission; only domains + * the caller is authorized to read are returned. + */ + public Iterable listDomains(ListDomainsRequest request) { + return Paginator.newTokenPagination( + request, + impl::listDomains, + ListDomainsResponse::getDomains, + response -> { + String token = response.getNextPageToken(); + if (token == null || token.isEmpty()) { + return null; + } + return request.setPageToken(token); + }); + } + + /** + * Update a domain. `update_mask` selects which fields to modify; the domain is identified by its + * resource `name`. + */ + public Domain updateDomain(UpdateDomainRequest request) { + return impl.updateDomain(request); + } + + public DomainsService impl() { + return impl; + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsImpl.java new file mode 100644 index 000000000..5b38898ee --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsImpl.java @@ -0,0 +1,105 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.domains; + +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 Domains */ +@Generated +class DomainsImpl implements DomainsService { + private final ApiClient apiClient; + + public DomainsImpl(ApiClient apiClient) { + this.apiClient = apiClient; + } + + @Override + public Domain createDomain(CreateDomainRequest request) { + String path = "/api/2.0/domains"; + try { + Request req = new Request("POST", path, apiClient.serialize(request.getDomain())); + + 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, Domain.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public void deleteDomain(DeleteDomainRequest request) { + String path = String.format("/api/2.0/%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 Domain getDomain(GetDomainRequest request) { + String path = String.format("/api/2.0/%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, Domain.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public ListDomainsResponse listDomains(ListDomainsRequest request) { + String path = "/api/2.0/domains"; + 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, ListDomainsResponse.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public Domain updateDomain(UpdateDomainRequest request) { + String path = String.format("/api/2.0/%s", request.getName()); + try { + Request req = new Request("PATCH", path, apiClient.serialize(request.getDomain())); + + 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, Domain.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/domains/DomainsService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsService.java new file mode 100644 index 000000000..3dde2a7e5 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/DomainsService.java @@ -0,0 +1,45 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.domains; + +import com.databricks.sdk.support.Generated; + +/** + * Manage domains for organizing and discovering data assets. + * + *

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

Evolving: this interface is under development. Method signatures may change. + */ +@Generated +public interface DomainsService { + /** Create a domain. If `domain_id` is omitted, the server generates one. */ + Domain createDomain(CreateDomainRequest createDomainRequest); + + /** + * Delete a domain. By default the request fails if the domain still has Glossary pages; set + * `force` to delete those pages along with the domain. + */ + void deleteDomain(DeleteDomainRequest deleteDomainRequest); + + /** + * Get a domain by resource name. + * + *

Authorization: external callers must have the `MANAGE DISCOVERY` permission. + */ + Domain getDomain(GetDomainRequest getDomainRequest); + + /** + * List domains in the account. Set `parent_domain_id` to return only the direct subdomains of a + * given domain. + * + *

Authorization: external callers must have the `MANAGE DISCOVERY` permission; only domains + * the caller is authorized to read are returned. + */ + ListDomainsResponse listDomains(ListDomainsRequest listDomainsRequest); + + /** + * Update a domain. `update_mask` selects which fields to modify; the domain is identified by its + * resource `name`. + */ + Domain updateDomain(UpdateDomainRequest updateDomainRequest); +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/GetDomainRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/GetDomainRequest.java new file mode 100644 index 000000000..9b527a0b7 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/GetDomainRequest.java @@ -0,0 +1,41 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +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 GetDomainRequest { + /** Full resource name of the domain to retrieve. Format: `domains/{domain_id}` */ + @JsonIgnore private String name; + + public GetDomainRequest 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; + GetDomainRequest that = (GetDomainRequest) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return new ToStringer(GetDomainRequest.class).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsRequest.java new file mode 100644 index 000000000..39f8ba01a --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsRequest.java @@ -0,0 +1,81 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +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 ListDomainsRequest { + /** */ + @JsonIgnore + @QueryParam("page_size") + private Long pageSize; + + /** */ + @JsonIgnore + @QueryParam("page_token") + private String pageToken; + + /** + * Filter by parent domain. - Absent: return all domains regardless of hierarchy. - Present: + * return only direct children of the specified domain. + */ + @JsonIgnore + @QueryParam("parent_domain_id") + private String parentDomainId; + + public ListDomainsRequest setPageSize(Long pageSize) { + this.pageSize = pageSize; + return this; + } + + public Long getPageSize() { + return pageSize; + } + + public ListDomainsRequest setPageToken(String pageToken) { + this.pageToken = pageToken; + return this; + } + + public String getPageToken() { + return pageToken; + } + + public ListDomainsRequest setParentDomainId(String parentDomainId) { + this.parentDomainId = parentDomainId; + return this; + } + + public String getParentDomainId() { + return parentDomainId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ListDomainsRequest that = (ListDomainsRequest) o; + return Objects.equals(pageSize, that.pageSize) + && Objects.equals(pageToken, that.pageToken) + && Objects.equals(parentDomainId, that.parentDomainId); + } + + @Override + public int hashCode() { + return Objects.hash(pageSize, pageToken, parentDomainId); + } + + @Override + public String toString() { + return new ToStringer(ListDomainsRequest.class) + .add("pageSize", pageSize) + .add("pageToken", pageToken) + .add("parentDomainId", parentDomainId) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsResponse.java new file mode 100644 index 000000000..0da157431 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/ListDomainsResponse.java @@ -0,0 +1,60 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +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; + +@Generated +public class ListDomainsResponse { + /** */ + @JsonProperty("domains") + private Collection domains; + + /** */ + @JsonProperty("next_page_token") + private String nextPageToken; + + public ListDomainsResponse setDomains(Collection domains) { + this.domains = domains; + return this; + } + + public Collection getDomains() { + return domains; + } + + public ListDomainsResponse 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; + ListDomainsResponse that = (ListDomainsResponse) o; + return Objects.equals(domains, that.domains) + && Objects.equals(nextPageToken, that.nextPageToken); + } + + @Override + public int hashCode() { + return Objects.hash(domains, nextPageToken); + } + + @Override + public String toString() { + return new ToStringer(ListDomainsResponse.class) + .add("domains", domains) + .add("nextPageToken", nextPageToken) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/UpdateDomainRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/UpdateDomainRequest.java new file mode 100644 index 000000000..c3d8626fe --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/domains/UpdateDomainRequest.java @@ -0,0 +1,91 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.domains; + +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 UpdateDomainRequest { + /** */ + @JsonProperty("domain") + private Domain domain; + + /** + * Full resource name of the domain. The primary identifier for this resource. Format: + * `domains/{domain_id}` Identifies the domain on get, update, and delete. Not an input on create + * — to choose the id, set `CreateDomainRequest.domain_id`. + */ + @JsonIgnore private String name; + + /** + * 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. + * + *

A field mask of `*` indicates full replacement. It’s recommended to always explicitly list + * the fields being updated and avoid using `*` wildcards, as it can lead to unintended results if + * the API changes in the future. + */ + @JsonIgnore + @QueryParam("update_mask") + private FieldMask updateMask; + + public UpdateDomainRequest setDomain(Domain domain) { + this.domain = domain; + return this; + } + + public Domain getDomain() { + return domain; + } + + public UpdateDomainRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public UpdateDomainRequest 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; + UpdateDomainRequest that = (UpdateDomainRequest) o; + return Objects.equals(domain, that.domain) + && Objects.equals(name, that.name) + && Objects.equals(updateMask, that.updateMask); + } + + @Override + public int hashCode() { + return Objects.hash(domain, name, updateMask); + } + + @Override + public String toString() { + return new ToStringer(UpdateDomainRequest.class) + .add("domain", domain) + .add("name", name) + .add("updateMask", updateMask) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Feature.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Feature.java index 8079694a1..0f732d688 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Feature.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Feature.java @@ -65,6 +65,10 @@ public class Feature { @JsonProperty("source") private DataSource source; + /** */ + @JsonProperty("time_window") + private TimeWindow timeWindow; + /** Column recording time, used for point-in-time joins, backfills, and aggregations. */ @JsonProperty("timeseries_column") private TimeseriesColumn timeseriesColumn; @@ -168,6 +172,15 @@ public DataSource getSource() { return source; } + public Feature setTimeWindow(TimeWindow timeWindow) { + this.timeWindow = timeWindow; + return this; + } + + public TimeWindow getTimeWindow() { + return timeWindow; + } + public Feature setTimeseriesColumn(TimeseriesColumn timeseriesColumn) { this.timeseriesColumn = timeseriesColumn; return this; @@ -193,6 +206,7 @@ public boolean equals(Object o) { && Objects.equals(name, that.name) && Objects.equals(schemaName, that.schemaName) && Objects.equals(source, that.source) + && Objects.equals(timeWindow, that.timeWindow) && Objects.equals(timeseriesColumn, that.timeseriesColumn); } @@ -210,6 +224,7 @@ public int hashCode() { name, schemaName, source, + timeWindow, timeseriesColumn); } @@ -227,6 +242,7 @@ public String toString() { .add("name", name) .add("schemaName", schemaName) .add("source", source) + .add("timeWindow", timeWindow) .add("timeseriesColumn", timeseriesColumn) .toString(); } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PublishSpec.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PublishSpec.java index dad437647..71dab0374 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PublishSpec.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/PublishSpec.java @@ -9,6 +9,14 @@ @Generated public class PublishSpec { + /** + * Full Unity Catalog name of one of the features materialized in the source table, used to derive + * the synced online table's entity and timeseries columns. Required for view sources without a UC + * PrimaryKeyConstraint; ignored when the source already has one. + */ + @JsonProperty("full_feature_name") + private String fullFeatureName; + /** The name of the target online store. */ @JsonProperty("online_store") private String onlineStore; @@ -21,6 +29,15 @@ public class PublishSpec { @JsonProperty("publish_mode") private PublishSpecPublishMode publishMode; + public PublishSpec setFullFeatureName(String fullFeatureName) { + this.fullFeatureName = fullFeatureName; + return this; + } + + public String getFullFeatureName() { + return fullFeatureName; + } + public PublishSpec setOnlineStore(String onlineStore) { this.onlineStore = onlineStore; return this; @@ -53,19 +70,21 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; PublishSpec that = (PublishSpec) o; - return Objects.equals(onlineStore, that.onlineStore) + return Objects.equals(fullFeatureName, that.fullFeatureName) + && Objects.equals(onlineStore, that.onlineStore) && Objects.equals(onlineTableName, that.onlineTableName) && Objects.equals(publishMode, that.publishMode); } @Override public int hashCode() { - return Objects.hash(onlineStore, onlineTableName, publishMode); + return Objects.hash(fullFeatureName, onlineStore, onlineTableName, publishMode); } @Override public String toString() { return new ToStringer(PublishSpec.class) + .add("fullFeatureName", fullFeatureName) .add("onlineStore", onlineStore) .add("onlineTableName", onlineTableName) .add("publishMode", publishMode) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncRequest.java index 69160130d..5b9f0e41c 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncRequest.java @@ -20,9 +20,7 @@ public class ExecuteCommandSyncRequest { /** * Executable or command to run (e.g. `/bin/echo`, `python3`). A request with no `cmd` is rejected - * with `INVALID_ARGUMENT`. Not audited (no `compliance.audit_mode`): the command can carry - * secrets, and as a data-plane service lakebox must not record privileged customer content in its - * audit log. + * with `INVALID_ARGUMENT`. */ @JsonProperty("cmd") private String cmd; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncResponse.java index 0d2ebeb77..3c2437c3e 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncResponse.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ExecuteCommandSyncResponse.java @@ -39,8 +39,7 @@ public class ExecuteCommandSyncResponse { /** * Captured standard output as UTF-8 text. Invalid UTF-8 bytes are replaced with the Unicode - * replacement character rather than failing the request; use the streaming `ExecuteCommand` RPC - * for byte-exact output. + * replacement character (U+FFFD). */ @JsonProperty("stdout") private String stdout; @@ -48,8 +47,7 @@ public class ExecuteCommandSyncResponse { /** * True when `stdout` / `stderr` were truncated because the captured output exceeded the server's * per-response size cap. The dropped output is not included in this response and is not - * recoverable through this unary API; for commands that can produce large output, use the - * streaming `ExecuteCommand` RPC, which is not subject to this cap. + * recoverable through this unary API. */ @JsonProperty("truncated") private Boolean truncated; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java index 21d534a0b..2f6de7700 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java @@ -15,10 +15,7 @@ public class Sandbox { @JsonProperty("create_time") private Timestamp createTime; - /** - * Customer-supplied display label. Mutable via UpdateSandbox. Bounds enforced at the RPC boundary - * (<=256 bytes, mirrors lakebox MAX_SANDBOX_NAME_LEN). - */ + /** Customer-supplied display label. Mutable via UpdateSandbox. At most 256 bytes. */ @JsonProperty("display_name") private String displayName; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java index 98943a66e..d8ce6ba87 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java @@ -43,10 +43,7 @@ public void deleteSandbox(DeleteSandboxRequest request) { /** * Runs a command in the sandbox and blocks until it exits, returning the captured stdout, stderr - * and exit code in a single response. Unary convenience variant of the streaming - * command-execution API for callers that only need a command's final result (e.g. `curl`, the - * SDK's `sandbox.exec`). The streaming `ExecuteCommand` RPC remains for interactive and - * long-running use. + * and exit code in a single response. */ public ExecuteCommandSyncResponse executeCommandSync(ExecuteCommandSyncRequest request) { return impl.executeCommandSync(request); @@ -77,33 +74,22 @@ public Iterable listSandboxes(ListSandboxesRequest request) { } /** - * Starts a stopped Sandbox by atomically restoring the TerminatedSandbox tombstone to the active - * table in PENDING and re-running the provisioning workflow. The provisioning workflow's - * claimWarmPoolSandbox step re-mints the app_instance_name (deterministic from sandbox_id, so - * equal to the prior life's name). The tombstone's volume_id is preserved so the new AppInstance - * binds to the same backing device file. The restored sandbox gets a fresh uid and create_time. - * Returns NOT_FOUND if no tombstone exists for the given (workspace_id, sandbox_id) — the sandbox - * may not exist or may currently be active; clients can disambiguate via Get. + * Starts a previously stopped Sandbox under the same sandbox name. Returns NOT_FOUND if there is + * no stopped sandbox to start for the given name. */ public Sandbox startSandbox(StartSandboxRequest request) { return impl.startSandbox(request); } - /** - * Stops a Sandbox, terminating the sandbox while allowing future use of StartSandbox to - * re-provision the same Sandbox without re-creating a brand new one. Transitions the active row - * to TERMINATING with USER_REQUEST_STOP; the termination workflow settles to a TerminatedSandbox - * tombstone (no row drop) so the sandbox can later be restarted via StartSandbox. - */ + /** Stops a running Sandbox, preserving it so it can later be restarted with a Start request. */ public Sandbox stopSandbox(StopSandboxRequest request) { return impl.stopSandbox(request); } /** * Updates mutable fields on an existing Sandbox. Allowlisted update_mask paths today: - * metadata.display_name, spec.compute.inactivity_timeout. Returns INVALID_PARAMETER_VALUE for - * empty masks or unknown paths; NOT_FOUND if no active row or tombstone exists for the given - * sandbox. Concurrent-update conflicts surface as ABORTED via EStore OccConflict. + * display_name, spec.compute.inactivity_timeout. Returns INVALID_PARAMETER_VALUE for empty masks + * or unknown paths; NOT_FOUND if the sandbox does not exist. */ public Sandbox updateSandbox(UpdateSandboxRequest request) { return impl.updateSandbox(request); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java index 74284662a..387275b87 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java @@ -21,10 +21,7 @@ public interface SandboxService { /** * Runs a command in the sandbox and blocks until it exits, returning the captured stdout, stderr - * and exit code in a single response. Unary convenience variant of the streaming - * command-execution API for callers that only need a command's final result (e.g. `curl`, the - * SDK's `sandbox.exec`). The streaming `ExecuteCommand` RPC remains for interactive and - * long-running use. + * and exit code in a single response. */ ExecuteCommandSyncResponse executeCommandSync( ExecuteCommandSyncRequest executeCommandSyncRequest); @@ -36,29 +33,18 @@ ExecuteCommandSyncResponse executeCommandSync( ListSandboxesResponse listSandboxes(ListSandboxesRequest listSandboxesRequest); /** - * Starts a stopped Sandbox by atomically restoring the TerminatedSandbox tombstone to the active - * table in PENDING and re-running the provisioning workflow. The provisioning workflow's - * claimWarmPoolSandbox step re-mints the app_instance_name (deterministic from sandbox_id, so - * equal to the prior life's name). The tombstone's volume_id is preserved so the new AppInstance - * binds to the same backing device file. The restored sandbox gets a fresh uid and create_time. - * Returns NOT_FOUND if no tombstone exists for the given (workspace_id, sandbox_id) — the sandbox - * may not exist or may currently be active; clients can disambiguate via Get. + * Starts a previously stopped Sandbox under the same sandbox name. Returns NOT_FOUND if there is + * no stopped sandbox to start for the given name. */ Sandbox startSandbox(StartSandboxRequest startSandboxRequest); - /** - * Stops a Sandbox, terminating the sandbox while allowing future use of StartSandbox to - * re-provision the same Sandbox without re-creating a brand new one. Transitions the active row - * to TERMINATING with USER_REQUEST_STOP; the termination workflow settles to a TerminatedSandbox - * tombstone (no row drop) so the sandbox can later be restarted via StartSandbox. - */ + /** Stops a running Sandbox, preserving it so it can later be restarted with a Start request. */ Sandbox stopSandbox(StopSandboxRequest stopSandboxRequest); /** * Updates mutable fields on an existing Sandbox. Allowlisted update_mask paths today: - * metadata.display_name, spec.compute.inactivity_timeout. Returns INVALID_PARAMETER_VALUE for - * empty masks or unknown paths; NOT_FOUND if no active row or tombstone exists for the given - * sandbox. Concurrent-update conflicts surface as ABORTED via EStore OccConflict. + * display_name, spec.compute.inactivity_timeout. Returns INVALID_PARAMETER_VALUE for empty masks + * or unknown paths; NOT_FOUND if the sandbox does not exist. */ Sandbox updateSandbox(UpdateSandboxRequest updateSandboxRequest); } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java index 87f71a21c..a1b641e32 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java @@ -5,9 +5,9 @@ import com.databricks.sdk.support.Generated; /** - * Lifecycle state of a Sandbox resource. STOPPING is the transient state surfaced while a teardown - * (Stop, DeleteSandbox, auto-terminate, provisioning failure) is in flight but the sandbox row - * still exists; the row settles to STOPPED once the workflow finishes. + * Lifecycle state of a Sandbox resource. STOPPING is the transient state while the sandbox is being + * stopped -- by a Stop request or inactivity auto-termination -- and settles to STOPPED once the + * operation completes. */ @Generated public enum SandboxState { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java index 2bbe004e9..5eff79084 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java @@ -23,7 +23,7 @@ public class UpdateSandboxRequest { private Sandbox sandbox; /** - * Field paths to update. Must be a non-empty subset of: - metadata.display_name - + * Field paths to update. Must be a non-empty subset of: - display_name - * spec.compute.inactivity_timeout Any other path returns INVALID_PARAMETER_VALUE. */ @JsonIgnore