FastComments.com

FastComments Nim SDK

This is the official Nim SDK for FastComments.

Official Nim SDK for the FastComments API

Repository

View on GitHub

Requirements Internal Link

  • Nim >= 1.6.0
  • nimcrypto >= 0.5.4

Installation Internal Link

Using Nimble

nimble install fastcomments

Building from Source

nimble build

Library Contents

This library contains the generated API client and the SSO utilities to make working with the API easier.

Public vs Secured APIs

For the API client, there are two API modules, api_default and api_public. The api_default contains methods that require your API key, and api_public contains api calls that can be made directly from a browser/mobile device/etc without authentication.

Quick Start Internal Link

Using Authenticated APIs (DefaultAPI)

Important: Authenticated endpoints require your API key to be set as the x-api-key header.

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"

# Make authenticated API calls
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"

Using Public APIs (PublicAPI)

Public endpoints don't require authentication:

import httpclient
import fastcomments
import fastcomments/apis/api_public

let client = newHttpClient()

# Make public API calls
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"

Common Issues

  1. 401 authentication error: Make sure you set the x-api-key header on your HttpClient before making DefaultAPI requests: client.headers["x-api-key"] = "your-api-key"
  2. Wrong API class: Use api_default for server-side authenticated requests, api_public for client-side/public requests.

Making API Calls Internal Link

All API methods in this SDK return tuples of (Option[ResponseType], Response). The first element contains the parsed response if successful, and the second element is the raw HTTP response.

Example: Fetching Comments

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"

Notes Internal Link

Broadcast Ids

You'll see you're supposed to pass a broadcastId in some API calls. When you receive events, you'll get this ID back, so you know to ignore the event if you plan to optimistically apply changes on the client (which you'll probably want to do since it offers the best experience). Pass a UUID here. The ID should be unique enough to not occur twice in a browser session.

SSO (Single Sign-On)

For SSO examples, see below.

SSO Usage Internal Link

Simple 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

Secure 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

Testing Internal Link

Set the required environment variables:

export FASTCOMMENTS_API_KEY="your-api-key"
export FASTCOMMENTS_TENANT_ID="your-tenant-id"

Run the tests:

nimble test

Or run specific tests:

nim c -r tests/test_sso.nim
nim c -r tests/test_sso_integration.nim

Development Internal Link

To update the generated client from the OpenAPI spec:

./update.sh

addDomainConfig Internal Link

Parameters

Name Type Required Description
tenantId string Yes
addDomainConfigParams AddDomainConfigParams No

Response

Returns: Option[AddDomainConfig_200_response]

Example

addDomainConfig Example
Copy Copy
1
2let params = AddDomainConfigParams(
3 domain = "news.example.com",
4 enabled = true,
5 allowSubdomains = true,
6 allowedOrigins = @["https://news.example.com"],
7 description = "Primary domain for news site"
8)
9let (response, httpResponse) = client.addDomainConfig(tenantId = "my-tenant-123", addDomainConfigParams = params)
10if response.isSome:
11 let addedConfig = response.get()
12 echo "Domain config added for: ", addedConfig.domain
13

addPage Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createAPIPageData CreateAPIPageData No

Response

Returns: Option[AddPageAPIResponse]

Example

addPage Example
Copy Copy
1
2let (response, httpResponse) = client.addPage(tenantId = "my-tenant-123", createAPIPageData = CreateAPIPageData())
3if response.isSome:
4 let addedPage = response.get()
5 discard addedPage
6

addSSOUser Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createAPISSOUserData CreateAPISSOUserData No

Response

Returns: Option[AddSSOUserAPIResponse]

Example

addSSOUser Example
Copy Copy
1
2let (response, httpResponse) = client.addSSOUser(tenantId = "my-tenant-123",
3 createAPISSOUserData = CreateAPISSOUserData(externalId = "user-789",
4 email = "jane.doe@newsorg.com",
5 name = "Jane Doe",
6 isVerified = true,
7 roles = @["editor"]))
8if response.isSome:
9 let added = response.get()
10 echo "SSO user added:", $added
11else:
12 echo "Failed to add SSO user, HTTP status:", httpResponse.status
13

aggregate Internal Link

Parameters

Name Type Required Description
tenantId string Yes
aggregationRequest AggregationRequest No
parentTenantId string No
includeStats bool No

Response

Returns: Option[AggregationResponse]

Example

aggregate Example
Copy Copy
1
2let (response, httpResponse) = client.aggregate(tenantId = "my-tenant-123", aggregationRequest = AggregationRequest(), parentTenantId = "", includeStats = false)
3if response.isSome:
4 let agg = response.get()
5 echo "Aggregation succeeded: ", $agg
6else:
7 echo "Aggregation failed, HTTP response: ", $httpResponse
8

aggregateQuestionResults Internal Link

Parameters

Name Type Required Description
tenantId string Yes
questionId string No
questionIds seq[string] No
urlId string Yes
timeBucket AggregateTimeBucket No
startDate string No
forceRecalculate bool No

Response

Returns: Option[AggregateQuestionResults_200_response]

Example

aggregateQuestionResults Example
Copy Copy
1
2let (response, httpResponse) = client.aggregateQuestionResults(
3 tenantId = "my-tenant-123",
4 questionId = "like-button",
5 questionIds = @["q-456", "q-789"],
6 urlId = "news/article-123",
7 timeBucket = AggregateTimeBucket.daily,
8 startDate = "2025-01-01T00:00:00Z",
9 forceRecalculate = true
10)
11if response.isSome:
12 let aggregated = response.get()
13 discard aggregated
14

blockFromCommentPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
publicBlockFromCommentParams PublicBlockFromCommentParams No
sso string No

Response

Returns: Option[BlockFromCommentPublic_200_response]

Example

blockFromCommentPublic Example
Copy Copy
1
2let params = PublicBlockFromCommentParams(
3 reason: "Repeated spam and abusive language",
4 durationMinutes: 1440,
5 notify: true,
6 tags: @["spam", "abuse"]
7)
8let (response, httpResponse) = client.blockFromCommentPublic(
9 tenantId = "my-tenant-123",
10 commentId = "cmt-987654",
11 publicBlockFromCommentParams = params,
12 sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
13)
14if response.isSome:
15 let blockResult = response.get()
16 discard blockResult
17

blockUserFromComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
blockFromCommentParams BlockFromCommentParams No
userId string No
anonUserId string No

Response

Returns: Option[BlockFromCommentPublic_200_response]

Example

blockUserFromComment Example
Copy Copy
1
2let params = BlockFromCommentParams(reason = "Abusive language", temporary = true, durationMinutes = 1440, tags = @["abuse", "spam"])
3let (response, httpResponse) = client.blockUserFromComment(tenantId = "my-tenant-123", id = "cmt-98765", blockFromCommentParams = params, userId = "user-4321", anonUserId = "")
4if response.isSome:
5 let blocked = response.get()
6 discard blocked
7 echo "Block request succeeded, HTTP status: ", httpResponse.status
8else:
9 echo "No block response, HTTP status: ", httpResponse.status
10

bulkAggregateQuestionResults Internal Link

Parameters

Name Type Required Description
tenantId string Yes
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest No
forceRecalculate bool No

Response

Returns: Option[BulkAggregateQuestionResults_200_response]

Example

bulkAggregateQuestionResults Example
Copy Copy
1
2let (response, httpResponse) = client.bulkAggregateQuestionResults(
3 tenantId = "my-tenant-123",
4 bulkAggregateQuestionResultsRequest = BulkAggregateQuestionResultsRequest(
5 questionIds: @["q-123", "q-456"],
6 startDate: "2025-01-01T00:00:00Z",
7 endDate: "2025-01-31T23:59:59Z"
8 ),
9 forceRecalculate = false
10)
11
12if response.isSome:
13 let results = response.get()
14 echo "Aggregated question results received for tenant:", "my-tenant-123"
15 echo results
16

checkedCommentsForBlocked Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentIds string No
sso string No

Response

Returns: Option[CheckedCommentsForBlocked_200_response]

Example

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

combineCommentsWithQuestionResults Internal Link

Parameters

Name Type Required Description
tenantId string Yes
questionId string No
questionIds seq[string] No
urlId string Yes
startDate string No
forceRecalculate bool No
minValue float64 No
maxValue float64 No
limit float64 No

Response

Returns: Option[CombineCommentsWithQuestionResults_200_response]

Example

combineCommentsWithQuestionResults Example
Copy Copy
1
2let (response, httpResponse) = client.combineCommentsWithQuestionResults(
3 tenantId = "my-tenant-123",
4 questionId = "",
5 questionIds = @[],
6 urlId = "news/article-title",
7 startDate = "",
8 forceRecalculate = false,
9 minValue = 0.0,
10 maxValue = 0.0,
11 limit = 0.0
12)
13
14if response.isSome:
15 let combined = response.get()
16 discard combined
17

createCommentPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlId string Yes
broadcastId string No
commentData CommentData No
sessionId string No
sso string No

Response

Returns: Option[CreateCommentPublic_200_response]

Example

createCommentPublic Example
Copy Copy
1
2let (response, httpResponse) = client.createCommentPublic(
3 tenantId = "my-tenant-123",
4 urlId = "news/2025/ai-ethics",
5 broadcastId = "broadcast-456",
6 commentData = CommentData(
7 content = "Insightful article about AI governance and policy implications.",
8 authorName = "Jane Doe",
9 authorEmail = "jane.doe@example.com",
10 isPublic = true,
11 tags = @["ai", "ethics"]
12 ),
13 sessionId = "sess-789",
14 sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
15)
16
17if response.isSome:
18 let created = response.get()
19 discard created
20

createFeedPost Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createFeedPostParams CreateFeedPostParams No
broadcastId string No
isLive bool No
doSpamCheck bool No
skipDupCheck bool No

Response

Returns: Option[CreateFeedPost_200_response]

Example

createFeedPost Example
Copy Copy
1
2let (response, httpResponse) = client.createFeedPost(
3 tenantId = "my-tenant-123",
4 createFeedPostParams = CreateFeedPostParams(),
5 broadcastId = "broadcast-456",
6 isLive = true,
7 doSpamCheck = true,
8 skipDupCheck = false
9)
10if response.isSome:
11 let created = response.get()
12 echo created
13else:
14 echo "No response body, HTTP status: ", httpResponse.statusCode
15

createFeedPostPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createFeedPostParams CreateFeedPostParams No
broadcastId string No
sso string No

Response

Returns: Option[CreateFeedPostPublic_200_response]

Example

createFeedPostPublic Example
Copy Copy
1
2let (response, httpResponse) = client.createFeedPostPublic(
3 tenantId = "my-tenant-123",
4 createFeedPostParams = CreateFeedPostParams(
5 title = "New Feature: Real-time Comments",
6 content = "FastComments now supports real-time threading and moderation across articles.",
7 authorId = "editor-42",
8 tags = @["product","release","comments"],
9 isPublished = true
10 ),
11 broadcastId = "",
12 sso = ""
13)
14
15if response.isSome:
16 let created = response.get()
17 echo "Created feed post:", created
18

createSubscription Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createAPIUserSubscriptionData CreateAPIUserSubscriptionData No

Response

Returns: Option[CreateSubscriptionAPIResponse]

Example

createSubscription Example
Copy Copy
1
2let createData = CreateAPIUserSubscriptionData(
3 email = "john.doe@example.com",
4 urlId = "news/politics/2025-election",
5 subscribed = true,
6 frequency = "immediate",
7 tags = @["politics", "election"]
8)
9
10let (response, httpResponse) = client.createSubscription(tenantId = "my-tenant-123", createAPIUserSubscriptionData = createData)
11
12if response.isSome:
13 let subscription = response.get()
14 echo "Created subscription for: ", subscription.email
15else:
16 echo "Subscription creation failed, status: ", $httpResponse.statusCode
17

createUserBadge Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createUserBadgeParams CreateUserBadgeParams No

Response

Returns: Option[CreateUserBadge_200_response]

Example

