package com.muse.dto; import java.net.URI; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; import org.springframework.lang.Nullable; import java.io.Serializable; import java.time.OffsetDateTime; import jakarta.validation.Valid; import jakarta.validation.constraints.*; import io.swagger.v3.oas.annotations.media.Schema; import java.util.*; import jakarta.annotation.Generated; /** * 发布草稿请求 */ @Schema(name = "PublishDraftRequest", description = "发布草稿请求") @Generated(value = "org.openapitools.codegen.languages.SpringCodegen", date = "2026-05-24T16:47:40.290595+08:00[Asia/Shanghai]", comments = "Generator version: 7.22.0") public class PublishDraftRequest implements Serializable { private static final long serialVersionUID = 1L; /** * 资产类型 */ public enum AssetTypeEnum { WORK("work"), AGENT("agent"), KNOWLEDGE_BASE("knowledge_base"); private final String value; AssetTypeEnum(String value) { this.value = value; } @JsonValue public String getValue() { return value; } @Override public String toString() { return String.valueOf(value); } @JsonCreator public static AssetTypeEnum fromValue(String value) { for (AssetTypeEnum b : AssetTypeEnum.values()) { if (b.value.equals(value)) { return b; } } throw new IllegalArgumentException("Unexpected value '" + value + "'"); } } private AssetTypeEnum assetType; private UUID sourceId; private String name; private @Nullable String summary; private @Nullable String description; private @Nullable UUID categoryId; private @Nullable String licenseType; @Valid private List allowedUses = new ArrayList<>(); @Valid private List prohibitedUses = new ArrayList<>(); private @Nullable URI coverImageUrl; @Valid private List tags = new ArrayList<>(); private @Nullable String rightsDeclaration; private @Nullable String externalOrderRef; /** * 作品资产发布模式。当前 gate 未完成,默认且唯一可直接开放的是 read_only_favorite_license;full/reference/context_use 必须经后续 owner gate 和市场审核显式放开。 */ public enum WorkAssetModeEnum { READ_ONLY_FAVORITE_LICENSE("read_only_favorite_license"), FULL("full"), REFERENCE("reference"), CONTEXT_USE("context_use"); private final String value; WorkAssetModeEnum(String value) { this.value = value; } @JsonValue public String getValue() { return value; } @Override public String toString() { return String.valueOf(value); } @JsonCreator public static WorkAssetModeEnum fromValue(String value) { for (WorkAssetModeEnum b : WorkAssetModeEnum.values()) { if (b.value.equals(value)) { return b; } } throw new IllegalArgumentException("Unexpected value '" + value + "'"); } } private WorkAssetModeEnum workAssetMode = WorkAssetModeEnum.READ_ONLY_FAVORITE_LICENSE; public PublishDraftRequest() { super(); } /** * Constructor with only required parameters */ public PublishDraftRequest(AssetTypeEnum assetType, UUID sourceId, String name) { this.assetType = assetType; this.sourceId = sourceId; this.name = name; } public PublishDraftRequest assetType(AssetTypeEnum assetType) { this.assetType = assetType; return this; } /** * 资产类型 * @return assetType */ @NotNull @Schema(name = "assetType", description = "资产类型", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("assetType") public AssetTypeEnum getAssetType() { return assetType; } @JsonProperty("assetType") public void setAssetType(AssetTypeEnum assetType) { this.assetType = assetType; } public PublishDraftRequest sourceId(UUID sourceId) { this.sourceId = sourceId; return this; } /** * 来源对象 ID(作品/智能体/知识库) * @return sourceId */ @NotNull @Valid @Schema(name = "sourceId", description = "来源对象 ID(作品/智能体/知识库)", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("sourceId") public UUID getSourceId() { return sourceId; } @JsonProperty("sourceId") public void setSourceId(UUID sourceId) { this.sourceId = sourceId; } public PublishDraftRequest name(String name) { this.name = name; return this; } /** * 市场展示标题 * @return name */ @NotNull @Size(max = 200) @Schema(name = "name", description = "市场展示标题", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("name") public String getName() { return name; } @JsonProperty("name") public void setName(String name) { this.name = name; } public PublishDraftRequest summary(@Nullable String summary) { this.summary = summary; return this; } /** * 市场展示摘要 * @return summary */ @Size(max = 500) @Schema(name = "summary", description = "市场展示摘要", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("summary") public @Nullable String getSummary() { return summary; } @JsonProperty("summary") public void setSummary(@Nullable String summary) { this.summary = summary; } public PublishDraftRequest description(@Nullable String description) { this.description = description; return this; } /** * Get description * @return description */ @Size(max = 5000) @Schema(name = "description", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("description") public @Nullable String getDescription() { return description; } @JsonProperty("description") public void setDescription(@Nullable String description) { this.description = description; } public PublishDraftRequest categoryId(@Nullable UUID categoryId) { this.categoryId = categoryId; return this; } /** * Get categoryId * @return categoryId */ @Valid @Schema(name = "categoryId", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("categoryId") public @Nullable UUID getCategoryId() { return categoryId; } @JsonProperty("categoryId") public void setCategoryId(@Nullable UUID categoryId) { this.categoryId = categoryId; } public PublishDraftRequest licenseType(@Nullable String licenseType) { this.licenseType = licenseType; return this; } /** * 许可类型 * @return licenseType */ @Schema(name = "licenseType", description = "许可类型", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("licenseType") public @Nullable String getLicenseType() { return licenseType; } @JsonProperty("licenseType") public void setLicenseType(@Nullable String licenseType) { this.licenseType = licenseType; } public PublishDraftRequest allowedUses(List allowedUses) { this.allowedUses = allowedUses; return this; } public PublishDraftRequest addAllowedUsesItem(String allowedUsesItem) { if (this.allowedUses == null) { this.allowedUses = new ArrayList<>(); } this.allowedUses.add(allowedUsesItem); return this; } /** * Get allowedUses * @return allowedUses */ @Schema(name = "allowedUses", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("allowedUses") public List getAllowedUses() { return allowedUses; } @JsonProperty("allowedUses") public void setAllowedUses(List allowedUses) { this.allowedUses = allowedUses; } public PublishDraftRequest prohibitedUses(List prohibitedUses) { this.prohibitedUses = prohibitedUses; return this; } public PublishDraftRequest addProhibitedUsesItem(String prohibitedUsesItem) { if (this.prohibitedUses == null) { this.prohibitedUses = new ArrayList<>(); } this.prohibitedUses.add(prohibitedUsesItem); return this; } /** * Get prohibitedUses * @return prohibitedUses */ @Schema(name = "prohibitedUses", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("prohibitedUses") public List getProhibitedUses() { return prohibitedUses; } @JsonProperty("prohibitedUses") public void setProhibitedUses(List prohibitedUses) { this.prohibitedUses = prohibitedUses; } public PublishDraftRequest coverImageUrl(@Nullable URI coverImageUrl) { this.coverImageUrl = coverImageUrl; return this; } /** * Get coverImageUrl * @return coverImageUrl */ @Valid @Schema(name = "coverImageUrl", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("coverImageUrl") public @Nullable URI getCoverImageUrl() { return coverImageUrl; } @JsonProperty("coverImageUrl") public void setCoverImageUrl(@Nullable URI coverImageUrl) { this.coverImageUrl = coverImageUrl; } public PublishDraftRequest tags(List tags) { this.tags = tags; return this; } public PublishDraftRequest addTagsItem(String tagsItem) { if (this.tags == null) { this.tags = new ArrayList<>(); } this.tags.add(tagsItem); return this; } /** * Get tags * @return tags */ @Schema(name = "tags", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("tags") public List getTags() { return tags; } @JsonProperty("tags") public void setTags(List tags) { this.tags = tags; } public PublishDraftRequest rightsDeclaration(@Nullable String rightsDeclaration) { this.rightsDeclaration = rightsDeclaration; return this; } /** * 权利声明 * @return rightsDeclaration */ @Schema(name = "rightsDeclaration", description = "权利声明", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("rightsDeclaration") public @Nullable String getRightsDeclaration() { return rightsDeclaration; } @JsonProperty("rightsDeclaration") public void setRightsDeclaration(@Nullable String rightsDeclaration) { this.rightsDeclaration = rightsDeclaration; } public PublishDraftRequest externalOrderRef(@Nullable String externalOrderRef) { this.externalOrderRef = externalOrderRef; return this; } /** * 外部订单引用规则 * @return externalOrderRef */ @Schema(name = "externalOrderRef", description = "外部订单引用规则", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("externalOrderRef") public @Nullable String getExternalOrderRef() { return externalOrderRef; } @JsonProperty("externalOrderRef") public void setExternalOrderRef(@Nullable String externalOrderRef) { this.externalOrderRef = externalOrderRef; } public PublishDraftRequest workAssetMode(WorkAssetModeEnum workAssetMode) { this.workAssetMode = workAssetMode; return this; } /** * 作品资产发布模式。当前 gate 未完成,默认且唯一可直接开放的是 read_only_favorite_license;full/reference/context_use 必须经后续 owner gate 和市场审核显式放开。 * @return workAssetMode */ @Schema(name = "workAssetMode", description = "作品资产发布模式。当前 gate 未完成,默认且唯一可直接开放的是 read_only_favorite_license;full/reference/context_use 必须经后续 owner gate 和市场审核显式放开。", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @JsonProperty("workAssetMode") public WorkAssetModeEnum getWorkAssetMode() { return workAssetMode; } @JsonProperty("workAssetMode") public void setWorkAssetMode(WorkAssetModeEnum workAssetMode) { this.workAssetMode = workAssetMode; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } PublishDraftRequest publishDraftRequest = (PublishDraftRequest) o; return Objects.equals(this.assetType, publishDraftRequest.assetType) && Objects.equals(this.sourceId, publishDraftRequest.sourceId) && Objects.equals(this.name, publishDraftRequest.name) && Objects.equals(this.summary, publishDraftRequest.summary) && Objects.equals(this.description, publishDraftRequest.description) && Objects.equals(this.categoryId, publishDraftRequest.categoryId) && Objects.equals(this.licenseType, publishDraftRequest.licenseType) && Objects.equals(this.allowedUses, publishDraftRequest.allowedUses) && Objects.equals(this.prohibitedUses, publishDraftRequest.prohibitedUses) && Objects.equals(this.coverImageUrl, publishDraftRequest.coverImageUrl) && Objects.equals(this.tags, publishDraftRequest.tags) && Objects.equals(this.rightsDeclaration, publishDraftRequest.rightsDeclaration) && Objects.equals(this.externalOrderRef, publishDraftRequest.externalOrderRef) && Objects.equals(this.workAssetMode, publishDraftRequest.workAssetMode); } @Override public int hashCode() { return Objects.hash(assetType, sourceId, name, summary, description, categoryId, licenseType, allowedUses, prohibitedUses, coverImageUrl, tags, rightsDeclaration, externalOrderRef, workAssetMode); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class PublishDraftRequest {\n"); sb.append(" assetType: ").append(toIndentedString(assetType)).append("\n"); sb.append(" sourceId: ").append(toIndentedString(sourceId)).append("\n"); sb.append(" name: ").append(toIndentedString(name)).append("\n"); sb.append(" summary: ").append(toIndentedString(summary)).append("\n"); sb.append(" description: ").append(toIndentedString(description)).append("\n"); sb.append(" categoryId: ").append(toIndentedString(categoryId)).append("\n"); sb.append(" licenseType: ").append(toIndentedString(licenseType)).append("\n"); sb.append(" allowedUses: ").append(toIndentedString(allowedUses)).append("\n"); sb.append(" prohibitedUses: ").append(toIndentedString(prohibitedUses)).append("\n"); sb.append(" coverImageUrl: ").append(toIndentedString(coverImageUrl)).append("\n"); sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); sb.append(" rightsDeclaration: ").append(toIndentedString(rightsDeclaration)).append("\n"); sb.append(" externalOrderRef: ").append(toIndentedString(externalOrderRef)).append("\n"); sb.append(" workAssetMode: ").append(toIndentedString(workAssetMode)).append("\n"); sb.append("}"); return sb.toString(); } /** * Convert the given object to string with each line indented by 4 spaces * (except the first line). */ private String toIndentedString(@Nullable Object o) { return o == null ? "null" : o.toString().replace("\n", "\n "); } }