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

For the API client, there are two API modules, api_default and api_public. The api_default contains methods that require your API key, and api_public contains api calls 而 api_public 則包含 API 呼叫 可直接從瀏覽器/行動裝置等進行,且無需驗證。

快速入門 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"

常見問題

  1. 401 認證錯誤:在發出 DefaultAPI 請求之前,請確認已在 HttpClient 上設定 x-api-key 標頭:client.headers["x-api-key"] = "your-api-key"
  2. 錯誤的 API 類別:伺服器端的已驗證請求請使用 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

aggregate 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

getAuditLogs Internal Link

參數

名稱類型必需說明
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

blockFromCommentPublic 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

unBlockCommentPublic Internal Link

參數

NameTypeRequiredDescription
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

checkedCommentsForBlocked Internal Link

參數

名稱類型必填說明
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

blockUserFromComment Internal Link

參數

NameTypeRequiredDescription
tenantIdstringYes
idstringNo
blockFromCommentParamsBlockFromCommentParamsNo
userIdstringNo
anonUserIdstringNo

回應

回傳: Option[BlockFromCommentPublic_200_response]

範例

從留言封鎖使用者 範例
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

createCommentPublic 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

deleteComment 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

deleteCommentPublic Internal Link

參數

NameTypeRequiredDescription
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

deleteCommentVote 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

flagComment Internal Link

參數

NameTypeRequiredDescription
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

getComment 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

getComments 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

getCommentsPublic Internal Link

參數

名稱類型必填說明
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

getCommentText 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

getCommentVoteUserNames 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

lockComment Internal Link

參數

名稱類型是否必填說明
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

pinComment 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

saveComment Internal Link

參數

NameTypeRequiredDescription
tenantIdstringYes
createCommentParamsCreateCommentParamsNo
isLiveboolNo
doSpamCheckboolNo
sendEmailsboolNo
populateNotificationsboolNo

回應

回傳: 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

saveCommentsBulk Internal Link

參數

名稱類型必填說明
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

setCommentText 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

unBlockUserFromComment 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

unFlagComment Internal Link

參數

名稱類型必填說明
tenantIdstring
idstring
userIdstring
anonUserIdstring

回應

回傳: 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

unLockComment Internal Link

參數

名稱類型必填說明
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

unPinComment Internal Link

參數

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

回應

回傳: Option[PinComment_200_response]

範例

取消固定評論 範例
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

updateComment 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

voteComment Internal Link

參數

NameTypeRequiredDescription
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

addDomainConfig Internal Link

參數

NameTypeRequiredDescription
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

deleteDomainConfig 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

getDomainConfig Internal Link

參數

NameTypeRequiredDescription
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

getDomainConfigs Internal Link

參數

名稱類型必填說明
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

patchDomainConfig 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

putDomainConfig 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

createEmailTemplate 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

deleteEmailTemplate Internal Link

參數

名稱類型必填說明
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

deleteEmailTemplateRenderError 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

getEmailTemplate Internal Link

參數

NameType必填說明
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

getEmailTemplateDefinitions Internal Link

參數

NameTypeRequiredDescription
tenantIdstringYes

回應

回傳: 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

getEmailTemplateRenderErrors 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

getEmailTemplates 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

renderEmailTemplate 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

updateEmailTemplate Internal Link

參數

名稱類型必要描述
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

getEventLog Internal Link

參數

名稱類型必填描述
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

getGlobalEventLog Internal Link

參數

NameTypeRequiredDescription
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

createFeedPost Internal Link

參數

名稱類型是否必填說明
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstring
isLivebool
doSpamCheckbool
skipDupCheckbool

回應

回傳: 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

createFeedPostPublic Internal Link

參數

NameType必填描述
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

deleteFeedPostPublic Internal Link

參數

名稱類型必填描述
tenantIdstringYes
postIdstringNo
broadcastIdstringNo
ssostringNo

回應

回傳: 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

getFeedPosts 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

getFeedPostsPublic Internal Link

參數

名稱類型必填說明
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

getFeedPostsStats 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

getUserReactsPublic Internal Link

參數

NameType必填描述
tenantIdstring
postIdsseq[string]
ssostring

Response

回傳: 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

reactFeedPostPublic Internal Link

參數

名稱類型必填說明
tenantIdstringYes
postIdstringNo
reactBodyParamsReactBodyParamsNo
isUndoboolNo
broadcastIdstringNo
ssostringNo

回應

回傳: 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

updateFeedPost 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

updateFeedPostPublic Internal Link

參數

NameTypeRequiredDescription
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

flagCommentPublic 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

addHashTag 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

addHashTagsBulk Internal Link

參數

NameTypeRequiredDescription
tenantIdstringYes
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

回應

回傳: 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

deleteHashTag 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

getHashTags Internal Link

參數

名稱類型必填說明
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

