
语言 🇨🇳 简体中文
入门
文档
API 参考
聚合
审计日志
评论封禁
检查被封禁的评论
评论
域配置
邮件模板
事件日志
动态帖子
举报评论
话题标签
版主
通知计数
通知
页面
待处理的 Webhook 事件
问题配置
问题结果
问题结果聚合
SSO 用户
订阅
租户每日用量
租户套餐
租户用户
租户
上传图片
用户徽章进度
用户徽章
用户通知
用户在线状态
用户搜索
用户
投票
FastComments Swift SDK
这是 FastComments 的官方 Swift SDK。
FastComments API 的官方 Swift SDK
仓库
安装 
Swift 包管理器
将以下内容添加到您的 Package.swift 文件中:
dependencies: [
.package(url: "https://github.com/fastcomments/fastcomments-swift.git", from: "0.0.1")
]
或者在 Xcode 中:
- 文件 > 添加软件包...
- 输入仓库 URL:
https://github.com/fastcomments/fastcomments-swift.git - 选择您要使用的版本
要求
- Swift 5.9+
- iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 6.0+
库内容 
FastComments Swift SDK 由多个模块组成:
客户端模块 - FastComments REST API 的自动生成客户端
- 为所有 API 模型提供完整的类型定义
- 同时包含已认证(
DefaultAPI)和公开(PublicAPI)端点 - 完整的 async/await 支持
- 参见 client/README.md 以获取详细的 API 文档
SSO 模块 - 服务器端单点登录工具
- 用于用户身份验证的安全令牌生成
- 支持简单和安全两种 SSO 模式
- 使用 CryptoKit 进行基于 HMAC-SHA256 的令牌签名
快速开始 
使用公共 API
import FastCommentsSwift
// 创建 API 客户端
let publicApi = PublicAPI()
// 获取页面的评论
do {
let response = try await publicApi.getCommentsPublic(
tenantId: "your-tenant-id",
urlId: "page-url-id"
)
print("Found \(response.comments?.count ?? 0) comments")
for comment in response.comments ?? [] {
print("Comment: \(comment.comment ?? "")")
}
} catch {
print("Error fetching comments: \(error)")
}
使用已认证的 API
import FastCommentsSwift
// 使用 API 密钥创建配置
let defaultApi = DefaultAPI()
defaultApi.apiKey = "your-api-key"
// 使用已认证的 API 获取评论
do {
let response = try await defaultApi.getComments(
tenantId: "your-tenant-id",
urlId: "page-url-id"
)
print("Total comments: \(response.count ?? 0)")
for comment in response.comments ?? [] {
print("Comment ID: \(comment.id ?? ""), Text: \(comment.comment ?? "")")
}
} catch {
print("Error: \(error)")
}
使用 SSO 进行认证
安全 SSO(推荐用于生产环境)
import FastCommentsSwift
let apiKey = "your-api-key"
// 创建安全 SSO 用户数据(仅限服务器端!)
let userData = SecureSSOUserData(
id: "user-123", // 用户 ID
email: "user@example.com", // 电子邮件
username: "johndoe", // 用户名
avatar: "https://example.com/avatar.jpg" // 头像 URL
)
// 生成 SSO 令牌
do {
let sso = try FastCommentsSSO.createSecure(apiKey: apiKey, secureSSOUserData: userData)
let token = try sso.createToken()
print("SSO Token: \(token ?? "")")
// 将此令牌传递到前端以进行认证
} catch {
print("Error creating SSO token: \(error)")
}
简单 SSO(用于开发/测试)
import FastCommentsSwift
// 创建简单 SSO 用户数据(无需 API 密钥)
let userData = SimpleSSOUserData(
username: "johndoe",
email: "user@example.com",
avatar: "https://example.com/avatar.jpg"
)
// 生成简单 SSO 令牌
let sso = FastCommentsSSO.createSimple(simpleSSOUserData: userData)
do {
let token = try sso.createToken()
print("Simple SSO Token: \(token ?? "")")
} catch {
print("Error creating SSO token: \(error)")
}
公共与受保护的 API 
The FastComments SDK 提供两类 API 端点:
PublicAPI - 客户端安全端点
The PublicAPI contains endpoints that are safe to call from client-side code (iOS/macOS apps). These endpoints:
- 不需要 API 密钥
- 可以使用 SSO 令牌进行身份验证
- 对每个用户/设备进行速率限制
- 适用于面向终端用户的应用
Example use case: 在您的 iOS 应用中获取和创建评论
DefaultAPI - 服务器端端点
The DefaultAPI contains authenticated endpoints that require an API key. These endpoints:
- 需要您的 FastComments API 密钥
- 仅应从服务器端代码调用
- 提供对您的 FastComments 数据的完全访问
- 按租户限流
Example use case: 管理操作、批量数据导出、审核工具
IMPORTANT: 切勿在客户端代码中暴露您的 API 密钥。API 密钥只应在服务器端使用。
发起 API 调用 
Swift SDK 为所有 API 调用使用现代的 async/await 语法:
let response = try await publicApi.getCommentsPublic(
tenantId: "your-tenant-id",
urlId: "page-url-id"
)
常见问题 
401 Unauthorized Errors
If you're getting 401 errors when using the authenticated API:
- Check your API key: Ensure you're using the correct API key from your FastComments dashboard
- Verify the tenant ID: Make sure the tenant ID matches your account
- API key format: The API key should be set on the API client:
let defaultApi = DefaultAPI()
defaultApi.apiKey = "YOUR_API_KEY"
- Using the wrong API: Make sure you're using
DefaultAPI(notPublicAPI) for authenticated calls
SSO Token Issues
If SSO tokens aren't working:
- Use secure mode for production: Always use
FastCommentsSSO.createSecure()with your API key for production - Server-side only: Generate secure SSO tokens on your server, never expose your API key to clients
- Check user data: Ensure all required fields (id, email, username) are provided
- Token expiration: Secure SSO tokens include a timestamp and may expire. Generate fresh tokens as needed.
SSL/TLS Errors
If you encounter SSL/TLS errors:
- Ensure your app's Info.plist allows HTTPS connections to fastcomments.com
- Check that you're not using App Transport Security exceptions that might block the connection
注意事项 
广播 ID
你会看到在某些 API 调用中需要传入 broadcastId。当你接收到事件时,会返回该 ID,这样如果你打算在客户端乐观地应用更改(你很可能会这么做,因为它能提供最佳体验),就可以知道要忽略该事件。请在此处传入一个 UUID。该 ID 应该足够唯一,以避免在一次会话中出现两次。
let broadcastId = UUID().uuidString
聚合 
通过对文档进行分组(如果提供了 groupBy)并应用多个操作来聚合文档。支持不同的操作(例如 sum、countDistinct、avg 等)。
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| parentTenantId | string | 查询 | 否 | |
| includeStats | boolean | 查询 | 否 |
响应
示例