createUserBadge Example
Copy Copy
1
2let (response, httpResponse) = client.createUserBadge(tenantId = "my-tenant-123", createUserBadgeParams = CreateUserBadgeParams())
3if response.isSome:
4 let createdBadge = response.get()
5 echo "Created badge:", $createdBadge
6else:
7 echo "Create badge failed:", $httpResponse
8

deleteComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
contextUserId string No
isLive bool No

Response

Returns: Option[DeleteComment_200_response]

Example

deleteComment Example
Copy Copy
1
2let (response, httpResponse) = client.deleteComment(tenantId = "my-tenant-123", id = "", contextUserId = "", isLive = false)
3if response.isSome:
4 let deleted = response.get()
5 echo "DeleteComment response received"
6else:
7 echo "No DeleteComment response body received"
8

deleteCommentPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
broadcastId string No
editKey string No
sso string No

Response

Returns: Option[DeleteCommentPublic_200_response]

Example

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

deleteCommentVote Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
voteId string No
urlId string Yes
broadcastId string No
editKey string No
sso string No

Response

Returns: Option[DeleteCommentVote_200_response]

Example

deleteCommentVote Example
Copy Copy
1
2let (response, httpResponse) = client.deleteCommentVote(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654",
5 voteId = "",
6 urlId = "news/2025/fastcomments-case-study",
7 broadcastId = "",
8 editKey = "",
9 sso = ""
10)
11
12if response.isSome:
13 let deleted = response.get()
14 echo "DeleteCommentVote succeeded: ", $deleted
15else:
16 echo "DeleteCommentVote failed, HTTP response: ", $httpResponse
17

deleteDomainConfig Internal Link

Parameters

Name Type Required Description
tenantId string Yes
domain string No

Response

Returns: Option[DeleteDomainConfig_200_response]

Example

deleteDomainConfig Example
Copy Copy
1
2let (response, httpResponse) = client.deleteDomainConfig(tenantId = "my-tenant-123", domain = "news.example.com")
3if response.isSome:
4 let deletedConfig = response.get()
5 echo deletedConfig
6else:
7 echo "No deleteDomainConfig response"
8echo httpResponse
9

deleteFeedPostPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
postId string No
broadcastId string No
sso string No

Response

Returns: Option[DeleteFeedPostPublic_200_response]

Example

deleteFeedPostPublic Example
Copy Copy
1
2let (response, httpResponse) = client.deleteFeedPostPublic(tenantId = "my-tenant-123", postId = "", broadcastId = "", sso = "")
3
4if response.isSome:
5 let deleted = response.get()
6 discard deleted
7else:
8 discard httpResponse
9

deletePage Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No

Response

Returns: Option[DeletePageAPIResponse]

Example

deletePage Example
Copy Copy
1
2let (response, httpResponse) = client.deletePage(tenantId = "my-tenant-123", id = "news/article-2025-11-22")
3if response.isSome:
4 let deleted = response.get()
5 echo "DeletePage response received"
6 echo deleted
7else:
8 echo "No DeletePage response"
9

deleteSSOUser Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
deleteComments bool No
commentDeleteMode string No

Response

Returns: Option[DeleteSSOUserAPIResponse]

Example

deleteSSOUser Example
Copy Copy
1
2let (response, httpResponse) = client.deleteSSOUser(
3 tenantId = "my-tenant-123",
4 id = "user-789",
5 deleteComments = true,
6 commentDeleteMode = "hard"
7)
8
9if response.isSome:
10 let apiResp = response.get()
11 echo "SSO user delete response received"
12 discard apiResp
13

deleteSubscription Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
userId string No

Response

Returns: Option[DeleteSubscriptionAPIResponse]

Example

deleteSubscription Example
Copy Copy
1
2let (response, httpResponse) = client.deleteSubscription(tenantId = "my-tenant-123", id = "", userId = "")
3if response.isSome:
4 let deleteResp = response.get()
5 echo "Delete subscription response received for tenant: my-tenant-123"
6

deleteUserBadge Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No

Response

Returns: Option[UpdateUserBadge_200_response]

Example

deleteUserBadge Example
Copy Copy
1
2let (response, httpResponse) = client.deleteUserBadge(tenantId = "my-tenant-123", id = "badge-456")
3if response.isSome:
4 let deletedBadge = response.get()
5 echo "Badge deleted for tenant my-tenant-123"
6else:
7 echo "No badge returned"
8

flagComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
userId string No
anonUserId string No

Response

Returns: Option[FlagComment_200_response]

Example

flagComment Example
Copy Copy
1
2let (response, httpResponse) = client.flagComment(tenantId = "my-tenant-123", id = "cmt-987654", userId = "user-42", anonUserId = "")
3if response.isSome:
4 let flagResult = response.get()
5 echo "Flagged comment:", flagResult
6else:
7 echo "Failed to flag comment. HTTP status:", httpResponse.status
8

flagCommentPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
isFlagged bool No
sso string No

Response

Returns: Option[FlagCommentPublic_200_response]

Example

flagCommentPublic Example
Copy Copy
1
2let (response, httpResponse) = client.flagCommentPublic(tenantId = "my-tenant-123", commentId = "comment-abc123", isFlagged = false, sso = "")
3if response.isSome:
4 let flagged = response.get()
5 echo flagged
6else:
7 echo "No response returned"
8

getAuditLogs Internal Link

Parameters

Name Type Required Description
tenantId string Yes
limit float64 No
skip float64 No
order SORTDIR No
after float64 No
before float64 No

Response

Returns: Option[GetAuditLogs_200_response]

Example

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

getComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No

Response

Returns: Option[GetComment_200_response]

Example

getComment Example
Copy Copy
1
2let (response, httpResponse) = client.getComment(tenantId = "my-tenant-123", id = "cmt-456789")
3if response.isSome:
4 let comment = response.get()
5 discard comment
6else:
7 discard httpResponse
8

getComments Internal Link

Parameters

Name Type Required Description
tenantId string Yes
page int No
limit int No
skip int No
asTree bool No
skipChildren int No
limitChildren int No
maxTreeDepth int No
urlId string Yes
userId string No
anonUserId string No
contextUserId string No
hashTag string No
parentId string No
direction SortDirections No

Response

Returns: Option[GetComments_200_response]

Example

