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.

API ืฆื™ื‘ื•ืจื™ื™ื ืœืขื•ืžืช API ืžืื•ื‘ื˜ื—ื™ื

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

ื”ืชื—ืœื” ืžื”ื™ืจื” Internal Link

ืฉื™ืžื•ืฉ ื‘-APIs ืžืื•ืžืชื™ื (DefaultAPI)

ื—ืฉื•ื‘: ื ืงื•ื“ื•ืช ืงืฆื” ืžืื•ืžืชื•ืช ื“ื•ืจืฉื•ืช ืฉื”ืžืคืชื— ืฉืœ ื”-API ื™ื•ื’ื“ืจ ื‘ื›ื•ืชืจืช x-api-key.

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

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

# ื‘ืฆืข ืงืจื™ืื•ืช API ืžืื•ืžืชื•ืช
let (response, httpResponse) = getComments(
  httpClient = client,
  tenantId = "your-tenant-id",
  page = 0,
  limit = 0,
  skip = 0,
  asTree = false,
  skipChildren = 0,
  limitChildren = 0,
  maxTreeDepth = 0,
  urlId = "your-url-id",
  userId = "",
  anonUserId = "",
  contextUserId = "",
  hashTag = "",
  parentId = "",
  direction = SortDirections.DESC
)

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

ืฉื™ืžื•ืฉ ื‘-APIs ืฆื™ื‘ื•ืจื™ื™ื (PublicAPI)

ื ืงื•ื“ื•ืช ืงืฆื” ืฆื™ื‘ื•ืจื™ื•ืช ืื™ื ืŸ ื“ื•ืจืฉื•ืช ืื™ืžื•ืช:

import httpclient
import fastcomments
import fastcomments/apis/api_public

let client = newHttpClient()

# ื‘ืฆืข ืงืจื™ืื•ืช API ืฆื™ื‘ื•ืจื™ื•ืช
let (response, httpResponse) = getCommentsPublic(
  httpClient = client,
  tenantId = "your-tenant-id",
  urlId = "your-url-id",
  page = 0,
  direction = SortDirections.DESC,
  sso = "",
  skip = 0,
  skipChildren = 0,
  limit = 0,
  limitChildren = 0,
  countChildren = false,
  fetchPageForCommentId = "",
  includeConfig = false,
  countAll = false,
  includei10n = false,
  locale = "",
  modules = "",
  isCrawler = false,
  includeNotificationCount = false,
  asTree = false,
  maxTreeDepth = 0,
  useFullTranslationIds = false,
  parentId = "",
  searchText = "",
  hashTags = @[],
  userId = "",
  customConfigStr = "",
  afterCommentId = "",
  beforeCommentId = ""
)

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

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

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