获取审计日志 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| limit | number | query | 否 | |
| skip | number | query | 否 | |
| order | string | query | 否 | |
| after | number | query | 否 | |
| before | number | query | 否 |
响应
示例

从评论封禁(公开) 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| commentId | string | 路径 | 是 | |
| sso | string | 查询 | 否 |
响应
返回: BlockFromCommentPublic200Response
示例

取消公开评论封禁 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| commentId | string | path | 是 | |
| sso | string | query | 否 |
响应
返回: UnBlockCommentPublic200Response
示例

检查被封禁的评论 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| commentIds | string | query | 是 | 以逗号分隔的评论 ID 列表。 |
| sso | string | query | 否 |
响应
返回: CheckedCommentsForBlocked200Response
示例

从评论封禁用户 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| userId | string | query | 否 | |
| anonUserId | string | query | 否 |
响应
返回: BlockFromCommentPublic200Response
示例

创建公开评论 
参数
| 名称 | 类型 | 位置 | 必需 | 说明 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| urlId | string | query | 是 | |
| broadcastId | string | query | 是 | |
| sessionId | string | query | 否 | |
| sso | string | query | 否 |
响应
返回: CreateCommentPublic200Response
示例

删除评论 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | Yes | |
| id | string | path | Yes | |
| contextUserId | string | query | No | |
| isLive | boolean | query | No |
响应
示例

