FastComments.com

FastComments 的 Nim SDK

这是 FastComments 的官方 Nim SDK。

FastComments API 的官方 Nim SDK

仓库

在 GitHub 上查看

要求 Internal Link


  • Nim >= 1.6.0
  • nimcrypto >= 0.5.4

安装 Internal Link

使用 Nimble

nimble install fastcomments

从源码构建

nimble build

库内容

此库包含生成的 API 客户端和 SSO 实用工具,以便更容易地使用该 API。

公开与受保护的 API

对于 API 客户端,有三个 API 模块:api_defaultapi_publicapi_moderationapi_default 包含需要您的 API 密钥的方法,api_public 包含可直接从浏览器/移动设备等发出的无需认证的 API 调用。api_moderation 模块包含供版主面板使用的方法。

api_moderation 方法涵盖列出、计数、搜索和导出评论及其日志;管理操作,如删除/恢复评论、标记、设置审核/垃圾/批准状态、调整投票以及重新打开/关闭主题;封禁(针对评论封禁用户、撤销封禁、封禁前摘要、封禁状态和偏好,以及被封禁用户计数);以及徽章与信任(授予/移除徽章、列出手动徽章、获取/设置用户的信任系数,以及获取用户的内部档案)。每个 api_moderation 方法都接受一个 sso 参数,以便该调用以 SSO 版主身份进行身份验证。

快速开始 Internal Link

使用已认证的 API (DefaultAPI)

重要: 已认证的端点需要将您的 API 密钥设置为 x-api-key 头。

import httpclient
import fastcomments
import fastcomments/apis/api_default
import fastcomments/models/model_comment_data

let client = newHttpClient()
client.headers["x-api-key"] = "your-api-key"

# 发起已认证的 API 调用
let (response, httpResponse) = getComments(
  httpClient = client,
  tenantId = "your-tenant-id",
  page = 0,
  limit = 0,
  skip = 0,
  asTree = false,
  skipChildren = 0,
  limitChildren = 0,
  maxTreeDepth = 0,
  urlId = "your-url-id",
  userId = "",
  anonUserId = "",
  contextUserId = "",
  hashTag = "",
  parentId = "",
  direction = SortDirections.DESC
)

if response.isSome:
  let resp = response.get()
  if resp.comments.isSome:
    echo "Found ", resp.comments.get().len, " comments"

使用公共 API (PublicAPI)

公共端点不需要认证:

import httpclient
import fastcomments
import fastcomments/apis/api_public

let client = newHttpClient()

# 发起公共 API 调用
let (response, httpResponse) = getCommentsPublic(
  httpClient = client,
  tenantId = "your-tenant-id",
  urlId = "your-url-id",
  page = 0,
  direction = SortDirections.DESC,
  sso = "",
  skip = 0,
  skipChildren = 0,
  limit = 0,
  limitChildren = 0,
  countChildren = false,
  fetchPageForCommentId = "",
  includeConfig = false,
  countAll = false,
  includei10n = false,
  locale = "",
  modules = "",
  isCrawler = false,
  includeNotificationCount = false,
  asTree = false,
  maxTreeDepth = 0,
  useFullTranslationIds = false,
  parentId = "",
  searchText = "",
  hashTags = @[],
  userId = "",
  customConfigStr = "",
  afterCommentId = "",
  beforeCommentId = ""
)

if response.isSome:
  let resp = response.get()
  if resp.comments.isSome:
    echo "Found ", resp.comments.get().len, " comments"

使用审核 API (ModerationAPI)

审核端点为版主仪表板提供支持,并使用代表版主的 SSO 令牌进行认证:

import httpclient
import fastcomments
import fastcomments/apis/api_moderation

let client = newHttpClient()

# 在审核仪表板中列出评论
let (response, httpResponse) = getApiComments(
  httpClient = client,
  page = 0,
  count = 30,
  textSearch = "",
  byIPFromComment = "",
  filters = "",
  searchFilters = "",
  sorts = "",
  demo = false,
  sso = "your-sso-token"
)

if response.isSome:
  let resp = response.get()
  echo "Found ", resp.comments.len, " comments"

常见问题

  1. 401 authentication error:在发起 DefaultAPI 请求之前,确保在您的 HttpClient 上设置了 x-api-key 头:client.headers["x-api-key"] = "your-api-key"
  2. Wrong API class:服务器端已认证请求使用 api_default,客户端/公共请求使用 api_public,版主仪表板请求使用 api_moderation

发起 API 调用 Internal Link


此 SDK 中的所有 API 方法都返回元组 (Option[ResponseType], Response)。第一个元素在成功时包含解析后的响应,第二个元素是原始的 HTTP 响应。

示例:获取评论

import httpclient
import options
import fastcomments
import fastcomments/apis/api_default

let client = newHttpClient()
client.headers["x-api-key"] = "your-api-key"

let (response, httpResponse) = getComments(
  httpClient = client,
  tenantId = "your-tenant-id",
  page = 0,
  limit = 0,
  skip = 0,
  asTree = false,
  skipChildren = 0,
  limitChildren = 0,
  maxTreeDepth = 0,
  urlId = "your-url-id",
  userId = "",
  anonUserId = "",
  contextUserId = "",
  hashTag = "",
  parentId = "",
  direction = SortDirections.DESC
)

if httpResponse.code == Http200:
  if response.isSome:
    let resp = response.get()
    if resp.comments.isSome:
      echo "Found ", resp.comments.get().len, " comments"

注意事项 Internal Link

广播 ID

在某些 API 调用中,你会看到需要传入 broadcastId。当你接收到事件时,会返回这个 ID,这样如果你计划在客户端乐观地应用更改,就可以据此忽略该事件 (你可能会想这样做,因为它能提供最佳体验)。在此传入一个 UUID。该 ID 应足够唯一,在一次浏览器会话中不会出现两次。

SSO (单点登录)

有关 SSO 示例,请见下文。

SSO 使用 Internal Link

简单 SSO

import fastcomments/sso

let user = newSimpleSSOUserData(
  userId = "user-123",
  email = "user@example.com",
  avatar = "https://example.com/avatar.jpg"
)
let sso = newSimple(simpleUserData = user)
let token = sso.createToken()

echo "SSO Token: ", token

安全 SSO

import fastcomments/sso

let user = newSecureSSOUserData(
  userId = "user-123",
  email = "user@example.com",
  username = "johndoe",
  avatar = "https://example.com/avatar.jpg"
)

let apiKey = "your-api-key"
let sso = newSecure(apiKey = apiKey, secureUserData = user)
let token = sso.createToken()

echo "Secure SSO Token: ", token

聚合 Internal Link

通过对文档进行分组(如果提供了 groupBy)并应用多个操作来聚合文档。 支持不同的操作(例如 sum、countDistinct、avg 等)。

参数

NameTypeRequiredDescription
tenantIdstring
aggregationRequestAggregationRequest
parentTenantIdstring
includeStatsbool

响应

返回:Option[AggregateResponse]

示例

aggregate 示例
Copy Copy
1
2let (response, httpResponse) = client.aggregate(
3 tenantId = "my-tenant-123",
4 aggregationRequest = AggregationRequest(groupBy = @["articleId"], metrics = @["commentCount"], filters = @[], limit = 0),
5 parentTenantId = "",
6 includeStats = false
7)
8
9if response.isSome:
10 let agg = response.get()
11 discard agg
12

获取审计日志 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
limitfloat64
skipfloat64
orderSORTDIR
afterfloat64
beforefloat64

响应

返回: Option[GetAuditLogsResponse]

示例

getAuditLogs 示例
Copy Copy
1
2let (response, httpResponse) = client.getAuditLogs(
3 tenantId = "my-tenant-123",
4 limit = 50.0,
5 skip = 0.0,
6 order = SORTDIR.DESC,
7 after = 1622505600.0,
8 before = 1625097600.0
9)
10
11if response.isSome:
12 let logs = response.get()
13 echo logs
14else:
15 echo "No audit logs returned"
16

登出(公开) Internal Link

响应

返回: Option[APIEmptyResponse]

示例

logoutPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.logoutPublic(tenantId = "my-tenant-123", sessionId = "sess-9a8b7c6d", userId = "editor-87", revokeAll = false, ipAddress = "")
3if response.isSome:
4 let emptyResp = response.get()
5 echo "Logout successful for user: ", "editor-87"
6else:
7 echo "Logout failed"
8

从评论封禁(公开) Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostring

响应

返回: Option[BlockSuccess]

示例

blockFromCommentPublic 示例
Copy Copy
1
2let publicParams = PublicBlockFromCommentParams(
3 reason = "Repeated spam links",
4 durationMinutes = 1440,
5 blockAll = true,
6 notifyUser = false,
7 tags = @["spam", "auto-block"]
8)
9
10let (response, httpResponse) = client.blockFromCommentPublic(
11 tenantId = "my-tenant-123",
12 commentId = "comment-98765",
13 publicBlockFromCommentParams = publicParams,
14 sso = ""
15)
16
17if response.isSome:
18 let blockResult = response.get()
19 echo "Block succeeded: ", $blockResult
20else:
21 echo "Block failed, HTTP status: ", $httpResponse.status
22

取消封禁评论(公开) Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostring

响应

返回: Option[UnblockSuccess]

示例

unBlockCommentPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.unBlockCommentPublic(tenantId = "my-tenant-123", commentId = "cmt-987654321", publicBlockFromCommentParams = PublicBlockFromCommentParams(), sso = "")
3if response.isSome:
4 let unblockResult = response.get()
5 discard unblockResult
6else:
7 discard httpResponse
8

检查被封禁的评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdsstring
ssostring

响应

返回: Option[CheckBlockedCommentsResponse]

示例

checkedCommentsForBlocked 示例
Copy Copy
1
2let (response, httpResponse) = client.checkedCommentsForBlocked(
3 tenantId = "my-tenant-123",
4 commentIds = "",
5 sso = ""
6)
7if response.isSome:
8 let blockedResp = response.get()
9 echo "Received blocked comments response: ", blockedResp
10else:
11 echo "No response body; HTTP status: ", $httpResponse.status
12

从评论封禁用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
blockFromCommentParamsBlockFromCommentParams
userIdstring
anonUserIdstring

响应

返回:Option[BlockSuccess]

示例

blockUserFromComment 示例
Copy Copy
1
2let (response, httpResponse) = client.blockUserFromComment(
3 tenantId = "my-tenant-123",
4 id = "cmt-7890",
5 blockFromCommentParams = BlockFromCommentParams(
6 reason = "Repeated abusive language",
7 durationMinutes = 1440,
8 notifyUser = true,
9 tags = @["abuse", "automated"]
10 ),
11 userId = "user-456",
12 anonUserId = ""
13)
14
15if response.isSome:
16 let result = response.get()
17 discard result
18else:
19 discard httpResponse
20

创建评论(公开) Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
urlIdstring
broadcastIdstring
commentDataCommentData
sessionIdstring
ssostring

响应

返回: Option[SaveCommentsResponseWithPresence]

示例

createCommentPublic 示例
Copy Copy
1
2let commentPayload = CommentData(
3 text = "Great write-up on serverless architectures.",
4 authorName = "Jane Doe",
5 authorEmail = "jane.doe@example.com",
6 isPublic = true,
7 tags = @["tech", "serverless"]
8)
9let (response, httpResponse) = client.createCommentPublic(
10 tenantId = "my-tenant-123",
11 urlId = "news/2026/06/fastcomments-sdk-update",
12 broadcastId = "broadcast-2026-06-19",
13 commentData = commentPayload,
14 sessionId = "sess-8a7b6c",
15 sso = "sso-jwt-abc123"
16)
17if response.isSome:
18 let saved = response.get()
19 discard saved
20

删除评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
contextUserIdstring
isLivebool

响应

返回: Option[DeleteCommentResult]

示例

deleteComment 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteComment(tenantId = "my-tenant-123", id = "cmt-98765", contextUserId = "user-456", isLive = true)
3if response.isSome:
4 let result = response.get()
5 echo "DeleteCommentResult received"
6else:
7 echo "No result, HTTP status: ", httpResponse.status
8

删除评论(公开) Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
broadcastIdstring
editKeystring
ssostring

响应

返回:Option[PublicAPIDeleteCommentResponse]

示例

deleteCommentPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteCommentPublic(tenantId = "my-tenant-123", commentId = "cmt-987654321", broadcastId = "", editKey = "", sso = "")
3if response.isSome:
4 let deleted = response.get()
5 echo "Delete acknowledged, HTTP status: ", httpResponse.status
6

删除评论投票 Internal Link


参数

名称类型必需描述
tenantIdstring
commentIdstring
voteIdstring
urlIdstring
broadcastIdstring
editKeystring
ssostring

响应

返回: Option[VoteDeleteResponse]

示例

deleteCommentVote 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteCommentVote(
3 tenantId = "my-tenant-123",
4 commentId = "comment-456",
5 voteId = "vote-789",
6 urlId = "news/article-title",
7 broadcastId = "",
8 editKey = "",
9 sso = ""
10)
11if response.isSome:
12 let voteResp = response.get()
13 echo "Vote delete response:", voteResp
14else:
15 echo "No response body, HTTP response:", httpResponse
16

举报评论 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
userIdstring
anonUserIdstring

Response

返回: Option[FlagCommentResponse]

示例

flagComment 示例
Copy Copy
1
2let (response, httpResponse) = client.flagComment(
3 tenantId = "my-tenant-123",
4 id = "cmt-98765",
5 userId = "user-12345",
6 anonUserId = ""
7)
8
9if response.isSome:
10 let flagResp = response.get()
11 echo "Flag response received"
12else:
13 echo "No flag response returned"
14

获取评论 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[APIGetCommentResponse]

示例

getComment 示例
Copy Copy
1
2let (response, httpResponse) = client.getComment(tenantId = "my-tenant-123", id = "cmt-7890")
3if response.isSome:
4 let comment = response.get()
5 discard comment
6else:
7 echo "Comment not found"
8

获取评论列表 Internal Link

参数

名称类型必填描述
tenantIdstring
pageint
limitint
skipint
asTreebool
skipChildrenint
limitChildrenint
maxTreeDepthint
urlIdstring
userIdstring
anonUserIdstring
contextUserIdstring
hashTagstring
parentIdstring
directionSortDirections
fromDateint64
toDateint64

响应

返回: Option[APIGetCommentsResponse]

示例

getComments 示例
Copy Copy
1
2let (response, httpResponse) = client.getComments(
3 tenantId = "my-tenant-123",
4 page = 1,
5 limit = 25,
6 skip = 0,
7 asTree = true,
8 skipChildren = 0,
9 limitChildren = 5,
10 maxTreeDepth = 3,
11 urlId = "news/2026-global-economy",
12 userId = "user-789",
13 anonUserId = "",
14 contextUserId = "",
15 hashTag = "economy",
16 parentId = "",
17 direction = SortDirections.Desc,
18 fromDate = 1710000000000'i64,
19 toDate = 1710100000000'i64
20)
21if response.isSome:
22 let commentsResp = response.get()
23 discard commentsResp
24

获取公开评论 Internal Link

req tenantId urlId

参数