getComments Example
Copy Copy
1
2let (response, httpResponse) = client.getComments(
3 tenantId = "my-tenant-123",
4 page = 1,
5 limit = 25,
6 skip = 0,
7 asTree = true,
8 skipChildren = 0,
9 limitChildren = 5,
10 maxTreeDepth = 3,
11 urlId = "news/article-2025-innovation",
12 userId = "user-987",
13 anonUserId = "",
14 contextUserId = "",
15 hashTag = "product-launch",
16 parentId = "",
17 direction = SortDirections.Desc)
18
19if response.isSome:
20 let comments = response.get()
21 discard comments
22

getCommentsPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlId string Yes
page int No
direction SortDirections No
sso string No
skip int No
skipChildren int No
limit int No
limitChildren int No
countChildren bool No
fetchPageForCommentId string No
includeConfig bool No
countAll bool No
includei10n bool No
locale string No
modules string No
isCrawler bool No
includeNotificationCount bool No
asTree bool No
maxTreeDepth int No
useFullTranslationIds bool No
parentId string No
searchText string No
hashTags seq[string] No
userId string No
customConfigStr string No
afterCommentId string No
beforeCommentId string No

Response

Returns: Option[GetCommentsPublic_200_response]

Example

getCommentsPublic Example
Copy Copy
1
2let (response, httpResponse) = client.getCommentsPublic(
3 tenantId = "my-tenant-123",
4 urlId = "news/2025/important-update",
5 page = 1,
6 direction = SortDirections.desc,
7 sso = "",
8 skip = 0,
9 skipChildren = 0,
10 limit = 20,
11 limitChildren = 5,
12 countChildren = false,
13 fetchPageForCommentId = "",
14 includeConfig = true,
15 countAll = false,
16 includei10n = false,
17 locale = "en-US",
18 modules = "",
19 isCrawler = false,
20 includeNotificationCount = true,
21 asTree = true,
22 maxTreeDepth = 3,
23 useFullTranslationIds = false,
24 parentId = "",
25 searchText = "",
26 hashTags = @["breaking", "announcement"],
27 userId = "",
28 customConfigStr = "",
29 afterCommentId = "",
30 beforeCommentId = ""
31)
32
33if response.isSome:
34 let comments = response.get()
35 echo "Fetched comments: ", comments
36

getCommentText Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
editKey string No
sso string No

Response

Returns: Option[GetCommentText_200_response]

Example

getCommentText Example
Copy Copy
1
2let (response, httpResponse) = client.getCommentText(tenantId = "my-tenant-123", commentId = "cmt-9a8b7c", editKey = "", sso = "")
3if response.isSome:
4 let commentText = response.get()
5 echo commentText
6

getCommentVoteUserNames Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
dir int No
sso string No

Response

Returns: Option[GetCommentVoteUserNames_200_response]

Example

getCommentVoteUserNames Example
Copy Copy
1
2let (response, httpResponse) = client.getCommentVoteUserNames(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654321",
5 dir = 0,
6 sso = ""
7)
8
9if response.isSome:
10 let voteUserNames = response.get()
11 echo voteUserNames
12else:
13 echo "No vote user names returned"
14

getDomainConfig Internal Link

Parameters

Name Type Required Description
tenantId string Yes
domain string No

Response

Returns: Option[GetDomainConfig_200_response]

Example

getDomainConfig Example
Copy Copy
1
2let (response, httpResponse) = client.getDomainConfig(tenantId = "my-tenant-123", domain = "news.techblog.com")
3if response.isSome:
4 let domainConfig = response.get()
5 echo "Loaded domain config for tenant:", " my-tenant-123"
6else:
7 echo "No domain config found"
8

getDomainConfigs Internal Link

Parameters

Name Type Required Description
tenantId string Yes

Response

Returns: Option[GetDomainConfigs_200_response]

Example

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

getEventLog Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlId string Yes
userIdWS string No
startTime int64 No
endTime int64 No

Response

Returns: Option[GetEventLog_200_response]

Example

getEventLog Example
Copy Copy
1
2let (response, httpResponse) = client.getEventLog(
3 tenantId = "my-tenant-123",
4 urlId = "news/sports-world-cup-2025",
5 userIdWS = "",
6 startTime = int64(0),
7 endTime = int64(0)
8)
9if response.isSome:
10 let eventLog = response.get()
11

getFeedPosts Internal Link

Parameters

Name Type Required Description
tenantId string Yes
afterId string No
limit int No
tags seq[string] No

Response

Returns: Option[GetFeedPosts_200_response]

Example

getFeedPosts Example
Copy Copy
1
2let (response, httpResponse) = client.getFeedPosts(tenantId = "my-tenant-123", afterId = "", limit = 0, tags = @[])
3if response.isSome:
4 let feed = response.get()
5 discard feed
6

getFeedPostsPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
afterId string No
limit int No
tags seq[string] No
sso string No
isCrawler bool No
includeUserInfo bool No

Response

Returns: Option[GetFeedPostsPublic_200_response]

Example

getFeedPostsPublic Example
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 "Fetched feed posts:", $feed
15else:
16 echo "No feed posts returned. HTTP response:", $httpResponse
17

getFeedPostsStats Internal Link

Parameters

Name Type Required Description
tenantId string Yes
postIds seq[string] No
sso string No

Response

Returns: Option[GetFeedPostsStats_200_response]

Example

getFeedPostsStats Example
Copy Copy
1
2let (response, httpResponse) = client.getFeedPostsStats(tenantId = "my-tenant-123", postIds = @["news/2025/election-coverage", "blog/tech/ai-trends"], sso = "")
3if response.isSome:
4 let stats = response.get()
5 echo "Fetched feed posts stats; HTTP status: ", httpResponse.status
6else:
7 echo "No stats returned; HTTP status: ", httpResponse.status
8

getGlobalEventLog Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlId string Yes
userIdWS string No
startTime int64 No
endTime int64 No

Response

Returns: Option[GetEventLog_200_response]

Example

