FastComments.com

FastComments Nim SDK


ื–ื” ื”-SDK ื”ืจืฉืžื™ ืฉืœ Nim ืขื‘ื•ืจ FastComments.

ื”-SDK ื”ืจืฉืžื™ ืฉืœ Nim ืขื‘ื•ืจ ืžืžืฉืง ื”-API ืฉืœ FastComments

ืžืื’ืจ

ืฆืคื” ื‘-GitHub


ื“ืจื™ืฉื•ืช Internal Link


  • Nim >= 1.6.0
  • nimcrypto >= 0.5.4

ื”ืชืงื ื” Internal Link

ืฉื™ืžื•ืฉ ื‘-Nimble

nimble install fastcomments

ื‘ื ื™ื™ื” ืžื”ืžืงื•ืจ

nimble build

ืชื›ื•ืœืช ื”ืกืคืจื™ื™ื”

ืกืคืจื™ื™ื” ื–ื• ืžื›ื™ืœื” ืืช ืœืงื•ื— ื”-API ืฉื ื•ืฆืจ ื•ืืช ื›ืœื™ ื”-SSO ื›ื“ื™ ืœื”ืงืœ ืขืœ ื”ืขื‘ื•ื“ื” ืขื ื”-API.

APIs ืฆื™ื‘ื•ืจื™ื™ื ืžื•ืœ ืžืื•ื‘ื˜ื—ื™ื

ืขื‘ื•ืจ ืœืงื•ื— ื”-API ืงื™ื™ืžื™ื ืฉืœื•ืฉื” ืžื•ื“ื•ืœื™ื: api_default, api_public ื•-api_moderation. ื”ืžื•ื“ื•ืœ api_default ืžื›ื™ืœ ืฉื™ื˜ื•ืช ืฉื“ื•ืจืฉื•ืช ืืช ืžืคืชื— ื”-API ืฉืœืš, ื•-api_public ืžื›ื™ืœ ืงืจื™ืื•ืช API ืฉื ื™ืชืŸ ืœื‘ืฆืข ื™ืฉื™ืจื•ืช ืžื“ืคื“ืคืŸ/ืžื›ืฉื™ืจ ื ื™ื™ื“/ื•ื›ื•' ืœืœื ืื™ืžื•ืช. ื”ืžื•ื“ื•ืœ api_moderation ืžื›ื™ืœ ืฉื™ื˜ื•ืช ืœืœื•ื— ื”ื‘ืงืจื” ืฉืœ ื”ืžื•ื“ืจื˜ื•ืจ.

ื”ืฉื™ื˜ื•ืช ื‘-api_moderation ืžื›ืกื•ืช ืจืฉื™ืžื”, ืกืคื™ืจื”, ื—ื™ืคื•ืฉ ื•ื™ื™ืฆื•ื ืฉืœ ืชื’ื•ื‘ื•ืช ื•ืฉืœ ื”ื™ื•ืžื ื™ื ืฉืœื”ืŸ; ืคืขื•ืœื•ืช moderation ื›ืžื• ื”ืกืจื”/ืฉื—ื–ื•ืจ ืฉืœ ืชื’ื•ื‘ื•ืช, ื“ื™ื•ื•ื—/ืกื™ืžื•ืŸ (flagging), ืงื‘ื™ืขืช ืกื˜ื˜ื•ืก ืœืกืงื™ืจื”/ืกืคืื/ืื™ืฉื•ืจ, ื”ืชืืžืช ื”ืฆื‘ืขื•ืช, ื•ืคืชื™ื—ื” ืžื—ื“ืฉ/ืกื’ื™ืจื” ืฉืœ ืฉืจืฉื•ืจื™ื; ื—ืกื™ืžื•ืช (ื—ืกื™ืžืช ืžืฉืชืžืฉ ืžืชื’ื•ื‘ื”, ื‘ื™ื˜ื•ืœ ื—ืกื™ืžื”, ืชืงืฆื™ืจื™ ื˜ืจื ื—ืกื™ืžื”, ืกื˜ื˜ื•ืก ื•ื”ืขื“ืคื•ืช ื—ืกื™ืžื”, ื•ืกืคื™ืจืช ืžืฉืชืžืฉื™ื ื—ืกื•ืžื™ื); ื•ืชื’ื™ื ื•ืืžื•ืŸ (ื”ืขื ืงื”/ื”ืกืจื” ืฉืœ ืชื’, ืจืฉื™ืžืช ืชื’ื™ื ื™ื“ื ื™ื™ื, ืงื‘ืœืช/ื”ื’ื“ืจืช ื’ื•ืจื ื”ืืžื•ืŸ ืฉืœ ืžืฉืชืžืฉ, ื•ืฉืœื™ืคืช ื”ืคืจื•ืคื™ืœ ื”ืคื ื™ืžื™ ืฉืœ ืžืฉืชืžืฉ). ื›ืœ ืฉื™ื˜ื” ื‘-api_moderation ืžืงื‘ืœืช ืคืจืžื˜ืจ sso ื›ืš ืฉื”ืงืจื™ืื” ืžืื•ืžืชืช ื›ืžื•ื“ืจื˜ื•ืจ SSO.

ื”ืชื—ืœื” ืžื”ื™ืจื” 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"

ืฉื™ืžื•ืฉ ื‘-APIs ืœืžื•ื“ืจืฆื™ื” (ModerationAPI)

ื ืงื•ื“ื•ืช ืงืฆื” ืฉืœ ืžื•ื“ืจืฆื™ื” ืžืืคืฉืจื•ืช ืืช ืœื•ื— ื”ื‘ืงืจื” ืฉืœ ื”ืžื•ื“ืจื˜ื•ืจ ื•ืžืื•ืžืชื•ืช ื‘ืืžืฆืขื•ืช ืืกื™ืžื•ืŸ SSO ืขื‘ื•ืจ ื”ืžื•ื“ืจื˜ื•ืจ ื”ืคืขื™ืœ:

import httpclient
import fastcomments
import fastcomments/apis/api_moderation

let client = newHttpClient()

# ื”ืฆื’ ืชื’ื•ื‘ื•ืช ื‘ืœื•ื— ื”ื‘ืงืจื” ืฉืœ ื”ืžื•ื“ืจื˜ื•ืจ
let (response, httpResponse) = getApiComments(
  httpClient = client,
  page = 0,
  count = 30,
  textSearch = "",
  byIPFromComment = "",
  filters = "",
  searchFilters = "",
  sorts = "",
  demo = false,
  sso = "your-sso-token"
)

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