删除公开评论 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| broadcastId | string | query | 是 | |
| editKey | string | query | 否 | |
| sso | string | query | 否 |
响应
返回:DeleteCommentPublic200Response
示例

删除评论投票 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| voteId | string | path | 是 | |
| urlId | string | query | 是 | |
| broadcastId | string | query | 是 | |
| editKey | string | query | 否 | |
| sso | string | query | 否 |
响应
返回: DeleteCommentVote200Response
示例

举报评论 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| userId | string | query | 否 | |
| anonUserId | string | query | 否 |
响应
示例

获取评论 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
示例

获取评论列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| page | integer | query | 否 | |
| limit | integer | query | 否 | |
| skip | integer | query | 否 | |
| asTree | boolean | query | 否 | |
| skipChildren | integer | query | 否 | |
| limitChildren | integer | query | 否 | |
| maxTreeDepth | integer | query | 否 | |
| urlId | string | query | 否 | |
| userId | string | query | 否 | |
| anonUserId | string | query | 否 | |
| contextUserId | string | query | 否 | |
| hashTag | string | query | 否 | |
| parentId | string | query | 否 | |
| direction | string | query | 否 |
响应
示例

获取公开评论 
req tenantId urlId
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| urlId | string | query | 是 | |
| page | integer | query | 否 | |
| direction | string | query | 否 | |
| sso | string | query | 否 | |
| skip | integer | query | 否 | |
| skipChildren | integer | query | 否 | |
| limit | integer | query | 否 | |
| limitChildren | integer | query | 否 | |
| countChildren | boolean | query | 否 | |
| fetchPageForCommentId | string | query | 否 | |
| includeConfig | boolean | query | 否 | |
| countAll | boolean | query | 否 | |
| includei10n | boolean | query | 否 | |
| locale | string | query | 否 | |
| modules | string | query | 否 | |
| isCrawler | boolean | query | 否 | |
| includeNotificationCount | boolean | query | 否 | |
| asTree | boolean | query | 否 | |
| maxTreeDepth | integer | query | 否 | |
| useFullTranslationIds | boolean | query | 否 | |
| parentId | string | query | 否 | |
| searchText | string | query | 否 | |
| hashTags | array | query | 否 | |
| userId | string | query | 否 | |
| customConfigStr | string | query | 否 | |
| afterCommentId | string | query | 否 | |
| beforeCommentId | string | query | 否 |
响应
返回: GetCommentsPublic200Response
示例

获取评论文本 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| editKey | string | query | 否 | |
| sso | string | query | 否 |
响应
示例

获取评论投票用户名 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| dir | integer | query | 是 | |
| sso | string | query | 否 |
响应
返回: GetCommentVoteUserNames200Response
示例

锁定评论 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| broadcastId | string | query | 是 | |
| sso | string | query | 否 |
响应
示例

置顶评论 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | 路径 | 是 | |
| commentId | string | 路径 | 是 | |
| broadcastId | string | 查询 | 是 | |
| sso | string | 查询 | 否 |
响应
示例

保存评论 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| isLive | boolean | query | 否 | |
| doSpamCheck | boolean | query | 否 | |
| sendEmails | boolean | query | 否 | |
| populateNotifications | boolean | query | 否 |
响应
示例

批量保存评论 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| isLive | boolean | query | 否 | |
| doSpamCheck | boolean | query | 否 | |
| sendEmails | boolean | query | 否 | |
| populateNotifications | boolean | query | 否 |
响应
示例

设置评论文本 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| broadcastId | string | query | 是 | |
| editKey | string | query | 否 | |
| sso | string | query | 否 |
响应
示例

解除用户评论封禁 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| userId | string | query | 否 | |
| anonUserId | string | query | 否 |
响应
返回:UnBlockCommentPublic200Response
示例

