能否通过ACC API获取模板项目成员数?及确认成员添加完成的替代方案
背景
我正在开发基于模板工作流的ACC项目创建自动化程序,核心需求是自动同步模板中的项目成员到新项目。目前采用的逻辑是通过添加项目管理员触发模板成员自动同步,但遇到成员同步延迟(2-18分钟)以及边缘场景判断失效的问题:当模板没有项目成员时,"新项目用户数超过1"的判断逻辑永远无法完成。
尝试过通过GET projects接口带filter[classification] == template参数轮询模板,但返回的memberCount对应的是Template Configuration Members(模板配置成员)的数量,而非需要同步的Template Project Members(模板项目成员)。
问题1:能否通过API获取Template Project Members的数量?
可以。ACC的模板本质上是classification为template的项目,因此可调用项目用户列表接口获取模板的项目成员:
GET /project/v1/hubs/{hubId}/projects/{templateProjectId}/users
这个接口返回的列表就是模板UI"成员"标签页下管理的Template Project Members,直接统计列表长度即可得到该类成员的数量。
注意:需确保请求权限包含project:read或更高权限,同时要区分模板的配置成员(通过模板权限接口获取)和项目成员(上述接口)。
问题2:确认成员同步完成的替代方案
针对同步延迟和边缘场景的问题,推荐以下两种可靠方案:
方案1:精准匹配用户列表(最可靠)
- 预获取模板项目成员:调用上述模板用户接口,记录所有需要同步的用户ID列表(若为空则直接判定同步完成)。
- 轮询新项目用户列表:定期调用新项目的用户接口:
GET /project/v1/hubs/{hubId}/projects/{newProjectId}/users - 校验匹配度:检查新项目的用户ID列表是否完全包含模板的项目成员ID列表。若完全匹配,则判定同步完成;若超过设定的最大等待时长(如20分钟)仍未匹配,则判定同步失败。
该方案能覆盖所有场景,包括模板无项目成员的边缘情况。
方案2:结合Webhook事件监听(适合长期服务)
配置ACC的Webhook,监听新项目的project.user.added事件。当所有模板项目成员对应的事件都触发后,判定同步完成。这种方式无需轮询,效率更高,但需要提前配置Webhook并处理事件去重(避免重复触发)。
补充建议
- 轮询时需遵守ACC API的速率限制,建议设置30-60秒的间隔。
- 增加超时机制,避免无限等待。
内容的提问来源于stack exchange,提问作者Brad Williams