ื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช

  1. ืฉื’ื™ืืช ืื™ืžื•ืช 401: ื•ื•ื“ื ื›ื™ ื”ื’ื“ืจืช ืืช ื›ื•ืชืจืช x-api-key ืขืœ ื”-HttpClient ืฉืœืš ืœืคื ื™ ื‘ื™ืฆื•ืข ื‘ืงืฉื•ืช ืœ-DefaultAPI: client.headers["x-api-key"] = "your-api-key"
  2. ืžื—ืœืงืช API ืฉื’ื•ื™ื”: ื”ืฉืชืžืฉ ื‘-api_default ืขื‘ื•ืจ ื‘ืงืฉื•ืช ืžืื•ืžืชื•ืช ื‘ืฆื“ ื”ืฉืจืช, ื‘-api_public ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื‘ืฆื“ ื”ืœืงื•ื—/ืฆื™ื‘ื•ืจื™ื•ืช, ื•ื‘-api_moderation ืขื‘ื•ืจ ื‘ืงืฉื•ืช ืœืœื•ื— ื”ื‘ืงืจื” ืฉืœ ื”ืžื•ื“ืจื˜ื•ืจ.

ื‘ื™ืฆื•ืข ืงืจื™ืื•ืช API Internal Link

ื›ืœ ืฉื™ื˜ื•ืช ื”-API ื‘-SDK ื–ื” ืžื—ื–ื™ืจื•ืช ื–ื•ื’ื•ืช (tuples) ืฉืœ (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

ืžื–ื”ื™ ืฉื™ื“ื•ืจ

ืชืจืื• ืฉืขืœื™ื›ื ืœื”ืขื‘ื™ืจ broadcastId ื‘ื—ืœืง ืžืงืจื™ืื•ืช ื”-API. ื›ืฉืชืงื‘ืœื• ืื™ืจื•ืขื™ื, ืชืงื‘ืœื• ื—ื–ืจื” ืืช ื”-ID ื”ื–ื”, ื›ืš ืฉืชื“ืขื• ืœื”ืชืขืœื ืžื”ืื™ืจื•ืข ืื ืืชื ืžืชื›ื ื ื™ื ืœื™ื™ืฉื ืฉื™ื ื•ื™ื™ื ื‘ืื•ืคืŸ ืื•ืคื˜ื™ืžื™ ื‘ืฆื“ ื”ืœืงื•ื— (ืฉืืชื ื›ื ืจืื” ืชืจืฆื• ืœืขืฉื•ืช ืฉื›ืŸ ื–ื” ืžืกืคืง ืืช ื—ื•ื•ื™ื™ืช ื”ืžืฉืชืžืฉ ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ). ื”ืขื‘ื™ืจื• ื›ืืŸ UUID. ื”-ID ืฆืจื™ืš ืœื”ื™ื•ืช ื™ื™ื—ื•ื“ื™ ืžืกืคื™ืง ื›ื“ื™ ืฉืœื ื™ื•ืคื™ืข ืคืขืžื™ื™ื ื‘ืžื”ืœืš ื”ืคืขืœื” ืื—ืช ืฉืœ ื”ื“ืคื“ืคืŸ.

SSO (Single Sign-On)

ืœื“ื•ื’ืžืื•ืช ืฉืœ SSO, ืจืื• ืœืžื˜ื”.

ืฉื™ืžื•ืฉ ื‘-SSO Internal Link


SSO ืคืฉื•ื˜

import fastcomments/sso

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

echo "SSO Token: ", token

SSO ืžืื•ื‘ื˜ื—

import fastcomments/sso

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

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

echo "Secure SSO Token: ", token

ืื’ืจื’ืฆื™ื” Internal Link

ืžืื’ื“ ืžืกืžื›ื™ื ืขืœ ื™ื“ื™ ืงื™ื‘ื•ืฆื (ืื ืžืกื•ืคืง groupBy) ื•ื”ื—ืœืช ืžืกืคืจ ืคืขื•ืœื•ืช. ื ืชืžื›ื•ืช ืคืขื•ืœื•ืช ืฉื•ื ื•ืช (ืœืžืฉืœ sum, countDistinct, avg ื•ื›ื•').

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
aggregationRequestAggregationRequestืœื
parentTenantIdstringืœื
includeStatsboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[AggregateResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื™ื•ืžื ื™ ื‘ื™ืงื•ืจืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
limitfloat64ืœื
skipfloat64ืœื
orderSORTDIRืœื
afterfloat64ืœื
beforefloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetAuditLogsResponse]

ื“ื•ื’ืžื”

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

ื”ืชื ืชืงื•ืช (ืฆื™ื‘ื•ืจื™) Internal Link

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื—ืกื™ืžื” ืžืชื•ืš ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsNo
ssostringNo

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[BlockSuccess]

ื“ื•ื’ืžื”

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

ื‘ื™ื˜ื•ืœ ื—ืกื™ืžื” ืžืชื•ืš ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
publicBlockFromCommentParamsPublicBlockFromCommentParamsืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UnblockSuccess]

ื“ื•ื’ืžื”

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

ื‘ื“ื™ืงืช ืชื’ื•ื‘ื•ืช ื—ืกื•ืžื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdsstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CheckBlockedCommentsResponse]

ื“ื•ื’ืžื”

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

ื—ืกื™ืžืช ืžืฉืชืžืฉ ืžืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื
blockFromCommentParamsBlockFromCommentParamsืœื
userIdstringืœื
anonUserIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[BlockSuccess]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืชื’ื•ื‘ื” ืฆื™ื‘ื•ืจื™ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
broadcastIdstringืœื
commentDataCommentDataืœื
sessionIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[SaveCommentsResponseWithPresence]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
contextUserIdstringืœื
isLiveboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[DeleteCommentResult]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืชื’ื•ื‘ื” (ืฆื™ื‘ื•ืจื™) Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
broadcastIdstringืœื
editKeystringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PublicAPIDeleteCommentResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ื”ืฆื‘ืขืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
voteIdstringืœื
urlIdstringื›ืŸ
broadcastIdstringืœื
editKeystringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[VoteDeleteResponse]

ื“ื•ื’ืžื”

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

