工坊 Web API 与服务端权限

Steam 创意工坊 Web API:查询、权限与服务端操作

Steam 创意工坊 Web API 让开发者通过 HTTP 查询项目和管理应用相关内容。本页面向游戏后台及运营工具开发者,整理官方接口的请求方式、常用参数和权限,帮助选择公共查询或受保护的发行商操作。

创作者通过 Steam 工坊向玩家和服务器分发内容的流程

请求格式与密钥边界

Steam Web API 以 https://api.steampowered.com/<接口>/<方法>/v<版本>/ 组织公共接口。使用 TLS,POST 使用 URL 编码的 application/x-www-form-urlencoded 正文,文本使用 UTF-8;数组通常用 count 与带索引的参数表示。每个方法的密钥和访问限制可能不同,公开主机并不意味着所有方法无需认证。

受信任的发行商后台使用 https://partner.steam-api.com;该主机即使访问通常无需密钥的方法也要求发行商密钥。发行商密钥只能保存在安全服务器,不应放入游戏客户端、浏览器脚本或公开日志。公开方法、用户密钥及发行商密钥的要求以各方法说明为准。Web API 概览说明了请求、认证与主机区别。

名称以 Service 结尾的接口支持将参数放在 input_json JSON 数据块中,并对该值进行 URL 编码;key 和 format 仍是独立参数,GET 与 POST 均支持。官方概览也说明服务接口可用常规参数传递,但复杂参数可能需要 JSON。某些方法的 {message} 结构在所提供的官方页面中未展开,集成时应查阅当前接口定义,不能仅凭字段名推测结构。

用游标查询项目

IPublishedFileService/QueryFiles 使用 GET,官方页面列出用户验证密钥、查询类型、创建者与消费应用 ID、标签、搜索词及文件类型等参数。文档对部分字段同时标为必需和可选,实际接入时应以当前接口及响应验证要求。

深度分页优先用 cursor:首次传 *,再从响应读取 next_cursor 作为下一次请求的游标;使用游标后 page 被忽略。page 的官方页面上限为 1000。按需求设置 numperpage、requiredtags、excludedtags、match_all_tags、search_text 和 language;return_tags、return_previews、return_children、return_metadata 等选择返回内容。required_kv_tags 标记为 {message},本页不假定它的内部格式。

Web API 的 query_type 使用 EPublishedFileQueryType,filetype 使用 EPublishedFileInfoMatchingFileType;响应中的 file_type 使用另一套 EWorkshopFileType。不要把 SDK 的 EUGCQuery 或 EUGCMatchingUGCType 数值直接用于 Web API:例如 Web 的 RankedByTotalUniqueSubscriptions 为 9,而 SDK 对应名称的值为 12。详见 Web API 枚举和 SDK 枚举。

ISteamRemoteStorage Web API

方法 HTTP 与权限 用途及关键参数
GetCollectionDetails POST,公共主机;页面未列密钥 传 collectioncount 和 publishedfileids[0] 等合集 ID,获取合集详情。
GetPublishedFileDetails POST,公共主机;页面未列密钥 传 itemcount 与已发布文件 ID 数组,获取项目详情。
GetUGCFileDetails GET,用户密钥 传 ugcid、appid,可选 steamid 限定所有者。
EnumerateUserSubscribedFiles POST,发行商密钥 根据 steamid、appid 和可选 listtype 获取用户订阅。
SubscribePublishedFile / UnsubscribePublishedFile POST,发行商密钥 传 steamid、appid 和 publishedfileid,分别添加或移除订阅。
SetUGCUsedByGC POST,发行商密钥 传 steamid、ugcid、appid 和 used 标记使用状态。

项目管理与发行商服务

IPublishedFileService 是服务接口。以下管理方法需要发行商密钥及安全服务器:

方法 HTTP 用途及关键参数
Delete GET 删除 appid 下的 publishedfileid。页面参数表写用户密钥,但正文明确要求发行商密钥;应按较严格要求处理,并在操作前确认目标。
SetDeveloperMetadata POST 按 appid 和 publishedfileid 设置 metadata。
UpdateTags POST 按项目设置 add_tags 和 remove_tags 数组;未明确移除的既有标签保留。
UpdateBanStatus POST 修改项目 banned 状态和仅管理员可见的 reason。
UpdateIncompatibleStatus POST 修改项目 incompatible 状态;项目从社区中心及个人资料隐藏,但直接链接仍可访问。
UpdateAppUGCBan POST 按 steamid 和 appid 更新用户 UGC 限制;expiration_time=0 表示移除,原因向用户显示。

IWorkshopService 同样是服务接口,以下均要求发行商密钥:

方法 HTTP 用途及关键参数
SetItemPaymentRules POST 传 appid、gameitemid 和项目及参与者数据设置支付规则;validate_only 可只验证不保存。两个 {message} 的结构需查当前接口定义。
GetFinalizedContributors GET 按 appid 和 gameitemid 获取贡献者名单。
GetItemDailyRevenue GET 传 appid、item_id、date_start 与 date_end 获取收入;起始时间包含,结束时间不包含。
PopulateItemDescriptions POST 传 appid 与 languages 填入描述;languages 为未展开的 {message}。

合作伙伴搜索和投票信息

以下接口均为 POST,使用发行商密钥并仅从安全服务器调用。搜索接口的 startidx 从 0 开始,count 为请求数量,标签使用计数及数组参数;可选 hasappadminaccess 表示请求用户是否具备查看私密文件的应用管理员权限。

方法 用途
RankedByPublicationOrder 按发布日期搜索,使用 steamid、appid、起始索引、数量及标签。
RankedByTrend 按趋势搜索;days 的官方范围为 1–7 天。
RankedByVote 按投票搜索,支持同类分页与标签条件。
ResultSetSummary 按用户、应用及标签条件获取结果集摘要。
ItemVoteSummary 按 steamid、appid、count 和项目 ID 数组读取项目投票摘要。
UserVoteSummary 按 steamid、count 和项目 ID 数组读取用户投票摘要。

参考:Steamworks Web API 概览、创意工坊 Web API 主接口。