getGlobalEventLog Example
Copy Copy
1
2let (response, httpResponse) = client.getGlobalEventLog(
3 tenantId = "my-tenant-123",
4 urlId = "news/how-to-code-in-nim",
5 userIdWS = "",
6 startTime = int64(0),
7 endTime = int64(0)
8)
9
10if response.isSome:
11 let eventLog = response.get()
12 echo "Received event log:", eventLog
13

getPageByURLId Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlId string Yes

Response

Returns: Option[GetPageByURLIdAPIResponse]

Example

getPageByURLId Example
Copy Copy
1
2let (response, httpResponse) = client.getPageByURLId(tenantId = "my-tenant-123", urlId = "news/why-nim-shines")
3if response.isSome:
4 let page = response.get()
5 echo "Page retrieved successfully"
6else:
7 echo "Page not found"
8

getPages Internal Link

Parameters

Name Type Required Description
tenantId string Yes

Response

Returns: Option[GetPagesAPIResponse]

Example

getPages Example
Copy Copy
1
2let (response, httpResponse) = client.getPages(tenantId = "my-tenant-123")
3if response.isSome:
4 let pages = response.get()
5 echo "Pages retrieved for tenant:", " my-tenant-123"
6 echo pages
7else:
8 echo "No pages returned, HTTP response:", httpResponse
9

getSSOUserByEmail Internal Link

Parameters

Name Type Required Description
tenantId string Yes
email string No

Response

Returns: Option[GetSSOUserByEmailAPIResponse]

Example

getSSOUserByEmail Example
Copy Copy
1
2let (response, httpResponse) = client.getSSOUserByEmail(tenantId = "my-tenant-123", email = "jane.doe@newsorg.com")
3if response.isSome:
4 let ssoUser = response.get()
5 echo ssoUser
6else:
7 echo "SSO user not found"
8

getSSOUserById Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No

Response

Returns: Option[GetSSOUserByIdAPIResponse]

Example

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

getSSOUsers Internal Link

Parameters

Name Type Required Description
tenantId string Yes
skip int No

Response

Returns: Option[GetSSOUsers_200_response]

Example

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

getSubscriptions Internal Link

Parameters

Name Type Required Description
tenantId string Yes
userId string No

Response

Returns: Option[GetSubscriptionsAPIResponse]

Example

getSubscriptions Example
Copy Copy
1
2let (response, httpResponse) = client.getSubscriptions(tenantId = "my-tenant-123", userId = "user-456")
3if response.isSome:
4 let subscriptions = response.get()
5 echo "Received subscriptions for tenant my-tenant-123:"
6 echo subscriptions
7else:
8 echo "No subscriptions found, HTTP status: ", $httpResponse.status
9

getUserBadge Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No

Response

Returns: Option[GetUserBadge_200_response]

Example

getUserBadge Example
Copy Copy
1
2let (response, httpResponse) = client.getUserBadge(tenantId = "my-tenant-123", id = "")
3if response.isSome:
4 let badge = response.get()
5 echo "Badge fetched:", $badge
6else:
7 echo "No badge returned"
8

getUserBadgeProgressById Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No

Response

Returns: Option[GetUserBadgeProgressById_200_response]

Example

getUserBadgeProgressById Example
Copy Copy
1
2let (response, httpResponse) = client.getUserBadgeProgressById(tenantId = "my-tenant-123", id = "badge-456")
3if response.isSome:
4 let badgeProgress = response.get()
5 discard badgeProgress
6else:
7 discard httpResponse
8

getUserBadgeProgressByUserId Internal Link

Parameters

Name Type Required Description
tenantId string Yes
userId string No

Response

Returns: Option[GetUserBadgeProgressById_200_response]

Example

getUserBadgeProgressByUserId Example
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 "Received badge progress for user: ", "user-456"
6else:
7 echo "No badge progress found, HTTP status: ", $httpResponse.status
8

getUserBadgeProgressList Internal Link

Parameters

Name Type Required Description
tenantId string Yes
userId string No
limit float64 No
skip float64 No

Response

Returns: Option[GetUserBadgeProgressList_200_response]

Example

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

getUserBadges Internal Link

Parameters

Name Type Required Description
tenantId string Yes
userId string No
badgeId string No
displayedOnComments bool No
limit float64 No
skip float64 No

Response

Returns: Option[GetUserBadges_200_response]

Example

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

getUserNotificationCount Internal Link

Parameters

Name Type Required Description
tenantId string Yes
sso string No

Response

Returns: Option[GetUserNotificationCount_200_response]

Example

