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_default 包含需要您的 API 密钥的方法,api_public 包含可以直接从浏览器/移动设备/等在无需身份验证的情况下调用的 API。

快速开始 Internal Link

使用已认证的 APIs (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"

使用公共 APIs (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"

常见问题

  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 调用 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

参数

名称类型必需描述
tenantIdstring
aggregationRequestAggregationRequest
parentTenantIdstring
includeStatsbool

响应

返回:Option[AggregationResponse]

示例

aggregate 示例
Copy Copy
1
2let (response, httpResponse) = client.aggregate(
3 tenantId = "my-tenant-123",
4 aggregationRequest = AggregationRequest(),
5 parentTenantId = "",
6 includeStats = false
7)
8if response.isSome:
9 let aggregation = response.get()
10 echo $aggregation
11

获取审计日志 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
limitfloat64
skipfloat64
orderSORTDIR
afterfloat64
beforefloat64

响应

返回:Option[GetAuditLogs_200_response]

示例

getAuditLogs 示例
Copy Copy
1
2let (response, httpResponse) = client.getAuditLogs(
3 tenantId = "my-tenant-123",
4 limit = 100.0,
5 skip = 0.0,
6 order = SORTDIR(0),
7 after = 0.0,
8 before = 0.0
9)
10if response.isSome:
11 let audit = response.get()
12 echo audit
13

从公开评论屏蔽 Internal Link

参数

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

响应

返回: Option[BlockFromCommentPublic_200_response]

示例

blockFromCommentPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.blockFromCommentPublic(
3 tenantId = "my-tenant-123",
4 commentId = "comment-987654",
5 publicBlockFromCommentParams = PublicBlockFromCommentParams(),
6 sso = "sso-token-7a9b3c"
7)
8if response.isSome:
9 let blockResult = response.get()
10 discard blockResult
11

取消公开评论屏蔽 Internal Link

参数

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

响应

返回:Option[UnBlockCommentPublic_200_response]

示例

unBlockCommentPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.unBlockCommentPublic(
3 tenantId = "news-site-456",
4 commentId = "comment-abc123",
5 publicBlockFromCommentParams = PublicBlockFromCommentParams{},
6 sso = ""
7)
8if response.isSome:
9 let unblocked = response.get()
10 discard unblocked
11else:
12 discard httpResponse
13

检查被屏蔽的评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdsstring
ssostring

响应

返回: Option[CheckedCommentsForBlocked_200_response]

示例

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

从评论中屏蔽用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
idstringNo
blockFromCommentParamsBlockFromCommentParamsNo
userIdstringNo
anonUserIdstringNo

响应

返回: Option[BlockFromCommentPublic_200_response]

示例

blockUserFromComment 示例
Copy Copy
1
2let (response, httpResponse) = client.blockUserFromComment(
3 tenantId = "my-tenant-123",
4 id = "comment-98765",
5 blockFromCommentParams = BlockFromCommentParams(),
6 userId = "user-456",
7 anonUserId = ""
8)
9if response.isSome:
10 let blocked = response.get()
11 echo "Block confirmed for tenant:", " my-tenant-123"
12

创建公开评论 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
broadcastIdstring
commentDataCommentData
sessionIdstring
ssostring

响应

返回: Option[CreateCommentPublic_200_response]

示例

createCommentPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.createCommentPublic(
3 tenantId = "my-tenant-123",
4 urlId = "news/breaking-elections-2025",
5 broadcastId = "broadcast-456",
6 commentData = CommentData(
7 content = "Great reporting — thanks for the clear analysis!",
8 authorName = "Jane Doe",
9 authorEmail = "jane.doe@example.com",
10 isVerified = false,
11 tags = @["politics", "analysis"]
12 ),
13 sessionId = "session-789",
14 sso = "sso-token-abc123"
15)
16
17if response.isSome:
18 let created = response.get()
19 echo "Created comment:", created
20else:
21 echo "No comment returned, HTTP status: ", httpResponse.status`
22

删除评论 Internal Link

参数

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

响应

返回: Option[DeleteComment_200_response]

示例

deleteComment 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteComment(tenantId = "my-tenant-123", id = "cmt-456abc", contextUserId = "user-789", isLive = true)
3if response.isSome:
4 let deleted = response.get()
5 discard deleted
6 echo "Delete succeeded"
7else:
8 echo "No delete response"
9

删除公开评论 Internal Link

参数

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

响应

返回: Option[DeleteCommentPublic_200_response]

示例

deleteCommentPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteCommentPublic(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654",
5 broadcastId = "",
6 editKey = "",
7 sso = ""
8)
9if response.isSome:
10 let deleted = response.get()
11 echo "Delete succeeded"
12 echo "HTTP status: ", httpResponse.status
13else:
14 echo "Delete failed, HTTP status: ", httpResponse.status
15

删除评论投票 Internal Link

参数

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

响应

返回: Option[DeleteCommentVote_200_response]

示例

deleteCommentVote 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteCommentVote(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-789",
5 voteId = "",
6 urlId = "news/breaking-story-2025",
7 broadcastId = "",
8 editKey = "",
9 sso = ""
10)
11if response.isSome:
12 let deleted = response.get()
13 discard deleted
14 echo "Vote removed for comment cmt-789"
15else:
16 echo "No response body returned"
17

举报评论 Internal Link

参数

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

响应

返回: Option[FlagComment_200_response]

示例

flagComment 示例
Copy Copy
1
2let (response, httpResponse) = client.flagComment(tenantId = "my-tenant-123", id = "cmt-98765", userId = "user-8342", anonUserId = "")
3if response.isSome:
4 let flagged = response.get()
5 echo "Flagged comment response: ", flagged
6else:
7 echo "Flag comment failed: ", httpResponse
8

获取评论 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetComment_200_response]

示例

getComment 示例
Copy Copy
1
2let (response, httpResponse) = client.getComment(tenantId = "my-tenant-123", id = "cmt-987654321")
3if response.isSome:
4 let comment = response.get()
5 echo comment
6

获取评论列表 Internal Link

参数

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

响应

返回: Option[GetComments_200_response]

示例

getComments 示例
Copy Copy
1
2let (response, httpResponse) = client.getComments(
3 tenantId = "my-tenant-123",
4 page = 1,
5 limit = 20,
6 skip = 0,
7 asTree = false,
8 skipChildren = 0,
9 limitChildren = 0,
10 maxTreeDepth = 0,
11 urlId = "news/2025-election-night",
12 userId = "",
13 anonUserId = "",
14 contextUserId = "",
15 hashTag = "",
16 parentId = "",
17 direction = SortDirections.Desc
18)
19
20if response.isSome:
21 let comments = response.get()
22 echo "Status: ", httpResponse.status, " Comments: ", comments
23

获取公开评论 Internal Link

参数

NameTypeRequiredDescription
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[GetCommentsPublic_200_response]

示例

getCommentsPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentsPublic(
3 tenantId = "my-tenant-123",
4 urlId = "news/world/article-2025",
5 page = 1,
6 direction = SortDirections(0),
7 sso = "sso_token_abc",
8 skip = 0,
9 skipChildren = 0,
10 limit = 20,
11 limitChildren = 5,
12 countChildren = false,
13 fetchPageForCommentId = "cmt_789",
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 = "parent_123",
25 searchText = "openAI integration",
26 hashTags = @["ai", "technology"],
27 userId = "user_456",
28 customConfigStr = "{}",
29 afterCommentId = "cmt_100",
30 beforeCommentId = ""
31)
32
33if response.isSome:
34 let comments = response.get()
35 discard comments
36else:
37 discard httpResponse
38

获取评论文本 Internal Link

参数

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

响应

返回: Option[GetCommentText_200_response]

示例

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

获取评论投票用户名列表 Internal Link


参数

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

响应

返回:Option[GetCommentVoteUserNames_200_response]

示例

getCommentVoteUserNames 示例
Copy Copy
1
2let (response, httpResponse) = client.getCommentVoteUserNames(tenantId = "my-tenant-123", commentId = "c_987654321", dir = 0, sso = "")
3if response.isSome:
4 let res = response.get()
5 for userName in res.userNames:
6 echo userName
7

锁定评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回:Option[LockComment_200_response]

示例

lockComment 示例
Copy Copy
1
2let (response, httpResponse) = client.lockComment(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-98765",
5 broadcastId = "",
6 sso = ""
7)
8if response.isSome:
9 let lockResp = response.get()
10 discard lockResp
11

置顶评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回: Option[PinComment_200_response]

示例

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

保存评论 Internal Link

参数

名称类型必需描述
tenantIdstring
createCommentParamsCreateCommentParams
isLivebool
doSpamCheckbool
sendEmailsbool
populateNotificationsbool

响应

返回:Option[SaveComment_200_response]

示例

saveComment 示例
Copy Copy
1
2let (response, httpResponse) = client.saveComment(
3 tenantId = "my-tenant-123",
4 createCommentParams = CreateCommentParams(
5 content = "This article was really helpful, thanks!",
6 urlId = "news/2025-11/ai-regulations",
7 authorName = "Jane Doe",
8 authorEmail = "jane.doe@example.com",
9 tags = @["policy", "analysis"]
10 ),
11 isLive = true,
12 doSpamCheck = true,
13 sendEmails = true,
14 populateNotifications = false
15)
16
17if response.isSome:
18 let saved = response.get()
19 discard saved
20

批量保存评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createCommentParamsseq[CreateCommentParams]
isLivebool
doSpamCheckbool
sendEmailsbool
populateNotificationsbool): (Option[seq[SaveComment_200_response]]
idstring
unBlockFromCommentParamsUnBlockFromCommentParams
userIdstring
anonUserIdstring

响应

返回: Option[UnBlockCommentPublic_200_response]

示例

saveCommentsBulk 示例
Copy Copy
1
2let (response, httpResponse) = client.saveCommentsBulk(
3 tenantId = "my-tenant-123",
4 createCommentParams = @[],
5 isLive = true,
6 doSpamCheck = true,
7 sendEmails = false,
8 populateNotifications = true,
9 id = "batch-20251122",
10 unBlockFromCommentParams = UnBlockFromCommentParams(),
11 userId = "user-456",
12 anonUserId = "anon-789"
13)
14if response.isSome:
15 let unblocked = response.get()
16 echo "Unblocked response received: ", unblocked
17else:
18 echo "No unblocked response, httpResponse: ", $httpResponse
19

设置评论文本 Internal Link

参数

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

响应

返回: Option[SetCommentText_200_response]

示例

setCommentText 示例
Copy Copy
1
2let (response, httpResponse) = client.setCommentText(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-7890",
5 broadcastId = "broadcast-456",
6 commentTextUpdateRequest = CommentTextUpdateRequest(text = "Updated comment text to fix typos and add clarity."),
7 editKey = "edit-key-abc123",
8 sso = "sso-token-xyz"
9)
10
11if response.isSome:
12 let updated = response.get()
13

取消从评论屏蔽用户 Internal Link

参数

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

响应

返回: Option[UnBlockCommentPublic_200_response]

示例

unBlockUserFromComment 示例
Copy Copy
1
2let (response, httpResponse) = client.unBlockUserFromComment(
3 tenantId = "news-site-001",
4 id = "cmt-8fj3k9",
5 unBlockFromCommentParams = UnBlockFromCommentParams(),
6 userId = "user-98765",
7 anonUserId = ""
8)
9
10if response.isSome:
11 let unblocked = response.get()
12 discard unblocked
13

取消举报评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
idstringNo
userIdstringNo
anonUserIdstringNo

响应

返回: Option[FlagComment_200_response]

示例

unFlagComment 示例
Copy Copy
1
2let (response, httpResponse) = client.unFlagComment(
3 tenantId = "my-tenant-123",
4 id = "flag-789",
5 userId = "",
6 anonUserId = ""
7)
8
9if response.isSome:
10 let flagResponse = response.get()
11 echo "Comment unflagged successfully"
12

解锁评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回:Option[LockComment_200_response]

示例

unLockComment 示例
Copy Copy
1
2let (response, httpResponse) = client.unLockComment(tenantId = "my-tenant-123", commentId = "cmt-7f9a3b2d", broadcastId = "", sso = "")
3if response.isSome:
4 let lockResult = response.get()
5 echo "Unlock response: ", $lockResult
6else:
7 echo "Unlock failed, HTTP response: ", $httpResponse
8

取消置顶评论 Internal Link

参数

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

响应

返回: Option[PinComment_200_response]

示例

unPinComment 示例
Copy Copy
1
2let (response, httpResponse) = client.unPinComment(tenantId = "my-tenant-123", commentId = "cmt-9f8b7a6", broadcastId = "", sso = "")
3if response.isSome:
4 let pinResp = response.get()
5 echo "Unpinned comment successfully"
6else:
7 echo "Failed to unpin comment; HTTP response: ", httpResponse
8

更新评论 Internal Link

参数

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

响应

返回:Option[FlagCommentPublic_200_response]

示例

updateComment 示例
Copy Copy
1
2let updatableCommentParams = UpdatableCommentParams(content: "Fixed a typo in the second paragraph", tags: @["article-edit", "typo"], isApproved: true)
3let (response, httpResponse) = client.updateComment(
4 tenantId = "my-tenant-123",
5 id = "comment-456",
6 updatableCommentParams = updatableCommentParams,
7 contextUserId = "user-789",
8 doSpamCheck = true,
9 isLive = true
10)
11if response.isSome:
12 let flagResp = response.get()
13 discard flagResp
14

评论投票 Internal Link

参数

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

响应

返回: Option[VoteComment_200_response]

示例

voteComment 示例
Copy Copy
1
2let voteBody = VoteBodyParams()
3let (response, httpResponse) = client.voteComment(
4 tenantId = "my-tenant-123",
5 commentId = "cmt-456789",
6 urlId = "news/2025/fastcomments-integration",
7 broadcastId = "",
8 voteBodyParams = voteBody,
9 sessionId = "",
10 sso = ""
11)
12if response.isSome:
13 let voteResp = response.get()
14 echo "Vote recorded for comment cmt-456789"
15else:
16 echo "Failed to record vote"
17

添加域配置 Internal Link

参数

名称类型必需描述
tenantIdstring
addDomainConfigParamsAddDomainConfigParams

响应

返回: Option[AddDomainConfig_200_response]

示例

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

删除域配置 Internal Link

参数

名称类型必需描述
tenantIdstring
domainstring

响应

返回: Option[DeleteDomainConfig_200_response]

示例

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

获取域配置 Internal Link

参数

名称类型必填说明
tenantIdstring
domainstring

响应

返回: Option[GetDomainConfig_200_response]

示例

getDomainConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.getDomainConfig(tenantId = "my-tenant-123", domain = "news.example.com")
3if response.isSome:
4 let domainConfig = response.get()
5 echo "Loaded domain config for tenant my-tenant-123:", $domainConfig
6else:
7 echo "No domain config; HTTP status:", $httpResponse.status
8

获取域配置列表 Internal Link


参数

NameType必填描述
tenantIdstring

响应

返回: Option[GetDomainConfigs_200_response]

示例

getDomainConfigs 示例
Copy Copy
1
2let (response, httpResponse) = client.getDomainConfigs(tenantId = "my-tenant-123")
3if response.isSome:
4 let domainConfigs = response.get()
5 echo "Domain configs received:"
6 echo domainConfigs
7else:
8 echo "Failed to retrieve domain configs."
9 echo httpResponse
10

部分更新域配置 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
domainToUpdatestring
patchDomainConfigParamsPatchDomainConfigParams

响应

返回: Option[GetDomainConfig_200_response]

示例

patchDomainConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.patchDomainConfig(
3 tenantId = "my-tenant-123",
4 domainToUpdate = "news/article-crowdsourcing",
5 patchDomainConfigParams = PatchDomainConfigParams(
6 allowedOrigins = @["https://www.news-site.com"],
7 moderated = true,
8 maxCommentLength = 1000
9 )
10)
11
12if response.isSome:
13 let domainConfig = response.get()
14 echo "Updated domain config received"
15else:
16 echo "No domain config returned"
17

替换域配置 Internal Link

参数

名称类型必填描述
tenantIdstring
domainToUpdatestring
updateDomainConfigParamsUpdateDomainConfigParams

响应

返回:Option[GetDomainConfig_200_response]

示例

putDomainConfig 示例
Copy Copy
1
2let updateParams = UpdateDomainConfigParams(
3 allowAnonymous = false,
4 moderationEnabled = true,
5 allowedOrigins = @["https://news.example.com"],
6 maxCommentLength = 2000
7)
8
9let (response, httpResponse) = client.putDomainConfig(
10 tenantId = "my-tenant-123",
11 domainToUpdate = "news/example-article",
12 updateDomainConfigParams = updateParams
13)
14
15if response.isSome:
16 let domainCfg = response.get()
17 discard domainCfg
18

创建邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
createEmailTemplateBodyCreateEmailTemplateBody

响应

返回:Option[CreateEmailTemplate_200_response]

示例

createEmailTemplate 示例
Copy Copy
1
2let (response, httpResponse) = client.createEmailTemplate(tenantId = "my-tenant-123", createEmailTemplateBody = CreateEmailTemplateBody(name = "Weekly Newsletter", subject = "Weekly updates from OurSite", fromName = "OurSite Team", fromEmail = "newsletter@oursite.com", bodyHtml = "<h1>Highlights</h1><p>Top stories this week...</p>", enabled = true, tags = @["newsletter", "weekly"]))
3if response.isSome:
4 let template = response.get()
5 discard template
6

删除邮件模板 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

deleteEmailTemplate 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteEmailTemplate(tenantId = "my-tenant-123", id = "tmpl-456")
3if response.isSome:
4 let deleted = response.get()
5 echo deleted
6

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

参数

名称类型必填描述
tenantIdstring
idstring
errorIdstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

deleteEmailTemplateRenderError 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteEmailTemplateRenderError(
3 tenantId = "my-tenant-123",
4 id = "welcome-email-template",
5 errorId = "render-error-2026"
6)
7if response.isSome:
8 let flagResp = response.get()
9 discard flagResp
10

获取邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: Option[GetEmailTemplate_200_response]

示例

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 echo "Template ID: ", template.id
6 echo "Subject: ", template.subject
7 echo "Body: ", template.body
8

获取邮件模板定义 Internal Link

参数

名称类型必需描述
tenantIdstring

响应

返回: Option[GetEmailTemplateDefinitions_200_response]

示例

getEmailTemplateDefinitions 示例
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplateDefinitions(tenantId = "my-tenant-123")
3if response.isSome:
4 let defs = response.get()
5 echo "Received email template definitions for tenant my-tenant-123"
6else:
7 echo "No template definitions returned; HTTP status: ", httpResponse.status
8

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

参数

名称类型必需描述
tenantIdstring
idstring
skipfloat64

响应

返回: Option[GetEmailTemplateRenderErrors_200_response]

示例

getEmailTemplateRenderErrors 示例
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplateRenderErrors(tenantId = "my-tenant-123", id = "welcome-email-template-001", skip = 0.0)
3if response.isSome:
4 let result = response.get()
5 echo "Render errors:", result
6else:
7 echo "No render errors or request failed. HTTP status:", httpResponse.status
8

获取邮件模板列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipfloat64

响应

返回: Option[GetEmailTemplates_200_response]

示例

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 templates returned"
8

渲染邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
localestring

响应

返回:Option[RenderEmailTemplate_200_response]

示例

renderEmailTemplate 示例
Copy Copy
1
2let renderBody = RenderEmailTemplateBody(templateId: "comment-notification", subject: "New comment on your article", variables: @["John Doe", "news/global-climate"])
3let (response, httpResponse) = client.renderEmailTemplate(tenantId = "my-tenant-123", renderEmailTemplateBody = renderBody, locale = "en-US")
4if response.isSome:
5 let rendered = response.get()
6 echo rendered
7

更新邮件模板 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
updateEmailTemplateBodyUpdateEmailTemplateBody

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateEmailTemplate 示例
Copy Copy
1
2let updateBody = UpdateEmailTemplateBody(
3 name = "Welcome Email",
4 subject = "Welcome to Example News",
5 html = "<p>Hi {name}, welcome to Example News.</p>",
6 isActive = true,
7 tags = @["onboarding", "welcome"]
8)
9
10let (response, httpResponse) = client.updateEmailTemplate(
11 tenantId = "my-tenant-123",
12 id = "welcome-template-2026",
13 updateEmailTemplateBody = updateBody
14)
15
16if response.isSome:
17 let template = response.get()
18 discard template
19

获取事件日志 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdWSstring
startTimeint64
endTimeint64

响应

返回: Option[GetEventLog_200_response]

示例

getEventLog 示例
Copy Copy
1
2let (response, httpResponse) = client.getEventLog(
3 tenantId = "my-tenant-123",
4 urlId = "news/politics/election-2024",
5 userIdWS = "",
6 startTime = 0'i64,
7 endTime = 0'i64
8)
9if response.isSome:
10 let eventLog = response.get()
11 echo "Received event log for ", "my-tenant-123"
12else:
13 echo "No event log returned. HTTP status: ", $httpResponse.status
14

获取全局事件日志 Internal Link

参数

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

响应

返回: Option[GetEventLog_200_response]

示例

getGlobalEventLog 示例
Copy Copy
1
2let (response, httpResponse) = client.getGlobalEventLog(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 userIdWS = "",
6 startTime = int64(0),
7 endTime = int64(0)
8)
9if response.isSome:
10 let eventLog = response.get()
11 echo eventLog
12else:
13 echo "No event log returned"
14

创建动态帖子 Internal Link

参数

名称类型必需描述
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsNo
broadcastIdstringNo
isLiveboolNo
doSpamCheckboolNo
skipDupCheckboolNo

响应

返回: Option[CreateFeedPost_200_response]

示例

createFeedPost 示例
Copy Copy
1
2let createParams = CreateFeedPostParams(
3 content = "We're rolling out realtime comments to all users!",
4 title = "Realtime Comments Rollout",
5 url = "news/realtime-comments-rollout-2025",
6 authorId = "prod-team",
7 tags = @["release", "comments"]
8)
9
10let (response, httpResponse) = client.createFeedPost(
11 tenantId = "my-tenant-123",
12 createFeedPostParams = createParams,
13 broadcastId = "broadcast-2025-11",
14 isLive = true,
15 doSpamCheck = true,
16 skipDupCheck = false
17)
18
19if response.isSome:
20 let created = response.get()
21 echo "Feed post created, id: ", $created.id
22else:
23 echo "Failed to create feed post, HTTP status: ", $httpResponse.statusCode
24

创建公开动态帖子 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstring
ssostring

响应

返回:Option[CreateFeedPostPublic_200_response]

示例

createFeedPostPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.createFeedPostPublic(
3 tenantId = "my-tenant-123",
4 createFeedPostParams = CreateFeedPostParams(
5 title = "Product Launch Announcement",
6 content = "We just launched a new commenting feature to improve engagement.",
7 authorId = "team-product",
8 url = "news/product-launch",
9 tags = @["launch", "comments"],
10 isFeatured = false
11 ),
12 broadcastId = "broadcast-009",
13 sso = ""
14)
15if response.isSome:
16 let created = response.get()
17 discard created
18

删除公开动态帖子 Internal Link

参数

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

响应

返回: Option[DeleteFeedPostPublic_200_response]

示例

deleteFeedPostPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteFeedPostPublic(
3 tenantId = "my-tenant-123",
4 postId = "post-456",
5 broadcastId = "broadcast-789",
6 sso = ""
7)
8if response.isSome:
9 let result = response.get()
10

获取动态帖子 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
afterIdstring
limitint
tagsseq[string]

响应

返回: Option[GetFeedPosts_200_response]

示例

getFeedPosts 示例
Copy Copy
1
2let (response, httpResponse) = client.getFeedPosts(tenantId = "my-tenant-123", afterId = "post_abc123", limit = 20, tags = @["news", "sports"])
3if response.isSome:
4 let feed = response.get()
5 echo "Feed posts retrieved for tenant my-tenant-123"
6else:
7 echo "No feed posts returned, HTTP status: ", $httpResponse.status
8

获取公开动态帖子 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
afterIdstring
limitint
tagsseq[string]
ssostring
isCrawlerbool
includeUserInfobool

响应

返回: Option[GetFeedPostsPublic_200_response]

示例

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)
11
12if response.isSome:
13 let feed = response.get()
14 echo feed
15

获取动态帖子统计 Internal Link

参数

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

响应

返回: Option[GetFeedPostsStats_200_response]

示例

getFeedPostsStats 示例
Copy Copy
1
2let (response, httpResponse) = client.getFeedPostsStats(
3 tenantId = "my-tenant-123",
4 postIds = @["news/article-2025-11-22", "opinion/market-trends-452"],
5 sso = ""
6)
7
8if response.isSome:
9 let stats = response.get()
10 discard stats
11

获取用户公开反应 Internal Link

参数

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

响应

返回: Option[GetUserReactsPublic_200_response]

示例

getUserReactsPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserReactsPublic(tenantId = "my-tenant-123", postIds = @[], sso = "")
3if response.isSome:
4 let reacts = response.get()
5 discard reacts
6

对公开动态帖子表态 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
postIdstring
reactBodyParamsReactBodyParams
isUndobool
broadcastIdstring
ssostring

响应

返回:Option[ReactFeedPostPublic_200_response]

示例

reactFeedPostPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.reactFeedPostPublic(
3 tenantId = "my-tenant-123",
4 postId = "news/article-title",
5 reactBodyParams = ReactBodyParams(),
6 isUndo = false,
7 broadcastId = "broadcast-456",
8 sso = ""
9)
10if response.isSome:
11 let result = response.get()
12 echo "Reaction result: ", result
13else:
14 echo "Reaction failed, HTTP response: ", httpResponse
15

更新动态帖子 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
feedPostFeedPost

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateFeedPost 示例
Copy Copy
1
2let feedPost = FeedPost(
3 title: "Local Election Results",
4 content: "Updated vote counts across precincts",
5 tags: @["politics", "local"],
6 authorId: "journalist-32",
7 isPublished: true,
8 views: 124
9)
10
11let (response, httpResponse) = client.updateFeedPost(tenantId = "my-tenant-123", id = "post-456", feedPost = feedPost)
12
13if response.isSome:
14 let flagResp = response.get()
15 discard flagResp
16

更新公开动态帖子 Internal Link

参数

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

响应

返回: Option[CreateFeedPostPublic_200_response]

示例

updateFeedPostPublic 示例
Copy Copy
1
2var updateParams: UpdateFeedPostParams = UpdateFeedPostParams(
3 title = "Breaking: Service Update",
4 content = "We improved feed performance and UX for all users.",
5 tags = @["performance", "release"],
6 isPublic = true
7)
8
9let (response, httpResponse) = client.updateFeedPostPublic(
10 tenantId = "my-tenant-123",
11 postId = "post-456",
12 updateFeedPostParams = updateParams,
13 broadcastId = "broadcast-789",
14 sso = "sso-token-abc123"
15)
16
17if response.isSome:
18 let post = response.get()
19 echo "Updated post title: ", post.title
20 echo "HTTP status: ", httpResponse.status
21

举报公开评论 Internal Link

参数

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

响应

返回: Option[FlagCommentPublic_200_response]

示例

flagCommentPublic 示例
Copy Copy
1
2let (response, httpResponse) = client.flagCommentPublic(
3 tenantId = "my-tenant-123",
4 commentId = "comment-98765",
5 isFlagged = false,
6 sso = ""
7)
8if response.isSome:
9 let flagResult = response.get()
10 discard flagResult
11

添加标签 Internal Link

参数

名称类型必需描述
tenantIdstring
createHashTagBodyCreateHashTagBody

响应

返回: Option[AddHashTag_200_response]

示例

addHashTag 示例
Copy Copy
1
2let createBody = CreateHashTagBody(
3 name = "sports",
4 description = "Articles and discussions about sports",
5 aliases = @["sport", "athletics"],
6 isActive = true
7)
8
9let (response, httpResponse) = client.addHashTag(tenantId = "my-tenant-123", createHashTagBody = createBody)
10
11if response.isSome:
12 let added = response.get()
13 echo "HashTag added successfully"
14else:
15 echo "Failed to add HashTag"
16

批量添加标签 Internal Link

参数

名称类型必填描述
tenantIdstring
bulkCreateHashTagsBodyBulkCreateHashTagsBody

响应

返回: Option[AddHashTagsBulk_200_response]

示例

addHashTagsBulk 示例
Copy Copy
1
2let bulkBody = BulkCreateHashTagsBody(
3 tags = @["breaking", "world-news", "economy"],
4 createdBy = "editor@dailynews.com",
5 replaceExisting = false
6)
7let (response, httpResponse) = client.addHashTagsBulk(tenantId = "newsroom-tenant-42", bulkCreateHashTagsBody = bulkBody)
8if response.isSome:
9 let created = response.get()
10 echo created
11else:
12 echo "AddHashTagsBulk failed:", httpResponse
13

删除标签 Internal Link

参数

名称类型必需描述
tagstring
tenantIdstring
deleteHashTagRequestDeleteHashTagRequest

响应

返回:Option[FlagCommentPublic_200_response]

示例

deleteHashTag 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteHashTag(tag = "breaking-news", tenantId = "my-tenant-123", deleteHashTagRequest = DeleteHashTagRequest())
3if response.isSome:
4 let result = response.get()
5 discard result
6

获取标签 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
pagefloat64

响应

返回: Option[GetHashTags_200_response]

示例

getHashTags 示例
Copy Copy
1
2let (response, httpResponse) = client.getHashTags(tenantId = "my-tenant-123", page = 1.0)
3if response.isSome:
4 let tags = response.get()
5 for t in tags:
6 echo t
7else:
8 echo "no hashtags found"
9

部分更新标签 Internal Link


参数

名称类型必填描述
tagstring
tenantIdstring
updateHashTagBodyUpdateHashTagBody

响应

返回:Option[PatchHashTag_200_response]

示例

patchHashTag 示例
Copy Copy
1
2let (response, httpResponse) = client.patchHashTag(tag = "politics", tenantId = "my-tenant-123", updateHashTagBody = UpdateHashTagBody())
3
4if response.isSome:
5 let updated = response.get()
6 echo "Hashtag updated successfully"
7else:
8 echo "Failed to update hashtag, status:", httpResponse.status
9

创建版主 Internal Link

参数

名称类型必需描述
tenantIdstring
createModeratorBodyCreateModeratorBody

响应

返回:Option[CreateModerator_200_response]

示例

createModerator 示例
Copy Copy
1
2let createBody = CreateModeratorBody(
3 email = "moderator@news-site.com",
4 displayName = "News Moderator",
5 permissions = @["approve_comments", "delete_comments"],
6 isSuperAdmin = false
7)
8
9let (response, httpResponse) = client.createModerator(tenantId = "my-tenant-123", createModeratorBody = createBody)
10
11if response.isSome:
12 let moderator = response.get()
13 echo "Created moderator: ", $moderator
14

删除版主 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
sendEmailstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

deleteModerator 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteModerator(tenantId = "my-tenant-123", id = "moderator-456", sendEmail = "false")
3if response.isSome:
4 let flagResp = response.get()
5 echo "Moderator deletion response: ", $flagResp
6else:
7 echo "No response body; HTTP status: ", $httpResponse.status
8

获取版主 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring

响应

返回: Option[GetModerator_200_response]

示例

getModerator 示例
Copy Copy
1
2let (response, httpResponse) = client.getModerator(tenantId = "my-tenant-123", id = "mod-98765")
3if response.isSome:
4 let moderator = response.get()
5 discard moderator
6

获取版主列表 Internal Link

参数

名称类型必填描述
tenantIdstring
skipfloat64

响应

返回: Option[GetModerators_200_response]

示例

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 "Moderators fetched successfully"
6 echo moderators
7

更新版主 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateModeratorBodyUpdateModeratorBody

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateModerator 示例
Copy Copy
1
2let updateBody = UpdateModeratorBody(
3 name: "Alicia Gomez",
4 email: "alicia.gomez@dailynews.com",
5 active: true,
6 roles: @["moderator"]
7)
8
9let (response, httpResponse) = client.updateModerator(tenantId = "my-tenant-123", id = "moderator-789", updateModeratorBody = updateBody)
10
11if response.isSome:
12 let updated = response.get()
13 echo "Moderator updated:", updated
14

删除通知计数 Internal Link

参数

名称类型必需说明
tenantIdstring
idstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

deleteNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteNotificationCount(tenantId = "my-tenant-123", id = "notif-456")
3if response.isSome:
4 let deleted = response.get()
5 echo "Deleted notification count:", deleted
6else:
7 echo "No response body; HTTP response:", httpResponse
8

获取缓存的通知计数 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetCachedNotificationCount_200_response]

示例

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

获取通知计数 Internal Link

参数

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

响应

返回: Option[GetNotificationCount_200_response]

示例

getNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getNotificationCount(
3 tenantId = "acme-corp-tenant-12",
4 userId = "user-84",
5 urlId = "news/2026/market-update",
6 fromCommentId = "cmt-20251234",
7 viewed = false
8)
9
10if response.isSome:
11 let notificationData = response.get()
12 echo "Received notification data"
13else:
14 echo "No notification data"
15

获取通知列表 Internal Link

参数

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

响应

返回: Option[GetNotifications_200_response]

示例

getNotifications 示例
Copy Copy
1
2let (response, httpResponse) = client.getNotifications(
3 tenantId = "fastcomments-tenant-42",
4 userId = "",
5 urlId = "news/latest-tech-innovations",
6 fromCommentId = "",
7 viewed = false,
8 skip = 0.0
9)
10
11if response.isSome:
12 let notifications = response.get()
13 echo "Received notifications: ", notifications
14else:
15 echo "No notifications, response: ", httpResponse
16

更新通知 Internal Link


参数

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

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateNotification 示例
Copy Copy
1
2let (response, httpResponse) = client.updateNotification(tenantId = "my-tenant-123",
3 id = "notif-456",
4 updateNotificationBody = UpdateNotificationBody(),
5 userId = "user-789")
6if response.isSome:
7 let updated = response.get()
8 echo "Updated notification id: ", $updated
9

添加页面 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

通过 URL ID 获取页面 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

参数

名称类型必需描述
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[FlagCommentPublic_200_response]

示例

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

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

参数

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

响应

返回: Option[GetPendingWebhookEventCount_200_response]

示例

getPendingWebhookEventCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getPendingWebhookEventCount(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-4567",
5 externalId = "",
6 eventType = "",
7 domain = "",
8 attemptCountGT = 0.0
9)
10if response.isSome:
11 let pending = response.get()
12 echo "Received pending webhook event count response: ", $pending
13else:
14 echo "No pending webhook event count returned, HTTP response: ", $httpResponse
15

获取待处理 Webhook 事件列表 Internal Link

参数

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

响应

返回: Option[GetPendingWebhookEvents_200_response]

示例

getPendingWebhookEvents 示例
Copy Copy
1
2let (response, httpResponse) = client.getPendingWebhookEvents(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456789",
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 echo "Received pending webhook events"
15else:
16 echo "No pending webhook events"
17

创建问题配置 Internal Link

参数

名称类型必需描述
tenantIdstring
createQuestionConfigBodyCreateQuestionConfigBody

响应

返回: Option[CreateQuestionConfig_200_response]

示例

createQuestionConfig 示例
Copy Copy
1
2let body = CreateQuestionConfigBody(
3 key = "recommendation",
4 question = "Would you recommend this article to a friend?",
5 required = false,
6 inputType = "radio",
7 options = @["Yes", "No", "Maybe"]
8)
9
10let (response, httpResponse) = client.createQuestionConfig(tenantId = "my-tenant-123", createQuestionConfigBody = body)
11
12if response.isSome:
13 let config = response.get()
14 discard config
15

删除问题配置 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

deleteQuestionConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteQuestionConfig(tenantId = "my-tenant-123", id = "qcfg-456")
3if response.isSome:
4 let respVal = response.get()
5 echo "Delete succeeded for tenant my-tenant-123"
6else:
7 echo "Delete returned no data (status: ", $httpResponse.status, ")"
8

获取问题配置 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:Option[GetQuestionConfig_200_response]

示例

getQuestionConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfig(tenantId = "my-tenant-123", id = "qcfg-98765")
3if response.isSome:
4 let config = response.get()
5 echo "Received question config for tenant:", " my-tenant-123"
6

获取问题配置列表 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
skipfloat64

响应

返回: Option[GetQuestionConfigs_200_response]

示例

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 discard configs
6

更新问题配置 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
updateQuestionConfigBodyUpdateQuestionConfigBody

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateQuestionConfig 示例
Copy Copy
1
2let (response, httpResponse) = client.updateQuestionConfig(
3 tenantId = "my-tenant-123",
4 id = "q-config-456",
5 updateQuestionConfigBody = UpdateQuestionConfigBody()
6)
7if response.isSome:
8 let updated = response.get()
9 discard updated
10 echo "Question config updated"
11else:
12 echo "Update did not return a result"
13

创建问题结果 Internal Link

参数

名称类型必填描述
tenantIdstring
createQuestionResultBodyCreateQuestionResultBody

响应

返回: Option[CreateQuestionResult_200_response]

示例

createQuestionResult 示例
Copy Copy
1
2let (response, httpResponse) = client.createQuestionResult(tenantId = "my-tenant-123",
3 createQuestionResultBody = CreateQuestionResultBody(questionId: "q-456",
4 userId: "user-789",
5 correct: true,
6 score: 9,
7 answers: @["B", "D"]))
8if response.isSome:
9 let result = response.get()
10 echo result
11

删除问题结果 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

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

获取问题结果 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: Option[GetQuestionResult_200_response]

示例

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 "Received question result:"
6 echo result
7else:
8 echo "No question result returned"
9

获取问题结果列表 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
userIdstring
startDatestring
questionIdstring
questionIdsstring
skipfloat64

响应

返回:Option[GetQuestionResults_200_response]

示例

getQuestionResults 示例
Copy Copy
1
2let (response, httpResponse) = client.getQuestionResults(
3 tenantId = "my-tenant-123",
4 urlId = "news/politics/election-2024",
5 userId = "user-9876",
6 startDate = "2024-01-01T00:00:00Z",
7 questionId = "q-user-satisfaction",
8 questionIds = "q-user-satisfaction,q-engagement",
9 skip = 0.0
10)
11
12if response.isSome:
13 let results = response.get()
14 echo "Got question results: ", $results
15else:
16 echo "No results, HTTP status: ", httpResponse.status
17

更新问题结果 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringNo
updateQuestionResultBodyUpdateQuestionResultBodyNo

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateQuestionResult 示例
Copy Copy
1
2let (response, httpResponse) = client.updateQuestionResult(
3 tenantId = "my-tenant-123",
4 id = "question-456",
5 updateQuestionResultBody = UpdateQuestionResultBody(
6 result = "approved",
7 reviewerId = "moderator-42",
8 notes = "Valid question, no action required",
9 isSpam = false
10 )
11)
12if response.isSome:
13 let flagResponse = response.get()
14 discard flagResponse
15

聚合问题结果 Internal Link

参数

NameType必需描述
tenantIdstring
questionIdstring
questionIdsseq[string]
urlIdstring
timeBucketAggregateTimeBucket
startDatestring
forceRecalculatebool

响应

返回: Option[AggregateQuestionResults_200_response]

示例

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

批量聚合问题结果 Internal Link

参数

名称类型必需描述
tenantIdstring
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequest
forceRecalculatebool

响应

返回: Option[BulkAggregateQuestionResults_200_response]

示例

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

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

参数

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

响应

返回: Option[CombineCommentsWithQuestionResults_200_response]

示例

combineCommentsWithQuestionResults 示例
Copy Copy
1
2let (response, httpResponse) = client.combineCommentsWithQuestionResults(
3 tenantId = "my-tenant-123",
4 questionId = "q-9876",
5 questionIds = @["q-9876", "q-9877"],
6 urlId = "news/article-title",
7 startDate = "2025-01-01T00:00:00Z",
8 forceRecalculate = false,
9 minValue = 1.0,
10 maxValue = 5.0,
11 limit = 100.0
12)
13
14if response.isSome:
15 let combined = response.get()
16 discard combined
17

添加 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[GetSSOUsers_200_response]

示例

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 "Fetched SSO users:"
6 echo ssoUsers
7else:
8 echo "No SSO users returned, HTTP status: ", httpResponse.statusCode
9

部分更新 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

参数

NameTypeRequiredDescription
tenantIdstring
yearNumberfloat64
monthNumberfloat64
dayNumberfloat64
skipfloat64

响应

返回: Option[GetTenantDailyUsages_200_response]

示例

getTenantDailyUsages 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenantDailyUsages(
3 tenantId = "my-tenant-123",
4 yearNumber = 2025.0,
5 monthNumber = 6.0,
6 dayNumber = 15.0,
7 skip = 0.0
8)
9
10if response.isSome:
11 let usages = response.get()
12 echo usages
13else:
14 echo "No daily usages returned"
15

创建租户套餐 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

响应

返回: Option[CreateTenantPackage_200_response]

示例

createTenantPackage 示例
Copy Copy
1
2let packageBody = CreateTenantPackageBody(
3 packageName = "premium-comments",
4 description = "Premium moderation package for news site",
5 planId = "plan-pro-2024",
6 seats = 100,
7 enabled = true,
8 features = @["moderation", "analytics", "sentiment"]
9)
10
11let (response, httpResponse) = client.createTenantPackage(tenantId = "my-tenant-123", createTenantPackageBody = packageBody)
12
13if response.isSome:
14 let pkg = response.get()
15 echo "Created package ID: ", pkg.packageId
16 echo "Package name: ", pkg.packageName
17else:
18 echo "Failed to create package, HTTP status: ", httpResponse.status.code
19

删除租户套餐 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

deleteTenantPackage 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantPackage(tenantId = "my-tenant-123", id = "pkg-789")
3if response.isSome:
4 let deleted = response.get()
5 echo "Successfully deleted tenant package"
6

获取租户套餐 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring

响应

返回: Option[GetTenantPackage_200_response]

示例

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

获取租户套餐列表 Internal Link

参数

名称类型必填描述
tenantIdstring
skipfloat64

响应

返回: Option[GetTenantPackages_200_response]

示例

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 packages for tenant:", " my-tenant-123"
6 echo packages
7else:
8 echo "No packages found, status:", httpResponse.status
9

替换租户套餐 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

Response

返回: Option[FlagCommentPublic_200_response]

示例

replaceTenantPackage 示例
Copy Copy
1
2let replaceBody = ReplaceTenantPackageBody(
3 packageName = "Community Pro",
4 seats = 500,
5 enableModeration = true,
6 features = @["moderation", "analytics", "single-sign-on"]
7)
8
9let (response, httpResponse) = client.replaceTenantPackage(
10 tenantId = "my-tenant-123",
11 id = "community-pro",
12 replaceTenantPackageBody = replaceBody
13)
14
15if response.isSome:
16 let flagResp = response.get()
17 echo "Package replaced for tenant: ", "my-tenant-123"
18 discard flagResp
19

更新租户套餐 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateTenantPackageBodyUpdateTenantPackageBody

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateTenantPackage 示例
Copy Copy
1
2let (response, httpResponse) = client.updateTenantPackage(tenantId = "my-tenant-123", id = "pkg-premium", updateTenantPackageBody = UpdateTenantPackageBody())
3if response.isSome:
4 let updated = response.get()
5 echo "Updated package received:", updated
6else:
7 echo "Update failed, HTTP status: ", httpResponse.status
8

创建租户用户 Internal Link

参数

名称类型必填描述
tenantIdstring
createTenantUserBodyCreateTenantUserBody

响应

返回: Option[CreateTenantUser_200_response]

示例

createTenantUser 示例
Copy Copy
1
2let createBody = CreateTenantUserBody(
3 email = "jane.doe@acmepub.com",
4 displayName = "Jane Doe",
5 disabled = false
6)
7let (response, httpResponse) = client.createTenantUser(tenantId = "my-tenant-123", createTenantUserBody = createBody)
8if response.isSome:
9 let createdUser = response.get()
10 echo createdUser
11

删除租户用户 Internal Link

参数

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

响应

返回: Option[FlagCommentPublic_200_response]

示例

deleteTenantUser 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantUser(tenantId = "my-tenant-123", id = "user-456", deleteComments = "", commentDeleteMode = "")
3if response.isSome:
4 let flagResp = response.get()
5 echo flagResp
6

获取租户用户 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetTenantUser_200_response]

示例

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

获取租户用户列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipfloat64

响应

返回: Option[GetTenantUsers_200_response]

示例

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

替换租户用户 Internal Link

参数

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

响应

返回: Option[FlagCommentPublic_200_response]

示例

replaceTenantUser 示例
Copy Copy
1
2let replaceBody = ReplaceTenantUserBody(name: "Jane Doe", email: "jane.doe@example.com", roles: @["moderator", "contributor"], banned: false)
3let (response, httpResponse) = client.replaceTenantUser(tenantId = "my-tenant-123", id = "user-789", replaceTenantUserBody = replaceBody, updateComments = "true")
4if response.isSome:
5 let updated = response.get()
6 echo updated
7else:
8 echo "No response returned"
9

参数

NameTypeRequiredDescription
tenantIdstring
idstring
redirectURLstring

响应

返回: Option[FlagCommentPublic_200_response]

示例

sendLoginLink 示例
Copy Copy
1
2let (response, httpResponse) = client.sendLoginLink(tenantId = "fastcomments-tenant-42", id = "user-9876", redirectURL = "https://news.example.com/articles/2026/fastcomments-login")
3if response.isSome:
4 let loginResp = response.get()
5 echo "Login link sent successfully"
6else:
7 echo "Failed to send login link"
8

更新租户用户 Internal Link

参数

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

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateTenantUser 示例
Copy Copy
1
2var body: UpdateTenantUserBody
3body.email = "jane.doe@example.com"
4body.displayName = "Jane Doe"
5body.roles = @["moderator", "editor"]
6body.isActive = true
7
8let (response, httpResponse) = client.updateTenantUser(
9 tenantId = "my-tenant-123",
10 id = "user-789",
11 updateTenantUserBody = body,
12 updateComments = "Promoted user to moderator and editor roles"
13)
14
15if response.isSome:
16 let flagResp = response.get()
17 echo flagResp
18else:
19 echo "Update failed, status: ", httpResponse.status
20

创建租户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createTenantBodyCreateTenantBody

响应

返回: Option[CreateTenant_200_response]

示例

createTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.createTenant(tenantId = "my-tenant-123", createTenantBody = CreateTenantBody(
3 name: "My Tenant 123",
4 domain: "mytenant.example.com",
5 plan: "pro",
6 isActive: true,
7 allowedOrigins: @["https://www.example.com", "https://admin.example.com"]
8))
9if response.isSome:
10 let tenantInfo = response.get()
11 discard tenantInfo
12

删除租户 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring
surestring

响应

返回:Option[FlagCommentPublic_200_response]

示例

deleteTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.deleteTenant(tenantId = "my-tenant-123", id = "", sure = "")
3
4if response.isSome:
5 let flagResp = response.get()
6 echo "Tenant deletion response received for tenant: ", "my-tenant-123"
7 discard flagResp
8else:
9 echo "No response body returned for tenant deletion"
10

获取租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetTenant_200_response]

示例

getTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenant(tenantId = "my-tenant-123", id = "")
3if response.isSome:
4 let tenant = response.get()
5 echo "Tenant retrieved"
6 discard tenant
7else:
8 echo "No tenant found"
9 echo "HTTP status:", httpResponse.status
10

获取租户列表 Internal Link

参数

名称类型必需描述
tenantIdstring
metastring
skipfloat64

响应

返回:Option[GetTenants_200_response]

示例

getTenants 示例
Copy Copy
1
2let (response, httpResponse) = client.getTenants(tenantId = "my-tenant-123", meta = "include=details", skip = 0.0)
3if response.isSome:
4 let tenants = response.get()
5 echo "Received tenants: ", repr(tenants)
6else:
7 echo "Failed to retrieve tenants"
8

更新租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateTenantBodyUpdateTenantBody

响应

返回: Option[FlagCommentPublic_200_response]

示例

updateTenant 示例
Copy Copy
1
2let (response, httpResponse) = client.updateTenant(
3 tenantId = "my-tenant-123",
4 id = "tenant-456",
5 updateTenantBody = UpdateTenantBody()
6)
7if response.isSome:
8 let flagResponse = response.get()
9 echo flagResponse
10else:
11 echo "No body returned; HTTP status: ", httpResponse.status
12

更改工单状态 Internal Link

参数

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

响应

返回:Option[ChangeTicketState_200_response]

示例

changeTicketState 示例
Copy Copy
1
2let (response, httpResponse) = client.changeTicketState(
3 tenantId = "my-tenant-123",
4 userId = "user-456",
5 id = "ticket-789",
6 changeTicketStateBody = ChangeTicketStateBody(
7 state = "closed",
8 message = "Issue resolved by support",
9 notify = true,
10 tags = @["support", "resolved"]
11 )
12)
13if response.isSome:
14 let result = response.get()
15 echo "Changed ticket:", result.state, " (id: ", result.id, ")"
16

创建工单 Internal Link

参数

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

响应

返回: Option[CreateTicket_200_response]

示例

createTicket 示例
Copy Copy
1
2let createBody = CreateTicketBody(
3 title = "Unable to post comment",
4 description = "HTTP 500 when submitting comment on article 'world/my-latest-report'",
5 contactEmail = "jane.doe@example.com",
6 tags = @["comments", "backend"],
7 urgent = false
8)
9let (response, httpResponse) = client.createTicket(tenantId = "my-tenant-123", userId = "user-9876", createTicketBody = createBody)
10if response.isSome:
11 let ticket = response.get()
12 echo "Created ticket ID: ", $ticket
13

获取工单 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
userIdstring

响应

返回:Option[GetTicket_200_response]

示例

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

获取工单列表 Internal Link

参数

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

响应

返回: Option[GetTickets_200_response]

示例

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

上传图片 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
idstringNo

响应

返回: Option[GetUserBadgeProgressById_200_response]

示例

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

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

参数

名称类型必需描述
tenantIdstring
userIdstring

响应

返回:Option[GetUserBadgeProgressById_200_response]

示例

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

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

参数

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

响应

返回: Option[GetUserBadgeProgressList_200_response]

示例

getUserBadgeProgressList 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserBadgeProgressList(tenantId = "my-tenant-123", userId = "user-9823", limit = 25.0, skip = 0.0)
3if response.isSome:
4 let badgeProgress = response.get()
5 echo "Badge progress received:", badgeProgress
6else:
7 echo "No badge progress. HTTP response:", httpResponse.status
8

创建用户徽章 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

响应

返回: Option[CreateUserBadge_200_response]

示例

createUserBadge 示例
Copy Copy
1
2let (response, httpResponse) = client.createUserBadge(tenantId = "my-tenant-123",
3 createUserBadgeParams = CreateUserBadgeParams(userId = "user-987", badgeId = "top-commenter"))
4if response.isSome:
5 let createdBadge = response.get()
6 echo "Created badge for user: ", createdBadge.userId
7else:
8 echo "Failed to create badge, status: ", $httpResponse.status
9

删除用户徽章 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[UpdateUserBadge_200_response]

示例

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

获取用户徽章 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetUserBadge_200_response]

示例

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

获取用户徽章列表 Internal Link

参数

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

响应

返回:Option[GetUserBadges_200_response]

示例

getUserBadges 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserBadges(
3 tenantId = "my-tenant-123",
4 userId = "user-789",
5 badgeId = "top-commenter",
6 displayedOnComments = true,
7 limit = 50.0,
8 skip = 0.0
9)
10
11if response.isSome:
12 let badges = response.get()
13 echo "Retrieved badges: ", $badges
14

更新用户徽章 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
updateUserBadgeParamsUpdateUserBadgeParams

响应

返回:Option[UpdateUserBadge_200_response]

示例

updateUserBadge 示例
Copy Copy
1
2let updateParams = UpdateUserBadgeParams(
3 name = "Top Contributor",
4 description = "Awarded for consistent high-quality comments",
5 active = true,
6 tags = @["community", "milestone"]
7)
8
9let (response, httpResponse) = client.updateUserBadge(tenantId = "my-tenant-123", id = "badge-456", updateUserBadgeParams = updateParams)
10
11if response.isSome:
12 let updated = response.get()
13 echo "Badge updated successfully"
14else:
15 echo "Failed to update badge, HTTP status: ", $httpResponse.status
16

获取用户通知计数 Internal Link

参数

名称类型必需描述
tenantIdstring
ssostring

响应

返回: Option[GetUserNotificationCount_200_response]

示例

getUserNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserNotificationCount(tenantId = "my-tenant-123", sso = "")
3if response.isSome:
4 let notificationData = response.get()
5 echo "Received notification data: ", $notificationData
6else:
7 echo "No notification data returned. HTTP response: ", $httpResponse.status
8

获取用户通知列表 Internal Link

参数

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

响应

返回: Option[GetUserNotifications_200_response]

示例

getUserNotifications 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserNotifications(
3 tenantId = "my-tenant-123",
4 pageSize = 50,
5 afterId = "notif_9a1b2c3d",
6 includeContext = true,
7 afterCreatedAt = int64(1699999999000),
8 unreadOnly = false,
9 dmOnly = false,
10 noDm = false,
11 includeTranslations = false,
12 sso = ""
13)
14if response.isSome:
15 let notifications = response.get()
16 discard notifications
17else:
18 discard httpResponse
19

重置用户通知计数 Internal Link

参数

名称类型必需描述
tenantIdstring
ssostring

响应

返回: Option[ResetUserNotifications_200_response]

示例

resetUserNotificationCount 示例
Copy Copy
1
2let (response, httpResponse) = client.resetUserNotificationCount(tenantId = "my-tenant-123", sso = "sso-jwt-9a8b7c6d")
3if response.isSome:
4 let resetResult = response.get()
5 echo resetResult
6else:
7 echo "Reset failed, status: ", httpResponse.status
8

重置用户通知 Internal Link

参数

NameType必需描述
tenantIdstring
afterIdstring
afterCreatedAtint64
unreadOnlybool
dmOnlybool
noDmbool
ssostring

响应

返回: Option[ResetUserNotifications_200_response]

示例

resetUserNotifications 示例
Copy Copy
1
2let (response, httpResponse) = client.resetUserNotifications(
3 tenantId = "my-tenant-123",
4 afterId = "",
5 afterCreatedAt = int64(0),
6 unreadOnly = false,
7 dmOnly = false,
8 noDm = false,
9 sso = ""
10)
11
12if response.isSome:
13 let result = response.get()
14

更新用户评论订阅状态 Internal Link

参数

名称类型必需描述
tenantIdstring
notificationIdstring
optedInOrOutstring
commentIdstring
ssostring

响应

返回:Option[UpdateUserNotificationStatus_200_response]

示例

updateUserNotificationCommentSubscriptionStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationCommentSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "notif-456",
5 optedInOrOut = "opted_in",
6 commentId = "cmt-789",
7 sso = "sso-token-abc"
8)
9if response.isSome:
10 let updatedStatus = response.get()
11 discard updatedStatus
12else:
13 discard httpResponse
14

更新用户页面订阅状态 Internal Link

参数

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

响应

返回: Option[UpdateUserNotificationStatus_200_response]

示例

updateUserNotificationPageSubscriptionStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationPageSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-2025-11-22",
5 url = "https://example.com/news/article-2025-11-22",
6 pageTitle = "Breaking News: Market Update",
7 subscribedOrUnsubscribed = "subscribed",
8 sso = "sso-token-abc123"
9)
10
11if response.isSome:
12 let result = response.get()
13 discard result
14

更新用户通知状态 Internal Link

参数

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

响应

返回: Option[UpdateUserNotificationStatus_200_response]

示例

updateUserNotificationStatus 示例
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "notif-456",
5 newStatus = "read",
6 sso = "sso-abc-789"
7)
8if response.isSome:
9 let updateResp = response.get()
10 discard updateResp
11

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

参数

NameTypeRequiredDescription
tenantIdstringYes
urlIdWSstringNo
userIdsstringNo

响应

返回: Option[GetUserPresenceStatuses_200_response]

示例

getUserPresenceStatuses 示例
Copy Copy
1
2let (response, httpResponse) = client.getUserPresenceStatuses(
3 tenantId = "my-tenant-123",
4 urlIdWS = "news/2025/technology/ai-ethics",
5 userIds = "user-789,user-456"
6)
7if response.isSome:
8 let presence = response.get()
9 echo "Presence received: ", presence
10else:
11 echo "No presence information returned, HTTP status: ", httpResponse.status.code
12

搜索用户 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
usernameStartsWithstring
mentionGroupIdsseq[string]
ssostring
searchSectionstring

响应

返回: Option[SearchUsers_200_response]

示例

searchUsers 示例
Copy Copy
1
2let (response, httpResponse) = client.searchUsers(
3 tenantId = "my-tenant-123",
4 urlId = "news/2026/ai-product-launch",
5 usernameStartsWith = "",
6 mentionGroupIds = @[],
7 sso = "",
8 searchSection = ""
9)
10if response.isSome:
11 let users = response.get()
12 echo "Received users:", users.toString()
13

获取用户 Internal Link


参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: Option[GetUser_200_response]

示例

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

创建投票 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
commentIdstring
directionstring
userIdstring
anonUserIdstring

响应

返回: Option[VoteComment_200_response]

示例

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

删除投票 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
editKeystring

响应

返回: Option[DeleteCommentVote_200_response]

示例

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

获取投票列表 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring

响应

返回: Option[GetVotes_200_response]

示例

getVotes 示例
Copy Copy
1
2let (response, httpResponse) = client.getVotes(tenantId = "my-tenant-123", urlId = "news/2026/major-update")
3if response.isSome:
4 let votes = response.get()
5 discard votes
6else:
7 discard httpResponse
8

获取用户的投票 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdstring
anonUserIdstring

响应

返回:Option[GetVotesForUser_200_response]

示例

getVotesForUser 示例
Copy Copy
1
2let (response, httpResponse) = client.getVotesForUser(
3 tenantId = "my-tenant-123",
4 urlId = "news/economy-update-2026",
5 userId = "user-789",
6 anonUserId = ""
7)
8
9if response.isSome:
10 let votes = response.get()
11 discard votes
12

需要帮助?

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

贡献

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