名称类型必需描述
tenantIdstring
urlIdstring
pageint
directionSortDirections
ssostring
skipint
skipChildrenint
limitint
limitChildrenint
countChildrenbool
fetchPageForCommentIdstring
includeConfigbool
countAllbool
includei10nbool
localestring
modulesstring
isCrawlerbool
includeNotificationCountbool
asTreebool
maxTreeDepthint
useFullTranslationIdsbool
parentIdstring
searchTextstring
hashTagsseq[string]
userIdstring
customConfigStrstring
afterCommentIdstring
beforeCommentIdstring

响应

返回: Option[GetCommentsResponseWithPresencePublicComment]

示例

getCommentsPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentsPublic(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 page = 2,
6 direction = SortDirections.Descending,
7 sso = "",
8 skip = 0,
9 skipChildren = 0,
10 limit = 25,
11 limitChildren = 5,
12 countChildren = false,
13 fetchPageForCommentId = "",
14 includeConfig = true,
15 countAll = false,
16 includei10n = true,
17 locale = "en-US",
18 modules = "reactions,moderation",
19 isCrawler = false,
20 includeNotificationCount = true,
21 asTree = true,
22 maxTreeDepth = 3,
23 useFullTranslationIds = false,
24 parentId = "",
25 searchText = "climate change",
26 hashTags = @["climate", "research"],
27 userId = "user-789",
28 customConfigStr = "",
29 afterCommentId = "",
30 beforeCommentId = ""
31)
32
33if response.isSome:
34 let commentsResp = response.get()
35 echo "Received comments response:"
36 echo commentsResp
37else:
38 echo "No comments returned. HTTP status:", httpResponse.status
39

获取评论文本 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
editKeystring
ssostring

响应

返回: Option[PublicAPIGetCommentTextResponse]

示例

getCommentText 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentText(tenantId = "my-tenant-123", commentId = "cmt-987654321", editKey = "", sso = "")
3
4if response.isSome:
5 let commentTextResp = response.get()
6 echo commentTextResp
7else:
8 echo "No comment text returned"
9

获取评论投票用户名 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
dirint
ssostring

响应

返回: Option[GetCommentVoteUserNamesSuccessResponse]

示例

getCommentVoteUserNames 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentVoteUserNames(tenantId = "my-tenant-123", commentId = "cmt-987654", dir = 0, sso = "")
3if response.isSome:
4 let success: GetCommentVoteUserNamesSuccessResponse = response.get()
5 discard success
6

锁定评论 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回:Option[APIEmptyResponse]

示例