ื“ื™ื•ื•ื— ืขืœ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
userIdstringืœื
anonUserIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[FlagCommentResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIGetCommentResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื•ื‘ื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
pageintืœื
limitintืœื
skipintืœื
asTreeboolืœื
skipChildrenintืœื
limitChildrenintืœื
maxTreeDepthintืœื
urlIdstringื›ืŸ
userIdstringืœื
anonUserIdstringืœื
contextUserIdstringืœื
hashTagstringืœื
parentIdstringืœื
directionSortDirectionsืœื
fromDateint64ืœื
toDateint64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIGetCommentsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื•ื‘ื•ืช (ืฆื™ื‘ื•ืจื™) Internal Link

req tenantId urlId

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
pageintืœื
directionSortDirectionsืœื
ssostringืœื
skipintืœื
skipChildrenintืœื
limitintืœื
limitChildrenintืœื
countChildrenboolืœื
fetchPageForCommentIdstringืœื
includeConfigboolืœื
countAllboolืœื
includei10nboolืœื
localestringืœื
modulesstringืœื
isCrawlerboolืœื
includeNotificationCountboolืœื
asTreeboolืœื
maxTreeDepthintืœื
useFullTranslationIdsboolืœื
parentIdstringืœื
searchTextstringืœื
hashTagsseq[string]ืœื
userIdstringืœื
customConfigStrstringืœื
afterCommentIdstringืœื
beforeCommentIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetCommentsResponseWithPresencePublicComment]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื˜ืงืกื˜ ืฉืœ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
editKeystringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PublicAPIGetCommentTextResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืฉืžื•ืช ืžืฉืชืžืฉ ืฉื”ืฆื‘ื™ืขื• ืขืœ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
dirintืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetCommentVoteUserNamesSuccessResponse]

ื“ื•ื’ืžื”

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

ื ืขื™ืœืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ืฆืžื“ืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ChangeCommentPinStatusResponse]

ื“ื•ื’ืžื”

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

ืฉืžื™ืจืช ืชื’ื•ื‘ื” Internal Link


ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
createCommentParamsCreateCommentParamsืœื
isLiveboolืœื
doSpamCheckboolืœื
sendEmailsboolืœื
populateNotificationsboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APISaveCommentResponse]

ื“ื•ื’ืžื”

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

ืฉืžื™ืจืช ืชื’ื•ื‘ื•ืช ื‘ืืฆื•ื•ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
createCommentParamsseq[CreateCommentParams]ืœื
isLiveboolืœื
doSpamCheckboolืœื
sendEmailsboolืœื
populateNotificationsbool): (Option[seq[SaveCommentsBulkResponse]]ืœื
idstringืœื
fromNamestringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ื’ื“ืจืช ื˜ืงืกื˜ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
broadcastIdstringืœื
commentTextUpdateRequestCommentTextUpdateRequestืœื
editKeystringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PublicAPISetCommentTextResponse]

ื“ื•ื’ืžื”

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

ื‘ื™ื˜ื•ืœ ื—ืกื™ืžืช ืžืฉืชืžืฉ ืžืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
unBlockFromCommentParamsUnBlockFromCommentParamsืœื
userIdstringืœื
anonUserIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UnblockSuccess]

ื“ื•ื’ืžื”

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

ื‘ื™ื˜ื•ืœ ื“ื™ื•ื•ื— ืขืœ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
userIdstringืœื
anonUserIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[FlagCommentResponse]

ื“ื•ื’ืžื”

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

ืฉื—ืจื•ืจ ื ืขื™ืœืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ืกืจืช ื”ืฆืžื“ืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ChangeCommentPinStatusResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updatableCommentParamsUpdatableCommentParamsืœื
contextUserIdstringืœื
doSpamCheckboolืœื
isLiveboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ืฆื‘ืขืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
urlIdstringื›ืŸ
broadcastIdstringืœื
voteBodyParamsVoteBodyParamsืœื
sessionIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[VoteResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื•ื‘ื•ืช ืขื‘ื•ืจ ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
userIdstringืœื
directionSortDirectionsืœื
repliesToUserIdstringืœื
pagefloat64ืœื
includei10nboolืœื
localestringืœื
isCrawlerboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetCommentsForUserResponse]

ื“ื•ื’ืžื”

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

ื”ื•ืกืคืช ื”ื’ื“ืจืช ื“ื•ืžื™ื™ืŸ Internal Link


ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
addDomainConfigParamsAddDomainConfigParamsืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[AddDomainConfigResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ื”ื’ื“ืจืช ื“ื•ืžื™ื™ืŸ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
domainstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[DeleteDomainConfigResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ื’ื“ืจืช ื“ื•ืžื™ื™ืŸ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
domainstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetDomainConfigResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ื’ื“ืจื•ืช ื“ื•ืžื™ื™ืŸ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetDomainConfigsResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื—ืœืงื™ ืฉืœ ื”ื’ื“ืจืช ื“ื•ืžื™ื™ืŸ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
domainToUpdatestringืœื
patchDomainConfigParamsPatchDomainConfigParamsืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PatchDomainConfigResponse]

ื“ื•ื’ืžื”

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

ื”ื—ืœืคืช ื”ื’ื“ืจืช ื“ื•ืžื™ื™ืŸ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
domainToUpdatestringืœื
updateDomainConfigParamsUpdateDomainConfigParamsืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PutDomainConfigResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืชื‘ื ื™ืช ืื™ืžื™ื™ืœ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
createEmailTemplateBodyCreateEmailTemplateBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateEmailTemplateResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืชื‘ื ื™ืช ืื™ืžื™ื™ืœ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืฉื’ื™ืืช ืขื™ื‘ื•ื“ ืชื‘ื ื™ืช ืื™ืžื™ื™ืœ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื
errorIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื‘ื ื™ืช ืื™ืžื™ื™ืœ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetEmailTemplateResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getEmailTemplate
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplate(tenantId = "my-tenant-123", id = "welcome-email-01")
3if response.isSome:
4 let template = response.get()
5 discard template
6

ืงื‘ืœืช ื”ื’ื“ืจื•ืช ืชื‘ื ื™ื•ืช ืื™ืžื™ื™ืœ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetEmailTemplateDefinitionsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืฉื’ื™ืื•ืช ืขื™ื‘ื•ื“ ืฉืœ ืชื‘ื ื™ื•ืช ืื™ืžื™ื™ืœ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetEmailTemplateRenderErrorsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื‘ื ื™ื•ืช ืื™ืžื™ื™ืœ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetEmailTemplatesResponse]

ื“ื•ื’ืžื”

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

