diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index d958f5252..aa3fd42b8 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -317c6fb80e22965f39e7a663baa6e51357851cf9 \ No newline at end of file +bdcf87be18a50844ff451dc6831ee53eb37fd1b5 \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index d1ec58012..b3d5dc5c7 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 @@ -2208,9 +2220,11 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/BackfillSource.j databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/BatchCreateMaterializedFeaturesRequest.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/BatchCreateMaterializedFeaturesResponse.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CancelOperationRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ColumnIdentifier.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ColumnSelection.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CommentActivityAction.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CommentObject.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ContinuousWindow.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CountFunction.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CreateComment.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/CreateCommentResponse.java linguist-generated=true @@ -2310,6 +2324,8 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ForecastingExper databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ForecastingImpl.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ForecastingService.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Function.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionExtraParameter.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionFunctionType.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/GetByNameRequest.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/GetExperimentByNameResponse.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/GetExperimentPermissionLevelsRequest.java linguist-generated=true diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index a89c8ee07..184842a82 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -21,4 +21,13 @@ * 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 `entityColumns` and `timeseriesColumn` fields for `com.databricks.sdk.service.ml.DeltaTableSource`. +* Add `filterCondition`, `inputs` and `timeWindow` fields for `com.databricks.sdk.service.ml.Feature`. +* Add `extraParameters` and `functionType` fields for `com.databricks.sdk.service.ml.Function`. +* Add `entityColumnIdentifiers` and `timeseriesColumnIdentifier` fields for `com.databricks.sdk.service.ml.KafkaSource`. +* Add `cronSchedule` field for `com.databricks.sdk.service.ml.MaterializedFeature`. +* Add `fullFeatureName` field for `com.databricks.sdk.service.ml.PublishSpec`. +* Add `continuous` field for `com.databricks.sdk.service.ml.TimeWindow`. \ 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/ColumnIdentifier.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ColumnIdentifier.java new file mode 100644 index 000000000..61b7e07b0 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ColumnIdentifier.java @@ -0,0 +1,44 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.ml; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +@Generated +public class ColumnIdentifier { + /** String representation of the column name using dot-prefixed path notation. */ + @JsonProperty("variant_expr_path") + private String variantExprPath; + + public ColumnIdentifier setVariantExprPath(String variantExprPath) { + this.variantExprPath = variantExprPath; + return this; + } + + public String getVariantExprPath() { + return variantExprPath; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ColumnIdentifier that = (ColumnIdentifier) o; + return Objects.equals(variantExprPath, that.variantExprPath); + } + + @Override + public int hashCode() { + return Objects.hash(variantExprPath); + } + + @Override + public String toString() { + return new ToStringer(ColumnIdentifier.class) + .add("variantExprPath", variantExprPath) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ContinuousWindow.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ContinuousWindow.java new file mode 100644 index 000000000..52cea43c3 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/ContinuousWindow.java @@ -0,0 +1,59 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.ml; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +@Generated +public class ContinuousWindow { + /** The offset of the continuous window (must be non-positive). */ + @JsonProperty("offset") + private String offset; + + /** The duration of the continuous window (must be positive). */ + @JsonProperty("window_duration") + private String windowDuration; + + public ContinuousWindow setOffset(String offset) { + this.offset = offset; + return this; + } + + public String getOffset() { + return offset; + } + + public ContinuousWindow setWindowDuration(String windowDuration) { + this.windowDuration = windowDuration; + return this; + } + + public String getWindowDuration() { + return windowDuration; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ContinuousWindow that = (ContinuousWindow) o; + return Objects.equals(offset, that.offset) + && Objects.equals(windowDuration, that.windowDuration); + } + + @Override + public int hashCode() { + return Objects.hash(offset, windowDuration); + } + + @Override + public String toString() { + return new ToStringer(ContinuousWindow.class) + .add("offset", offset) + .add("windowDuration", windowDuration) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/DeltaTableSource.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/DeltaTableSource.java index e0c86b2ea..b6278e0c8 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/DeltaTableSource.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/DeltaTableSource.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.Collection; import java.util.Objects; @Generated @@ -17,6 +18,10 @@ public class DeltaTableSource { @JsonProperty("dataframe_schema") private String dataframeSchema; + /** */ + @JsonProperty("entity_columns") + private Collection entityColumns; + /** * Single WHERE clause to filter delta table before applying transformations. Will be row-wise * evaluated, so should only include conditionals and projections. @@ -28,6 +33,10 @@ public class DeltaTableSource { @JsonProperty("full_name") private String fullName; + /** */ + @JsonProperty("timeseries_column") + private String timeseriesColumn; + /** * A single SQL SELECT expression applied after filter_condition. Should contains all the columns * needed (eg. "SELECT *, col_a + col_b AS col_c FROM x.y.z WHERE col_a > 0" would have @@ -46,6 +55,15 @@ public String getDataframeSchema() { return dataframeSchema; } + public DeltaTableSource setEntityColumns(Collection entityColumns) { + this.entityColumns = entityColumns; + return this; + } + + public Collection getEntityColumns() { + return entityColumns; + } + public DeltaTableSource setFilterCondition(String filterCondition) { this.filterCondition = filterCondition; return this; @@ -64,6 +82,15 @@ public String getFullName() { return fullName; } + public DeltaTableSource setTimeseriesColumn(String timeseriesColumn) { + this.timeseriesColumn = timeseriesColumn; + return this; + } + + public String getTimeseriesColumn() { + return timeseriesColumn; + } + public DeltaTableSource setTransformationSql(String transformationSql) { this.transformationSql = transformationSql; return this; @@ -79,22 +106,32 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; DeltaTableSource that = (DeltaTableSource) o; return Objects.equals(dataframeSchema, that.dataframeSchema) + && Objects.equals(entityColumns, that.entityColumns) && Objects.equals(filterCondition, that.filterCondition) && Objects.equals(fullName, that.fullName) + && Objects.equals(timeseriesColumn, that.timeseriesColumn) && Objects.equals(transformationSql, that.transformationSql); } @Override public int hashCode() { - return Objects.hash(dataframeSchema, filterCondition, fullName, transformationSql); + return Objects.hash( + dataframeSchema, + entityColumns, + filterCondition, + fullName, + timeseriesColumn, + transformationSql); } @Override public String toString() { return new ToStringer(DeltaTableSource.class) .add("dataframeSchema", dataframeSchema) + .add("entityColumns", entityColumns) .add("filterCondition", filterCondition) .add("fullName", fullName) + .add("timeseriesColumn", timeseriesColumn) .add("transformationSql", transformationSql) .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..681ba5b75 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 @@ -31,6 +31,10 @@ public class Feature { @JsonProperty("entities") private Collection entities; + /** */ + @JsonProperty("filter_condition") + private String filterCondition; + /** * The full three-part name (catalog, schema, name) of the feature. This is the feature's resource * identifier; the catalog_name, schema_name, and name fields below are OUTPUT_ONLY decomposed @@ -43,6 +47,10 @@ public class Feature { @JsonProperty("function") private Function function; + /** */ + @JsonProperty("inputs") + private Collection inputs; + /** * Lineage context information for this feature. WARNING: This field is primarily intended for * internal use by Databricks systems and is automatically populated when features are created @@ -65,6 +73,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; @@ -114,6 +126,15 @@ public Collection getEntities() { return entities; } + public Feature setFilterCondition(String filterCondition) { + this.filterCondition = filterCondition; + return this; + } + + public String getFilterCondition() { + return filterCondition; + } + public Feature setFullName(String fullName) { this.fullName = fullName; return this; @@ -132,6 +153,15 @@ public Function getFunction() { return function; } + public Feature setInputs(Collection inputs) { + this.inputs = inputs; + return this; + } + + public Collection getInputs() { + return inputs; + } + public Feature setLineageContext(LineageContext lineageContext) { this.lineageContext = lineageContext; return this; @@ -168,6 +198,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; @@ -187,12 +226,15 @@ public boolean equals(Object o) { && Objects.equals(createdBy, that.createdBy) && Objects.equals(description, that.description) && Objects.equals(entities, that.entities) + && Objects.equals(filterCondition, that.filterCondition) && Objects.equals(fullName, that.fullName) && Objects.equals(function, that.function) + && Objects.equals(inputs, that.inputs) && Objects.equals(lineageContext, that.lineageContext) && 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); } @@ -204,12 +246,15 @@ public int hashCode() { createdBy, description, entities, + filterCondition, fullName, function, + inputs, lineageContext, name, schemaName, source, + timeWindow, timeseriesColumn); } @@ -221,12 +266,15 @@ public String toString() { .add("createdBy", createdBy) .add("description", description) .add("entities", entities) + .add("filterCondition", filterCondition) .add("fullName", fullName) .add("function", function) + .add("inputs", inputs) .add("lineageContext", lineageContext) .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/Function.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Function.java index 972b75360..5c3d24691 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Function.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/Function.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.Collection; import java.util.Objects; @Generated @@ -21,6 +22,14 @@ public class Function { @JsonProperty("custom_udf") private CustomUdf customUdf; + /** */ + @JsonProperty("extra_parameters") + private Collection extraParameters; + + /** */ + @JsonProperty("function_type") + private FunctionFunctionType functionType; + public Function setAggregationFunction(AggregationFunction aggregationFunction) { this.aggregationFunction = aggregationFunction; return this; @@ -48,6 +57,24 @@ public CustomUdf getCustomUdf() { return customUdf; } + public Function setExtraParameters(Collection extraParameters) { + this.extraParameters = extraParameters; + return this; + } + + public Collection getExtraParameters() { + return extraParameters; + } + + public Function setFunctionType(FunctionFunctionType functionType) { + this.functionType = functionType; + return this; + } + + public FunctionFunctionType getFunctionType() { + return functionType; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -55,12 +82,15 @@ public boolean equals(Object o) { Function that = (Function) o; return Objects.equals(aggregationFunction, that.aggregationFunction) && Objects.equals(columnSelection, that.columnSelection) - && Objects.equals(customUdf, that.customUdf); + && Objects.equals(customUdf, that.customUdf) + && Objects.equals(extraParameters, that.extraParameters) + && Objects.equals(functionType, that.functionType); } @Override public int hashCode() { - return Objects.hash(aggregationFunction, columnSelection, customUdf); + return Objects.hash( + aggregationFunction, columnSelection, customUdf, extraParameters, functionType); } @Override @@ -69,6 +99,8 @@ public String toString() { .add("aggregationFunction", aggregationFunction) .add("columnSelection", columnSelection) .add("customUdf", customUdf) + .add("extraParameters", extraParameters) + .add("functionType", functionType) .toString(); } } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionExtraParameter.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionExtraParameter.java new file mode 100644 index 000000000..7e8b864dd --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionExtraParameter.java @@ -0,0 +1,58 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.ml; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +@Generated +public class FunctionExtraParameter { + /** The name of the parameter. */ + @JsonProperty("key") + private String key; + + /** The value of the parameter. */ + @JsonProperty("value") + private String value; + + public FunctionExtraParameter setKey(String key) { + this.key = key; + return this; + } + + public String getKey() { + return key; + } + + public FunctionExtraParameter setValue(String value) { + this.value = value; + return this; + } + + public String getValue() { + return value; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + FunctionExtraParameter that = (FunctionExtraParameter) o; + return Objects.equals(key, that.key) && Objects.equals(value, that.value); + } + + @Override + public int hashCode() { + return Objects.hash(key, value); + } + + @Override + public String toString() { + return new ToStringer(FunctionExtraParameter.class) + .add("key", key) + .add("value", value) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionFunctionType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionFunctionType.java new file mode 100644 index 000000000..51772e360 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/FunctionFunctionType.java @@ -0,0 +1,23 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.ml; + +import com.databricks.sdk.support.Generated; + +@Generated +public enum FunctionFunctionType { + APPROX_COUNT_DISTINCT, + APPROX_PERCENTILE, + AVG, + COUNT, + FIRST, + FUNCTION_TYPE_UNSPECIFIED, + LAST, + MAX, + MIN, + STDDEV_POP, + STDDEV_SAMP, + SUM, + VAR_POP, + VAR_SAMP, +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/KafkaSource.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/KafkaSource.java index 0efd764ca..d34af0126 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/KafkaSource.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/KafkaSource.java @@ -5,10 +5,15 @@ 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 KafkaSource { + /** */ + @JsonProperty("entity_column_identifiers") + private Collection entityColumnIdentifiers; + /** The filter condition applied to the source data before aggregation. */ @JsonProperty("filter_condition") private String filterCondition; @@ -20,6 +25,20 @@ public class KafkaSource { @JsonProperty("name") private String name; + /** */ + @JsonProperty("timeseries_column_identifier") + private ColumnIdentifier timeseriesColumnIdentifier; + + public KafkaSource setEntityColumnIdentifiers( + Collection entityColumnIdentifiers) { + this.entityColumnIdentifiers = entityColumnIdentifiers; + return this; + } + + public Collection getEntityColumnIdentifiers() { + return entityColumnIdentifiers; + } + public KafkaSource setFilterCondition(String filterCondition) { this.filterCondition = filterCondition; return this; @@ -38,24 +57,38 @@ public String getName() { return name; } + public KafkaSource setTimeseriesColumnIdentifier(ColumnIdentifier timeseriesColumnIdentifier) { + this.timeseriesColumnIdentifier = timeseriesColumnIdentifier; + return this; + } + + public ColumnIdentifier getTimeseriesColumnIdentifier() { + return timeseriesColumnIdentifier; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; KafkaSource that = (KafkaSource) o; - return Objects.equals(filterCondition, that.filterCondition) && Objects.equals(name, that.name); + return Objects.equals(entityColumnIdentifiers, that.entityColumnIdentifiers) + && Objects.equals(filterCondition, that.filterCondition) + && Objects.equals(name, that.name) + && Objects.equals(timeseriesColumnIdentifier, that.timeseriesColumnIdentifier); } @Override public int hashCode() { - return Objects.hash(filterCondition, name); + return Objects.hash(entityColumnIdentifiers, filterCondition, name, timeseriesColumnIdentifier); } @Override public String toString() { return new ToStringer(KafkaSource.class) + .add("entityColumnIdentifiers", entityColumnIdentifiers) .add("filterCondition", filterCondition) .add("name", name) + .add("timeseriesColumnIdentifier", timeseriesColumnIdentifier) .toString(); } } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java index 617c4356b..1cce14b03 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java @@ -10,6 +10,10 @@ /** A materialized feature represents a feature that is continuously computed and stored. */ @Generated public class MaterializedFeature { + /** */ + @JsonProperty("cron_schedule") + private String cronSchedule; + /** A cron-based schedule trigger for the materialization pipeline. */ @JsonProperty("cron_schedule_trigger") private CronSchedule cronScheduleTrigger; @@ -76,6 +80,15 @@ public class MaterializedFeature { @JsonProperty("table_trigger") private TableTrigger tableTrigger; + public MaterializedFeature setCronSchedule(String cronSchedule) { + this.cronSchedule = cronSchedule; + return this; + } + + public String getCronSchedule() { + return cronSchedule; + } + public MaterializedFeature setCronScheduleTrigger(CronSchedule cronScheduleTrigger) { this.cronScheduleTrigger = cronScheduleTrigger; return this; @@ -190,7 +203,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MaterializedFeature that = (MaterializedFeature) o; - return Objects.equals(cronScheduleTrigger, that.cronScheduleTrigger) + return Objects.equals(cronSchedule, that.cronSchedule) + && Objects.equals(cronScheduleTrigger, that.cronScheduleTrigger) && Objects.equals(featureName, that.featureName) && Objects.equals(isOnline, that.isOnline) && Objects.equals(lastMaterializationTime, that.lastMaterializationTime) @@ -207,6 +221,7 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + cronSchedule, cronScheduleTrigger, featureName, isOnline, @@ -224,6 +239,7 @@ public int hashCode() { @Override public String toString() { return new ToStringer(MaterializedFeature.class) + .add("cronSchedule", cronSchedule) .add("cronScheduleTrigger", cronScheduleTrigger) .add("featureName", featureName) .add("isOnline", isOnline) 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/ml/TimeWindow.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java index b5b22d38a..b94cb077a 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java @@ -10,6 +10,10 @@ @Generated public class TimeWindow { + /** */ + @JsonProperty("continuous") + private ContinuousWindow continuous; + /** */ @JsonProperty("rolling") private RollingWindow rolling; @@ -39,6 +43,15 @@ public class TimeWindow { @JsonProperty("tumbling") private TumblingWindow tumbling; + public TimeWindow setContinuous(ContinuousWindow continuous) { + this.continuous = continuous; + return this; + } + + public ContinuousWindow getContinuous() { + return continuous; + } + public TimeWindow setRolling(RollingWindow rolling) { this.rolling = rolling; return this; @@ -89,7 +102,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TimeWindow that = (TimeWindow) o; - return Objects.equals(rolling, that.rolling) + return Objects.equals(continuous, that.continuous) + && Objects.equals(rolling, that.rolling) && Objects.equals(sawtooth, that.sawtooth) && Objects.equals(sliding, that.sliding) && Objects.equals(startTime, that.startTime) @@ -98,12 +112,13 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(rolling, sawtooth, sliding, startTime, tumbling); + return Objects.hash(continuous, rolling, sawtooth, sliding, startTime, tumbling); } @Override public String toString() { return new ToStringer(TimeWindow.class) + .add("continuous", continuous) .add("rolling", rolling) .add("sawtooth", sawtooth) .add("sliding", sliding) 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..944b7eb0e 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 @@ -18,12 +18,7 @@ public class ExecuteCommandSyncRequest { @JsonProperty("args") private Collection args; - /** - * 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. - */ + /** Executable or command to run (e.g. `/bin/echo`, `python3`). */ @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..622178a40 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). - */ + /** Human-readable display label for the sandbox. 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