ื‘ื™ืฆื•ืข ืงืจื™ืื•ืช 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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
aggregationRequest AggregationRequest ืœื
parentTenantId string ืœื
includeStats bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
limit float64 ืœื
skip float64 ืœื
order SORTDIR ืœื
after float64 ืœื
before float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
publicBlockFromCommentParams PublicBlockFromCommentParams ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
publicBlockFromCommentParams PublicBlockFromCommentParams ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
commentIds string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
blockFromCommentParams BlockFromCommentParams ืœื
userId string ืœื
anonUserId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื”: ื—ืกื™ืžืช ืžืฉืชืžืฉ ืžื”ืชื’ื•ื‘ื”
Copy Copy
1
2let (response, httpResponse) = client.blockUserFromComment(
3 tenantId = "my-tenant-123",
4 id = "comment-98765",
5 blockFromCommentParams = BlockFromCommentParams(),
6 userId = "user-456",
7 anonUserId = ""
8)
9if response.isSome:
10 let blocked = response.get()
11 echo "Block confirmed for tenant:", " my-tenant-123"
12

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ
broadcastId string ืœื
commentData CommentData ืœื
sessionId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
contextUserId string ืœื
isLive bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
commentId string ื›ืŸ
broadcastId string ืœื
editKey string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
voteId string ืœื
urlId string ื›ืŸ
broadcastId string ืœื
editKey string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
userId string ืœื
anonUserId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
page int ืœื
limit int ืœื
skip int ืœื
asTree bool ืœื
skipChildren int ืœื
limitChildren int ืœื
maxTreeDepth int ืœื
urlId string ื›ืŸ
userId string ืœื
anonUserId string ืœื
contextUserId string ืœื
hashTag string ืœื
parentId string ืœื
direction SortDirections ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ
page int ืœื
direction SortDirections ืœื
sso string ืœื
skip int ืœื
skipChildren int ืœื
limit int ืœื
limitChildren int ืœื
countChildren bool ืœื
fetchPageForCommentId string ืœื
includeConfig bool ืœื
countAll bool ืœื
includei10n bool ืœื
locale string ืœื
modules string ืœื
isCrawler bool ืœื
includeNotificationCount bool ืœื
asTree bool ืœื
maxTreeDepth int ืœื
useFullTranslationIds bool ืœื
parentId string ืœื
searchText string ืœื
hashTags seq[string] ืœื
userId string ืœื
customConfigStr string ืœื
afterCommentId string ืœื
beforeCommentId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getCommentsPublic
Copy Copy
1
2let (response, httpResponse) = client.getCommentsPublic(
3 tenantId = "my-tenant-123",
4 urlId = "news/world/article-2025",
5 page = 1,
6 direction = SortDirections(0),
7 sso = "sso_token_abc",
8 skip = 0,
9 skipChildren = 0,
10 limit = 20,
11 limitChildren = 5,
12 countChildren = false,
13 fetchPageForCommentId = "cmt_789",
14 includeConfig = true,
15 countAll = false,
16 includei10n = true,
17 locale = "en-US",
18 modules = "reactions,moderation",
19 isCrawler = false,
20 includeNotificationCount = true,
21 asTree = true,
22 maxTreeDepth = 3,
23 useFullTranslationIds = false,
24 parentId = "parent_123",
25 searchText = "openAI integration",
26 hashTags = @["ai", "technology"],
27 userId = "user_456",
28 customConfigStr = "{}",
29 afterCommentId = "cmt_100",
30 beforeCommentId = ""
31)
32
33if response.isSome:
34 let comments = response.get()
35 discard comments
36else:
37 discard httpResponse
38

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
editKey string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
commentId string ื›ืŸ
dir int ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
broadcastId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
broadcastId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
createCommentParams CreateCommentParams ืœื
isLive bool ืœื
doSpamCheck bool ืœื
sendEmails bool ืœื
populateNotifications bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createCommentParams seq[CreateCommentParams] ืœื
isLive bool ืœื
doSpamCheck bool ืœื
sendEmails bool ืœื
populateNotifications bool): (Option[seq[SaveComment_200_response]] ืœื
id string ืœื
unBlockFromCommentParams UnBlockFromCommentParams ืœื
userId string ืœื
anonUserId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
broadcastId string ืœื
commentTextUpdateRequest CommentTextUpdateRequest ืœื
editKey string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
unBlockFromCommentParams UnBlockFromCommentParams ืœื
userId string ืœื
anonUserId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
userId string ืœื
anonUserId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
broadcastId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
broadcastId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updatableCommentParams UpdatableCommentParams ืœื
contextUserId string ืœื
doSpamCheck bool ืœื
isLive bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
urlId string ื›ืŸ
broadcastId string ืœื
voteBodyParams VoteBodyParams ืœื
sessionId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
addDomainConfigParams AddDomainConfigParams ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
domain string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
domain string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

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

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
domainToUpdate string ืœื
patchDomainConfigParams PatchDomainConfigParams ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
domainToUpdate string ืœื
updateDomainConfigParams UpdateDomainConfigParams ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
createEmailTemplateBody CreateEmailTemplateBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
errorId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžืช getEmailTemplate
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplate(tenantId = "my-tenant-123", id = "welcome-email-01")
3if response.isSome:
4 let template = response.get()
5 echo "Template ID: ", template.id
6 echo "Subject: ", template.subject
7 echo "Body: ", template.body
8

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

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

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

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื Type ื“ืจื•ืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
renderEmailTemplateBody RenderEmailTemplateBody ืœื
locale string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updateEmailTemplateBody UpdateEmailTemplateBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ
userIdWS string ืœื
startTime int64 ืœื
endTime int64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ
userIdWS string ืœื
startTime int64 ืœื
endTime int64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createFeedPostParams CreateFeedPostParams ืœื
broadcastId string ืœื
isLive bool ืœื
doSpamCheck bool ืœื
skipDupCheck bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createFeedPostParams CreateFeedPostParams ืœื
broadcastId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
postId string ืœื
broadcastId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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


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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
afterId string ืœื
limit int ืœื
tags seq[string] ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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


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

Name Type Required Description
tenantId string ื›ืŸ
afterId string ืœื
limit int ืœื
tags seq[string] ืœื
sso string ืœื
isCrawler bool ืœื
includeUserInfo bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
postIds seq[string] ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
postIds seq[string] ืœื
sso string ืœื

ืชืฉื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœgetUserReactsPublic
Copy Copy
1
2let (response, httpResponse) = client.getUserReactsPublic(tenantId = "my-tenant-123", postIds = @[], sso = "")
3if response.isSome:
4 let reacts = response.get()
5 discard reacts
6

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
postId string ืœื
reactBodyParams ReactBodyParams ืœื
isUndo bool ืœื
broadcastId string ืœื
sso string ืœื

ืชืฉื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
feedPost FeedPost ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
postId string ืœื
updateFeedPostParams UpdateFeedPostParams ืœื
broadcastId string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
isFlagged bool ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createHashTagBody CreateHashTagBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
bulkCreateHashTagsBody BulkCreateHashTagsBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tag string ืœื
tenantId string ื›ืŸ
deleteHashTagRequest DeleteHashTagRequest ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-deleteHashTag
Copy Copy
1
2let (response, httpResponse) = client.deleteHashTag(tag = "breaking-news", tenantId = "my-tenant-123", deleteHashTagRequest = DeleteHashTagRequest())
3if response.isSome:
4 let result = response.get()
5 discard result
6

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
page float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tag string ืœื
tenantId string ื›ืŸ
updateHashTagBody UpdateHashTagBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
createModeratorBody CreateModeratorBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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


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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
sendEmail string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
skip float64 ืœื

ืชืฉื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
updateModeratorBody UpdateModeratorBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœึพdeleteNotificationCount
Copy Copy
1
2let (response, httpResponse) = client.deleteNotificationCount(tenantId = "my-tenant-123", id = "notif-456")
3if response.isSome:
4 let deleted = response.get()
5 echo "Deleted notification count:", deleted
6else:
7 echo "No response body; HTTP response:", httpResponse
8

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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
userId string ืœื
urlId string ื›ืŸ
fromCommentId string ืœื
viewed bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
userId string ืœื
urlId string ื›ืŸ
fromCommentId string ืœื
viewed bool ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updateNotificationBody UpdateNotificationBody ืœื
userId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื”ื•ืกืคืช ื“ืฃ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createAPIPageData CreateAPIPageData ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื“ืฃ ืœืคื™ ืžื–ื”ื” URL Internal Link

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

Name Type Required Description
tenantId string ื›ืŸ
urlId string ื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

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

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
updateAPIPageData UpdateAPIPageData ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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


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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
commentId string ื›ืŸ
externalId string ืœื
eventType string ืœื
domain string ืœื
attemptCountGT float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
externalId string ืœื
eventType string ืœื
domain string ืœื
attemptCountGT float64 ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createQuestionConfigBody CreateQuestionConfigBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getQuestionConfig
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfig(tenantId = "my-tenant-123", id = "qcfg-98765")
3if response.isSome:
4 let config = response.get()
5 echo "Received question config for tenant:", " my-tenant-123"
6

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-getQuestionConfigs
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfigs(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let configs = response.get()
5 discard configs
6

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updateQuestionConfigBody UpdateQuestionConfigBody ืœื

ืชืฉื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
createQuestionResultBody CreateQuestionResultBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ
userId string ืœื
startDate string ืœื
questionId string ืœื
questionIds string ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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


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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updateQuestionResultBody UpdateQuestionResultBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
questionId string ืœื
questionIds seq[string] ืœื
urlId string ื›ืŸ
timeBucket AggregateTimeBucket ืœื
startDate string ืœื
forceRecalculate bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest ืœื
forceRecalculate bool ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
questionId string ืœื
questionIds seq[string] ืœื
urlId string ื›ืŸ
startDate string ืœื
forceRecalculate bool ืœื
minValue float64 ืœื
maxValue float64 ืœื
limit float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
createAPISSOUserData CreateAPISSOUserData ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
deleteComments bool ืœื
commentDeleteMode string ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
email string ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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


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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
skip int ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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


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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updateAPISSOUserData UpdateAPISSOUserData ืœื
updateComments bool ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
updateAPISSOUserData UpdateAPISSOUserData ืœื
updateComments bool ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createAPIUserSubscriptionData CreateAPIUserSubscriptionData ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
userId string ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
userId string ืœื

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
yearNumber float64 ืœื
monthNumber float64 ืœื
dayNumber float64 ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ื—ื‘ื™ืœืช ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
createTenantPackageBody CreateTenantPackageBody ืœื

ืชืฉื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-deleteTenantPackage
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantPackage(tenantId = "my-tenant-123", id = "pkg-789")
3if response.isSome:
4 let deleted = response.get()
5 echo "Successfully deleted tenant package"
6

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื”ื—ืœืคืช ื—ื‘ื™ืœืช ืฉื•ื›ืจ Internal Link

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

Name Type Required Description
tenantId string Yes
id string No
replaceTenantPackageBody ReplaceTenantPackageBody No

ืชืฉื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ื—ื‘ื™ืœืช ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updateTenantPackageBody UpdateTenantPackageBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืžืฉืชืžืฉ ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createTenantUserBody CreateTenantUserBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-createTenantUser
Copy Copy
1
2let createBody = CreateTenantUserBody(
3 email = "jane.doe@acmepub.com",
4 displayName = "Jane Doe",
5 password = "S3cur3P@ssw0rd",
6 roles = @["moderator", "editor"],
7 disabled = false
8)
9let (response, httpResponse) = client.createTenantUser(tenantId = "my-tenant-123", createTenantUserBody = createBody)
10if response.isSome:
11 let createdUser = response.get()
12 echo createdUser
13

ืžื—ื™ืงืช ืžืฉืชืžืฉ ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
deleteComments string ืœื
commentDeleteMode string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžื” ืœ-deleteTenantUser
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantUser(tenantId = "my-tenant-123", id = "user-456", deleteComments = "", commentDeleteMode = "")
3if response.isSome:
4 let flagResp = response.get()
5 echo flagResp
6

ืงื‘ืœืช ืžืฉืชืžืฉ ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชืฉื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื”ื—ืœืคืช ืžืฉืชืžืฉ ืฉื•ื›ืจ Internal Link

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
replaceTenantUserBody ReplaceTenantUserBody ืœื
updateComments string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
redirectURL string ืœื

Response

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

Example

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

ืขื“ื›ื•ืŸ ืžืฉืชืžืฉ ืฉื•ื›ืจ Internal Link

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื
updateTenantUserBody UpdateTenantUserBody ืœื
updateComments string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createTenantBody CreateTenantBody ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืžื—ื™ืงืช ืฉื•ื›ืจ Internal Link


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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
sure string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืฉื•ื›ืจื™ื Internal Link

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
meta string ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืฉื•ื›ืจ Internal Link

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string Yes
id string No
updateTenantBody UpdateTenantBody No

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื”ืขืœืืช ืชืžื•ื ื” Internal Link

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
file string ืœื
sizePreset SizePreset ืœื
urlId string ื›ืŸ

ืชื’ื•ื‘ื”

ืžื—ื–ื™ืจ: 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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
userId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
userId string ืœื
limit float64 ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ืชื’ ืžืฉืชืžืฉ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
createUserBadgeParams CreateUserBadgeParams ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ืชื’ ืžืฉืชืžืฉ Internal Link

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
userId string ืœื
badgeId string ืœื
displayedOnComments bool ืœื
limit float64 ืœื
skip float64 ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืชื’ ืžืฉืชืžืฉ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
updateUserBadgeParams UpdateUserBadgeParams ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
pageSize int ืœื
afterId string ืœื
includeContext bool ืœื
afterCreatedAt int64 ืœื
unreadOnly bool ืœื
dmOnly bool ืœื
noDm bool ืœื
includeTranslations bool ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
afterId string ืœื
afterCreatedAt int64 ืœื
unreadOnly bool ืœื
dmOnly bool ืœื
noDm bool ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืกื˜ื˜ื•ืก ืžื ื•ื™ ืœื”ื•ื“ืขื•ืช ืชื’ื•ื‘ื•ืช ืฉืœ ืžืฉืชืžืฉ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
notificationId string string ืœื
optedInOrOut string ืœื
commentId string ื›ืŸ
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืกื˜ื˜ื•ืก ืžื ื•ื™ ืœื”ื•ื“ืขื•ืช ื“ืคื™ื ืฉืœ ืžืฉืชืžืฉ Internal Link

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ
url string ืœื
pageTitle string ืœื
subscribedOrUnsubscribed string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืขื“ื›ื•ืŸ ืกื˜ื˜ื•ืก ื”ืชืจืื•ืช ืžืฉืชืžืฉ Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
notificationId string ืœื
newStatus string ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlIdWS string ืœื
userIds string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื—ื™ืคื•ืฉ ืžืฉืชืžืฉื™ื Internal Link

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

ืฉื ืกื•ื’ ื—ื•ื‘ื” ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ
usernameStartsWith string ืœื
mentionGroupIds seq[string] ืœื
sso string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

ื“ื•ื’ืžืช searchUsers
Copy Copy
1
2let (response, httpResponse) = client.searchUsers(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 usernameStartsWith = "jo",
6 mentionGroupIds = @["editors", "sports-team"],
7 sso = "sso-abc-456"
8)
9
10if response.isSome:
11 let users = response.get()
12 echo "Users found: ", users
13else:
14 echo "No users found; HTTP status: ", httpResponse.status
15

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

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

Name Type Required Description
tenantId string ื›ืŸ
id string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ื™ืฆื™ืจืช ื”ืฆื‘ืขื” Internal Link

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
commentId string ื›ืŸ
direction string ืœื
userId string ืœื
anonUserId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

ืฉื ืกื•ื’ ื ื“ืจืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
id string ืœื
editKey string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

ืงื‘ืœืช ื”ืฆื‘ืขื•ืช Internal Link

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

ืฉื ืกื•ื’ ื“ืจื•ืฉ ืชื™ืื•ืจ
tenantId string ื›ืŸ
urlId string ื›ืŸ

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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

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

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

Name Type Required Description
tenantId string ื›ืŸ
urlId string ื›ืŸ
userId string ืœื
anonUserId string ืœื

ืชื’ื•ื‘ื”

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

ื“ื•ื’ืžื”

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


ื–ืงื•ืง ืœืขื–ืจื”?

ืื ืชื™ืชืงืœ ื‘ื‘ืขื™ื•ืช ืื• ืื ื™ืฉ ืœืš ืฉืืœื•ืช ืœื’ื‘ื™ Nim SDK, ืื ื:

ืชืจื•ืžื•ืช

ืชืจื•ืžื•ืช ืžืชืงื‘ืœื•ืช ื‘ื‘ืจื›ื”! ืื ื ื‘ืงืจ ื‘ืžืื’ืจ ื”-GitHub ืœืงื‘ืœืช ื”ื ื—ื™ื•ืช ืœืชืจื•ืžื”.