ืขื™ื‘ื•ื“ ืชื‘ื ื™ืช ืื™ืžื™ื™ืœ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
renderEmailTemplateBodyRenderEmailTemplateBodyืœื
localestringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[RenderEmailTemplateResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืชื‘ื ื™ืช ืื™ืžื™ื™ืœ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updateEmailTemplateBodyUpdateEmailTemplateBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื™ื•ืžืŸ ืื™ืจื•ืขื™ื Internal Link

req tenantId urlId userIdWS

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
userIdWSstringืœื
startTimeint64ืœื
endTimeint64ืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetEventLogResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื™ื•ืžืŸ ืื™ืจื•ืขื™ื ื’ืœื•ื‘ืœื™ Internal Link


req tenantId urlId userIdWS

Parameters

NameTypeRequiredDescription
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
userIdWSstringืœื
startTimeint64ืœื
endTimeint64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetEventLogResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืคื•ืกื˜ ื‘ืคื™ื“ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
createFeedPostParamsCreateFeedPostParamsืœื
broadcastIdstringืœื
isLiveboolืœื
doSpamCheckboolืœื
skipDupCheckboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateFeedPostsResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืคื•ืกื˜ ื‘ืคื™ื“ (ืฆื™ื‘ื•ืจื™) Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
createFeedPostParamsCreateFeedPostParamsืœื
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateFeedPostResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืคื•ืกื˜ ื‘ืคื™ื“ (ืฆื™ื‘ื•ืจื™) Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringYes
postIdstringNo
broadcastIdstringNo
ssostringNo

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[DeleteFeedPostPublicResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืคื•ืกื˜ื™ื ื‘ืคื™ื“ Internal Link

req tenantId afterId

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
afterIdstringืœื
limitintืœื
tagsseq[string]ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetFeedPostsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืคื•ืกื˜ื™ื ื‘ืคื™ื“ (ืฆื™ื‘ื•ืจื™) Internal Link


req tenantId afterId

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
afterIdstringืœื
limitintืœื
tagsseq[string]ืœื
ssostringืœื
isCrawlerboolืœื
includeUserInfoboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PublicFeedPostsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืคื•ืกื˜ื™ื ื‘ืคื™ื“ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
postIdsseq[string]ืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[FeedPostsStatsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืจื™ืืงื˜ื™ื ืฉืœ ืžืฉืชืžืฉ (ืฆื™ื‘ื•ืจื™) Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
postIdsseq[string]ืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UserReactsResponse]

ื“ื•ื’ืžื”

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

ืชื’ื•ื‘ื” ืขืœ ืคื•ืกื˜ ื‘ืคื™ื“ (ืฆื™ื‘ื•ืจื™) Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
postIdstringืœื
reactBodyParamsReactBodyParamsืœื
isUndoboolืœื
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ReactFeedPostResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืคื•ืกื˜ ื‘ืคื™ื“ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
feedPostFeedPostืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืคื•ืกื˜ ื‘ืคื™ื“ (ืฆื™ื‘ื•ืจื™) Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
postIdstringืœื
updateFeedPostParamsUpdateFeedPostParamsืœื
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateFeedPostResponse]

ื“ื•ื’ืžื”

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

ื“ื™ื•ื•ื— ืขืœ ืชื’ื•ื‘ื” (ืฆื™ื‘ื•ืจื™) Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
isFlaggedboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช GIF ื’ื“ื•ืœ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
largeInternalURLSanitizedstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GifGetLargeResponse]

ื“ื•ื’ืžื”

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

ื—ื™ืคื•ืฉ GIFื™ื Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
searchstringืœื
localestringืœื
ratingstringืœื
pagefloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetGifsSearchResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช GIFื™ื ืคื•ืคื•ืœืจื™ื™ื Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
localestringืœื
ratingstringืœื
pagefloat64ืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetGifsTrendingResponse]

ื“ื•ื’ืžื”

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

ื”ื•ืกืคืช ื”ืืฉื˜ืื’ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
createHashTagBodyCreateHashTagBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateHashTagResponse]

ื“ื•ื’ืžื”

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

