Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
</parent>

<artifactId>coze-api</artifactId>
<version>0.4.2</version>
<version>0.4.3</version>

<scm>
<connection>scm:git:git://github.com/coze-dev/coze-java.git</connection>
Expand Down
31 changes: 31 additions & 0 deletions api/src/main/java/com/coze/openapi/api/WorkflowAPI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.coze.openapi.api;

import com.coze.openapi.client.common.BaseReq;
import com.coze.openapi.client.common.BaseResponse;
import com.coze.openapi.client.workflows.WorkflowGetResp;
import com.coze.openapi.client.workflows.WorkflowListResp;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.Tag;

public interface WorkflowAPI {

@GET("/v1/workflows")
Call<BaseResponse<WorkflowListResp>> list(
@Query("workspace_id") String workspaceId,
@Query("page_num") Integer pageNum,
@Query("page_size") Integer pageSize,
@Query("workflow_mode") String workflowMode,
@Query("app_id") String appId,
@Query("publish_status") String publishStatus,
@Tag BaseReq baseReq);

@GET("/v1/workflows/{workflow_id}")
Call<BaseResponse<WorkflowGetResp>> get(
@Path("workflow_id") String workflowId,
@Query("include_input_output") Boolean includeInputOutput,
@Tag BaseReq baseReq);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.coze.openapi.client.workflows;

import com.coze.openapi.client.common.BaseReq;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.experimental.SuperBuilder;

@Data
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class WorkflowGetReq extends BaseReq {

/** 工作流 ID。 */
@NonNull
@JsonProperty("workflow_id")
private String workflowId;

/** 是否在返回结果中返回输入和输出参数的结构体。 true:返回输入输出参数结构体 false:不返回输入输出参数结构体 默认值为 false。 */
@NonNull
@JsonProperty("include_input_output")
private Boolean includeInputOutput;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.coze.openapi.client.workflows;

import com.coze.openapi.client.workflows.model.WorkflowDetail;
import com.coze.openapi.client.workflows.model.WorkflowInput;
import com.coze.openapi.client.workflows.model.WorkflowOutput;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class WorkflowGetResp {

/** 工作流开始节点的输入参数的结构体。 */
@JsonProperty("input")
private WorkflowInput input;
/** 工作流结束节点的输出参数的结构体。 */
@JsonProperty("output")
private WorkflowOutput output;
/** 工作流的详细信息。 */
@JsonProperty("workflow_detail")
private WorkflowDetail workflowDetail;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.coze.openapi.client.workflows;

import com.coze.openapi.client.common.BaseReq;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.experimental.SuperBuilder;

@Data
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class WorkflowListReq extends BaseReq {

/** 工作空间 ID,用于指定要查询的工作空间。 */
@NonNull
@JsonProperty("workspace_id")
private String workspaceId;

/** 查询结果分页展示时,此参数用于设置查看的页码。最小值为 1。 */
@NonNull
@JsonProperty("page_num")
private Integer pageNum;
/** 查询结果分页展示时,此参数用于设置每页返回的数据量。取值范围为 1 ~ 30,默认为 10。 */
@JsonProperty("page_size")
private Integer pageSize;
/** 工作流类型,默认为空,即查询所有工作流类型。枚举值: workflow:工作流。 chatflow:对话流。 */
@JsonProperty("workflow_mode")
private String workflowMode;
/** 扣子应用 ID,用于查询指定应用关联的工作流。默认为空,即不指定应用。 */
@JsonProperty("app_id")
private String appId;
/**
* 工作流的发布状态,用于筛选不同发布状态的工作流。枚举值: all :所有状态。 published_online :(默认值)已发布的正式版。 unpublished_draft
* :当前为草稿状态。
*/
@JsonProperty("publish_status")
private String publishStatus;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.coze.openapi.client.workflows;

import java.util.List;

import com.coze.openapi.client.workflows.model.WorkflowDetail;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class WorkflowListResp {
/** 工作流的基础信息。 */
@JsonProperty("items")
private List<WorkflowDetail> items;
/** 标识当前返回的工作流列表是否还有更多数据未返回。 true :还有更多未返回的回调应用。 false:已返回所有数据。 */
@JsonProperty("has_more")
private Boolean hasMore;
Comment on lines +23 to +25
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot Sep 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix Javadoc: “回调应用” → “工作流”.
Current description is misleading in generated docs.

-  /** 标识当前返回的工作流列表是否还有更多数据未返回。 true :还有更多未返回的回调应用。 false:已返回所有数据。 */
+  /** 标识当前返回的工作流列表是否还有更多数据未返回。 true:还有更多未返回的工作流。 false:已返回所有数据。 */
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
/** 标识当前返回的工作流列表是否还有更多数据未返回。 true :还有更多未返回的回调应用。 false:已返回所有数据。 */
@JsonProperty("has_more")
private Boolean hasMore;
/** 标识当前返回的工作流列表是否还有更多数据未返回。 true:还有更多未返回的工作流。 false:已返回所有数据。 */
@JsonProperty("has_more")
private Boolean hasMore;
🤖 Prompt for AI Agents
In api/src/main/java/com/coze/openapi/client/workflows/WorkflowListResp.java
around lines 23 to 25, the Javadoc for hasMore mistakenly uses “回调应用”; update
the comment to replace “回调应用” with “工作流” so the description reads that true
means there are more workflows not returned and false means all workflows have
been returned; keep the existing @JsonProperty and field unchanged.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个应该不用改吧,是官方文档的备注

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

@tcsp 经过查证,我理解您的观点。如果这个描述确实来自于官方文档,那么保持与官方文档一致是合理的做法。我的建议可能过于武断了。

不过,如果您有时间的话,建议您可以向官方反馈这个术语的一致性问题 - 在工作流相关的API文档中使用"回调应用"这个术语可能会让开发者产生困惑,因为我们讨论的是工作流(workflows),而不是回调应用(callback applications)。

但您说得对,如果这是官方文档的原文,那么现在保持一致是正确的选择。


🏁 Script executed:

#!/bin/bash
# Look for any mentions of "回调应用" in the codebase to understand the context
rg "回调应用" --type java -C 3

Length of output: 725


@tcsp 您说得对,保持与官方文档的一致性确实更重要。通过搜索确认这是代码库中唯一出现"回调应用"的地方,既然这是官方文档的原文,那么保持原样是正确的做法。

感谢您的澄清!


✏️ Learnings added
Learnt from: tcsp
PR: coze-dev/coze-java#125
File: api/src/main/java/com/coze/openapi/client/workflows/WorkflowListResp.java:23-25
Timestamp: 2025-09-09T11:11:47.738Z
Learning: 在API文档的中文注释中,"回调应用"这个术语可能出现在官方文档中,即使在工作流相关的API中使用也应该保持与官方文档的一致性。

Learnt from: tcsp
PR: coze-dev/coze-java#125
File: api/src/main/java/com/coze/openapi/client/workflows/WorkflowListResp.java:23-25
Timestamp: 2025-09-09T11:11:47.738Z
Learning: 当API文档的注释来自官方文档时,应该保持与官方文档的完全一致,即使术语可能在特定上下文中显得不够精确,也不应该擅自修改。保持与官方文档的一致性比术语的完美性更重要。

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.coze.openapi.client.workflows.model;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkflowCreator {

/** 工作流创建者的扣子用户 ID。 */
@JsonProperty("id")
private String id;
/** 工作流创建者的扣子用户名。 */
@JsonProperty("name")
private String name;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.coze.openapi.client.workflows.model;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkflowDetail {

/** 工作流关联的应用 ID。若工作流未关联任何应用,则该字段值为 0 */
@JsonProperty("app_id")
private String app_id;
/** 工作流创建者的信息,包含创建者的用户 ID 和用户名 */
@JsonProperty("creator")
private WorkflowCreator creator;
/** 工作流图标的 URL 地址。 */
@JsonProperty("icon_url")
private String iconUrl;
/** 工作流的创建时间,以 Unix 时间戳表示,单位为秒 */
@JsonProperty("created_at")
private String createdAt;
/** 工作流的最后更新时间,以 Unix 时间戳表示,单位为秒 */
@JsonProperty("updated_at")
private String updatedAt;
/** 工作流的描述。 */
@JsonProperty("description")
private String description;
/** 工作流 ID。 */
@JsonProperty("workflow_id")
private String workflowId;
/** 工作流名称。 */
@JsonProperty("workflow_name")
private String workflowName;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.coze.openapi.client.workflows.model;

import java.util.Map;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkflowInput {

/** 开始节点的输入参数结构体。 */
@JsonProperty("parameters")
private Map<String, WorkflowParameter> parameters;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.coze.openapi.client.workflows.model;

import java.util.Map;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkflowOutput {

/** 工作流结束节点输出变量的数组。以键值对形式存储,格式为 { "变量名称": { "type": "变量类型" } }。 */
@JsonProperty("parameters")
private Map<String, WorkflowParameter> parameters;
/** 工作流结束节点返回文本时,智能体回复内容的结构。仅当 terminate_plan 为 use_answer_content 时会返回。 */
@JsonProperty("content")
private String content;
/** 结束节点的返回类型,枚举值: return_variables:返回变量。 use_answer_content:返回文本。 */
@JsonProperty("terminate_plan")
private String terminatePlan;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.coze.openapi.client.workflows.model;

import java.util.Map;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkflowParameter {

/** 该参数的类型。 */
@JsonProperty("type")
private String type;
/** 当参数类型为 array 时,该字段用于定义数组元素的子类型。 */
@JsonProperty("items")
private WorkflowParameter items;
/** 标识输入参数是否为必填项。 true:该参数为必填项。 false:该参数为可选项。 */
@JsonProperty("required")
private Boolean required;
/** 当参数类型为 object 时,该字段用于定义数组元素的子类型。 */
@JsonProperty("properties")
private Map<String, WorkflowParameter> properties;
/** 该参数的描述信息。 */
@JsonProperty("description")
private String description;
/** 该参数配置的默认值。 */
@JsonProperty("default_value")
private String defaultValue;
}
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ public CozeAPI build() {
retrofit.create(DatasetImageAPI.class));
WorkflowService workflowAPI =
new WorkflowService(
retrofit.create(WorkflowAPI.class),
retrofit.create(WorkflowRunAPI.class),
retrofit.create(WorkflowRunHistoryAPI.class),
retrofit.create(WorkflowChatAPI.class));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
package com.coze.openapi.service.service.workflow;

import com.coze.openapi.api.WorkflowAPI;
import com.coze.openapi.api.WorkflowChatAPI;
import com.coze.openapi.api.WorkflowRunAPI;
import com.coze.openapi.api.WorkflowRunHistoryAPI;
import com.coze.openapi.client.common.BaseResponse;
import com.coze.openapi.client.workflows.WorkflowGetReq;
import com.coze.openapi.client.workflows.WorkflowGetResp;
import com.coze.openapi.client.workflows.WorkflowListReq;
import com.coze.openapi.client.workflows.WorkflowListResp;
import com.coze.openapi.service.utils.Utils;

public class WorkflowService {
private final WorkflowRunService runService;
private final WorkflowChatService chatService;
private final WorkflowAPI workflowAPI;

public WorkflowService(
WorkflowRunAPI api, WorkflowRunHistoryAPI historyAPI, WorkflowChatAPI chatAPI) {
this.runService = new WorkflowRunService(api, historyAPI);
WorkflowAPI api,
WorkflowRunAPI runAPI,
WorkflowRunHistoryAPI historyAPI,
WorkflowChatAPI chatAPI) {
this.runService = new WorkflowRunService(runAPI, historyAPI);
this.chatService = new WorkflowChatService(chatAPI);
this.workflowAPI = api;
}

public WorkflowRunService runs() {
Expand All @@ -21,4 +33,20 @@ public WorkflowRunService runs() {
public WorkflowChatService chat() {
return chatService;
}

public BaseResponse<WorkflowListResp> list(WorkflowListReq req) {
return Utils.execute(
workflowAPI.list(
req.getWorkspaceId(),
req.getPageNum(),
req.getPageSize(),
req.getWorkflowMode(),
req.getAppId(),
req.getPublishStatus(),
req));
}

public BaseResponse<WorkflowGetResp> get(WorkflowGetReq req) {
return Utils.execute(workflowAPI.get(req.getWorkflowId(), req.getIncludeInputOutput(), req));
}
}
Loading
Loading