patchHashTag 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

createModerator Internal Link

參數

NameTypeRequiredDescription
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

deleteModerator 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

getModerator Internal Link

參數

名稱類型必填描述
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

getModerators 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

updateModerator 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

deleteNotificationCount 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

getCachedNotificationCount 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

getNotificationCount 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

getNotifications 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

updateNotification Internal Link

參數

NameTypeRequiredDescription
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

addPage 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

deletePage 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

getPageByURLId 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

getPages 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

patchPage Internal Link

參數

NameTypeRequiredDescription
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

deletePendingWebhookEvent 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

getPendingWebhookEventCount Internal Link

參數

名稱型別必填說明
tenantIdstringYes
commentIdstringYes
externalIdstringNo
eventTypestringNo
domainstringNo
attemptCountGTfloat64No

回應

回傳: 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

getPendingWebhookEvents 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

createQuestionConfig Internal Link

參數

NameTypeRequiredDescription
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

deleteQuestionConfig Internal Link

參數

名稱類型必填描述
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

getQuestionConfig Internal Link

參數

NameTypeRequiredDescription
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

getQuestionConfigs Internal Link

參數

名稱型別必填說明
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

updateQuestionConfig Internal Link

參數

名稱Type必填說明
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

createQuestionResult 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

deleteQuestionResult Internal Link

參數

NameTypeRequiredDescription
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

getQuestionResult 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

getQuestionResults Internal Link

參數

NameTypeRequiredDescription
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

updateQuestionResult Internal Link


參數

名稱類型必要說明
tenantIdstring
idstring
updateQuestionResultBodyUpdateQuestionResultBody

回應

回傳: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

aggregateQuestionResults Internal Link

參數

名稱類型必填說明
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

bulkAggregateQuestionResults 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

combineCommentsWithQuestionResults 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

addSSOUser 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

deleteSSOUser Internal Link

參數

名稱類型必填描述
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

getSSOUserByEmail 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

getSSOUserById 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

getSSOUsers 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

patchSSOUser 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

putSSOUser 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

createSubscription Internal Link

參數

名稱類型必填說明
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

deleteSubscription Internal Link

參數

NameTypeRequiredDescription
tenantIdstringYes
idstringNo
userIdstringNo

回應

回傳: 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

getSubscriptions Internal Link


參數

名稱類型必填描述
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

updateSubscription 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

getTenantDailyUsages Internal Link

參數

名稱類型必填描述
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

createTenantPackage 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

deleteTenantPackage 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

getTenantPackage 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

getTenantPackages Internal Link

參數

NameTypeRequiredDescription
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

replaceTenantPackage Internal Link

參數

名稱型別必填說明
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

回應

回傳: 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

updateTenantPackage 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

createTenantUser 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

deleteTenantUser Internal Link

參數

NameTypeRequiredDescription
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

getTenantUser 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

getTenantUsers 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

replaceTenantUser Internal Link

參數

NameTypeRequiredDescription
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

參數

名稱類型必填說明
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

updateTenantUser 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

createTenant Internal Link

參數

名稱類型必填說明
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

deleteTenant Internal Link

參數

NameTypeRequiredDescription
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

getTenant 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

getTenants Internal Link

參數

NameTypeRequiredDescription
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

updateTenant 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

changeTicketState 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

createTicket 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

getTicket 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

getTickets 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

uploadImage Internal Link

參數

NameType必填說明
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

getUserBadgeProgressById Internal Link

參數

NameTypeRequiredDescription
tenantIdstring
idstring

回應

回傳: 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

getUserBadgeProgressByUserId 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

getUserBadgeProgressList Internal Link

參數

NameTypeRequiredDescription
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

createUserBadge 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

deleteUserBadge 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

getUserBadge 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

getUserBadges 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

updateUserBadge Internal Link


參數

名稱型別必填說明
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

getUserNotificationCount 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

getUserNotifications Internal Link

參數

NameType必填描述
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

resetUserNotificationCount 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

resetUserNotifications Internal Link

參數

名稱類型必填說明
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

updateUserNotificationCommentSubscriptionStatus Internal Link

參數

NameTypeRequiredDescription
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

updateUserNotificationPageSubscriptionStatus Internal Link

參數

名稱類型必填說明
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

updateUserNotificationStatus 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

getUserPresenceStatuses Internal Link

參數

名稱型別必填說明
tenantIdstring
urlIdWSstring
userIdsstring

回應

回傳: 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

searchUsers Internal Link

參數

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
usernameStartsWithstringNo
mentionGroupIdsseq[string]No
ssostringNo
searchSectionstringNo

回應

回傳: 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

getUser 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

createVote Internal Link

參數

名稱類型必填描述
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

deleteVote 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

getVotes 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

getVotesForUser Internal Link


參數

名稱類型必填說明
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 儲存庫 以取得貢獻指南。