ื”ื•ืกืคืช ื”ืืฉื˜ืื’ื™ื ื‘ืืฆื•ื•ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
bulkCreateHashTagsBodyBulkCreateHashTagsBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[BulkCreateHashTagsResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ื”ืืฉื˜ืื’ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tagstringืœื
tenantIdstringื›ืŸ
deleteHashTagRequestBodyDeleteHashTagRequestBodyืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืืฉื˜ืื’ื™ื Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
pagefloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetHashTagsResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื—ืœืงื™ ืฉืœ ื”ืืฉื˜ืื’ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tagstringืœื
tenantIdstringื›ืŸ
updateHashTagBodyUpdateHashTagBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UpdateHashTagResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-patchHashTag
Copy Copy
1
2let (response, httpResponse) = client.patchHashTag(tag = "breaking-news", tenantId = "my-tenant-123", updateHashTagBody = UpdateHashTagBody())
3if response.isSome:
4 let updatedHashTag = response.get()
5 echo updatedHashTag
6

ืžื—ื™ืงืช ื”ืฆื‘ืขืช ืžื•ื“ืจืฆื™ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentIdstringื›ืŸ
voteIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[VoteDeleteResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื•ื‘ื•ืช ื“ืจืš ื”-API Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
pagefloat64ืœื
countfloat64ืœื
textSearchstringืœื
byIPFromCommentstringืœื
filtersstringืœื
searchFiltersstringืœื
sortsstringืœื
demoboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationAPIGetCommentsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกื˜ื˜ื•ืก ื™ื™ืฆื•ื API Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
batchJobIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationExportStatusResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžื–ื”ื™ API Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
textSearchstringืœื
byIPFromCommentstringืœื
filtersstringืœื
searchFiltersstringืœื
afterIdstringืœื
demoboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationAPIGetCommentIdsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉื™ื ืฉื ื—ืกืžื• ืžืชื’ื•ื‘ื” Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetBannedUsersFromCommentResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกื˜ื˜ื•ืก ื—ืกื™ืžืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetCommentBanStatusResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื™ื•ืช-ื‘ื ื•ืช ืฉืœ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationAPIChildCommentsResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getCommentChildren
Copy Copy
1
2let (response, httpResponse) = client.getCommentChildren(commentId = "comment-98765", sso = "")
3if response.isSome:
4 let childResp = response.get()
5 discard childResp
6

ืงื‘ืœืช ืกืคื™ืจื” Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
textSearchstringืœื
byIPFromCommentstringืœื
filterstringืœื
searchFiltersstringืœื
demoboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationAPICountCommentsResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกืคื™ืจื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetBannedUsersCountResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืœื•ื’ื™ื Internal Link

ืคืจืžื˜ืจื™ื

ืฉืTypeื—ื•ื‘ื”ืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationAPIGetLogsResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getLogs
Copy Copy
1
2let (response, httpResponse) = client.getLogs(commentId = "cmt-8471f2d3", sso = "")
3if response.isSome:
4 let logs = response.get()
5 echo "Fetched logs:", logs
6

ืงื‘ืœืช ืชื’ื™ ื™ื“ื ื™ื™ื Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantManualBadgesResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getManualBadges
Copy Copy
1
2let (response, httpResponse) = client.getManualBadges(sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9")
3if response.isSome:
4 let badges = response.get()
5 echo "Manual badges received:"
6 echo badges
7else:
8 echo "No manual badges returned."
9 echo httpResponse
10

ืงื‘ืœืช ืชื’ื™ ื™ื“ื ื™ื™ื ืขื‘ื•ืจ ืžืฉืชืžืฉ Internal Link


ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
badgesUserIdstringืœื
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetUserManualBadgesResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื™ื™ืช ืžื•ื“ืจืฆื™ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
includeEmailboolืœื
includeIPboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationAPICommentResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื˜ืงืกื˜ ืชื’ื™ื™ืช ืžื•ื“ืจืฆื™ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentIdstringื›ืŸ
ssostringืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetCommentTextResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกื™ื›ื•ื ื˜ืจื ื—ืกื™ืžื” Internal Link


ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentIdstringื›ืŸ
includeByUserIdAndEmailboolืœื
includeByIPboolืœื
includeByEmailDomainboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PreBanSummary]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกื™ื›ื•ื ื—ื™ืคื•ืฉ ืชื’ื•ื‘ื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
valuestringืœื
filtersstringืœื
searchFiltersstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationCommentSearchResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื“ืคื™ ื—ื™ืคื•ืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
valuestringืœื
ssostringืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationPageSearchResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืืชืจื™ ื—ื™ืคื•ืฉ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
valuestringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationSiteSearchResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืฆืขื•ืช ื—ื™ืคื•ืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
textSearchstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationSuggestResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉื™ื ื‘ื—ื™ืคื•ืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
valuestringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationUserSearchResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžื“ื“ ืืžื•ืŸ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
userIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetUserTrustFactorResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืขื“ืคืช ื—ืกื™ืžืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIModerateGetUserBanPreferencesResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืคืจื•ืคื™ืœ ืคื ื™ืžื™ ืฉืœ ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetUserInternalProfileResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getUserInternalProfile
Copy Copy
1
2let (response, httpResponse) = client.getUserInternalProfile(commentId = "cmt-2026-00042", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoibXl1c2VyIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c")
3if response.isSome:
4 let profile = response.get()
5 discard profile
6

ื”ืชืืžืช ื”ืฆื‘ืขื•ืช ืขืœ ืชื’ื•ื‘ื•ืช Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentIdstringื›ืŸ
adjustCommentVotesParamsAdjustCommentVotesParamsืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[AdjustVotesResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-postAdjustCommentVotes
Copy Copy
1
2let (response, httpResponse) = client.postAdjustCommentVotes(commentId = "cmt-987654", adjustCommentVotesParams = nil, sso = "sso-token-abc123")
3if response.isSome:
4 let adjusted = response.get()
5 discard adjusted
6

ื‘ื™ืฆื•ืข ื™ื™ืฆื•ื ื“ืจืš ื”-API Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
textSearchstringืœื
byIPFromCommentstringืœื
filtersstringืœื
searchFiltersstringืœื
sortsstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationExportResponse]

ื“ื•ื’ืžื”

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

ื”ื˜ืœืช ื—ืกื™ืžื” ืขืœ ืžืฉืชืžืฉ ืžืชื•ืš ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
banEmailboolืœื
banEmailDomainboolืœื
banIPboolืœื
deleteAllUsersCommentsboolืœื
bannedUntilstringืœื
isShadowBanboolืœื
updateIdstringืœื
banReasonstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[BanUserFromCommentResult]

ื“ื•ื’ืžื”

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

ื‘ื™ื˜ื•ืœ ื—ืกื™ืžืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
banUserUndoParamsBanUserUndoParamsืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื‘ื™ืฆื•ืข ืืฆื•ื•ื” ืฉืœ ืกื™ื›ื•ื ื˜ืจื ื—ืกื™ืžื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
bulkPreBanParamsBulkPreBanParamsืœื
includeByUserIdAndEmailboolืœื
includeByIPboolืœื
includeByEmailDomainboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[BulkPreBanSummary]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื•ื‘ื•ืช ืœืคื™ ืžื–ื”ื™ื Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentsByIdsParamsCommentsByIdsParamsืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ModerationAPIChildCommentsResponse]

ื“ื•ื’ืžื”

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

ืกื™ืžื•ืŸ ืชื’ื•ื‘ื” (POST) Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ืกืจืช ืชื’ื•ื‘ื” Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PostRemoveCommentResponse]

ื“ื•ื’ืžื”

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

ืฉื—ื–ื•ืจ ืชื’ื•ื‘ื” ืฉื ืžื—ืงื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ื’ื“ืจืช ืกื˜ื˜ื•ืก ืื™ืฉื•ืจ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentIdstringื›ืŸ
approvedboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[SetCommentApprovedResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืขื‘ื•ืจ postSetCommentApprovalStatus
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentApprovalStatus(commentId = "cmt-7890", approved = false, sso = "")
3if response.isSome:
4 let setResp = response.get()
5 discard setResp
6

ื”ื’ื“ืจืช ืกื˜ื˜ื•ืก ืกืงื™ืจืช ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
reviewedboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ื’ื“ืจืช ืกื˜ื˜ื•ืก ื“ื•ืืจ ื–ื‘ืœ ืœืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
commentIdstringื›ืŸ
spamboolืœื
permNotSpamboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืฉืœ postSetCommentSpamStatus
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentSpamStatus(
3 commentId = "cmt-20250619-842",
4 spam = false,
5 permNotSpam = false,
6 sso = ""
7)
8if response.isSome:
9 let apiEmpty = response.get()
10 discard apiEmpty
11

ื”ื’ื“ืจืช ื˜ืงืกื˜ ืฉืœ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
commentIdstringื›ืŸ
setCommentTextParamsSetCommentTextParamsืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[SetCommentTextResponse]

ื“ื•ื’ืžื”

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

ื‘ื™ื˜ื•ืœ ื“ื™ื•ื•ื— ืขืœ ืชื’ื•ื‘ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ืฆื‘ืขื” (POST) Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
commentIdstringื›ืŸ
directionstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[VoteResponse]

ื“ื•ื’ืžื”

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

ื”ืขื ืงืช ืชื’ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
badgeIdstringืœื
userIdstringืœื
commentIdstringื›ืŸ
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[AwardUserBadgeResponse]

ื“ื•ื’ืžื”

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

ืกื’ื™ืจืช ืฉืจืฉื•ืจ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
urlIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ืกืจืช ืชื’ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
badgeIdstringืœื
userIdstringืœื
commentIdstringื›ืŸ
broadcastIdstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[RemoveUserBadgeResponse]

ื“ื•ื’ืžื”

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

ืคืชื™ื—ืช ืฉืจืฉื•ืจ ืžื—ื“ืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
urlIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื”ื’ื“ืจืช ืžื“ื“ ืืžื•ืŸ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
userIdstringืœื
trustFactorstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[SetUserTrustFactorResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืžืžื•ื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
createModeratorBodyCreateModeratorBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateModeratorResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืžืžื•ื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
sendEmailstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืžื•ื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetModeratorResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืžื•ื ื™ื Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetModeratorsResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืฉืœ getModerators
Copy Copy
1
2let (response, httpResponse) = client.getModerators(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let moderators = response.get()
5 echo "Received moderators response:", moderators
6else:
7 echo "No moderators returned"
8

ืขื“ื›ื•ืŸ ืžืžื•ื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืTypeื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updateModeratorBodyUpdateModeratorBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืกืคื™ืจืช ื”ืชืจืื•ืช Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกืคื™ืจืช ื”ืชืจืื•ืช ืžื˜ืžื•ืŸ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetCachedNotificationCountResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกืคื™ืจืช ื”ืชืจืื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
userIdstringืœื
urlIdstringื›ืŸ
fromCommentIdstringืœื
viewedboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetNotificationCountResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืชืจืื•ืช Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
userIdstringืœื
urlIdstringื›ืŸ
fromCommentIdstringืœื
viewedboolืœื
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetNotificationsResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื”ืชืจืื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื
updateNotificationBodyUpdateNotificationBodyืœื
userIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืชื’ื•ื‘ืช ื“ืฃ V1 Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
titlestringืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateV1PageReact]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืชื’ื•ื‘ืช ื“ืฃ V2 Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
idstringืœื
titlestringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateV1PageReact]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืชื’ื•ื‘ืช ื“ืฃ V1 Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateV1PageReact]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืขื‘ื•ืจ deleteV1PageReact
Copy Copy
1
2let (response, httpResponse) = client.deleteV1PageReact(tenantId = "my-tenant-123", urlId = "news/article-title")
3if response.isSome:
4 let deletedReact = response.get()
5 echo "Deleted react:", deletedReact
6else:
7 echo "No react returned for tenant: my-tenant-123, url: news/article-title"
8

ืžื—ื™ืงืช ืชื’ื•ื‘ืช ื“ืฃ V2 Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateV1PageReact]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืœื™ื™ืงื™ื ืœืขืžื•ื“ V1 Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetV1PageLikes]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืจื™ืืงื˜ื™ื ืœืขืžื•ื“ V2 Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetV2PageReacts]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉื™ ืจื™ืืงื˜ื™ื ืœืขืžื•ื“ V2 Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
idstringืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetV2PageReactUsersResponse]

