Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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

@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
Author

Choose a reason for hiding this comment

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

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

Copy link

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