getUserNotificationCount Example
Copy Copy
1
2let (response, httpResponse) = client.getUserNotificationCount(tenantId = "my-tenant-123", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.dummySignature")
3if response.isSome:
4 let countResp = response.get()
5 discard countResp
6else:
7 discard httpResponse
8

getUserNotifications Internal Link

Parameters

Name Type Required Description
tenantId string Yes
pageSize int No
afterId string No
includeContext bool No
afterCreatedAt int64 No
unreadOnly bool No
dmOnly bool No
noDm bool No
includeTranslations bool No
sso string No

Response

Returns: Option[GetUserNotifications_200_response]

Example

getUserNotifications Example
Copy Copy
1
2let (response, httpResponse) = client.getUserNotifications(
3 tenantId = "my-tenant-123",
4 pageSize = 25,
5 afterId = "notif-789",
6 includeContext = true,
7 afterCreatedAt = int64(1700000000),
8 unreadOnly = false,
9 dmOnly = false,
10 noDm = false,
11 includeTranslations = true,
12 sso = "sso-user-452"
13)
14
15if response.isSome:
16 let notifications = response.get()
17 echo "Received user notifications"
18else:
19 echo "No notifications available"
20

getUserPresenceStatuses Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlIdWS string No
userIds string No

Response

Returns: Option[GetUserPresenceStatuses_200_response]

Example

getUserPresenceStatuses Example
Copy Copy
1
2let (response, httpResponse) = client.getUserPresenceStatuses(tenantId = "my-tenant-123", urlIdWS = "", userIds = "")
3
4if response.isSome:
5 let statuses = response.get()
6 echo "Presence statuses: ", $statuses
7else:
8 echo "No presence statuses returned"
9

getUserReactsPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
postIds seq[string] No
sso string No

Response

Returns: Option[GetUserReactsPublic_200_response]

Example

getUserReactsPublic Example
Copy Copy
1
2let (response, httpResponse) = client.getUserReactsPublic(tenantId = "my-tenant-123", postIds = @[], sso = "")
3if response.isSome:
4 let reacts = response.get()
5 echo "Retrieved user reacts for tenant my-tenant-123"
6else:
7 echo "No public reacts returned"
8

lockComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
broadcastId string No
sso string No

Response

Returns: Option[LockComment_200_response]

Example

lockComment Example
Copy Copy
1
2let (response, httpResponse) = client.lockComment(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456789",
5 broadcastId = "bcast-2025-08-01",
6 sso = "user-session-token-abc123"
7)
8if response.isSome:
9 let lockInfo = response.get()
10 discard lockInfo
11

patchDomainConfig Internal Link

Parameters

Name Type Required Description
tenantId string Yes
domainToUpdate string No
patchDomainConfigParams PatchDomainConfigParams No

Response

Returns: Option[GetDomainConfig_200_response]

Example

patchDomainConfig Example
Copy Copy
1
2let params = PatchDomainConfigParams(
3 allowedOrigins = @["https://news.example.com"],
4 enableCors = true,
5 redirectToHttps = true,
6 maxCommentLength = 1000
7)
8
9let (response, httpResponse) = client.patchDomainConfig(
10 tenantId = "my-tenant-123",
11 domainToUpdate = "news.example.com",
12 patchDomainConfigParams = params
13)
14
15if response.isSome:
16 let config = response.get()
17 echo "Updated domain: " & config.domain & " status: " & $httpResponse.status
18

patchPage Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
updateAPIPageData UpdateAPIPageData No

Response

Returns: Option[PatchPageAPIResponse]

Example

patchPage Example
Copy Copy
1
2let updateData = UpdateAPIPageData(
3 title = "Homepage — Daily Times",
4 slug = "news/homepage",
5 enabled = true,
6 tags = @["featured", "editorial"],
7 description = "Updated summary for the homepage",
8 priority = 0
9)
10let (response, httpResponse) = client.patchPage(tenantId = "my-tenant-123", id = "page-homepage-456", updateAPIPageData = updateData)
11if response.isSome:
12 let page = response.get()
13 echo "Updated page: ", page.id
14else:
15 echo "No response body, status: ", httpResponse.status
16

patchSSOUser Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
updateAPISSOUserData UpdateAPISSOUserData No
updateComments bool No

Response

Returns: Option[PatchSSOUserAPIResponse]

Example

patchSSOUser Example
Copy Copy
1
2let updateData: UpdateAPISSOUserData = UpdateAPISSOUserData(email = "jane.doe@example.com", displayName = "Jane Doe", roles = @["editor", "subscriber"], externalId = "sso-789")
3let (response, httpResponse) = client.patchSSOUser(tenantId = "my-tenant-123", id = "user-456", updateAPISSOUserData = updateData, updateComments = true)
4if response.isSome:
5 let patched = response.get()
6 discard patched
7

pinComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
broadcastId string No
sso string No

Response

Returns: Option[PinComment_200_response]

Example

pinComment Example
Copy Copy
1
2let (response, httpResponse) = client.pinComment(tenantId = "my-tenant-123", commentId = "cmt-987654321", broadcastId = "", sso = "")
3if response.isSome:
4 let pinned = response.get()
5 discard pinned
6

putDomainConfig Internal Link

Parameters

Name Type Required Description
tenantId string Yes
domainToUpdate string No
updateDomainConfigParams UpdateDomainConfigParams No

Response

Returns: Option[GetDomainConfig_200_response]

Example

putDomainConfig Example
Copy Copy
1
2let (response, httpResponse) = client.putDomainConfig(
3 tenantId = "my-tenant-123",
4 domainToUpdate = "news.example.com",
5 updateDomainConfigParams = default(UpdateDomainConfigParams)
6)
7if response.isSome:
8 let domainConfig = response.get()
9 discard domainConfig
10

putSSOUser Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
updateAPISSOUserData UpdateAPISSOUserData No
updateComments bool No

Response

Returns: Option[PutSSOUserAPIResponse]

Example

putSSOUser Example
Copy Copy
1
2let (response, httpResponse) = client.putSSOUser(
3 tenantId = "my-tenant-123",
4 id = "user-9876",
5 updateAPISSOUserData = UpdateAPISSOUserData(
6 name = "Jane Doe",
7 email = "jane.doe@news-site.com",
8 externalId = "ext-456",
9 roles = @["subscriber", "editor"],
10 avatarUrl = "https://news-site.com/avatars/jane.jpg",
11 moderator = false
12 ),
13 updateComments = false
14)
15
16if response.isSome:
17 let respVal = response.get()
18 echo "SSO update succeeded; response object received."
19else:
20 echo "SSO update returned no body; HTTP status: ", httpResponse.status
21

reactFeedPostPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
postId string No
reactBodyParams ReactBodyParams No
isUndo bool No
broadcastId string No
sso string No

Response

Returns: Option[ReactFeedPostPublic_200_response]

Example

reactFeedPostPublic Example
Copy Copy
1
2let reactBody = ReactBodyParams(reaction = "like", metadata = @["section:news"])
3let (response, httpResponse) = client.reactFeedPostPublic(tenantId = "my-tenant-123", postId = "news/article-title-456", reactBodyParams = reactBody, isUndo = false, broadcastId = "broadcast-789", sso = "user-42-sso-token")
4if response.isSome:
5 let result = response.get()
6 echo "Reaction recorded:", result
7else:
8 echo "No response body, HTTP status:", httpResponse.status
9

resetUserNotificationCount Internal Link

Parameters

Name Type Required Description
tenantId string Yes
sso string No

Response

Returns: Option[ResetUserNotifications_200_response]

Example

resetUserNotificationCount Example
Copy Copy
1
2let (response, httpResponse) = client.resetUserNotificationCount(tenantId = "my-tenant-123", sso = "")
3if response.isSome:
4 let resetInfo = response.get()
5 echo "Notifications reset:", resetInfo
6else:
7 echo "Reset failed"
8

resetUserNotifications Internal Link

Parameters

Name Type Required Description
tenantId string Yes
afterId string No
afterCreatedAt int64 No
unreadOnly bool No
dmOnly bool No
noDm bool No
sso string No

Response

Returns: Option[ResetUserNotifications_200_response]

Example

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

saveComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createCommentParams CreateCommentParams No
isLive bool No
doSpamCheck bool No
sendEmails bool No
populateNotifications bool No

Response

Returns: Option[SaveComment_200_response]

Example

saveComment Example
Copy Copy
1
2let createParams = CreateCommentParams(
3 content = "Great reporting — this clarified the policy changes for me.",
4 authorName = "Ava Thompson",
5 authorEmail = "ava.thompson@journalistmail.com",
6 urlId = "news/2025/energy-incentives",
7 parentId = 0,
8 tags = @["energy", "policy"]
9)
10
11let (response, httpResponse) = client.saveComment(
12 tenantId = "my-tenant-123",
13 createCommentParams = createParams,
14 isLive = true,
15 doSpamCheck = true,
16 sendEmails = true,
17 populateNotifications = false
18)
19
20if response.isSome:
21 let saved = response.get()
22 echo "Comment saved for tenant my-tenant-123"
23

saveCommentsBulk Internal Link

Parameters

Name Type Required Description
tenantId string Yes
createCommentParams seq[CreateCommentParams] No
isLive bool No
doSpamCheck bool No
sendEmails bool No
populateNotifications bool): (Option[seq[SaveComment_200_response]] No
id string No
unBlockFromCommentParams UnBlockFromCommentParams No
userId string No
anonUserId string No

Response

Returns: Option[UnBlockCommentPublic_200_response]

Example

saveCommentsBulk Example
Copy Copy
1
2let createParams = @[
3 CreateCommentParams(
4 urlId = "news/2025-election-analysis",
5 content = "Insightful reporting — thanks for the deep dive.",
6 userId = "user-789",
7 anonUserId = "",
8 parentId = ""
9 )
10]
11
12let unBlockParams = UnBlockFromCommentParams(commentId = "cmt-2345", reason = "User appeal accepted")
13
14let (response, httpResponse) = client.saveCommentsBulk(
15 tenantId = "my-tenant-123",
16 createCommentParams = createParams,
17 isLive = true,
18 doSpamCheck = true,
19 sendEmails = false,
20 populateNotifications = true,
21 id = "op-5678",
22 unBlockFromCommentParams = unBlockParams,
23 userId = "user-789",
24 anonUserId = ""
25)
26
27if response.isSome:
28 let unblockResult = response.get()
29

searchUsers Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlId string Yes
usernameStartsWith string No
mentionGroupIds seq[string] No
sso string No

Response

Returns: Option[SearchUsers_200_response]

Example

searchUsers Example
Copy Copy
1
2let (response, httpResponse) = client.searchUsers(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 usernameStartsWith = "",
6 mentionGroupIds = @[],
7 sso = ""
8)
9
10if response.isSome:
11 let searchResult = response.get()
12 discard searchResult
13

setCommentText Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
broadcastId string No
commentTextUpdateRequest CommentTextUpdateRequest No
editKey string No
sso string No

Response

Returns: Option[SetCommentText_200_response]

Example

setCommentText Example
Copy Copy
1
2let commentUpdate = CommentTextUpdateRequest(text = "Thanks for the update! Clarifying my point.")
3let (response, httpResponse) = client.setCommentText(
4 tenantId = "my-tenant-123",
5 commentId = "cmt-456",
6 broadcastId = "broadcast-789",
7 commentTextUpdateRequest = commentUpdate,
8 editKey = "edit-key-abc-123",
9 sso = "sso-token-xyz"
10)
11if response.isSome:
12 let result = response.get()
13 discard result
14else:
15 discard httpResponse
16

unBlockCommentPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
publicBlockFromCommentParams PublicBlockFromCommentParams No
sso string No

Response

Returns: Option[UnBlockCommentPublic_200_response]

Example

unBlockCommentPublic Example
Copy Copy
1
2let (response, httpResponse) = client.unBlockCommentPublic(tenantId = "my-tenant-123", commentId = "comment-98765", publicBlockFromCommentParams = PublicBlockFromCommentParams(), sso = "")
3
4if response.isSome:
5 let unblocked = response.get()
6 discard unblocked
7

unFlagComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
userId string No
anonUserId string No

Response

Returns: Option[FlagComment_200_response]

Example

unFlagComment Example
Copy Copy
1
2let (response, httpResponse) = client.unFlagComment(tenantId = "my-tenant-123", id = "comment-202311", userId = "user-889", anonUserId = "")
3if response.isSome:
4 let flagResult = response.get()
5 discard flagResult
6else:
7 discard httpResponse
8

unLockComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
broadcastId string No
sso string No

Response

Returns: Option[LockComment_200_response]

Example

unLockComment Example
Copy Copy
1
2let (response, httpResponse) = client.unLockComment(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456",
5 broadcastId = "",
6 sso = ""
7)
8if response.isSome:
9 let unlocked = response.get()
10 echo "Comment unlocked:", unlocked
11else:
12 echo "Unlock failed or no body"
13

unPinComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
broadcastId string No
sso string No

Response

Returns: Option[PinComment_200_response]

Example

unPinComment Example
Copy Copy
1
2let (response, httpResponse) = client.unPinComment(tenantId = "my-tenant-123", commentId = "cmt-987654321", broadcastId = "", sso = "")
3if response.isSome:
4 let pin = response.get()
5 echo pin
6else:
7 echo "Failed to unpin comment"
8 echo httpResponse
9

updateComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
updatableCommentParams UpdatableCommentParams No
contextUserId string No
doSpamCheck bool No
isLive bool No

Response

Returns: Option[FlagCommentPublic_200_response]

Example

updateComment Example
Copy Copy
1
2let updateParams = UpdatableCommentParams(
3 content = "Updated comment to clarify publication timeline",
4 tags = @["news", "timeline"],
5 isApproved = true
6)
7
8let (response, httpResponse) = client.updateComment(
9 tenantId = "my-tenant-123",
10 id = "cmt-987654321",
11 updatableCommentParams = updateParams,
12 contextUserId = "user-42",
13 doSpamCheck = true,
14 isLive = true
15)
16
17if response.isSome:
18 let flagResult = response.get()
19 echo "FlagCommentPublic_200_response received: ", flagResult
20else:
21 echo "No response body; HTTP status: ", httpResponse.status
22

updateFeedPost Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
feedPost FeedPost No

Response

Returns: Option[FlagCommentPublic_200_response]

Example

updateFeedPost Example
Copy Copy
1
2let (response, httpResponse) = client.updateFeedPost(
3 tenantId = "my-tenant-123",
4 id = "feedpost-456",
5 feedPost = FeedPost(
6 title = "Downtown Festival 2025",
7 body = "Join us for the annual downtown festival with live music, food trucks, and family activities.",
8 url = "news/downtown-festival-2025",
9 author = "editor@localnews.com",
10 tags = @["community", "festival"],
11 published = true
12 )
13)
14
15if response.isSome:
16 let result = response.get()
17 echo "FlagCommentPublic response received: ", result
18else:
19 echo "No response returned, HTTP status: ", httpResponse.status
20

updateFeedPostPublic Internal Link

Parameters

Name Type Required Description
tenantId string Yes
postId string No
updateFeedPostParams UpdateFeedPostParams No
broadcastId string No
sso string No

Response

Returns: Option[CreateFeedPostPublic_200_response]

Example

updateFeedPostPublic Example
Copy Copy
1
2let (response, httpResponse) = client.updateFeedPostPublic(
3 tenantId = "my-tenant-123",
4 postId = "post-9876",
5 updateFeedPostParams = UpdateFeedPostParams(
6 title = "Breaking: Major Update on Community Project",
7 content = "Phase 2 completed with improvements to accessibility and performance.",
8 isPinned = false,
9 tags = @["community", "update"],
10 authorId = "editor-42"
11 ),
12 broadcastId = "",
13 sso = ""
14)
15if response.isSome:
16 let postResp = response.get()
17 discard postResp
18

updateUserBadge Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string No
updateUserBadgeParams UpdateUserBadgeParams No

Response

Returns: Option[UpdateUserBadge_200_response]

Example

updateUserBadge Example
Copy Copy
1
2let updateParams = UpdateUserBadgeParams(
3 name = "Top Contributor",
4 color = "#FFD700",
5 icon = "star",
6 isActive = true,
7 rank = 1,
8 tags = @["community", "trusted"]
9)
10
11let (response, httpResponse) = client.updateUserBadge(
12 tenantId = "my-tenant-123",
13 id = "badge-987",
14 updateUserBadgeParams = updateParams
15)
16
17if response.isSome:
18 let updated = response.get()
19 echo "Updated badge: ", updated
20

updateUserNotificationCommentSubscriptionStatus Internal Link

Parameters

Name Type Required Description
tenantId string Yes
notificationId string No
optedInOrOut string No
commentId string Yes
sso string No

Response

Returns: Option[UpdateUserNotificationStatus_200_response]

Example

updateUserNotificationCommentSubscriptionStatus Example
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationCommentSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "",
5 optedInOrOut = "",
6 commentId = "comment-7890",
7 sso = ""
8)
9if response.isSome:
10 let updateInfo = response.get()
11 echo "Received update response for comment:", updateInfo
12else:
13 echo "No response body, HTTP status:", httpResponse.status
14