ื“ื•ื’ืžื”

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

ื”ื•ืกืคืช ืขืžื•ื“ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
createAPIPageDataCreateAPIPageDataืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[AddPageAPIResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืขืžื•ื“ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[DeletePageAPIResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉื™ื ืœื ืžืงื•ื•ื ื™ื Internal Link

ืžื’ื™ื‘ื™ื ืงื•ื“ืžื™ื ื‘ืขืžื•ื“ ืฉืื™ื ื ืžื—ื•ื‘ืจื™ื ื›ืจื’ืข. ืžืžื•ื™ืŸ ืœืคื™ displayName. ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ื–ื” ืœืื—ืจ ืฉืžื™ืฆื™ืช ืืช /users/online ื›ื“ื™ ืœื”ืฆื™ื’ ืืช ืžื“ื•ืจ 'ื—ื‘ืจื™ื'. ื“ืคื“ื•ืฃ ื‘ืขืžื•ื“ื™ื (cursor pagination) ืœืคื™ commenterName: ื”ืฉืจืช ืกื•ืจืง ืืช ื”ืื™ื ื“ืงืก ื”ื—ืœืงื™ {tenantId, urlId, commenterName} ืž-afterName ืงื“ื™ืžื” ื‘ืืžืฆืขื•ืช $gt, ืœืœื ืขืœื•ืช $skip.

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
afterNamestringืœื
afterUserIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PageUsersOfflineResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉื™ื ืžืงื•ื•ื ื™ื Internal Link

ืฆื•ืคื™ื ื”ืžื—ื•ื‘ืจื™ื ื›ืจื’ืข ืœื“ืฃ: ืื ืฉื™ื ืฉ-websocket session ืฉืœื”ื ืžื ื•ื™ ืขืœ ื”ื“ืฃ ื‘ืจื’ืข ื–ื”. ืžื—ื–ื™ืจ ืืช anonCount + totalCount (ืžื ื•ื™ื™ ื”ื—ื“ืจ ื›ื•ืœื•, ื›ื•ืœืœ ืฆื•ืคื™ื ืื ื•ื ื™ืžื™ื™ื ืฉืื™ื ื ื• ืžื•ื ื™ื).

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
afterNamestringืœื
afterUserIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PageUsersOnlineResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืขืžื•ื“ ืœืคื™ URL/ID Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
urlIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetPageByURLIdAPIResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื“ืคื™ื Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetPagesAPIResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื“ืคื™ื (ืฆื™ื‘ื•ืจื™) Internal Link

ืจืฉื™ืžืช ื“ืคื™ื ืขื‘ื•ืจ ื˜ื ื ื˜. ืžื ื•ืฆืœ ืขืœ ื™ื“ื™ ืœืงื•ื— ืฉื•ืœื—ื ื™ ืฉืœ FChat ื›ื“ื™ ืœืžืœื ืืช ืจืฉื™ืžืช ื”ื—ื“ืจื™ื ืฉืœื•. ื“ื•ืจืฉ ืฉึพenableFChat ื™ื”ื™ื” true ืขืœ ื”ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื”ืžื•ืชืืžืช ืฉื”ืชืงื‘ืœื” ืขื‘ื•ืจ ื›ืœ ื“ืฃ. ื“ืคื™ื ืฉื“ื•ืจืฉื™ื SSO ืžืกื•ื ื ื™ื ืœืคื™ ื’ื™ืฉืช ื”ืงื‘ื•ืฆื•ืช ืฉืœ ื”ืžืฉืชืžืฉ ื”ืžื‘ืงืฉ.

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
cursorstringืœื
limitintืœื
qstringืœื
sortByPagesSortByืœื
hasCommentsboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetPublicPagesResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžื™ื“ืข ืขืœ ืžืฉืชืžืฉื™ื Internal Link

ืžื™ื“ืข ืžืฉืชืžืฉื™ื ื‘ื›ืžื•ืช ื’ื“ื•ืœื” ืขื‘ื•ืจ tenant. ื‘ื”ืชื—ืฉื‘ ื‘-userIds, ืžื—ื–ื™ืจ ืžื™ื“ืข ืœื”ืฆื’ื” ืž-User / SSOUser. ืžืฉืžืฉ ืืช ื”ื•ื•ื™ื“ื’'ื˜ ืฉืœ ื”ืชื’ื•ื‘ื•ืช ืœื”ืขืฉื™ืจ ืžืฉืชืžืฉื™ื ืฉื–ื” ืขืชื” ื”ื•ืคื™ืขื• ื‘ืืžืฆืขื•ืช ืื™ืจื•ืข ื ื•ื›ื—ื•ืช. ืื™ืŸ ื”ืงืฉืจ ืฉืœ ื“ืฃ: ืคืจื˜ื™ื•ืช ื ืื›ืคืช ื‘ืื•ืคืŸ ืื—ื™ื“ (ืคืจื•ืคื™ืœื™ื ืคืจื˜ื™ื™ื ืžื•ืกืชืจื™ื).

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื“ืจื•ืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idsstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PageUsersInfoResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื—ืœืงื™ ืฉืœ ืขืžื•ื“ Internal Link

ืคืจืžื˜ืจื™ื

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

ืžื—ื™ืงืช ืื™ืจื•ืข Webhook ื‘ื”ืžืชื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืกืคืจ ืื™ืจื•ืขื™ Webhook ื‘ื”ืžืชื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
externalIdstringืœื
eventTypestringืœื
domainstringืœื
attemptCountGTfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetPendingWebhookEventCountResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืื™ืจื•ืขื™ Webhook ื‘ื”ืžืชื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืTypeRequiredDescription
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
externalIdstringืœื
eventTypestringืœื
domainstringืœื
attemptCountGTfloat64ืœื
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetPendingWebhookEventsResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ื”ื’ื“ืจืช ืฉืืœื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
createQuestionConfigBodyCreateQuestionConfigBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateQuestionConfigResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ื”ื’ื“ืจืช ืฉืืœื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ื’ื“ืจืช ืฉืืœื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetQuestionConfigResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getQuestionConfig
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfig(tenantId = "my-tenant-123", id = "qst-456")
3if response.isSome:
4 let cfg = response.get()
5 discard cfg
6

ืงื‘ืœืช ื”ื’ื“ืจื•ืช ืฉืืœื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetQuestionConfigsResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื”ื’ื“ืจืช ืฉืืœื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updateQuestionConfigBodyUpdateQuestionConfigBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืชื•ืฆืืช ืฉืืœื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
createQuestionResultBodyCreateQuestionResultBodyืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateQuestionResultResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืชื•ืฆืืช ืฉืืœื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื•ืฆืืช ืฉืืœื” Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetQuestionResultResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื•ืฆืื•ืช ืฉืืœื•ืช Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
userIdstringืœื
startDatestringืœื
questionIdstringืœื
questionIdsstringืœื
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetQuestionResultsResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืชื•ืฆืืช ืฉืืœื” Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื
updateQuestionResultBodyUpdateQuestionResultBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืื’ืจื’ืฆื™ื™ืช ืชื•ืฆืื•ืช ืฉืืœื•ืช Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
questionIdstringืœื
questionIdsseq[string]ืœื
urlIdstringื›ืŸ
timeBucketAggregateTimeBucketืœื
startDatestringืœื
forceRecalculateboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[AggregateQuestionResultsResponse]

ื“ื•ื’ืžื”

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

ืื’ืจื’ืฆื™ื” ื‘ื›ืžื•ืช ืœืชื•ืฆืื•ืช ืฉืืœื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestืœื
forceRecalculateboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[BulkAggregateQuestionResultsResponse]

ื“ื•ื’ืžื”

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

ืฉื™ืœื•ื‘ ืชื’ื•ื‘ื•ืช ืขื ืชื•ืฆืื•ืช ืฉืืœื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
questionIdstringืœื
questionIdsseq[string]ืœื
urlIdstringื›ืŸ
startDatestringืœื
forceRecalculateboolืœื
minValuefloat64ืœื
maxValuefloat64ืœื
limitfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CombineQuestionResultsWithCommentsResponse]

ื“ื•ื’ืžื”

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

ื”ื•ืกืคืช ืžืฉืชืžืฉ SSO Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
createAPISSOUserDataCreateAPISSOUserDataืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[AddSSOUserAPIResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืžืฉืชืžืฉ SSO Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
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

ืงื‘ืœืช ืžืฉืชืžืฉ SSO ืœืคื™ ืžื–ื”ื” Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetSSOUserByIdAPIResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉื™ SSO Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
skipintืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetSSOUsersResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื—ืœืงื™ ืฉืœ ืžืฉืชืžืฉ SSO Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updateAPISSOUserDataUpdateAPISSOUserDataืœื
updateCommentsboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[PatchSSOUserAPIResponse]

ื“ื•ื’ืžื”

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

ื”ื—ืœืคืช ืžืฉืชืžืฉ SSO Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
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

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
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

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
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
tenantIdstringYes
yearNumberfloat64No
monthNumberfloat64No
dayNumberfloat64No
skipfloat64No

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantDailyUsagesResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ื—ื‘ื™ืœืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
createTenantPackageBodyCreateTenantPackageBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateTenantPackageResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ื—ื‘ื™ืœืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื—ื‘ื™ืœืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantPackageResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื—ื‘ื™ืœื•ืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantPackagesResponse]

ื“ื•ื’ืžื”

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

ื”ื—ืœืคืช ื—ื‘ื™ืœืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
replaceTenantPackageBodyReplaceTenantPackageBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื—ื‘ื™ืœืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updateTenantPackageBodyUpdateTenantPackageBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืžืฉืชืžืฉ ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
createTenantUserBodyCreateTenantUserBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateTenantUserResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืžืฉืชืžืฉ ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื
deleteCommentsstringืœื
commentDeleteModestringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉ ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantUserResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉื™ ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantUsersResponse]