取消举报评论 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| userId | string | query | 否 | |
| anonUserId | string | query | 否 |
响应
示例

解锁评论 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| broadcastId | string | query | 是 | |
| sso | string | query | 否 |
响应
示例

取消置顶评论 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| broadcastId | string | query | 是 | |
| sso | string | query | 否 |
响应
示例

更新评论 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| contextUserId | string | query | 否 | |
| doSpamCheck | boolean | query | 否 | |
| isLive | boolean | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

对评论投票 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| commentId | string | path | 是 | |
| urlId | string | query | 是 | |
| broadcastId | string | query | 是 | |
| sessionId | string | query | 否 | |
| sso | string | query | 否 |
响应
示例

添加域配置 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
示例

删除域配置 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| domain | string | 路径 | 是 |
响应
返回: DeleteDomainConfig200Response
示例

获取域配置 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| domain | string | path | 是 |
响应
返回: GetDomainConfig200Response
示例

获取域配置列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
返回值: GetDomainConfigs200Response
示例

部分更新域配置 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| domainToUpdate | string | 路径 | 是 |
响应
返回: GetDomainConfig200Response
示例

替换域配置 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| domainToUpdate | string | path | 是 |
响应
示例

创建邮件模板 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
返回: CreateEmailTemplate200Response
示例

删除邮件模板 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

删除邮件模板渲染错误 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| errorId | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

获取邮件模板 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| id | string | 路径 | 是 |
响应
返回: GetEmailTemplate200Response
示例

获取邮件模板定义 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
返回: GetEmailTemplateDefinitions200Response
示例

获取邮件模板渲染错误 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| skip | number | query | 否 |
响应
返回: GetEmailTemplateRenderErrors200Response
示例

获取邮件模板列表 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| skip | number | query | 否 |
响应
返回:GetEmailTemplates200Response
示例

渲染邮件模板 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| locale | string | query | 否 |
响应
返回: RenderEmailTemplate200Response
示例

更新邮件模板 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

获取事件日志 
req tenantId urlId userIdWS
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| urlId | string | query | 是 | |
| userIdWS | string | query | 是 | |
| startTime | integer | query | 是 | |
| endTime | integer | query | 是 |
响应
示例

获取全局事件日志 
req tenantId urlId userIdWS
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| urlId | string | query | 是 | |
| userIdWS | string | query | 是 | |
| startTime | integer | query | 是 | |
| endTime | integer | query | 是 |
响应
示例

创建动态帖子 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| broadcastId | string | query | 否 | |
| isLive | boolean | query | 否 | |
| doSpamCheck | boolean | query | 否 | |
| skipDupCheck | boolean | query | 否 |
响应
示例

创建公开动态帖子 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| broadcastId | string | query | 否 | |
| sso | string | query | 否 |
响应
返回: CreateFeedPostPublic200Response
示例

删除公开动态帖子 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| postId | string | path | 是 | |
| broadcastId | string | query | 否 | |
| sso | string | query | 否 |
响应
返回: DeleteFeedPostPublic200Response
示例

获取动态帖子 
req tenantId afterId
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | Yes | |
| afterId | string | query | No | |
| limit | integer | query | No | |
| tags | array | query | No |
响应
示例

获取公开动态帖子 
请求 tenantId afterId
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| afterId | string | query | 否 | |
| limit | integer | query | 否 | |
| tags | array | query | 否 | |
| sso | string | query | 否 | |
| isCrawler | boolean | query | 否 | |
| includeUserInfo | boolean | query | 否 |
响应
返回: GetFeedPostsPublic200Response
示例

获取动态帖子统计 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| postIds | array | query | 是 | |
| sso | string | query | 否 |
响应
返回: GetFeedPostsStats200Response
示例

获取公开用户反应 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| postIds | array | query | 否 | |
| sso | string | query | 否 |
响应
返回: GetUserReactsPublic200Response
示例