updateUserNotificationPageSubscriptionStatus Internal Link

Parameters

Name Type Required Description
tenantId string Yes
urlId string Yes
url string No
pageTitle string No
subscribedOrUnsubscribed string No
sso string No

Response

Returns: Option[UpdateUserNotificationStatus_200_response]

Example

updateUserNotificationPageSubscriptionStatus Example
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationPageSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 url = "",
6 pageTitle = "",
7 subscribedOrUnsubscribed = "",
8 sso = ""
9)
10if response.isSome:
11 let updated = response.get()
12 echo "UpdateUserNotificationStatus received"
13else:
14 echo "No UpdateUserNotificationStatus returned, HTTP response available"
15

updateUserNotificationStatus Internal Link

Parameters

Name Type Required Description
tenantId string Yes
notificationId string No
newStatus string No
sso string No

Response

Returns: Option[UpdateUserNotificationStatus_200_response]

Example

updateUserNotificationStatus Example
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "notif-456",
5 newStatus = "read",
6 sso = "ssoToken-abc123"
7)
8
9if response.isSome:
10 let result = response.get()
11 echo "Notification updated:", repr(result)
12else:
13 echo "Failed to update notification. HTTP status:", httpResponse.status
14

uploadImage Internal Link

Parameters

Name Type Required Description
tenantId string Yes
file string No
sizePreset SizePreset No
urlId string Yes