lockComment 示例
Copy Copy
1
2let (response, httpResponse) = client.lockComment(tenantId = "news-tenant-42", commentId = "cmt-8f3a2b9d", broadcastId = "", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Locked comment successfully for tenant news-tenant-42"
6else:
7 echo "Failed to lock comment, HTTP status: ", $httpResponse.status
8

置顶评论 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回: Option[ChangeCommentPinStatusResponse]

示例

pinComment 示例
Copy Copy
1
2let (response, httpResponse) = client.pinComment(tenantId = "my-tenant-123", commentId = "cmt-98765", broadcastId = "", sso = "")
3if response.isSome:
4 let pinnedResp = response.get()
5 echo "Pin status updated for comment cmt-98765"
6else:
7 echo "No response received"
8

保存评论 Internal Link


参数

NameType必需描述
tenantIdstring
createCommentParamsCreateCommentParams
isLivebool
doSpamCheckbool
sendEmailsbool
populateNotificationsbool

响应

返回: Option[APISaveCommentResponse]

示例

saveComment 示例
Copy Copy
1
2let createCommentParams = CreateCommentParams(
3 urlId = "news/2026/major-policy-change",
4 content = "This is a thoughtful comment on the policy change and its potential impacts.",
5 authorName = "Morgan Lee",
6 authorEmail = "morgan.lee@example.org",
7 tags = @["policy","analysis"],
8 extraData = @[])
9
10let (response, httpResponse) = client.saveComment(
11 tenantId = "my-tenant-123",
12 createCommentParams = createCommentParams,
13 isLive = true,
14 doSpamCheck = true,
15 sendEmails = false,
16 populateNotifications = true)
17
18if response.isSome:
19 let saved = response.get()
20 discard saved
21

批量保存评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createCommentParamsseq[CreateCommentParams]
isLivebool
doSpamCheckbool
sendEmailsbool
populateNotificationsbool): (Option[seq[SaveCommentsBulkResponse]]
idstring
fromNamestring

响应

返回:Option[APIEmptyResponse]

示例

saveCommentsBulk 示例
Copy Copy
1
2let (response, httpResponse) = client.saveCommentsBulk(
3 tenantId = "my-tenant-123",
4 createCommentParams = @[],
5 isLive = false,
6 doSpamCheck = false,
7 sendEmails = false,
8 populateNotifications = false,
9 id = "",
10 fromName = ""
11)
12
13if response.isSome:
14 let apiResp = response.get()
15 echo "Bulk save succeeded, tenant:", " my-tenant-123"
16else:
17 echo "Bulk save returned no API response"
18

设置评论文本 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
broadcastIdstring
commentTextUpdateRequestCommentTextUpdateRequest
editKeystring
ssostring

响应

返回:Option[PublicAPISetCommentTextResponse]

示例

setCommentText 示例
Copy Copy
1
2let (response, httpResponse) = client.setCommentText(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456789",
5 broadcastId = "",
6 commentTextUpdateRequest = CommentTextUpdateRequest(text: "Updated comment text to fix a typo and clarify meaning."),
7 editKey = "",
8 sso = ""
9)
10if response.isSome:
11 let result = response.get()
12 discard result
13

取消对用户的评论封禁 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
unBlockFromCommentParamsUnBlockFromCommentParams
userIdstring
anonUserIdstring

响应

返回:Option[UnblockSuccess]

示例

unBlockUserFromComment 示例
Copy Copy
1
2let (response, httpResponse) = client.unBlockUserFromComment(
3 tenantId = "my-tenant-123",
4 id = "comment-9f3b2a",
5 unBlockFromCommentParams = UnBlockFromCommentParams(),
6 userId = "user-1024",
7 anonUserId = "anon-77b"
8)
9
10if response.isSome:
11 let unblockResult = response.get()
12 echo unblockResult
13else:
14 echo "Unblock failed"
15

取消举报评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
userIdstring
anonUserIdstring

响应

返回: Option[FlagCommentResponse]

示例

unFlagComment 示例
Copy Copy
1
2let (response, httpResponse) = client.unFlagComment(tenantId = "my-tenant-123",
3 id = "comment-98765",
4 userId = "user-12345",
5 anonUserId = "")
6
7if response.isSome:
8 let flagResp = response.get()
9 echo "Unflagged comment response:", flagResp
10else:
11 echo "Unflag failed, HTTP status:", httpResponse.status
12

解锁评论 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回: Option[APIEmptyResponse]

示例

unLockComment 示例
Copy Copy
1
2let tenantId = "my-tenant-123"
3let commentId = "cmt-987654321"
4let (response, httpResponse) = client.unLockComment(
5 tenantId = tenantId,
6 commentId = commentId,
7 broadcastId = "",
8 sso = ""
9)
10if response.isSome:
11 let apiResp = response.get()
12 echo "Unlocked comment ", commentId, " for tenant ", tenantId
13else:
14 echo "Unlock failed, HTTP status: ", $httpResponse.status
15

取消置顶评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回: Option[ChangeCommentPinStatusResponse]

示例

unPinComment 示例
Copy Copy
1
2let (response, httpResponse) = client.unPinComment(tenantId = "my-tenant-123", commentId = "cmt-987654321", broadcastId = "", sso = "")
3if response.isSome:
4 let result = response.get()
5 echo "Unpinned comment:", $result
6else:
7 echo "Unpin failed, HTTP status:", $httpResponse.status
8

更新评论 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updatableCommentParamsUpdatableCommentParams
contextUserIdstring
doSpamCheckbool
isLivebool

响应

返回: Option[APIEmptyResponse]

示例

updateComment 示例
Copy Copy
1
2let (response, httpResponse) = client.updateComment(
3 tenantId = "my-tenant-123",
4 id = "cmt-987654",
5 updatableCommentParams = UpdatableCommentParams(
6 text = "Updated comment: corrected facts and clarified wording.",
7 isApproved = true,
8 tags = @["news", "update"]
9 ),
10 contextUserId = "user-456",
11 doSpamCheck = true,
12 isLive = true
13)
14
15if response.isSome:
16 let apiResp = response.get()
17 discard apiResp
18

为评论投票 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdstring
urlIdstring
broadcastIdstring
voteBodyParamsVoteBodyParams
sessionIdstring
ssostring

响应

返回:Option[VoteResponse]

示例

voteComment 示例
Copy Copy
1
2let (response, httpResponse) = client.voteComment(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654321",
5 urlId = "news/article-2026-inflation",
6 broadcastId = "",
7 voteBodyParams = VoteBodyParams(),
8 sessionId = "",
9 sso = ""
10)
11
12if response.isSome:
13 let voteResp = response.get()
14 discard voteResp
15else:
16 discard httpResponse
17

获取用户的评论 Internal Link

参数

名称类型必需描述
userIdstring
directionSortDirections
repliesToUserIdstring
pagefloat64
includei10nbool
localestring
isCrawlerbool

响应

返回: Option[GetCommentsForUserResponse]

示例

getCommentsForUser 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentsForUser(
3 userId = "user-8421",
4 direction = SortDirections.Newest,
5 repliesToUserId = "",
6 page = 1.0,
7 includei10n = true,
8 locale = "en-US",
9 isCrawler = false
10)
11
12if response.isSome:
13 let comments = response.get()
14 discard comments
15

添加域名配置 Internal Link

参数

名称类型必需描述
tenantIdstring
addDomainConfigParamsAddDomainConfigParams

响应

返回: Option[AddDomainConfigResponse]

示例

addDomainConfig 示例
Copy Copy
1
2let config = AddDomainConfigParams(
3 domain: "comments.example-news.com",
4 enabled: true,
5 allowedOrigins: @["https://www.example-news.com", "https://m.example-news.com"],
6 commentsPath: "/news/world/election-coverage",
7 priority: 5
8)
9let (response, httpResponse) = client.addDomainConfig(tenantId = "my-tenant-123", addDomainConfigParams = config)
10if response.isSome:
11 let created = response.get()
12 echo "Created domain config:", created
13else:
14 echo "Failed to create domain config, HTTP status:", httpResponse.status.code
15

删除域名配置 Internal Link

参数

名称类型必需描述
tenantIdstring
domainstring

响应

返回:Option[DeleteDomainConfigResponse]

示例

deleteDomainConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteDomainConfig(tenantId = "my-tenant-123", domain = "news.example.com")
3if response.isSome:
4 let deleted = response.get()
5 echo "DeleteDomainConfig succeeded for tenant ", "my-tenant-123"
6else:
7 echo "DeleteDomainConfig failed. HTTP status: ", $httpResponse.status
8

获取域名配置 Internal Link

参数

名称类型必需描述
tenantIdstring
domainstring

响应

返回: Option[GetDomainConfigResponse]

示例

getDomainConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.getDomainConfig(tenantId = "my-tenant-123", domain = "news/top-story-2026")
3if response.isSome:
4 let cfg = response.get()
5 discard cfg
6else:
7 discard httpResponse
8

获取域名配置列表 Internal Link

参数

名称类型必需描述
tenantIdstring

响应

返回:Option[GetDomainConfigsResponse]

示例

getDomainConfigs 示例
Copy Copy
1
2let (response, httpResponse) = client.getDomainConfigs(tenantId = "my-tenant-123")
3if response.isSome:
4 let domainConfigs = response.get()
5 echo "Received domain configs for tenant my-tenant-123"
6 echo domainConfigs
7else:
8 echo "No domain configs returned"
9

部分更新域名配置 Internal Link


参数

名称类型必需描述
tenantIdstring
domainToUpdatestring
patchDomainConfigParamsPatchDomainConfigParams

响应

返回: Option[PatchDomainConfigResponse]

示例

patchDomainConfig 示例
Copy Copy
1
2let patchParams: PatchDomainConfigParams = PatchDomainConfigParams(
3 allowedOrigins = @["https://news.example.com", "https://cdn.news.com"],
4 enableComments = true,
5 moderationRequired = false,
6 maxCommentLength = 2000,
7 primaryDomain = "comments.news-site.com"
8)
9let (response, httpResponse) = client.patchDomainConfig(
10 tenantId = "my-tenant-123",
11 domainToUpdate = "comments.news-site.com",
12 patchDomainConfigParams = patchParams
13)
14if response.isSome:
15 let cfg = response.get()
16 echo "Patched domain config received:", cfg
17else:
18 echo "No response body, HTTP status:", httpResponse.statusCode
19

替换域名配置 Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstring
domainToUpdatestring
updateDomainConfigParamsUpdateDomainConfigParams

Response

返回: Option[PutDomainConfigResponse]

Example

putDomainConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.putDomainConfig(
3 tenantId = "my-tenant-123",
4 domainToUpdate = "blog.example.com",
5 updateDomainConfigParams = UpdateDomainConfigParams(
6 allowAnonymous = false,
7 moderationEnabled = true,
8 maxCommentLength = 800,
9 allowedOrigins = @["https://blog.example.com", "https://cdn.blog.example.com"],
10 enableThreadedComments = true
11 )
12)
13
14if response.isSome:
15 let cfg = response.get()
16 echo cfg
17else:
18 echo "Failed to update domain config, HTTP status: ", httpResponse.status
19

创建邮件模板 Internal Link


参数

名称类型必需描述
tenantIdstring
createEmailTemplateBodyCreateEmailTemplateBody

响应

返回:Option[CreateEmailTemplateResponse]

示例

createEmailTemplate 示例
Copy Copy
1
2let (response, httpResponse) = client.createEmailTemplate(tenantId = "my-tenant-123",
3 createEmailTemplateBody = CreateEmailTemplateBody(
4 name = "Weekly Newsletter",
5 subject = "This Week on NewsSite",
6 html = "<h1>Latest updates</h1><p>Read our latest article.</p>",
7 fromAddress = "no-reply@newssite.com",
8 isDefault = false,
9 tags = @["news", "weekly"]
10 )
11)
12
13if response.isSome:
14 let template = response.get()
15 echo "Created email template id: ", template.id
16

删除邮件模板 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring

响应

返回: Option[APIEmptyResponse]

示例

deleteEmailTemplate 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteEmailTemplate(
3 tenantId = "my-tenant-123",
4 id = "welcome-email-template-001"
5)
6
7if response.isSome:
8 let apiEmpty = response.get()
9 discard apiEmpty
10 echo "Email template deleted successfully"
11else:
12 echo "No response body"
13

删除邮件模板渲染错误 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
errorIdstring

响应

返回:Option[APIEmptyResponse]

示例

deleteEmailTemplateRenderError 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteEmailTemplateRenderError(tenantId = "my-tenant-123", id = "welcome-email-template", errorId = "err-20250615-01")
3if response.isSome:
4 let emptyResp = response.get()
5 echo "Deleted render error, tenant:", "my-tenant-123"
6 echo "HTTP status:", httpResponse.status
7else:
8 echo "No body returned, HTTP status:", httpResponse.status
9

获取邮件模板 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:Option[GetEmailTemplateResponse]

示例

getEmailTemplate 示例
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplate(tenantId = "my-tenant-123", id = "welcome-email-01")
3if response.isSome:
4 let template = response.get()
5 discard template
6

获取邮件模板定义 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring

响应

返回: Option[GetEmailTemplateDefinitionsResponse]

示例

getEmailTemplateDefinitions 示例
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplateDefinitions(tenantId = "my-tenant-123")
3if response.isSome:
4 let definitions = response.get()
5 echo "Email template definitions for my-tenant-123: ", definitions
6else:
7 echo "Failed to retrieve templates, HTTP status: ", httpResponse.status
8

获取邮件模板渲染错误 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring
skipfloat64

响应

返回: Option[GetEmailTemplateRenderErrorsResponse]

示例

getEmailTemplateRenderErrors 示例
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplateRenderErrors(tenantId = "my-tenant-123", id = "", skip = 0.0)
3if response.isSome:
4 let templateErrors = response.get()
5 discard templateErrors
6else:
7 discard httpResponse
8

获取邮件模板列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipfloat64

响应

返回:Option[GetEmailTemplatesResponse]

示例

getEmailTemplates 示例
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplates(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let templates = response.get()
5 echo templates
6else:
7 echo "No email templates available"
8

渲染邮件模板 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
localestring

响应

返回: Option[RenderEmailTemplateResponse]

示例

renderEmailTemplate 示例
Copy Copy
1
2let (response, httpResponse) = client.renderEmailTemplate(
3 tenantId = "my-tenant-123",
4 renderEmailTemplateBody = RenderEmailTemplateBody(),
5 locale = "en-US"
6)
7
8if response.isSome:
9 let rendered = response.get()
10 echo rendered
11

更新邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateEmailTemplateBodyUpdateEmailTemplateBody

响应

返回: Option[APIEmptyResponse]

示例

updateEmailTemplate 示例
Copy Copy
1
2let updateBody = UpdateEmailTemplateBody(
3 subject = "Welcome to Newsly",
4 html = "<p>Thanks for joining Newsly! Visit https://newsly.example to get started.</p>",
5 fromAddress = "no-reply@newsly.example",
6 fromName = "Newsly Team",
7 enabled = true
8)
9let (response, httpResponse) = client.updateEmailTemplate(tenantId = "my-tenant-123", id = "welcome-email", updateEmailTemplateBody = updateBody)
10if response.isSome:
11 let result = response.get()
12 discard result
13else:
14 discard httpResponse.statusCode
15

获取事件日志 Internal Link

req tenantId urlId userIdWS

参数

名称类型必需描述
tenantIdstring
urlIdstring
userIdWSstring
startTimeint64
endTimeint64

响应

返回: Option[GetEventLogResponse]

示例

getEventLog 示例
Copy Copy
1
2let (response, httpResponse) = client.getEventLog(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-2026-solar-panels",
5 userIdWS = "user-456",
6 startTime = 1688000000'i64,
7 endTime = 1688086400'i64
8)
9if response.isSome:
10 let eventLog = response.get()
11 discard eventLog
12

获取全局事件日志 Internal Link

req tenantId urlId userIdWS

参数

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdWSstring
startTimeint64
endTimeint64

响应

返回: Option[GetEventLogResponse]

示例

getGlobalEventLog 示例
Copy Copy
1
2let (response, httpResponse) = client.getGlobalEventLog(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-2026-06-19",
5 userIdWS = "user-987",
6 startTime = int64(1622505600),
7 endTime = int64(1625097600)
8)
9if response.isSome:
10 let eventLog = response.get()
11 echo eventLog, httpResponse.statusCode
12

创建动态帖子 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstring
isLivebool
doSpamCheckbool
skipDupCheckbool

响应

返回:Option[CreateFeedPostsResponse]

示例

createFeedPost 示例
Copy Copy
1
2let postParams = CreateFeedPostParams(
3 title = "Major Acquisition by TechCorp",
4 content = "TechCorp has acquired SoftWorks in a deal valued at $1.2B, creating a new market leader.",
5 url = "news/tech/major-acquisition",
6 tags = @["business", "technology"],
7 authorId = "journalist-321"
8)
9
10let (response, httpResponse) = client.createFeedPost(
11 tenantId = "my-tenant-123",
12 createFeedPostParams = postParams,
13 broadcastId = "",
14 isLive = false,
15 doSpamCheck = false,
16 skipDupCheck = false
17)
18
19if response.isSome:
20 let created = response.get()
21 discard created
22

创建公开动态帖子 Internal Link

参数

名称类型必填描述
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstring
ssostring

响应

返回: Option[CreateFeedPostResponse]

示例

createFeedPostPublic 示例
Copy Copy
1
2let params = CreateFeedPostParams(
3 title = "Breaking: Major Update on Product X",
4 content = "Today we released Product X v2.0 with performance improvements and bug fixes.",
5 author = "jane.doe",
6 tags = @["product", "release", "v2"],
7 isPinned = false
8)
9
10let (response, httpResponse) = client.createFeedPostPublic(tenantId = "my-tenant-123", createFeedPostParams = params, broadcastId = "", sso = "")
11
12if response.isSome:
13 let created = response.get()
14 echo "Created feed post:", created
15else:
16 echo "Failed to create feed post; HTTP status:", httpResponse.status
17

删除公开动态帖子 Internal Link

参数

名称类型必需描述
tenantIdstring
postIdstring
broadcastIdstring
ssostring

响应

返回: Option[DeleteFeedPostPublicResponse]

示例

deleteFeedPostPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteFeedPostPublic(tenantId = "my-tenant-123", postId = "", broadcastId = "", sso = "")
3if response.isSome:
4 let deleted = response.get()
5 echo "Delete successful"
6else:
7 echo "Delete failed"
8

获取动态帖子 Internal Link

req tenantId afterId

参数

NameTypeRequiredDescription
tenantIdstring
afterIdstring
limitint
tagsseq[string]

响应

返回: Option[GetFeedPostsResponse]

示例

getFeedPosts 示例
Copy Copy
1
2let (response, httpResponse) = client.getFeedPosts(
3 tenantId = "my-tenant-123",
4 afterId = "",
5 limit = 0,
6 tags = @[]
7)
8if response.isSome:
9 let feed = response.get()
10 echo "Feed retrieved for tenant my-tenant-123"
11

获取公开动态帖子 Internal Link


req tenantId afterId

参数

NameTypeRequiredDescription
tenantIdstring
afterIdstring
limitint
tagsseq[string]
ssostring
isCrawlerbool
includeUserInfobool

响应

返回: Option[PublicFeedPostsResponse]

示例

getFeedPostsPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.getFeedPostsPublic(
3 tenantId = "my-tenant-123",
4 afterId = "",
5 limit = 0,
6 tags = @[],
7 sso = "",
8 isCrawler = false,
9 includeUserInfo = false
10)
11if response.isSome:
12 let feed = response.get()
13 discard feed
14

获取动态帖子统计 Internal Link

参数

名称类型必需描述
tenantIdstring
postIdsseq[string]
ssostring

响应

返回: Option[FeedPostsStatsResponse]

示例

getFeedPostsStats 示例
Copy Copy
1
2let (response, httpResponse) = client.getFeedPostsStats(tenantId = "my-tenant-123", postIds = @["news/article-2026", "opinion/market-trends"], sso = "")
3if response.isSome:
4 let stats = response.get()
5 echo "Received feed posts stats for tenant:", " my-tenant-123"
6 discard stats
7

获取公开用户反应 Internal Link


参数

NameTypeRequiredDescription
tenantIdstring
postIdsseq[string]
ssostring

响应

返回: Option[UserReactsResponse]

示例

getUserReactsPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserReactsPublic(
3 tenantId = "my-tenant-123",
4 postIds = @["news/article-2026", "blog/opinion-987"],
5 sso = ""
6)
7if response.isSome:
8 let reacts = response.get()
9 echo "Received user reacts for tenant: ", "my-tenant-123"
10

对动态帖子进行公开回应(React) Internal Link

参数

名称类型必需描述
tenantIdstring
postIdstring
reactBodyParamsReactBodyParams
isUndobool
broadcastIdstring
ssostring

响应

返回: Option[ReactFeedPostResponse]

示例

reactFeedPostPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.reactFeedPostPublic(
3 tenantId = "my-tenant-123",
4 postId = "news/article-2026-06-19",
5 reactBodyParams = ReactBodyParams(reactType = "heart", tags = @["breaking", "editorial"]),
6 isUndo = false,
7 broadcastId = "broadcast-789",
8 sso = "sso-token-abc123"
9)
10if response.isSome:
11 let react = response.get()
12 echo react
13else:
14 echo "No response from reactFeedPostPublic, HTTP status:", httpResponse.statusCode
15

更新动态帖子 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
feedPostFeedPost

响应

返回: Option[APIEmptyResponse]

示例

updateFeedPost 示例
Copy Copy
1
2let feedPost: FeedPost = FeedPost(title: "City Council Approves New Waterfront Park",
3 content: "The council voted 5-2 to approve funding and a timeline for construction.",
4 tags: @["local", "parks", "city"],
5 published: true)
6
7let (response, httpResponse) = client.updateFeedPost(tenantId = "my-tenant-123", id = "post-456", feedPost = feedPost)
8
9if response.isSome:
10 let apiResp = response.get()
11 echo "Feed post updated successfully"
12 echo apiResp
13else:
14 echo "Failed to update feed post"
15 echo httpResponse
16

公开更新动态帖子 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
postIdstring
updateFeedPostParamsUpdateFeedPostParams
broadcastIdstring
ssostring

响应

返回: Option[CreateFeedPostResponse]

示例

updateFeedPostPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.updateFeedPostPublic(
3 tenantId = "my-tenant-123",
4 postId = "post-456",
5 updateFeedPostParams = UpdateFeedPostParams(title = "Weekly Product Update", content = "Released bug fixes and performance improvements in v2.1.", tags = @["release", "product"], pinned = false),
6 broadcastId = "",
7 sso = ""
8)
9if response.isSome:
10 let created = response.get()
11 echo "Updated feed post id: ", created.postId
12else:
13 echo "Update failed with HTTP status: ", httpResponse.status
14

公开举报评论 Internal Link


参数

名称类型必填描述
tenantIdstring
commentIdstring
isFlaggedbool
ssostring

响应

返回: Option[APIEmptyResponse]

示例

flagCommentPublic Example
Copy Copy
1
2let (response, httpResponse) = client.flagCommentPublic(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456789",
5 isFlagged = true,
6 sso = ""
7)
8
9if response.isSome:
10 let apiResp = response.get()
11 discard apiResp
12else:
13 discard httpResponse
14

获取大尺寸动图 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
largeInternalURLSanitizedstring

响应

返回: Option[GifGetLargeResponse]

示例

getGifLarge 示例
Copy Copy
1
2let (response, httpResponse) = client.getGifLarge(tenantId = "news-tenant-42", largeInternalURLSanitized = "")
3if response.isSome:
4 let gif = response.get()
5 echo "Received GifGetLargeResponse"
6 discard gif
7else:
8 echo "No gif returned, HTTP status: " & $httpResponse.status
9

搜索动图 Internal Link

参数

名称类型必需描述
tenantIdstring
searchstring
localestring
ratingstring
pagefloat64

响应

返回: Option[GetGifsSearchResponse]

示例

getGifsSearch 示例
Copy Copy
1
2let (response, httpResponse) = client.getGifsSearch(
3 tenantId = "my-tenant-123",
4 search = "funny cat",
5 locale = "en-US",
6 rating = "PG",
7 page = 1.0
8)
9
10if response.isSome:
11 let gifs = response.get()
12 echo "Fetched GIFs response:", gifs
13

获取热门动图 Internal Link

参数

名称类型必填描述
tenantIdstring
localestring
ratingstring
pagefloat64

响应

返回:Option[GetGifsTrendingResponse]

示例

getGifsTrending 示例
Copy Copy
1
2let (response, httpResponse) = client.getGifsTrending(tenantId = "my-tenant-123",
3 locale = "en-US",
4 rating = "pg-13",
5 page = 1.0)
6if response.isSome:
7 let trending = response.get()
8

添加话题标签 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createHashTagBodyCreateHashTagBody

响应

返回: Option[CreateHashTagResponse]

示例

addHashTag 示例
Copy Copy
1
2let (response, httpResponse) = client.addHashTag(tenantId = "my-tenant-123",
3 createHashTagBody = CreateHashTagBody(name = "Breaking News",
4 slug = "breaking-news",
5 description = "Major breaking news items",
6 color = "#ff0000",
7 isTrending = true,
8 aliases = @["breaking", "news"]))
9if response.isSome:
10 let created = response.get()
11 echo created
12

批量添加话题标签 Internal Link

参数

名称类型必需描述
tenantIdstring
bulkCreateHashTagsBodyBulkCreateHashTagsBody

响应

返回:Option[BulkCreateHashTagsResponse]

示例

addHashTagsBulk 示例
Copy Copy
1
2let (response, httpResponse) = client.addHashTagsBulk(tenantId = "my-tenant-123", bulkCreateHashTagsBody = BulkCreateHashTagsBody(hashTags = @["news", "breaking", "politics"], replaceExisting = false))
3if response.isSome:
4 let result = response.get()
5 echo "Bulk tags response:", result
6else:
7 echo "No response body, HTTP status:", httpResponse.statusCode
8

删除话题标签 Internal Link

参数

NameTypeRequiredDescription
tagstring
tenantIdstring
deleteHashTagRequestBodyDeleteHashTagRequestBody

响应

返回: Option[APIEmptyResponse]

示例

deleteHashTag 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteHashTag(
3 tag = "",
4 tenantId = "my-tenant-123",
5 deleteHashTagRequestBody = DeleteHashTagRequestBody()
6)
7
8if response.isSome:
9 let emptyResp = response.get()
10 echo "Deleted hashtag for tenant my-tenant-123; response:", $emptyResp, " status:", $httpResponse.status
11else:
12 echo "No response body; status:", $httpResponse.status
13

获取话题标签 Internal Link

参数

名称类型必需描述
tenantIdstring
pagefloat64

响应

返回: Option[GetHashTagsResponse]

示例

getHashTags 示例
Copy Copy
1
2let (response, httpResponse) = client.getHashTags(tenantId = "news-portal-987", page = 2.0)
3if response.isSome:
4 let tagsResp = response.get()
5 echo "Received hashtags response"
6else:
7 echo "No hashtags returned"
8

部分更新话题标签 Internal Link

参数

名称类型必需描述
tagstring
tenantIdstring
updateHashTagBodyUpdateHashTagBody

响应

返回: Option[UpdateHashTagResponse]

示例

patchHashTag 示例
Copy Copy
1
2let (response, httpResponse) = client.patchHashTag(tag = "breaking-news", tenantId = "my-tenant-123", updateHashTagBody = UpdateHashTagBody())
3if response.isSome:
4 let updatedHashTag = response.get()
5 echo updatedHashTag
6

删除审核投票 Internal Link

参数

名称类型必需描述
commentIdstring
voteIdstring
ssostring

响应

返回: Option[VoteDeleteResponse]

示例

deleteModerationVote 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteModerationVote(commentId = "my-tenant-123/news/article-title/comment-987", voteId = "vote-456", sso = "sso-token-abc")
3if response.isSome:
4 let voteResp = response.get()
5 echo "Vote deleted:", voteResp
6else:
7 echo "Delete failed:", httpResponse
8

获取 API 评论(审核) Internal Link

参数

名称类型必需描述
pagefloat64
countfloat64
textSearchstring
byIPFromCommentstring
filtersstring
searchFiltersstring
sortsstring
demobool
ssostring

响应

返回: Option[ModerationAPIGetCommentsResponse]

示例

getApiComments 示例
Copy Copy
1
2let (response, httpResponse) = client.getApiComments(
3 page = 1.0,
4 count = 25.0,
5 textSearch = "opinion on climate summit",
6 byIPFromComment = "198.51.100.23",
7 filters = "status:approved",
8 searchFilters = "section:world",
9 sorts = "-createdAt",
10 demo = false,
11 sso = "sso-user-982bf"
12)
13
14if response.isSome:
15 let commentsResp = response.get()
16 echo "Retrieved comments response"
17else:
18 echo "No comments returned, HTTP status: ", httpResponse.status
19

获取 API 导出状态 Internal Link


参数

名称类型必需描述
batchJobIdstring
ssostring

响应

返回: Option[ModerationExportStatusResponse]

示例

getApiExportStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.getApiExportStatus(batchJobId = "export-job-2026-06-01", sso = "sso-abc123token")
3if response.isSome:
4 let exportStatus = response.get()
5 echo repr(exportStatus)
6else:
7 echo "No export status available, HTTP code: ", httpResponse.statusCode
8

获取 API IDs Internal Link


参数

名称类型必需描述
textSearchstring
byIPFromCommentstring
filtersstring
searchFiltersstring
afterIdstring
demobool
ssostring

响应

返回: Option[ModerationAPIGetCommentIdsResponse]

示例

getApiIds 示例
Copy Copy
1
2let (response, httpResponse) = client.getApiIds(
3 textSearch = "urgent moderation review",
4 byIPFromComment = "203.0.113.45",
5 filters = "status:pending,flagged",
6 searchFilters = "author:jane.doe@example.com",
7 afterId = "cmt_9f8e7d6a",
8 demo = false,
9 sso = "sso-token-6b7f9a"
10)
11
12if response.isSome:
13 let idsResp = response.get()
14 echo idsResp
15

获取因评论被封禁的用户 Internal Link

参数

名称类型必需描述
commentIdstring
ssostring

响应

返回: Option[GetBannedUsersFromCommentResponse]

示例

getBanUsersFromComment 示例
Copy Copy
1
2let (response, httpResponse) = client.getBanUsersFromComment(commentId = "comment-98765", sso = "")
3if response.isSome:
4 let bannedResp = response.get()
5 discard bannedResp
6else:
7 echo "No banned users found or request failed"
8

获取评论封禁状态 Internal Link

参数

NameTypeRequiredDescription
commentIdstring
ssostring

响应

返回:Option[GetCommentBanStatusResponse]

示例

getCommentBanStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentBanStatus(commentId = "cmt-987654321", sso = "")
3
4if response.isSome:
5 let banStatus = response.get()
6 echo "Ban status for comment cmt-987654321: ", banStatus
7else:
8 echo "No ban status returned for comment cmt-987654321"
9

获取评论子项 Internal Link

参数

名称类型是否必需描述
commentIdstring
ssostring

响应

返回:Option[ModerationAPIChildCommentsResponse]

示例

getCommentChildren 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentChildren(commentId = "comment-98765", sso = "")
3if response.isSome:
4 let childResp = response.get()
5 discard childResp
6

获取计数 Internal Link


参数

名称类型必需描述
textSearchstring
byIPFromCommentstring
filterstring
searchFiltersstring
demobool
ssostring

返回

返回: Option[ModerationAPICountCommentsResponse]

示例

getCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getCount(
3 textSearch = "climate change",
4 byIPFromComment = "203.0.113.5",
5 filter = "status:approved",
6 searchFilters = "author:john.doe@example.com;tag:opinion",
7 demo = false,
8 sso = "sso_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
9)
10if response.isSome:
11 let countResp = response.get()
12 discard countResp
13 echo "Count response received"
14else:
15 echo "No count data returned"
16

获取多个计数 Internal Link

参数

名称类型必需描述
ssostring

响应

返回: Option[GetBannedUsersCountResponse]

示例

getCounts 示例
Copy Copy
1
2let (response, httpResponse) = client.getCounts(sso = "sso_my-tenant-123_token_AbCdEf123456")
3if response.isSome:
4 let counts = response.get()
5 echo counts
6else:
7 echo "Request failed with status:", httpResponse.status
8

获取日志 Internal Link


参数

名称类型必需描述
commentIdstring
ssostring

响应

返回: Option[ModerationAPIGetLogsResponse]

示例

getLogs 示例
Copy Copy
1
2let (response, httpResponse) = client.getLogs(commentId = "cmt-8471f2d3", sso = "")
3if response.isSome:
4 let logs = response.get()
5 echo "Fetched logs:", logs
6

获取手动徽章 Internal Link

参数

NameTypeRequiredDescription
ssostringNo

响应

返回: Option[GetTenantManualBadgesResponse]

示例

getManualBadges 示例
Copy Copy
1
2let (response, httpResponse) = client.getManualBadges(sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9")
3if response.isSome:
4 let badges = response.get()
5 echo "Manual badges received:"
6 echo badges
7else:
8 echo "No manual badges returned."
9 echo httpResponse
10

获取某用户的手动徽章 Internal Link

参数

NameTypeRequiredDescription
badgesUserIdstringNo
commentIdstringYes
ssostringNo

响应

返回: Option[GetUserManualBadgesResponse]

示例

getManualBadgesForUser 示例
Copy Copy
1
2let (response, httpResponse) = client.getManualBadgesForUser(
3 badgesUserId = "user-98765",
4 commentId = "comment-0a1b2c3d",
5 sso = "sso-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
6)
7if response.isSome:
8 let badges = response.get()
9 echo "Received manual badges for user"
10 echo "HTTP status: ", httpResponse.status
11

获取审核评论 Internal Link

参数

名称类型必填描述
commentIdstring
includeEmailbool
includeIPbool
ssostring

响应

返回:Option[ModerationAPICommentResponse]

示例

getModerationComment 示例
Copy Copy
1
2let (response, httpResponse) = client.getModerationComment(commentId = "cmt-8f3b2a9d", includeEmail = false, includeIP = false, sso = "")
3if response.isSome:
4 let comment = response.get()
5 discard comment
6else:
7 echo "No moderation comment returned"
8

获取审核评论文本 Internal Link

参数

名称类型必填描述
commentIdstring
ssostring

响应

返回: Option[GetCommentTextResponse]

示例

getModerationCommentText 示例
Copy Copy
1
2let (response, httpResponse) = client.getModerationCommentText(commentId = "comment-9f8b7a6c", sso = "")
3if response.isSome:
4 let commentData = response.get()
5 echo "Moderation comment text retrieved"
6else:
7 echo "No moderation comment text available"
8

获取预封禁摘要 Internal Link

参数

名称类型必需描述
commentIdstring
includeByUserIdAndEmailbool
includeByIPbool
includeByEmailDomainbool
ssostring

响应

返回: Option[PreBanSummary]

示例

getPreBanSummary 示例
Copy Copy
1
2let commentId = "cmt-7423"
3let (response, httpResponse) = client.getPreBanSummary(
4 commentId = commentId,
5 includeByUserIdAndEmail = false,
6 includeByIP = false,
7 includeByEmailDomain = false,
8 sso = ""
9)
10if response.isSome:
11 let preBanSummary = response.get()
12 discard preBanSummary
13else:
14 discard httpResponse
15

获取搜索评论摘要 Internal Link

参数

名称类型必需描述
valuestring
filtersstring
searchFiltersstring
ssostring

响应

返回:Option[ModerationCommentSearchResponse]

示例

getSearchCommentsSummary 示例
Copy Copy
1
2let (response, httpResponse) = client.getSearchCommentsSummary(
3 value = "news/climate-change-2026",
4 filters = "{\"tenantId\":\"my-tenant-123\",\"siteId\":\"main-site\",\"status\":\"approved\"}",
5 searchFilters = "author:journalist@news.com OR content:climate",
6 sso = "sso-xyz-7890"
7)
8if response.isSome:
9 let summary = response.get()
10 echo "Received summary: ", $summary
11else:
12 echo "No summary returned, HTTP response: ", $httpResponse
13

获取搜索页面 Internal Link

参数

名称类型是否必填描述
valuestring
ssostring

响应

返回: Option[ModerationPageSearchResponse]

示例

getSearchPages 示例
Copy Copy
1
2let (response, httpResponse) = client.getSearchPages(value = "news/politics/election-2024", sso = "sso-user-7f3b9c")
3if response.isSome:
4 let pageSearch = response.get()
5 echo "Moderation page search returned"
6else:
7 echo "No moderation pages found"
8

获取搜索站点 Internal Link


参数

名称类型必需描述
valuestring
ssostring

响应

返回:Option[ModerationSiteSearchResponse]

示例

getSearchSites 示例
Copy Copy
1
2let (response, httpResponse) = client.getSearchSites(value = "news/2026-olympics", sso = "sso-user-9876-token")
3if response.isSome:
4 let searchResponse: ModerationSiteSearchResponse = response.get()
5 echo "Found sites for search:", searchResponse
6

获取搜索建议 Internal Link

参数

NameTypeRequiredDescription
textSearchstring
ssostring

响应

返回: Option[ModerationSuggestResponse]

示例

getSearchSuggest 示例
Copy Copy
1
2let (response, httpResponse) = client.getSearchSuggest(textSearch = "suspicious comment with spammy links", sso = "sso-user-789")
3if response.isSome:
4 let suggest = response.get()
5 echo "ModerationSuggestResponse:"
6 echo suggest
7else:
8 echo "No moderation suggestions returned. HTTP status: ", httpResponse.status
9

获取搜索用户 Internal Link


参数

名称类型必需描述
valuestring
ssostring

响应

返回: Option[ModerationUserSearchResponse]

示例

getSearchUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.getSearchUsers(value = "john.doe@example.com", sso = "sso-acme-789")
3if response.isSome:
4 let searchRes = response.get()
5 echo "Search result:", searchRes
6else:
7 echo "No users found"
8

获取信任因子 Internal Link


参数

NameTypeRequiredDescription
userIdstring
ssostring

响应

返回: Option[GetUserTrustFactorResponse]

示例

getTrustFactor 示例
Copy Copy
1
2let (response, httpResponse) = client.getTrustFactor(userId = "user-1001", sso = "sso-token-6f7d9c")
3if response.isSome:
4 let trust = response.get()
5 echo "Received trust factor for user-1001"
6else:
7 echo "No trust factor returned, HTTP status: ", $httpResponse.status
8

获取用户封禁偏好 Internal Link

参数

名称类型必需描述
ssostring

响应

返回: Option[APIModerateGetUserBanPreferencesResponse]

示例

getUserBanPreference 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserBanPreference(sso = "sso-jwt-7f3a9b")
3if response.isSome:
4 let prefs = response.get()
5 echo "User ban preferences:", prefs
6else:
7 echo "No ban preference found"
8

获取用户内部档案 Internal Link

参数

NameTypeRequiredDescription
commentIdstring
ssostring

响应

返回: Option[GetUserInternalProfileResponse]

示例

getUserInternalProfile 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserInternalProfile(commentId = "cmt-2026-00042", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoibXl1c2VyIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c")
3if response.isSome:
4 let profile = response.get()
5 discard profile
6

调整评论投票 Internal Link

参数

NameTypeRequiredDescription
commentIdstring
adjustCommentVotesParamsAdjustCommentVotesParams
ssostring

响应

返回:Option[AdjustVotesResponse]

示例

postAdjustCommentVotes 示例
Copy Copy
1
2let (response, httpResponse) = client.postAdjustCommentVotes(commentId = "cmt-987654", adjustCommentVotesParams = nil, sso = "sso-token-abc123")
3if response.isSome:
4 let adjusted = response.get()
5 discard adjusted
6

提交 API 导出 Internal Link


参数

NameTypeRequiredDescription
textSearchstring
byIPFromCommentstring
filtersstring
searchFiltersstring
sortsstring
ssostring

响应

返回: Option[ModerationExportResponse]

示例

postApiExport 示例
Copy Copy
1
2let (response, httpResponse) = client.postApiExport(
3 textSearch = "offensive language and spam",
4 byIPFromComment = "203.0.113.45",
5 filters = "{\"status\":\"pending\",\"severity\":\"high\"}",
6 searchFilters = "authorEmail:editor@news-site.com",
7 sorts = "-createdAt",
8 sso = "sso-session-token-9f8b7c"
9)
10if response.isSome:
11 let exportResp = response.get()
12 echo "Moderation export received:", exportResp
13else:
14 echo "No export returned, HTTP status:", httpResponse.status.code
15

提交对用户的评论封禁 Internal Link

参数

NameTypeRequiredDescription
commentIdstring
banEmailbool
banEmailDomainbool
banIPbool
deleteAllUsersCommentsbool
bannedUntilstring
isShadowBanbool
updateIdstring
banReasonstring
ssostring

响应

返回: Option[BanUserFromCommentResult]

示例

postBanUserFromComment 示例
Copy Copy
1
2let (response, httpResponse) = client.postBanUserFromComment(
3 commentId = "cmt-8f3a1b",
4 banEmail = false,
5 banEmailDomain = false,
6 banIP = false,
7 deleteAllUsersComments = false,
8 bannedUntil = "",
9 isShadowBan = false,
10 updateId = "",
11 banReason = "",
12 sso = ""
13)
14if response.isSome:
15 let banResult = response.get()
16 discard banResult
17else:
18 echo "No ban result returned"
19

撤销用户封禁 Internal Link

参数

NameTypeRequiredDescription
banUserUndoParamsBanUserUndoParams
ssostring

响应

返回:Option[APIEmptyResponse]

示例

postBanUserUndo 示例
Copy Copy
1
2let banParams = BanUserUndoParams(
3 tenantId = "my-tenant-123",
4 userId = "user-987",
5 undoneBy = "moderator-42",
6 reason = "Reinstated after manual review"
7)
8let (response, httpResponse) = client.postBanUserUndo(banUserUndoParams = banParams, sso = "sso-jwt-abc123")
9if response.isSome:
10 let apiResp = response.get()
11 echo "Ban undo succeeded, http status: " & $httpResponse.status
12else:
13 echo "Ban undo failed, http status: " & $httpResponse.status
14

批量提交预封禁摘要 Internal Link

参数

名称类型必需描述
bulkPreBanParamsBulkPreBanParams
includeByUserIdAndEmailbool
includeByIPbool
includeByEmailDomainbool
ssostring

响应

返回:Option[BulkPreBanSummary]

示例

postBulkPreBanSummary 示例
Copy Copy
1
2let bulkParams = BulkPreBanParams(
3 tenantId = "my-tenant-123",
4 userIds = @["user-456", "user-789"],
5 emails = @["spammer@example.com", "bot@malicious.org"],
6 ipAddresses = @["203.0.113.5", "198.51.100.42"],
7 emailDomains = @["malicious.org"]
8)
9
10let (response, httpResponse) = client.postBulkPreBanSummary(
11 bulkPreBanParams = bulkParams,
12 includeByUserIdAndEmail = true,
13 includeByIP = true,
14 includeByEmailDomain = false,
15 sso = "sso-token-abc123"
16)
17
18if response.isSome:
19 let summary = response.get()
20 echo "Pre-ban summary:", summary
21

按 ID 获取评论(批量) Internal Link

参数

名称类型必需描述
commentsByIdsParamsCommentsByIdsParams
ssostring

响应

返回:Option[ModerationAPIChildCommentsResponse]

示例

postCommentsByIds 示例
Copy Copy
1
2let commentsParams = CommentsByIdsParams(ids = @["cmt-1001", "cmt-1002"], includeReplies = true, maxDepth = 2)
3let (response, httpResponse) = client.postCommentsByIds(commentsByIdsParams = commentsParams, sso = "sso-user-7f3a9b")
4if response.isSome:
5 let result = response.get()
6 echo "Received child comments response: ", result
7

提交举报评论 Internal Link

参数

NameTypeRequiredDescription
commentIdstring
ssostring

响应

返回: Option[APIEmptyResponse]

示例

postFlagComment 示例
Copy Copy
1
2let (response, httpResponse) = client.postFlagComment(commentId = "comment-742", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Comment flagged successfully"
6else:
7 echo "Failed to flag comment"
8

提交移除评论 Internal Link

参数

名称类型必需说明
commentIdstring
ssostring

响应

返回: Option[PostRemoveCommentResponse]

示例

postRemoveComment 示例
Copy Copy
1
2let (response, httpResponse) = client.postRemoveComment(commentId = "cmt-987654321", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.abc123.signature")
3if response.isSome:
4 let removed = response.get()
5 echo "Comment removed:", removed
6else:
7 echo "Failed to remove comment, HTTP response:", httpResponse
8

恢复已删除评论 Internal Link

参数

名称类型必需描述
commentIdstring
ssostring

响应

返回: Option[APIEmptyResponse]

示例

postRestoreDeletedComment 示例
Copy Copy
1
2let (response, httpResponse) = client.postRestoreDeletedComment(commentId = "comment-8a7b6c5d", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.SAMPLE_SIGNATURE")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Comment restored:", apiResp
6else:
7 echo "Restore request failed"
8

设置评论审批状态 Internal Link

参数

名称类型必填描述
commentIdstring
approvedbool
ssostring

响应

返回: Option[SetCommentApprovedResponse]

示例

postSetCommentApprovalStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentApprovalStatus(commentId = "cmt-7890", approved = false, sso = "")
3if response.isSome:
4 let setResp = response.get()
5 discard setResp
6

设置评论复核状态 Internal Link

参数

NameTypeRequiredDescription
commentIdstring
reviewedbool
ssostring

响应

返回: Option[APIEmptyResponse]

示例

postSetCommentReviewStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentReviewStatus(
3 commentId = "cmt-98765-news-article",
4 reviewed = false,
5 sso = ""
6)
7if response.isSome:
8 let apiResp = response.get()
9 echo "Review status updated"
10else:
11 echo "Failed to update review status: " & $httpResponse.status
12

设置评论为垃圾状态 Internal Link

参数

名称类型必需描述
commentIdstring
spambool
permNotSpambool
ssostring

响应

返回:Option[APIEmptyResponse]

示例

postSetCommentSpamStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentSpamStatus(
3 commentId = "cmt-20250619-842",
4 spam = false,
5 permNotSpam = false,
6 sso = ""
7)
8if response.isSome:
9 let apiEmpty = response.get()
10 discard apiEmpty
11

设置评论文本(审核) Internal Link

参数

名称类型必需描述
commentIdstring
setCommentTextParamsSetCommentTextParams
ssostring

响应

返回: Option[SetCommentTextResponse]

示例

postSetCommentText 示例
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentText(commentId = "comment-4821",
3 setCommentTextParams = SetCommentTextParams(text = "Updated comment to clarify the main point and fix a typo."),
4 sso = "sso-user-8f3b9c")
5
6if response.isSome:
7 let setCommentResp = response.get()
8 echo "Received SetCommentTextResponse"
9

取消举报评论(审核) Internal Link

参数

NameTypeRequiredDescription
commentIdstring
ssostring

响应

返回: Option[APIEmptyResponse]

示例

postUnFlagComment 示例
Copy Copy
1
2let (response, httpResponse) = client.postUnFlagComment(commentId = "comment-8f3a2b4e", sso = "")
3if response.isSome:
4 let apiEmpty = response.get()
5 echo "Comment unflagged successfully, response: ", apiEmpty
6else:
7 echo "Failed to unflag comment. HTTP response: ", httpResponse
8

提交投票(审核) Internal Link

参数

名称类型必需描述
commentIdstring
directionstring
ssostring

响应

返回: Option[VoteResponse]

示例

postVote 示例
Copy Copy
1
2let (response, httpResponse) = client.postVote(commentId = "comment-4f3a9e", direction = "up", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoidXNlci0xMjMifQ.signedPart")
3if response.isSome:
4 let vote = response.get()
5 echo "Vote recorded:", vote
6else:
7 echo "No vote returned"
8

授予徽章 Internal Link

参数

NameType是否必需描述
badgeIdstring
userIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回: Option[AwardUserBadgeResponse]

示例

putAwardBadge 示例
Copy Copy
1
2let (response, httpResponse) = client.putAwardBadge(
3 badgeId = "gold-contributor",
4 userId = "user-8723",
5 commentId = "cmt-54a3b2",
6 broadcastId = "",
7 sso = ""
8)
9if response.isSome:
10 let award = response.get()
11 echo "Awarded badge received"
12else:
13 echo "No award response"
14

关闭主题 Internal Link

参数

名称类型必需说明
urlIdstring
ssostring

响应

返回:Option[APIEmptyResponse]

示例

putCloseThread 示例
Copy Copy
1
2let (response, httpResponse) = client.putCloseThread(urlId = "news/article-title", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Thread closed successfully:", $apiResp
6else:
7 echo "Failed to close thread, HTTP response:", $httpResponse
8

移除徽章 Internal Link

参数

名称类型必填描述
badgeIdstring
userIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回: Option[RemoveUserBadgeResponse]

示例

putRemoveBadge 示例
Copy Copy
1
2let (response, httpResponse) = client.putRemoveBadge(badgeId = "verified-journalist",
3 userId = "user-7890",
4 commentId = "comment-98765",
5 broadcastId = "",
6 sso = "")
7
8if response.isSome:
9 let removeResp = response.get()
10 discard removeResp
11else:
12 discard httpResponse
13

重新打开主题 Internal Link

参数

名称类型必需描述
urlIdstring
ssostring

响应

返回:Option[APIEmptyResponse]

示例

putReopenThread 示例
Copy Copy
1
2let (response, httpResponse) = client.putReopenThread(urlId = "news/2026-election-analysis", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Reopen succeeded, response: ", apiResp
6else:
7 echo "Reopen failed, HTTP status: ", httpResponse.status
8

设置信任因子 Internal Link


参数

名称类型必需描述
userIdstring
trustFactorstring
ssostring

响应

返回: Option[SetUserTrustFactorResponse]

示例

setTrustFactor 示例
Copy Copy
1
2let (response, httpResponse) = client.setTrustFactor(userId = "user-9876", trustFactor = "high", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTk4NzYiLCJpYXQiOjE2MjQwMDAwMDB9.signature")
3if response.isSome:
4 let resultObj = response.get()
5 echo resultObj
6else:
7 echo "No response received"
8

创建审核员 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createModeratorBodyCreateModeratorBody

响应

返回: Option[CreateModeratorResponse]

示例

createModerator 示例
Copy Copy
1
2var body: CreateModeratorBody
3body.username = "alice.moderator"
4body.displayName = "Alice Moderator"
5body.email = "alice@news-site.com"
6body.enabled = true
7body.roles = @["moderator"]
8body.notes = ""
9
10let (response, httpResponse) = client.createModerator(tenantId = "my-tenant-123", createModeratorBody = body)
11if response.isSome:
12 let created = response.get()
13 echo "Created moderator ID: ", created.id
14

删除审核员 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
sendEmailstring

响应

返回:Option[APIEmptyResponse]

示例

deleteModerator 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteModerator(tenantId = "my-tenant-123", id = "", sendEmail = "")
3if response.isSome:
4 let apiEmpty = response.get()
5 echo "Moderator deleted successfully for tenant my-tenant-123"
6else:
7 echo "No response returned; inspect httpResponse"
8

获取审核员 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: Option[GetModeratorResponse]

示例

getModerator 示例
Copy Copy
1
2let (response, httpResponse) = client.getModerator(tenantId = "my-tenant-123", id = "mod-456")
3if response.isSome:
4 let moderator = response.get()
5 echo moderator
6else:
7 echo "Moderator not found, HTTP status: ", $httpResponse.status
8

获取审核员列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipfloat64

响应

返回: Option[GetModeratorsResponse]

示例

getModerators 示例
Copy Copy
1
2let (response, httpResponse) = client.getModerators(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let moderators = response.get()
5 echo "Received moderators response:", moderators
6else:
7 echo "No moderators returned"
8

更新审核员 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateModeratorBodyUpdateModeratorBody

响应

返回:Option[APIEmptyResponse]

示例

updateModerator 示例
Copy Copy
1
2let modBody: UpdateModeratorBody = UpdateModeratorBody(
3 displayName = "Alice Moderator",
4 email = "alice@newsdaily.com",
5 isActive = true,
6 permissions = @["delete_comments", "ban_users"]
7)
8
9let (response, httpResponse) = client.updateModerator(tenantId = "news-tenant-456", id = "moderator-789", updateModeratorBody = modBody)
10
11if response.isSome:
12 let apiEmpty = response.get()
13 echo "Moderator updated successfully. HTTP status: ", httpResponse.status
14else:
15 echo "Failed to update moderator. HTTP status: ", httpResponse.status
16

删除通知计数 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[APIEmptyResponse]

示例

deleteNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteNotificationCount(tenantId = "my-tenant-123", id = "notification-789")
3if response.isSome:
4 let emptyResp = response.get()
5 echo "Notification count deleted for tenant: ", "my-tenant-123"
6else:
7 echo "Failed to delete notification count, status: ", $httpResponse.statusCode
8

获取缓存的通知计数 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:Option[GetCachedNotificationCountResponse]

示例

getCachedNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getCachedNotificationCount(tenantId = "my-tenant-123", id = "notification-789")
3if response.isSome:
4 let cached = response.get()
5 echo "Cached notification count: ", $cached
6else:
7 echo "No cached notification count"
8

获取通知计数 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
userIdstring
urlIdstring
fromCommentIdstring
viewedbool

响应

返回:Option[GetNotificationCountResponse]

示例

getNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getNotificationCount(tenantId = "my-tenant-123", userId = "user-987", urlId = "news/2026/06/election-results", fromCommentId = "", viewed = false)
3if response.isSome:
4 let notifyData = response.get()
5 echo notifyData
6

获取通知 Internal Link

参数

名称类型必填描述
tenantIdstring
userIdstring
urlIdstring
fromCommentIdstring
viewedbool
skipfloat64

响应

返回: Option[GetNotificationsResponse]

示例

getNotifications 示例
Copy Copy
1
2let (response, httpResponse) = client.getNotifications(tenantId = "my-tenant-123", userId = "user-456", urlId = "news/article-title", fromCommentId = "cmt-789", viewed = false, skip = 0.0)
3if response.isSome:
4 let notifications = response.get()
5 echo notifications
6

更新通知 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
updateNotificationBodyUpdateNotificationBody
userIdstring

响应

返回: Option[APIEmptyResponse]

示例

updateNotification 示例
Copy Copy
1
2let (response, httpResponse) = client.updateNotification(
3 tenantId = "my-tenant-123",
4 id = "notif-456",
5 updateNotificationBody = UpdateNotificationBody(
6 enabled = true,
7 channels = @["email", "push"],
8 frequency = "immediate"
9 ),
10 userId = "user-789"
11)
12
13if response.isSome:
14 let apiEmpty = response.get()
15 discard apiEmpty
16

创建 V1 页面反应 Internal Link

参数

名称类型必需描述
tenantIdstring
urlIdstring
titlestring

响应

返回:Option[CreateV1PageReact]

示例

createV1PageReact 示例
Copy Copy
1
2let (response, httpResponse) = client.createV1PageReact(
3 tenantId = "my-tenant-123",
4 urlId = "news/2026/market-rally",
5 title = "Breaking News: Markets Rally Today"
6)
7
8if response.isSome:
9 let pageReact = response.get()
10 echo "Page react created: ", pageReact
11else:
12 echo "Failed to create page react: ", httpResponse
13

创建 V2 页面反应 Internal Link

参数

名称类型必需描述
tenantIdstringYes
urlIdstringYes
idstringNo
titlestringNo

响应

返回: Option[CreateV1PageReact]

示例

createV2PageReact 示例
Copy Copy
1
2let (response, httpResponse) = client.createV2PageReact(
3 tenantId = "my-tenant-123",
4 urlId = "news/2026/06/fastcomments-release",
5 id = "",
6 title = ""
7)
8if response.isSome:
9 let react = response.get()
10 echo "Created page react: ", $react
11else:
12 echo "No react returned, HTTP status: ", $httpResponse.statusCode
13

删除 V1 页面反应 Internal Link

参数

名称类型必需描述
tenantIdstring
urlIdstring

响应

返回: Option[CreateV1PageReact]

示例

deleteV1PageReact 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteV1PageReact(tenantId = "my-tenant-123", urlId = "news/article-title")
3if response.isSome:
4 let deletedReact = response.get()
5 echo "Deleted react:", deletedReact
6else:
7 echo "No react returned for tenant: my-tenant-123, url: news/article-title"
8

删除 V2 页面反应 Internal Link

参数

名称类型必需说明
tenantIdstring
urlIdstring
idstring

响应

返回: Option[CreateV1PageReact]

示例

deleteV2PageReact 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteV2PageReact(tenantId = "my-tenant-123", urlId = "news/2026/politics-election", id = "react-456")
3if response.isSome:
4 let react = response.get()
5 echo react
6else:
7 echo "No reaction returned, status: ", httpResponse.status
8

获取 V1 页面点赞 Internal Link

参数

名称类型必需描述
tenantIdstring
urlIdstring

响应

返回: Option[GetV1PageLikes]

示例

getV1PageLikes 示例
Copy Copy
1
2let (response, httpResponse) = client.getV1PageLikes(tenantId = "my-tenant-123", urlId = "news/how-to-train-your-dragon")
3if response.isSome:
4 let pageLikes = response.get()
5 echo "Fetched page likes for url:", "news/how-to-train-your-dragon"
6else:
7 echo "No likes returned for url:", "news/how-to-train-your-dragon"
8

获取 V2 页面反应 Internal Link


参数

名称类型必需描述
tenantIdstring
urlIdstring

响应

返回: Option[GetV2PageReacts]

示例

getV2PageReacts 示例
Copy Copy
1
2let (response, httpResponse) = client.getV2PageReacts(tenantId = "my-tenant-123", urlId = "news/elections/2026/us-primary-results")
3if response.isSome:
4 let reacts = response.get()
5 echo "Received reacts: ", $reacts
6else:
7 echo "No reacts available"
8

获取 V2 页面反应用户 Internal Link


参数

名称类型必需描述
tenantIdstring
urlIdstring
idstring

响应

返回: Option[GetV2PageReactUsersResponse]

示例

getV2PageReactUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.getV2PageReactUsers(tenantId = "my-tenant-123", urlId = "news/article-title", id = "")
3if response.isSome:
4 let usersResp = response.get()
5 echo repr(usersResp)
6else:
7 echo "No page react users returned. HTTP response: ", repr(httpResponse)
8

添加页面 Internal Link

参数

名称类型必需描述
tenantIdstring
createAPIPageDataCreateAPIPageData

响应

返回:Option[AddPageAPIResponse]

示例

addPage 示例
Copy Copy
1
2var createData: CreateAPIPageData
3createData.url = "news/nim-4-release"
4createData.title = "Nim 4 Release Coverage"
5createData.path = "/news/nim-4-release"
6createData.isEnabled = true
7createData.tags = @["nim", "release"]
8createData.description = "Coverage of Nim 4 release"
9
10let (response, httpResponse) = client.addPage(tenantId = "my-tenant-123", createAPIPageData = createData)
11
12if response.isSome:
13 let pageResp = response.get()
14 echo pageResp
15

删除页面 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: Option[DeletePageAPIResponse]

示例

deletePage 示例
Copy Copy
1
2let (response, httpResponse) = client.deletePage(tenantId = "site-tenant-456", id = "news/winter-updates-2025")
3if response.isSome:
4 let deleted = response.get()
5 echo "DeletePageAPIResponse:", deleted
6else:
7 echo "Delete failed, HTTP response:", httpResponse
8

获取离线用户 Internal Link


页面上之前发表评论但当前不在线的用户。按 displayName 排序。 在用尽 /users/online 后使用此方法以渲染“成员”部分。 对 commenterName 进行游标分页:服务器会遍历部分 {tenantId, urlId, commenterName} 索引从 afterName 向前通过 $gt, 无 $skip 成本。

参数

名称类型必需描述
tenantIdstring
urlIdstring
afterNamestring
afterUserIdstring

响应

返回:Option[PageUsersOfflineResponse]

示例

getOfflineUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.getOfflineUsers(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-how-to-code",
5 afterName = "",
6 afterUserId = ""
7)
8
9if response.isSome:
10 let offlinePage = response.get()
11 echo "Received offline users page"
12 discard httpResponse.statusCode
13

获取在线用户 Internal Link

页面当前在线的查看者:其 websocket 会话当前已订阅该页面的人。返回 anonCount + totalCount(房间范围的订阅者,包括我们不枚举的匿名查看者)。

参数

名称类型必需描述
tenantIdstring
urlIdstring
afterNamestring
afterUserIdstring

响应

返回: Option[PageUsersOnlineResponse]

示例

getOnlineUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.getOnlineUsers(tenantId = "my-tenant-123", urlId = "news/politics/top-story", afterName = "", afterUserId = "")
3if response.isSome:
4 let page = response.get()
5 echo "Received online users page:"
6 echo page
7else:
8 echo "No online users returned. HTTP status: ", httpResponse.statusCode
9

通过 URLId 获取页面 Internal Link

参数

名称类型是否必需说明
tenantIdstring
urlIdstring

响应

返回:Option[GetPageByURLIdAPIResponse]

示例

getPageByURLId 示例
Copy Copy
1
2let (response, httpResponse) = client.getPageByURLId(tenantId = "my-tenant-123", urlId = "news/article-title")
3if response.isSome:
4 let page = response.get()
5 echo "Page ID: ", page.id
6 echo "Title: ", page.title
7 echo "URL: ", page.url
8 echo "Published: ", $page.published
9 echo "Tags: ", $page.tags
10else:
11 echo "No page found. HTTP status: ", httpResponse.statusCode
12

获取页面列表 Internal Link

参数

名称类型必需描述
tenantIdstring

响应

返回:Option[GetPagesAPIResponse]

示例

getPages 示例
Copy Copy
1
2let (response, httpResponse) = client.getPages(tenantId = "news-site-456")
3if response.isSome:
4 let pages = response.get()
5 echo "Received pages response: ", pages
6else:
7 echo "No pages returned. HTTP response: ", httpResponse
8

获取公开页面列表 Internal Link

列出租户的页面。由 FChat 桌面客户端用于填充其房间列表。 要求在每个页面解析后的自定义配置中 enableFChat 为 true。 需要 SSO 的页面会根据请求用户的组访问权限进行过滤。

参数

NameTypeRequiredDescription
tenantIdstring
cursorstring
limitint
qstring
sortByPagesSortBy
hasCommentsbool

响应

返回: Option[GetPublicPagesResponse]

示例

getPagesPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.getPagesPublic(
3 tenantId = "my-tenant-123",
4 cursor = "",
5 limit = 0,
6 q = "",
7 sortBy = PagesSortBy(0),
8 hasComments = false
9)
10
11if response.isSome:
12 let pages = response.get()
13 echo "Retrieved public pages: ", $pages
14else:
15 echo "No pages returned, HTTP status: ", $httpResponse.status
16

获取用户信息 Internal Link


为租户批量获取用户信息。给定 userIds,返回来自 User / SSOUser 的显示信息。 由评论小部件使用,以丰富通过 presence 事件刚出现的用户信息。 无页面上下文:隐私统一强制(私人资料将被隐藏)。

参数

名称类型必填描述
tenantIdstringYes
idsstringNo

响应

返回: Option[PageUsersInfoResponse]

示例

getUsersInfo 示例
Copy Copy
1
2let (response, httpResponse) = client.getUsersInfo(tenantId = "my-tenant-123", ids = "user-42,user-87")
3if response.isSome:
4 let usersInfo = response.get()
5 echo "Retrieved users info:", usersInfo
6else:
7 echo "No users info returned. HTTP status:", httpResponse.status
8

部分更新页面 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateAPIPageDataUpdateAPIPageData

响应

返回:Option[PatchPageAPIResponse]

示例

patchPage 示例
Copy Copy
1
2let updateData = UpdateAPIPageData(
3 title = "Breaking: Major Event Update",
4 urlId = "news/major-event-update",
5 visible = true,
6 tags = @["breaking", "headline"],
7 sortOrder = 5
8)
9
10let (response, httpResponse) = client.patchPage(
11 tenantId = "my-tenant-123",
12 id = "news/major-event-update",
13 updateAPIPageData = updateData
14)
15
16if response.isSome:
17 let page = response.get()
18 discard page
19

删除待处理的 Webhook 事件 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[APIEmptyResponse]

示例

deletePendingWebhookEvent 示例
Copy Copy
1
2let (response, httpResponse) = client.deletePendingWebhookEvent(tenantId = "my-tenant-123", id = "wh_evt_9f8b7a6c")
3if response.isSome:
4 let apiEmpty = response.get()
5 echo "Pending webhook event deleted for tenant my-tenant-123"
6else:
7 echo "Failed to delete pending webhook event"
8

获取待处理 Webhook 事件计数 Internal Link


参数

名称类型必需描述
tenantIdstring
commentIdstring
externalIdstring
eventTypestring
domainstring
attemptCountGTfloat64

响应

返回:Option[GetPendingWebhookEventCountResponse]

示例

getPendingWebhookEventCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getPendingWebhookEventCount(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456abc",
5 externalId = "ext-7890",
6 eventType = "comment_created",
7 domain = "news.example.com",
8 attemptCountGT = 2.0
9)
10
11if response.isSome:
12 let pending = response.get()
13 echo pending
14else:
15 echo "No pending webhook event count returned; HTTP status: ", httpResponse.status
16

获取待处理 Webhook 事件 Internal Link

参数

名称类型必填说明
tenantIdstring
commentIdstring
externalIdstring
eventTypestring
domainstring
attemptCountGTfloat64
skipfloat64

响应

返回:Option[GetPendingWebhookEventsResponse]

示例

getPendingWebhookEvents 示例
Copy Copy
1
2let (response, httpResponse) = client.getPendingWebhookEvents(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654",
5 externalId = "",
6 eventType = "",
7 domain = "",
8 attemptCountGT = 0.0,
9 skip = 0.0
10)
11if response.isSome:
12 let pending = response.get()
13 discard pending
14

创建问题配置 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createQuestionConfigBodyCreateQuestionConfigBody

响应

返回: Option[CreateQuestionConfigResponse]

示例

createQuestionConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.createQuestionConfig(
3 tenantId = "my-tenant-123",
4 createQuestionConfigBody = CreateQuestionConfigBody(
5 label = "Article Question",
6 required = true,
7 minLength = 20,
8 maxLength = 1000,
9 allowedTags = @["comment","question","feedback"],
10 notifyModerators = false
11 )
12)
13if response.isSome:
14 let cfg = response.get()
15 echo "Created question config id: ", cfg.id
16

删除问题配置 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring

响应

返回: Option[APIEmptyResponse]

示例

deleteQuestionConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteQuestionConfig(tenantId = "my-tenant-123", id = "")
3
4if response.isSome:
5 let deleted = response.get()
6 echo "Question config deleted for tenant: ", "my-tenant-123"
7else:
8 echo "Failed to delete question config"
9

获取问题配置 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetQuestionConfigResponse]

示例

getQuestionConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfig(tenantId = "my-tenant-123", id = "qst-456")
3if response.isSome:
4 let cfg = response.get()
5 discard cfg
6

获取问题配置列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipfloat64

响应

返回:Option[GetQuestionConfigsResponse]

示例

getQuestionConfigs 示例
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfigs(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let configs = response.get()
5 echo "Received question configs for tenant my-tenant-123"
6 echo configs
7else:
8 echo "No question configs returned"
9

更新问题配置 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateQuestionConfigBodyUpdateQuestionConfigBody

响应

返回:Option[APIEmptyResponse]

示例

updateQuestionConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.updateQuestionConfig(tenantId = "my-tenant-123", id = "question-config-456", updateQuestionConfigBody = default(UpdateQuestionConfigBody))
3if response.isSome:
4 let apiEmpty = response.get()
5 discard apiEmpty
6

创建问题结果 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createQuestionResultBodyCreateQuestionResultBody

响应

返回: Option[CreateQuestionResultResponse]

示例

createQuestionResult 示例
Copy Copy
1
2let (response, httpResponse) = client.createQuestionResult(
3 tenantId = "my-tenant-123",
4 createQuestionResultBody = CreateQuestionResultBody(
5 questionId = "q-2026-001",
6 userId = "user-42",
7 correct = true,
8 score = 95,
9 tags = @["news","reader-question"]
10 )
11)
12if response.isSome:
13 let result = response.get()
14 echo "Created question result id: ", result.id
15 echo "HTTP status: ", httpResponse.status.code
16

删除问题结果 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring

响应

返回: Option[APIEmptyResponse]

示例

deleteQuestionResult 示例
Copy Copy
1
2let tenantId = "my-tenant-123"
3let resultId = "question-result-456"
4let (response, httpResponse) = client.deleteQuestionResult(tenantId = tenantId, id = resultId)
5if response.isSome:
6 let emptyResp = response.get()
7 echo "Deleted question result:", resultId
8

获取问题结果 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:Option[GetQuestionResultResponse]

示例

getQuestionResult 示例
Copy Copy
1
2let (response, httpResponse) = client.getQuestionResult(tenantId = "my-tenant-123", id = "question-456")
3if response.isSome:
4 let result = response.get()
5 echo "Question result received:"
6 echo result
7else:
8 echo "No question result returned, HTTP status: ", $httpResponse.status
9

获取问题结果列表 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdstring
startDatestring
questionIdstring
questionIdsstring
skipfloat64

响应

返回: Option[GetQuestionResultsResponse]

示例

getQuestionResults 示例
Copy Copy
1
2let (response, httpResponse) = client.getQuestionResults(
3 tenantId = "my-tenant-123",
4 urlId = "news/2026/election-analysis",
5 userId = "user-42",
6 startDate = "2026-06-01T00:00:00Z",
7 questionId = "q-6789",
8 questionIds = @["q-6789", "q-6790"],
9 skip = 0.0
10)
11if response.isSome:
12 let results = response.get()
13 echo "Received question results"
14else:
15 echo "No results returned"
16

更新问题结果 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateQuestionResultBodyUpdateQuestionResultBody

响应

返回:Option[APIEmptyResponse]

示例

updateQuestionResult 示例
Copy Copy
1
2let (response, httpResponse) = client.updateQuestionResult(
3 tenantId = "my-tenant-123",
4 id = "question-result-456",
5 updateQuestionResultBody = UpdateQuestionResultBody(
6 questionId: "q-789",
7 userId: "user-42",
8 score: 92,
9 passed: true,
10 tags: @["quiz", "math"]
11 )
12)
13if response.isSome:
14 let apiResp = response.get()
15 echo "Question result updated successfully"
16else:
17 echo "No response body; HTTP status: ", httpResponse.status.code
18

汇总问题结果 Internal Link


参数

名称类型必需描述
tenantIdstring
questionIdstring
questionIdsseq[string]
urlIdstring
timeBucketAggregateTimeBucket
startDatestring
forceRecalculatebool

响应

返回:Option[AggregateQuestionResultsResponse]

示例

aggregateQuestionResults 示例
Copy Copy
1
2let (response, httpResponse) = client.aggregateQuestionResults(
3 tenantId = "my-tenant-123",
4 questionId = "",
5 questionIds = @[],
6 urlId = "news/article-title",
7 timeBucket = AggregateTimeBucket(0),
8 startDate = "",
9 forceRecalculate = false
10)
11
12if response.isSome:
13 let results = response.get()
14 discard results
15

批量汇总问题结果 Internal Link

参数

名称类型必需描述
tenantIdstring
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequest
forceRecalculatebool

响应

返回: Option[BulkAggregateQuestionResultsResponse]

示例

bulkAggregateQuestionResults 示例
Copy Copy
1
2let (response, httpResponse) = client.bulkAggregateQuestionResults(
3 tenantId = "my-tenant-123",
4 bulkAggregateQuestionResultsRequest = BulkAggregateQuestionResultsRequest(),
5 forceRecalculate = false
6)
7
8if response.isSome:
9 let aggregated = response.get()
10 echo "Aggregated question results received"
11

将评论与问题结果合并 Internal Link


参数

名称类型必需描述
tenantIdstring
questionIdstring
questionIdsseq[string]
urlIdstring
startDatestring
forceRecalculatebool
minValuefloat64
maxValuefloat64
limitfloat64

响应

返回:Option[CombineQuestionResultsWithCommentsResponse]

示例

combineCommentsWithQuestionResults 示例
Copy Copy
1
2let (response, httpResponse) = client.combineCommentsWithQuestionResults(
3 tenantId = "my-tenant-123",
4 questionId = "",
5 questionIds = @[],
6 urlId = "news/article-2026-climate-change",
7 startDate = "",
8 forceRecalculate = false,
9 minValue = 0.0,
10 maxValue = 0.0,
11 limit = 0.0
12)
13
14if response.isSome:
15 let combined = response.get()
16 echo "Combined results received for tenant:", " my-tenant-123"
17else:
18 echo "No combined results returned"
19

添加 SSO 用户 Internal Link

参数

名称类型必需描述
tenantIdstring
createAPISSOUserDataCreateAPISSOUserData

响应

返回: Option[AddSSOUserAPIResponse]

示例

addSSOUser 示例
Copy Copy
1
2let (response, httpResponse) = client.addSSOUser(
3 tenantId = "my-tenant-123",
4 createAPISSOUserData = CreateAPISSOUserData(
5 id = "sso-456",
6 email = "alice.johnson@newsorg.com",
7 name = "Alice Johnson",
8 roles = @["editor", "contributor"],
9 isActive = true,
10 isAdmin = false
11 )
12)
13if response.isSome:
14 let apiResp = response.get()
15 discard apiResp
16else:
17 discard httpResponse
18

删除 SSO 用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
deleteCommentsbool
commentDeleteModestring

响应

返回:Option[DeleteSSOUserAPIResponse]

示例

deleteSSOUser 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteSSOUser(tenantId = "my-tenant-123", id = "sso-user-9876", deleteComments = true, commentDeleteMode = "hard")
3if response.isSome:
4 let deleted = response.get()
5 discard deleted
6else:
7 discard httpResponse
8

通过邮箱获取 SSO 用户 Internal Link


参数

名称类型必填描述
tenantIdstring
emailstring

响应

返回: Option[GetSSOUserByEmailAPIResponse]

示例

getSSOUserByEmail 示例
Copy Copy
1
2let (response, httpResponse) = client.getSSOUserByEmail(tenantId = "my-tenant-123", email = "alice@newsco.com")
3if response.isSome:
4 let ssoUser = response.get()
5 echo "SSO user found: ", ssoUser.email
6else:
7 echo "No SSO user found. HTTP status: ", httpResponse.status
8

通过 ID 获取 SSO 用户 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetSSOUserByIdAPIResponse]

示例

getSSOUserById 示例
Copy Copy
1
2let (response, httpResponse) = client.getSSOUserById(tenantId = "my-tenant-123", id = "user-789")
3if response.isSome:
4 let ssoUser: GetSSOUserByIdAPIResponse = response.get()
5 echo "SSO user retrieved: ", $ssoUser
6else:
7 echo "No SSO user found, HTTP status: ", httpResponse.statusCode
8

获取 SSO 用户列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipint

响应

返回: Option[GetSSOUsersResponse]

示例

getSSOUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.getSSOUsers(tenantId = "my-tenant-123", skip = 0)
3if response.isSome:
4 let ssoUsers = response.get()
5 echo ssoUsers
6else:
7 echo "No SSO users returned; HTTP response:", httpResponse
8

部分更新 SSO 用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
updateCommentsbool

响应

返回值: Option[PatchSSOUserAPIResponse]

示例

patchSSOUser 示例
Copy Copy
1
2let (response, httpResponse) = client.patchSSOUser(
3 tenantId = "my-tenant-123",
4 id = "user-789",
5 updateAPISSOUserData = UpdateAPISSOUserData(
6 externalId = "ext-987",
7 username = "j.smith",
8 email = "j.smith@news.example.com",
9 displayName = "John Smith",
10 roles = @["author", "editor"],
11 avatarUrl = "https://cdn.news.example.com/avatars/j.smith.png"
12 ),
13 updateComments = true
14)
15
16if response.isSome:
17 let patched = response.get()
18 echo patched
19

替换 SSO 用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
updateCommentsbool

响应

返回: Option[PutSSOUserAPIResponse]

示例

putSSOUser 示例
Copy Copy
1
2let (response, httpResponse) = client.putSSOUser(
3 tenantId = "my-tenant-123",
4 id = "user-456",
5 updateAPISSOUserData = UpdateAPISSOUserData(
6 externalId = "ext-789",
7 displayName = "Jane Doe",
8 email = "jane.doe@example.com",
9 avatarUrl = "https://cdn.news-site.com/avatars/jane.jpg",
10 roles = @["member", "subscriber"]
11 ),
12 updateComments = true
13)
14
15if response.isSome:
16 let result = response.get()
17 echo "SSO user updated:", result
18

创建订阅 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData

响应

返回: Option[CreateSubscriptionAPIResponse]

示例

createSubscription 示例
Copy Copy
1
2let createData = CreateAPIUserSubscriptionData(
3 subscriberId = "user-987",
4 email = "jane.doe@newsreader.com",
5 urlId = "news/local-weather",
6 active = true,
7 tags = @["weather", "local"],
8 frequency = "immediate"
9)
10let (response, httpResponse) = client.createSubscription(tenantId = "my-tenant-123", createAPIUserSubscriptionData = createData)
11if response.isSome:
12 let created = response.get()
13 echo "Created subscription id: ", created.id
14

删除订阅 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
userIdstring

响应

返回: Option[DeleteSubscriptionAPIResponse]

示例

deleteSubscription 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteSubscription(tenantId = "my-tenant-123", id = "sub-98765", userId = "user-456")
3if response.isSome:
4 let deleteResp = response.get()
5 echo "Delete subscription response received"
6else:
7 echo "No subscription response"
8

获取订阅列表 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
userIdstring

响应

返回: Option[GetSubscriptionsAPIResponse]

示例

getSubscriptions 示例
Copy Copy
1
2let (response, httpResponse) = client.getSubscriptions(tenantId = "my-tenant-123", userId = "")
3if response.isSome:
4 let subscriptions = response.get()
5 discard subscriptions
6

更新订阅 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionData
userIdstring

响应

返回:Option[UpdateSubscriptionAPIResponse]

示例

updateSubscription 示例
Copy Copy
1
2let (response, httpResponse) = client.updateSubscription(
3 tenantId = "my-tenant-123",
4 id = "sub-456",
5 updateAPIUserSubscriptionData = UpdateAPIUserSubscriptionData(
6 subscribed = true,
7 channels = @["email", "push"]
8 ),
9 userId = "user-789"
10)
11
12if response.isSome:
13 let updated = response.get()
14 echo "Subscription updated:", updated
15else:
16 echo "Update failed, HTTP response:", httpResponse
17

获取租户每日使用情况 Internal Link

参数

名称类型是否必需说明
tenantIdstring
yearNumberfloat64
monthNumberfloat64
dayNumberfloat64
skipfloat64

响应

返回: Option[GetTenantDailyUsagesResponse]

示例

getTenantDailyUsages 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenantDailyUsages(
3 tenantId = "my-tenant-123",
4 yearNumber = 2026.0,
5 monthNumber = 6.0,
6 dayNumber = 19.0,
7 skip = 0.0
8)
9
10if response.isSome:
11 let usage = response.get()
12 discard usage
13

创建租户套餐 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

响应

返回: Option[CreateTenantPackageResponse]

示例

createTenantPackage 示例
Copy Copy
1
2let (response, httpResponse) = client.createTenantPackage(tenantId = "my-tenant-123", createTenantPackageBody = CreateTenantPackageBody())
3
4if response.isSome:
5 let pkg = response.get()
6 echo "Created tenant package: ", $pkg
7else:
8 echo "Failed to create tenant package, HTTP response: ", $httpResponse
9

删除租户套餐 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[APIEmptyResponse]

示例

deleteTenantPackage 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantPackage(tenantId = "my-tenant-123", id = "package-987")
3if response.isSome:
4 let emptyResp = response.get()
5 echo emptyResp
6else:
7 echo "Failed to delete tenant package"
8

获取租户套餐 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetTenantPackageResponse]

示例

getTenantPackage 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenantPackage(tenantId = "my-tenant-123", id = "premium-2026")
3if response.isSome:
4 let pkg = response.get()
5 echo "Retrieved tenant package:"
6 echo pkg
7else:
8 echo "Tenant package not found"
9

获取租户套餐列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipfloat64

响应

返回:Option[GetTenantPackagesResponse]

示例

getTenantPackages 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenantPackages(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let packages = response.get()
5 echo "Received tenant packages:"
6 echo packages
7else:
8 echo "No packages found for tenant 'my-tenant-123'"
9

替换租户套餐 Internal Link


参数

NameTypeRequiredDescription
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

响应

返回: Option[APIEmptyResponse]

示例

replaceTenantPackage 示例
Copy Copy
1
2let (response, httpResponse) = client.replaceTenantPackage(
3 tenantId = "my-tenant-123",
4 id = "pkg-987",
5 replaceTenantPackageBody = ReplaceTenantPackageBody(
6 name = "Premium Plan",
7 priceCents = 999,
8 seats = 50,
9 enabled = true,
10 features = @["moderation", "analytics", "priority-support"]
11 )
12)
13
14if response.isSome:
15 let apiEmpty = response.get()
16 discard apiEmpty
17

更新租户套餐 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
updateTenantPackageBodyUpdateTenantPackageBody

响应

返回: Option[APIEmptyResponse]

示例

updateTenantPackage 示例
Copy Copy
1
2let packageBody = UpdateTenantPackageBody(
3 name: "Pro Plan",
4 priceCents: 1999,
5 active: true,
6 features: @["priority-support", "advanced-moderation"]
7)
8
9let (response, httpResponse) = client.updateTenantPackage(
10 tenantId = "my-tenant-123",
11 id = "pkg-789",
12 updateTenantPackageBody = packageBody
13)
14
15if response.isSome:
16 let apiEmpty = response.get()
17 echo "Tenant package updated successfully, HTTP status: " & $httpResponse.status
18

创建租户用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createTenantUserBodyCreateTenantUserBody

响应

返回:Option[CreateTenantUserResponse]

示例

createTenantUser 示例
Copy Copy
1
2let (response, httpResponse) = client.createTenantUser(tenantId = "my-tenant-123",
3 createTenantUserBody = CreateTenantUserBody(userId = "user-456",
4 email = "jane.doe@example.com",
5 displayName = "Jane Doe",
6 roles = @["editor"],
7 isAdmin = false))
8if response.isSome:
9 let created = response.get()
10 discard created
11

删除租户用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
deleteCommentsstring
commentDeleteModestring

响应

返回: Option[APIEmptyResponse]

示例

deleteTenantUser 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantUser(tenantId = "my-tenant-123", id = "user-789", deleteComments = "true", commentDeleteMode = "soft")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Tenant user deleted, response: ", apiResp
6else:
7 echo "Failed to delete tenant user, HTTP status: ", $httpResponse.status
8

获取租户用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetTenantUserResponse]

示例

getTenantUser 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenantUser(tenantId = "my-tenant-123", id = "user-789")
3if response.isSome:
4 let tenantUser = response.get()
5 echo "User fetched:", tenantUser
6else:
7 echo "No user found, HTTP status:", httpResponse.status
8

获取租户用户列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipfloat64

响应

返回: Option[GetTenantUsersResponse]

示例

getTenantUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenantUsers(tenantId = "my-tenant-123", skip = 0.0)
3
4if response.isSome:
5 let tenantUsers = response.get()
6 echo "Retrieved tenant users"
7else:
8 echo "No tenant users returned"
9

替换租户用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
replaceTenantUserBodyReplaceTenantUserBody
updateCommentsstring

响应

返回: Option[APIEmptyResponse]

示例

replaceTenantUser 示例
Copy Copy
1
2let body = ReplaceTenantUserBody(
3 displayName = "Jane Doe",
4 email = "jane.doe@example.com",
5 externalId = "jdoe-789",
6 admin = false,
7 enabled = true,
8 tags = @["editor", "subscriber"]
9)
10
11let (response, httpResponse) = client.replaceTenantUser(
12 tenantId = "my-tenant-123",
13 id = "user-456",
14 replaceTenantUserBody = body,
15 updateComments = "true"
16)
17
18if response.isSome:
19 let apiEmpty = response.get()
20 echo "ReplaceTenantUser succeeded, http status:", httpResponse.status
21

参数

名称类型必需描述
tenantIdstring
idstring
redirectURLstring

响应

返回: Option[APIEmptyResponse]

示例

sendLoginLink 示例
Copy Copy
1
2let (response, httpResponse) = client.sendLoginLink(tenantId = "my-tenant-123", id = "user-456", redirectURL = "https://app.newsportal.com/welcome")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Login link sent successfully"
6else:
7 echo "Failed to send login link, HTTP status: ", $httpResponse.status
8

更新租户用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateTenantUserBodyUpdateTenantUserBody
updateCommentsstring

响应

返回: Option[APIEmptyResponse]

示例

updateTenantUser 示例
Copy Copy
1
2let (response, httpResponse) = client.updateTenantUser(
3 tenantId = "my-tenant-123",
4 id = "user-987",
5 updateTenantUserBody = UpdateTenantUserBody(
6 displayName = "Jane Doe",
7 email = "jane.doe@example.com",
8 roles = @["moderator", "editor"],
9 isActive = true
10 ),
11 updateComments = "true"
12)
13
14if response.isSome:
15 let apiEmpty = response.get()
16 discard apiEmpty
17

创建租户 Internal Link


参数

名称类型必需描述
tenantIdstring
createTenantBodyCreateTenantBody

响应

返回:Option[CreateTenantResponse]

示例

createTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.createTenant(
3 tenantId = "my-tenant-123",
4 createTenantBody = CreateTenantBody(
5 name = "My Tenant 123",
6 domain = "news.example.com",
7 allowAnonymous = false,
8 allowedOrigins = @["https://news.example.com", "https://api.news.example.com"],
9 description = "Comments for News Example"
10 )
11)
12if response.isSome:
13 let created = response.get()
14 echo "Created tenant: ", created.tenantId
15else:
16 echo "Failed to create tenant, status: ", httpResponse.status
17

删除租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
surestring

响应

返回: Option[APIEmptyResponse]

示例

deleteTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteTenant(tenantId = "my-tenant-123", id = "", sure = "")
3if response.isSome:
4 let emptyResp = response.get()
5else:
6 discard httpResponse
7

获取租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:Option[GetTenantResponse]

示例

getTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenant(tenantId = "my-tenant-123", id = "tenant-789")
3if response.isSome:
4 let tenant = response.get()
5 discard tenant
6else:
7 discard httpResponse
8

获取租户列表 Internal Link


参数

名称类型必需描述
tenantIdstring
metastring
skipfloat64

响应

返回: Option[GetTenantsResponse]

示例

getTenants 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenants(tenantId = "my-tenant-123", meta = "env=production", skip = 0.0)
3if response.isSome:
4 let tenantsResp = response.get()
5 discard tenantsResp
6 echo "Tenants fetched successfully"
7else:
8 echo "Request failed with status ", httpResponse.status
9

更新租户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
updateTenantBodyUpdateTenantBody

响应

返回: Option[APIEmptyResponse]

示例

updateTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.updateTenant(
3 tenantId = "my-tenant-123",
4 id = "settings",
5 updateTenantBody = UpdateTenantBody(
6 name = "My Tenant 123",
7 enableModeration = true,
8 allowedDomains = @["news.example.com", "blog.example.org"],
9 maxCommentLength = 1000
10 )
11)
12
13if response.isSome:
14 let apiResp = response.get()
15 echo "Tenant updated successfully: ", apiResp
16else:
17 echo "Failed to update tenant, HTTP status: ", httpResponse.status
18

更改工单状态 Internal Link

参数

名称类型必需说明
tenantIdstring
userIdstring
idstring
changeTicketStateBodyChangeTicketStateBody

响应

返回: Option[ChangeTicketStateResponse]

示例

changeTicketState 示例
Copy Copy
1
2let body = ChangeTicketStateBody()
3let (response, httpResponse) = client.changeTicketState(tenantId = "my-tenant-123", userId = "user-456", id = "ticket-789", changeTicketStateBody = body)
4if response.isSome:
5 let ticketResp = response.get()
6 echo "Ticket state changed:", ticketResp
7

创建工单 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
userIdstring
createTicketBodyCreateTicketBody

响应

返回: Option[CreateTicketResponse]

示例

createTicket 示例
Copy Copy
1
2let body = CreateTicketBody(
3 subject = "Comment moderation issue",
4 message = "Several abusive comments reported on article, please review and moderate.",
5 tags = @["moderation", "abuse", "urgent"],
6 url = "https://news.example.com/world/2026-election",
7 priority = "high"
8)
9
10let (response, httpResponse) = client.createTicket(tenantId = "my-tenant-123", userId = "user-789", createTicketBody = body)
11
12if response.isSome:
13 let ticket = response.get()
14 echo "Created ticket ID: ", ticket.id
15

获取工单 Internal Link

参数

名称类型必需说明
tenantIdstring
idstring
userIdstring

响应

返回: Option[GetTicketResponse]

示例

getTicket 示例
Copy Copy
1
2let (response, httpResponse) = client.getTicket(tenantId = "my-tenant-123", id = "ticket-456", userId = "user-789")
3if response.isSome:
4 let ticket = response.get()
5 echo "Got ticket:", ticket
6else:
7 echo "No ticket returned; HTTP response:", httpResponse
8

获取工单列表 Internal Link

参数

名称类型必需描述
tenantIdstring
userIdstring
statefloat64
skipfloat64
limitfloat64

响应

返回: Option[GetTicketsResponse]

示例

getTickets 示例
Copy Copy
1
2let (response, httpResponse) = client.getTickets(tenantId = "my-tenant-123", userId = "user-789", state = 1.0, skip = 0.0, limit = 50.0)
3if response.isSome:
4 let tickets = response.get()
5 echo tickets
6

获取翻译 Internal Link

参数

名称类型必需描述
namespacestring
componentstring
localestring
useFullTranslationIdsbool

响应

返回:Option[GetTranslationsResponse]

示例

getTranslations 示例
Copy Copy
1
2let (response, httpResponse) = client.getTranslations(
3 namespace = "news-site",
4 component = "article-comments",
5 locale = "en-US",
6 useFullTranslationIds = false
7)
8if response.isSome:
9 let translations = response.get()
10 discard translations
11else:
12 echo "No translations available"
13

上传图片 Internal Link

参数

名称类型必需描述
tenantIdstring
filestring
sizePresetSizePreset
urlIdstring

响应

返回:Option[UploadImageResponse]

示例

uploadImage 示例
Copy Copy
1
2let (response, httpResponse) = client.uploadImage(
3 tenantId = "my-tenant-123",
4 file = "assets/images/comment-avatar.jpg",
5 sizePreset = SizePreset.small,
6 urlId = "news/article-2025-11-22"
7)
8if response.isSome:
9 let upload = response.get()
10 echo "Uploaded image id: ", upload.id
11 echo "Uploaded image url: ", upload.url
12

通过 ID 获取用户徽章进度 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[APIGetUserBadgeProgressResponse]

示例

getUserBadgeProgressById 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserBadgeProgressById(tenantId = "my-tenant-123", id = "")
3if response.isSome:
4 let badgeProgress = response.get()
5 echo badgeProgress
6else:
7 echo "No badge progress found"
8

通过用户 ID 获取用户徽章进度 Internal Link


参数

名称类型必需描述
tenantIdstring
userIdstring

响应

返回: Option[APIGetUserBadgeProgressResponse]

示例

getUserBadgeProgressByUserId 示例
Copy Copy
1
2let tenantId = "my-tenant-123"
3let userId = "user-456"
4let (response, httpResponse) = client.getUserBadgeProgressByUserId(tenantId = tenantId, userId = userId)
5if response.isSome:
6 let badgeProgress = response.get()
7 echo "Badge progress retrieved for ", userId
8 discard badgeProgress
9

获取用户徽章进度列表 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
userIdstring
limitfloat64
skipfloat64

响应

返回: Option[APIGetUserBadgeProgressListResponse]

示例

getUserBadgeProgressList 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserBadgeProgressList(
3 tenantId = "my-tenant-123",
4 userId = "user-789",
5 limit = 25.0,
6 skip = 0.0
7)
8
9if response.isSome:
10 let badgeProgress = response.get()
11 echo "Received badge progress:", badgeProgress
12else:
13 echo "No badge progress; HTTP status: ", $httpResponse.status
14

创建用户徽章 Internal Link

参数

名称类型必填描述
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

响应

返回: Option[APICreateUserBadgeResponse]

示例

createUserBadge 示例
Copy Copy
1
2let (response, httpResponse) = client.createUserBadge(
3 tenantId = "my-tenant-123",
4 createUserBadgeParams = CreateUserBadgeParams(
5 userId = "user-456",
6 badgeId = "top-commenter",
7 reason = "Top commenter for June 2026",
8 awardedBy = "mod-team",
9 metadata = @["news","engagement"]
10 )
11)
12if response.isSome:
13 let badgeResp = response.get()
14 discard badgeResp
15

删除用户徽章 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[APIEmptySuccessResponse]

示例

deleteUserBadge 示例
Copy Copy
1
2let tenantId = "my-tenant-123"
3let badgeId = "badge-456"
4
5let (response, httpResponse) = client.deleteUserBadge(tenantId = tenantId, id = badgeId)
6
7if response.isSome:
8 let success = response.get()
9 echo "Badge deleted successfully for tenant: ", tenantId, " id: ", badgeId
10else:
11 echo "Failed to delete badge. HTTP status: ", $httpResponse.status
12

获取用户徽章 Internal Link

参数

名称类型必填说明
tenantIdstring
idstring

响应

返回:Option[APIGetUserBadgeResponse]

示例

getUserBadge 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserBadge(tenantId = "my-tenant-123", id = "badge-9876")
3if response.isSome:
4 let badge = response.get()
5 echo "Fetched badge:"
6 echo badge
7else:
8 echo "No badge found"
9 echo httpResponse
10

获取用户徽章列表 Internal Link


参数

名称类型必需说明
tenantIdstring
userIdstring
badgeIdstring
displayedOnCommentsbool
limitfloat64
skipfloat64

响应

返回: Option[APIGetUserBadgesResponse]

示例

getUserBadges 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserBadges(
3 tenantId = "my-tenant-123",
4 userId = "user-9876",
5 badgeId = "top-commenter",
6 displayedOnComments = true,
7 limit = 20.0,
8 skip = 0.0
9)
10
11if response.isSome:
12 let badges = response.get()
13 echo "Badges response:", badges
14else:
15 echo "No badges found (HTTP status: ", httpResponse.status, ")"
16

更新用户徽章 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateUserBadgeParamsUpdateUserBadgeParams

响应

返回: Option[APIEmptySuccessResponse]

示例

updateUserBadge 示例
Copy Copy
1
2let (response, httpResponse) = client.updateUserBadge(
3 tenantId = "my-tenant-123",
4 id = "user-456",
5 updateUserBadgeParams = UpdateUserBadgeParams()
6)
7
8if response.isSome:
9 let success = response.get()
10 echo "Badge updated successfully"
11else:
12 echo "Badge update failed"
13

获取用户通知计数 Internal Link

参数

名称类型必需描述
tenantIdstring
ssostring

响应

返回: Option[GetUserNotificationCountResponse]

示例

getUserNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserNotificationCount(tenantId = "news-tenant-123", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTI0NyIsImlhdCI6MTYw945600fQ.sflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c")
3if response.isSome:
4 let countResp = response.get()
5 echo "Received user notification count response: ", countResp
6else:
7 echo "No notification count returned"
8

获取用户通知 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
pageSizeint
afterIdstring
includeContextbool
afterCreatedAtint64
unreadOnlybool
dmOnlybool
noDmbool
includeTranslationsbool
includeTenantNotificationsbool
ssostring

响应

返回: Option[GetMyNotificationsResponse]

示例

getUserNotifications 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserNotifications(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 pageSize = 0,
6 afterId = "",
7 includeContext = false,
8 afterCreatedAt = 0,
9 unreadOnly = false,
10 dmOnly = false,
11 noDm = false,
12 includeTranslations = false,
13 includeTenantNotifications = false,
14 sso = ""
15)
16
17if response.isSome:
18 let notifications = response.get()
19 echo notifications
20

重置用户通知计数 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
ssostring

返回

返回: Option[ResetUserNotificationsResponse]

示例

resetUserNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.resetUserNotificationCount(tenantId = "my-tenant-123", sso = "user-sso-token-456")
3if response.isSome:
4 let result = response.get()
5 echo "ResetUserNotificationsResponse:", result
6else:
7 echo "Reset failed, HTTP response:", httpResponse
8

重置用户通知 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
afterIdstring
afterCreatedAtint64
unreadOnlybool
dmOnlybool
noDmbool
ssostring

响应

返回: Option[ResetUserNotificationsResponse]

示例

resetUserNotifications 示例
Copy Copy
1
2let (response, httpResponse) = client.resetUserNotifications(
3 tenantId = "my-tenant-123",
4 afterId = "",
5 afterCreatedAt = 0'i64,
6 unreadOnly = false,
7 dmOnly = false,
8 noDm = false,
9 sso = ""
10)
11if response.isSome:
12 let resetResp = response.get()
13 echo "ResetUserNotificationsResponse received"
14else:
15 echo "No ResetUserNotificationsResponse"
16

更新用户评论订阅状态(通知) Internal Link

启用或禁用针对特定评论的通知。

参数

名称类型必需描述
tenantIdstringYes
notificationIdstringNo
optedInOrOutstringNo
commentIdstringYes
ssostringNo

响应

返回:Option[UpdateUserNotificationCommentSubscriptionStatusResponse]

示例

updateUserNotificationCommentSubscriptionStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationCommentSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "",
5 optedInOrOut = "",
6 commentId = "cmt-789",
7 sso = ""
8)
9
10if response.isSome:
11 let updateResp = response.get()
12 echo "Subscription update response: ", updateResp
13

更新用户页面订阅状态(通知) Internal Link

启用或禁用页面的通知。当用户订阅一个页面时,会为新的根评论创建通知,并且还

参数

名称类型必需描述
tenantIdstring
urlIdstring
urlstring
pageTitlestring
subscribedOrUnsubscribedstring
ssostring

响应

返回:Option[UpdateUserNotificationPageSubscriptionStatusResponse]

示例

updateUserNotificationPageSubscriptionStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationPageSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 urlId = "news/economy/market-rally-2026-06-19",
5 url = "",
6 pageTitle = "",
7 subscribedOrUnsubscribed = "",
8 sso = ""
9)
10
11if response.isSome:
12 let updateResp = response.get()
13 echo "Subscription update received: ", updateResp
14else:
15 echo "No subscription update returned."
16

更新用户通知状态 Internal Link


参数

名称类型必需描述
tenantIdstring
notificationIdstring
newStatusstring
ssostring

响应

返回: Option[UpdateUserNotificationStatusResponse]

示例

updateUserNotificationStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "notif-456",
5 newStatus = "read",
6 sso = "sso-token-abc123"
7)
8if response.isSome:
9 let updated = response.get()
10 echo "Notification status updated successfully"
11else:
12 echo "No update response received"
13

获取用户在线状态列表 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
urlIdWSstring
userIdsstring

响应

返回: Option[GetUserPresenceStatusesResponse]

示例

getUserPresenceStatuses 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserPresenceStatuses(tenantId = "my-tenant-123", urlIdWS = "news/article-title", userIds = "user-123,user-456")
3if response.isSome:
4 let presenceStatuses = response.get()
5 echo presenceStatuses
6else:
7 echo "No presence data"
8

搜索用户 Internal Link


参数

名称类型必需说明
tenantIdstring
urlIdstring
usernameStartsWithstring
mentionGroupIdsseq[string]
ssostring
searchSectionstring

响应

返回: Option[SearchUsersResult]

示例

searchUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.searchUsers(
3 tenantId = "my-tenant-123",
4 urlId = "news/top-story",
5 usernameStartsWith = "",
6 mentionGroupIds = @[],
7 sso = "",
8 searchSection = ""
9)
10
11if response.isSome:
12 let searchResult = response.get()
13 echo "SearchUsersResult:", searchResult
14else:
15 echo "No result or error. HTTP response:", httpResponse
16

获取用户 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringNo

响应

返回: Option[GetUserResponse]

示例

getUser 示例
Copy Copy
1
2let (response, httpResponse) = client.getUser(tenantId = "my-tenant-123", id = "user-456")
3if response.isSome:
4 let user = response.get()
5 echo user
6else:
7 echo "User not found"
8

创建投票 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdstring
directionstring
userIdstring
anonUserIdstring

响应

返回: Option[VoteResponse]

示例

createVote 示例
Copy Copy
1
2let (response, httpResponse) = client.createVote(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654",
5 direction = "up",
6 userId = "user-42",
7 anonUserId = ""
8)
9if response.isSome:
10 let vote = response.get()
11 echo "Vote created:", vote
12else:
13 echo "No vote returned"
14

删除投票 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
editKeystring

响应

返回: Option[VoteDeleteResponse]

示例

deleteVote 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteVote(tenantId = "my-tenant-123", id = "vote-7f3b2a", editKey = "")
3if response.isSome:
4 let voteDelete = response.get()
5 echo "Vote deleted successfully"
6else:
7 echo "Failed to delete vote"
8

获取投票 Internal Link


参数

NameTypeRequiredDescription
tenantIdstring
urlIdstring

响应

返回: Option[GetVotesResponse]

示例

getVotes 示例
Copy Copy
1
2let (response, httpResponse) = client.getVotes(tenantId = "my-tenant-123", urlId = "news/breaking-article-456")
3if response.isSome:
4 let votesResp = response.get()
5 echo "Received votes response:", $votesResp
6else:
7 echo "No votes returned, HTTP response:", $httpResponse
8

获取用户的投票 Internal Link

参数

名称类型是否必需描述
tenantIdstring
urlIdstring
userIdstring
anonUserIdstring

响应

返回: Option[GetVotesForUserResponse]

示例

getVotesForUser 示例
Copy Copy
1
2let (response, httpResponse) = client.getVotesForUser(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 userId = "user-789",
6 anonUserId = ""
7)
8if response.isSome:
9 let votes = response.get()
10 echo "User votes retrieved"
11else:
12 echo "No votes found"
13

需要帮助?

如果在使用 Nim SDK 时遇到任何问题或有任何疑问,请:

贡献

欢迎贡献!请访问 GitHub 仓库 以获取贡献指南。