对公开动态帖子表态 
参数
| 名称 | Type | Location | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| postId | string | path | 是 | |
| isUndo | boolean | query | 否 | |
| broadcastId | string | query | 否 | |
| sso | string | query | 否 |
响应
返回: ReactFeedPostPublic200Response
示例

更新动态帖子 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

更新公开动态帖子 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| postId | string | path | 是 | |
| broadcastId | string | query | 否 | |
| sso | string | query | 否 |
响应
返回: CreateFeedPostPublic200Response
示例

公开举报评论 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| commentId | string | path | 是 | |
| isFlagged | boolean | query | 是 | |
| sso | string | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

添加话题标签 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 否 |
响应
示例

批量添加话题标签 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 否 |
响应
返回: AddHashTagsBulk200Response
示例

删除话题标签 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tag | string | 路径 | 是 | |
| tenantId | string | 查询 | 否 |
响应
返回: FlagCommentPublic200Response
示例

获取话题标签 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| page | number | query | 否 |
响应
示例

部分更新话题标签 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tag | string | 路径 | 是 | |
| tenantId | string | 查询 | 否 |
响应
示例

创建版主 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
示例

删除版主 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| sendEmail | string | query | 否 |
响应
返回:FlagCommentPublic200Response
示例

获取版主 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
示例

获取版主列表 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| skip | number | query | 否 |
响应
示例

发送邀请 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| fromName | string | query | 是 |
响应
返回: FlagCommentPublic200Response
示例

更新版主 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

删除通知计数 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

获取缓存的通知计数 
参数
| 名称 | 类型 | 位置 | 是否必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: GetCachedNotificationCount200Response
示例

获取通知计数 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| userId | string | query | 否 | |
| urlId | string | query | 否 | |
| fromCommentId | string | query | 否 | |
| viewed | boolean | query | 否 | |
| type | string | query | 否 |
响应
返回: GetNotificationCount200Response
示例

获取通知 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| userId | string | query | 否 | |
| urlId | string | query | 否 | |
| fromCommentId | string | query | 否 | |
| viewed | boolean | query | 否 | |
| type | string | query | 否 | |
| skip | number | query | 否 |
响应
返回: GetNotifications200Response
示例

更新通知 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| userId | string | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

添加页面 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
示例

删除页面 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
示例

通过 URL ID 获取页面 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | Yes | |
| urlId | string | query | Yes |
响应
示例

获取页面列表 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
示例

部分更新页面 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | Yes | |
| id | string | path | Yes |
响应
示例

删除待处理的 Webhook 事件 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

获取待处理的 Webhook 事件计数 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| commentId | string | query | 否 | |
| externalId | string | query | 否 | |
| eventType | string | query | 否 | |
| type | string | query | 否 | |
| domain | string | query | 否 | |
| attemptCountGT | number | query | 否 |
响应
返回: GetPendingWebhookEventCount200Response
示例

获取待处理的 Webhook 事件 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| commentId | string | 查询 | 否 | |
| externalId | string | 查询 | 否 | |
| eventType | string | 查询 | 否 | |
| type | string | 查询 | 否 | |
| domain | string | 查询 | 否 | |
| attemptCountGT | number | 查询 | 否 | |
| skip | number | 查询 | 否 |
响应
返回: GetPendingWebhookEvents200Response
示例

创建问题配置 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
返回: CreateQuestionConfig200Response
示例

删除问题配置 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
Response
返回: FlagCommentPublic200Response
示例

获取问题配置 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: GetQuestionConfig200Response
示例

获取问题配置列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| skip | number | query | 否 |
响应
返回: GetQuestionConfigs200Response
示例

更新问题配置 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

创建问题结果 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | Yes |
响应
返回:CreateQuestionResult200Response
示例

删除问题结果 
参数
| 名称 | 类型 | 所在位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回:FlagCommentPublic200Response
示例

获取问题结果 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: GetQuestionResult200Response
示例

获取问题结果列表 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| urlId | string | 查询 | 否 | |
| userId | string | 查询 | 否 | |
| startDate | string | 查询 | 否 | |
| questionId | string | 查询 | 否 | |
| questionIds | string | 查询 | 否 | |
| skip | number | 查询 | 否 |
响应
返回: GetQuestionResults200Response
示例