ื“ื•ื’ืžื”

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

ื”ื—ืœืคืช ืžืฉืชืžืฉ ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
replaceTenantUserBodyReplaceTenantUserBodyืœื
updateCommentsstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื
redirectURLstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืžืฉืชืžืฉ ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
idstringืœื
updateTenantUserBodyUpdateTenantUserBodyืœื
updateCommentsstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ื˜ื ื ื˜ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
createTenantBodyCreateTenantBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateTenantResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
surestringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืฉืœ deleteTenant
Copy Copy
1
2let (response, httpResponse) = client.deleteTenant(tenantId = "my-tenant-123", id = "", sure = "")
3if response.isSome:
4 let emptyResp = response.get()
5else:
6 discard httpResponse
7

ืงื‘ืœืช ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื˜ื ื ื˜ื™ื Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
metastringืœื
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTenantsResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื˜ื ื ื˜ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื“ืจื•ืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updateTenantBodyUpdateTenantBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptyResponse]

ื“ื•ื’ืžื”

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

ืฉื™ื ื•ื™ ืžืฆื‘ ื›ืจื˜ื™ืก Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
userIdstringืœื
idstringืœื
changeTicketStateBodyChangeTicketStateBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ChangeTicketStateResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ื›ืจื˜ื™ืก Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
userIdstringืœื
createTicketBodyCreateTicketBodyืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[CreateTicketResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื›ืจื˜ื™ืก Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
userIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTicketResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื›ืจื˜ื™ืกื™ื Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
userIdstringืœื
statefloat64ืœื
skipfloat64ืœื
limitfloat64ืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTicketsResponse]

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืฉืœ getTickets
Copy Copy
1
2let (response, httpResponse) = client.getTickets(tenantId = "my-tenant-123", userId = "user-789", state = 1.0, skip = 0.0, limit = 50.0)
3if response.isSome:
4 let tickets = response.get()
5 echo tickets
6