Response

Returns: Option[UploadImageResponse]

Example

uploadImage Example
Copy Copy
1
2let (response, httpResponse) = client.uploadImage(
3 tenantId = "my-tenant-123",
4 file = "",
5 sizePreset = default(SizePreset),
6 urlId = "news/article-how-to-code"
7)
8
9if response.isSome:
10 let uploadResp = response.get()
11 discard uploadResp
12

voteComment Internal Link

Parameters

Name Type Required Description
tenantId string Yes
commentId string Yes
urlId string Yes
broadcastId string No
voteBodyParams VoteBodyParams No
sessionId string No
sso string No

Response

Returns: Option[VoteComment_200_response]

Example

voteComment Example
Copy Copy
1
2let (response, httpResponse) = client.voteComment(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-98765",
5 urlId = "news/2025/tech/ai-advance",
6 broadcastId = "",
7 voteBodyParams = VoteBodyParams(),
8 sessionId = "",
9 sso = ""
10)
11if response.isSome:
12 let voteResp = response.get()
13 echo "Vote succeeded: ", $voteResp
14else:
15 echo "Vote failed, HTTP status: ", $httpResponse.status
16

Need Help?

If you encounter any issues or have questions about the Nim SDK, please:

Contributing

Contributions are welcome! Please visit the GitHub repository for contribution guidelines.