更新问题结果 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

聚合问题结果 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| questionId | string | query | 否 | |
| questionIds | array | query | 否 | |
| urlId | string | query | 否 | |
| timeBucket | string | query | 否 | |
| startDate | string | query | 否 | |
| forceRecalculate | boolean | query | 否 |
Response
返回: AggregateQuestionResults200Response
示例

批量聚合问题结果 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| forceRecalculate | boolean | query | 否 |
响应
返回: BulkAggregateQuestionResults200Response
示例

将评论与问题结果合并 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| questionId | string | query | 否 | |
| questionIds | array | query | 否 | |
| urlId | string | query | 否 | |
| startDate | string | query | 否 | |
| forceRecalculate | boolean | query | 否 | |
| minValue | number | query | 否 | |
| maxValue | number | query | 否 | |
| limit | number | query | 否 |
响应
返回: CombineCommentsWithQuestionResults200Response
示例

添加 SSO 用户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
示例

删除 SSO 用户 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| deleteComments | boolean | query | 否 | |
| commentDeleteMode | string | query | 否 |
响应
示例

通过邮箱获取 SSO 用户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| string | path | 是 |
响应
返回:GetSSOUserByEmailAPIResponse
示例

通过 ID 获取 SSO 用户 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
示例

获取 SSO 用户列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| skip | integer | query | 否 |
响应
示例

部分更新 SSO 用户 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| updateComments | boolean | query | 否 |
响应
示例

替换 SSO 用户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| updateComments | boolean | query | 否 |
响应
示例

创建订阅 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
返回: CreateSubscriptionAPIResponse
示例

删除订阅 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| userId | string | query | 否 |
响应
返回:DeleteSubscriptionAPIResponse
示例

获取订阅列表 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| userId | string | query | 否 |
响应
返回: GetSubscriptionsAPIResponse
示例

获取租户每日用量 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | Yes | |
| yearNumber | number | query | No | |
| monthNumber | number | query | No | |
| dayNumber | number | query | No | |
| skip | number | query | No |
响应
返回:GetTenantDailyUsages200Response
示例

创建租户套餐 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
返回: CreateTenantPackage200Response
示例

删除租户套餐 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

获取租户套餐 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: GetTenantPackage200Response
示例

获取租户套餐列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| skip | number | query | 否 |
响应
返回:GetTenantPackages200Response
示例

替换租户套餐 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

更新租户套餐 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

创建租户用户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
返回: CreateTenantUser200Response
示例

删除租户用户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| deleteComments | string | query | 否 | |
| commentDeleteMode | string | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

获取租户用户 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
示例

获取租户用户列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| skip | number | query | 否 |
响应
示例

替换租户用户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| updateComments | string | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

发送登录链接 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| redirectURL | string | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

更新租户用户 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| updateComments | string | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

创建租户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 |
响应
示例

删除租户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| sure | string | query | 否 |
响应
返回: FlagCommentPublic200Response
示例

获取租户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | 查询 | 是 | |
| id | string | 路径 | 是 |
响应
示例

获取租户列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| meta | string | query | 否 | |
| skip | number | query | 否 |
响应
示例

更新租户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: FlagCommentPublic200Response
示例

上传图片 
上传并调整图像大小
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| sizePreset | string | query | 否 | 尺寸预设: "Default" (1000x1000px) 或 "CrossPlatform" (为常见设备创建尺寸) |
| urlId | string | query | 否 | 上传发生的页面 id,用于配置 |
响应
示例

通过 ID 获取用户徽章进度 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: GetUserBadgeProgressById200Response
示例

通过用户 ID 获取用户徽章进度 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| userId | string | path | 是 |
响应
返回: GetUserBadgeProgressById200Response
示例

获取用户徽章进度列表 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| userId | string | query | 否 | |
| limit | number | query | 否 | |
| skip | number | query | 否 |
响应
返回: GetUserBadgeProgressList200Response
示例