ืงื‘ืœืช ืชืจื’ื•ืžื™ื Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
namespacestringืœื
componentstringืœื
localestringืœื
useFullTranslationIdsboolืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetTranslationsResponse]

ื“ื•ื’ืžื”

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

ื”ืขืœืืช ืชืžื•ื ื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
filestringืœื
sizePresetSizePresetืœื
urlIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UploadImageResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืชืงื“ืžื•ืช ืชื’ ืžืฉืชืžืฉ ืœืคื™ ืžื–ื”ื” Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIGetUserBadgeProgressResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืชืงื“ืžื•ืช ืชื’ ืžืฉืชืžืฉ ืœืคื™ ืžื–ื”ื” ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
userIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIGetUserBadgeProgressResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืจืฉื™ืžืช ื”ืชืงื“ืžื•ืช ืชื’ ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
userIdstringืœื
limitfloat64ืœื
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIGetUserBadgeProgressListResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืชื’ ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
createUserBadgeParamsCreateUserBadgeParamsืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APICreateUserBadgeResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืชื’ ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptySuccessResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIGetUserBadgeResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ื™ ืžืฉืชืžืฉ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
userIdstringืœื
badgeIdstringืœื
displayedOnCommentsboolืœื
limitfloat64ืœื
skipfloat64ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIGetUserBadgesResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืชื’ ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
updateUserBadgeParamsUpdateUserBadgeParamsืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[APIEmptySuccessResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืกืคื™ืจืช ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetUserNotificationCountResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
pageSizeintืœื
afterIdstringืœื
includeContextboolืœื
afterCreatedAtint64ืœื
unreadOnlyboolืœื
dmOnlyboolืœื
noDmboolืœื
includeTranslationsboolืœื
includeTenantNotificationsboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetMyNotificationsResponse]

ื“ื•ื’ืžื”

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

ืืชื—ื•ืœ ืกืคื™ืจืช ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ResetUserNotificationsResponse]

ื“ื•ื’ืžื”

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

ืืชื—ื•ืœ ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
afterIdstringืœื
afterCreatedAtint64ืœื
unreadOnlyboolืœื
dmOnlyboolืœื
noDmboolืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[ResetUserNotificationsResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืกื˜ื˜ื•ืก ืžื ื•ื™ ืชื’ื•ื‘ื” ืฉืœ ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

ื”ืคืขืœ ืื• ื‘ื˜ืœ ื”ืชืจืื•ืช ืขื‘ื•ืจ ืชื’ื•ื‘ื” ืกืคืฆื™ืคื™ืช.

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
notificationIdstringืœื
optedInOrOutstringืœื
commentIdstringื›ืŸ
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UpdateUserNotificationCommentSubscriptionStatusResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืกื˜ื˜ื•ืก ืžื ื•ื™ ื“ืฃ ืฉืœ ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

ื”ืคืขืœ ืื• ื”ืฉื‘ืช ื”ืชืจืื•ืช ืขื‘ื•ืจ ื“ืฃ. ื›ืืฉืจ ืžืฉืชืžืฉื™ื ืžื ื•ื™ื™ื ืขืœ ื“ืฃ, ื ื•ืฆืจื•ืช ื”ืชืจืื•ืช ืขื‘ื•ืจ ืชื’ื•ื‘ื•ืช ืฉื•ืจืฉ ื—ื“ืฉื•ืช, ื•ื’ื

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
urlstringืœื
pageTitlestringืœื
subscribedOrUnsubscribedstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UpdateUserNotificationPageSubscriptionStatusResponse]

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืกื˜ื˜ื•ืก ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
notificationIdstringืœื
newStatusstringืœื
ssostringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[UpdateUserNotificationStatusResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฆื‘ื™ ื ื•ื›ื—ื•ืช ืžืฉืชืžืฉื™ื Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdWSstringืœื
userIdsstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetUserPresenceStatusesResponse]

ื“ื•ื’ืžื”

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

ื—ื™ืคื•ืฉ ืžืฉืชืžืฉื™ื Internal Link

ืคืจืžื˜ืจื™ื

NameTypeRequiredDescription
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
usernameStartsWithstringืœื
mentionGroupIdsseq[string]ืœื
ssostringืœื
searchSectionstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[SearchUsersResult]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืžืฉืชืžืฉ Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื—ื•ื‘ื”ืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetUserResponse]

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ื”ืฆื‘ืขื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
commentIdstringื›ืŸ
directionstringืœื
userIdstringืœื
anonUserIdstringืœื

ืชืฉื•ื‘ื”

ืžื—ื–ื™ืจ: Option[VoteResponse]

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ื”ืฆื‘ืขื” Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
idstringืœื
editKeystringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[VoteDeleteResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืฆื‘ืขื•ืช Internal Link

ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetVotesResponse]

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืฆื‘ืขื•ืช ืขื‘ื•ืจ ืžืฉืชืžืฉ Internal Link


ืคืจืžื˜ืจื™ื

ืฉืืกื•ื’ื ื“ืจืฉืชื™ืื•ืจ
tenantIdstringื›ืŸ
urlIdstringื›ืŸ
userIdstringืœื
anonUserIdstringืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: Option[GetVotesForUserResponse]

ื“ื•ื’ืžื”

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


ื–ืงื•ืง ืœืขื–ืจื”?

ืื ืชื™ืชืงืœ ื‘ื‘ืขื™ื•ืช ืื• ืื ื™ืฉ ืœืš ืฉืืœื•ืช ืœื’ื‘ื™ Nim SDK, ืื ื:

ืชืจื•ืžื•ืช

ืชืจื•ืžื•ืช ืžืชืงื‘ืœื•ืช ื‘ื‘ืจื›ื”! ืื ื ื‘ืงืจ ื‘ืžืื’ืจ ื”-GitHub ืœืงื‘ืœืช ื”ื ื—ื™ื•ืช ืœืชืจื•ืžื”.