PuppyIP 资源中心
AI 工具动态 6 分钟 发布于 2026-11-11

GitHub App 可以管理企业 Copilot 席位了:权限、分配与取消步骤

Enterprise GitHub App 现在可以通过企业级 API 管理 Copilot 用户及企业团队的席位。GitHub 11 月 10 日的变更说明新增了 Enterprise Copilot license management 权限;当前 REST 文档仍将接口标为公开预览。接入前先区分只读盘点与会产生计费变化的分配操作。

GitHub Copilot GitHub App 企业席位 REST API 权限管理

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • 企业级接口支持 GitHub App user access token 和 installation access token;专用权限的 read 用于查询,write 用于分配或取消。
  • 用户分配使用 selected_usernames;企业团队分配使用 selected_enterprise_teams,不能直接套用组织级团队参数。
  • 新增席位属于购买操作,会按企业订阅计费;App 获得 API 权限不等于账号已满足订阅、账单和策略条件。
  • 取消通常先进入 pending cancellation,在当前账单周期结束时失去相应访问权;其他团队或组织提供的访问路径仍需分别核对。

这次开放了什么,适用于谁?

GitHub 的 2026 年 11 月 10 日变更说明确认,Enterprise GitHub Apps 可以调用企业级 Copilot 席位管理 API,控制哪些用户和企业团队获得席位,并使用新的企业细粒度权限 Enterprise Copilot license management。它解决的是企业许可证分配,不是用量报表或代码审查预算设置。

REST 文档列出的企业席位查询适用于具有 Copilot Business 或 Copilot Enterprise 订阅的企业,接口目前仍为 public preview,可能变化。不能将这项支持推及个人套餐、所有组织级 API 或 GitHub Enterprise Server;实现时应核对对应部署环境的文档。

文档规定,企业所有者可以购买或取消企业成员的席位;企业所有者与账单管理员可以查看跨子组织、企业团队的席位列表。自动化应在企业授权的 App 和权限范围内运行,不能用 App 支持这一公告替代企业审批。

先按查询和写入分配权限

企业级端点支持 GitHub App user access token 与 GitHub App installation access token。查询可以使用 Enterprise Copilot license management 的 read 权限;添加用户、添加企业团队及对应取消操作需要 write。请核对实际令牌类型及企业安装授权,而不是只看 App 设置页已经勾选权限。

当前文档还列出了相应 read 或 write 级别的 Enterprise administration 作为可接受权限组合。新专用权限提供了更聚焦的授权方式;不要为了席位自动化顺手扩大无关权限,也不要把旧的组织级 GitHub Copilot Business 权限当作企业权限的同名替代品。

先通过 GET /enterprises/{enterprise}/copilot/billing/seats 盘点,{enterprise} 填企业 slug。分页默认每页 50 条、最多 100 条;完整盘点需要读取全部页面。调用成功只证明此次读取完成,不证明后续写入也已获授权。

分配用户和企业团队:路径与参数要配对

向用户分配席位使用 POST /enterprises/{enterprise}/copilot/billing/selected_users,请求体中的 selected_usernames 是企业成员用户名字符串数组。向企业团队分配使用 POST /enterprises/{enterprise}/copilot/billing/selected_enterprise_teams,请求体使用 selected_enterprise_teams,值为企业团队名称字符串数组。

例如,假设企业中有名为 security-review 的企业团队,应先核实团队身份和成员范围,再将该名称放入 selected_enterprise_teams。这个名称仅为假设示例;组织级 selected_teams 参数与企业团队参数不同,不能因为都叫团队就混用。

官方文档把添加操作描述为购买席位,并说明企业会相应被计费。响应包含新建席位和刷新已有席位的数量;不能把提交的用户名数、团队数或一次成功响应直接当作最终新增计费人数。应在企业所有者确认范围和费用后执行,再查询实际分配结果。

取消不会立即抹掉所有访问路径

取消用户或企业团队分配,分别使用同一路径的 DELETE 方法及对应的 selected_usernames 或 selected_enterprise_teams 参数。文档说明,相关席位会被设为 pending cancellation,通常在当前账单周期结束时失去该路径提供的访问权;这不是即时全面停权或退款承诺。

企业团队成员可能仍通过另一企业团队获得访问;单独取消用户时,也可能因团队或组织成员关系而继续拥有访问。需要彻底核对权限时,应检查各条实际授予路径。准确周期结束时间以企业账单为准,不能假设所有账号使用同一日期或时区。

企业团队取消端点还列出了 202 Accepted 状态。收到接受响应后应继续核对席位状态及待取消结果,不能仅凭 HTTP 成功状态就记录为所有成员已经失去访问。

接入与排错按这个顺序推进

第一步,确认企业订阅、账单设置、公共代码建议策略及目标成员或企业团队,再由企业所有者批准实际变更范围。当前接口仍是预览,保留所用 API 版本与对应文档,避免把未来变更误判为当前契约。本文核对的文档版本是 2026-03-10。

第二步,以只读列表验证身份、企业 slug、权限和分页结果,再为经批准的分配或取消操作授予所需写权限。实现中记录操作对象、原始响应及后续查询结果;结果未知时先查当前分配状态,避免盲目重复会改变计费的操作。

第三步,按原始错误核对条件。文档列出 401、403、404 等响应;用户添加端点的 422 可能涉及未启用 Copilot、账单或公共代码建议策略未设置,或访问设置为全员启用、尚未配置。权限正确也不代表这些条件已经满足。

第四步,查询实际席位、访问来源与待取消状态后再更新内部记录。本文只核验公开文档,没有调用任何企业账号 API、购买或取消真实席位,也没有验证某个企业的实际启用状态或报价。

资料来源

常见问题

为什么 seats 数组条目数可能大于 total_seats?

企业列表文档说明,同一用户通过多个组织或企业团队获得访问时,total_seats 只计该用户一次,但 seats 数组可能按不同授予来源出现多条明细。应区分用户人数与授予路径,不能直接按数组长度推算最终计费人数。

last_activity_at 为空,就能认定席位没有使用吗?

不能。文档明确要求用户在 IDE 中启用遥测,IDE 内的 Copilot 活动才会反映到 last_activity_at。缺失活动字段不等于实际使用为零;应结合字段范围、可获得的证据及企业确认的回收流程判断。

使用 GHE.com 的企业应请求哪个 API 域名?

当前 REST 文档要求将 api.github.com 替换为企业专属的 api.SUBDOMAIN.ghe.com,其中 SUBDOMAIN 是实际企业子域名。这项域名说明不授予额外套餐、权限或席位资格,也不能据此推断 GitHub Enterprise Server 支持相同接口。