创建用户徽章 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | Yes |
响应
返回: CreateUserBadge200Response
示例

删除用户徽章 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: UpdateUserBadge200Response
示例

获取用户徽章 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
示例

获取用户徽章列表 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| userId | string | query | 否 | |
| badgeId | string | query | 否 | |
| type | number | query | 否 | |
| displayedOnComments | boolean | query | 否 | |
| limit | number | query | 否 | |
| skip | number | query | 否 |
响应
示例

更新用户徽章 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 |
响应
返回: UpdateUserBadge200Response
示例

获取用户通知计数 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| sso | string | query | 否 |
响应
返回: GetUserNotificationCount200Response
示例

获取用户通知 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| pageSize | integer | query | 否 | |
| afterId | string | query | 否 | |
| includeContext | boolean | query | 否 | |
| afterCreatedAt | integer | query | 否 | |
| unreadOnly | boolean | query | 否 | |
| dmOnly | boolean | query | 否 | |
| noDm | boolean | query | 否 | |
| includeTranslations | boolean | query | 否 | |
| sso | string | query | 否 |
响应
返回: GetUserNotifications200Response
示例

重置用户通知计数 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| sso | string | query | 否 |
响应
返回: ResetUserNotifications200Response
示例

重置用户通知 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| afterId | string | query | 否 | |
| afterCreatedAt | integer | query | 否 | |
| unreadOnly | boolean | query | 否 | |
| dmOnly | boolean | query | 否 | |
| noDm | boolean | query | 否 | |
| sso | string | query | 否 |
Response
返回: ResetUserNotifications200Response
示例

更新用户评论订阅状态 
为特定评论启用或禁用通知。
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| notificationId | string | path | 是 | |
| optedInOrOut | string | path | 是 | |
| commentId | string | query | 是 | |
| sso | string | query | 否 |
响应
返回:UpdateUserNotificationStatus200Response
示例

更新用户页面订阅状态 
启用或禁用页面的通知。当用户订阅页面时,会为新的根评论创建通知,并且还会
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | Yes | |
| urlId | string | query | Yes | |
| url | string | query | Yes | |
| pageTitle | string | query | Yes | |
| subscribedOrUnsubscribed | string | path | Yes | |
| sso | string | query | No |
响应
返回: UpdateUserNotificationStatus200Response
示例

更新用户通知状态 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| notificationId | string | path | 是 | |
| newStatus | string | path | 是 | |
| sso | string | query | 否 |
响应
返回:UpdateUserNotificationStatus200Response
示例

获取用户在线状态 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| urlIdWS | string | query | 是 | |
| userIds | string | query | 是 |
响应
返回:GetUserPresenceStatuses200Response
示例

搜索用户 
参数
| 名称 | 类型 | 位置 | 必填 | 描述 |
|---|---|---|---|---|
| tenantId | string | path | 是 | |
| urlId | string | query | 是 | |
| usernameStartsWith | string | query | 是 | |
| mentionGroupIds | array | query | 否 | |
| sso | string | query | 否 |
响应
示例

获取用户 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | Yes | |
| id | string | path | Yes |
响应
示例

创建投票 
参数
| Name | Type | Location | Required | Description |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| commentId | string | query | 是 | |
| direction | string | query | 是 | |
| userId | string | query | 否 | |
| anonUserId | string | query | 否 |
响应
示例

删除投票 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| id | string | path | 是 | |
| editKey | string | query | 否 |
响应
返回: DeleteCommentVote200Response
示例

获取投票列表 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| urlId | string | query | 是 |
响应
示例

获取用户的投票 
参数
| 名称 | 类型 | 位置 | 必需 | 描述 |
|---|---|---|---|---|
| tenantId | string | query | 是 | |
| urlId | string | query | 是 | |
| userId | string | query | 否 | |
| anonUserId | string | query | 否 |
响应
示例

需要帮助?
如果您在使用 Swift SDK 时遇到任何问题或有疑问,请:
贡献
欢迎贡献!请访问 GitHub 仓库 以查看贡献指南。