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_default, api_public и api_moderation. Модуль api_default содержит методы, которые требуют ваш API-ключ, а api_public содержит вызовы API, которые можно выполнять напрямую из браузера/мобильного устройства и т.д. без аутентификации. Модуль api_moderation содержит методы для панели модератора.

Методы api_moderation охватывают перечисление, подсчёт, поиск и экспорт комментариев и их журналов; действия модерации, такие как удаление/восстановление комментариев, пометка/флагирование, установка статуса на рассмотрение/спам/одобрение, изменение голосов и повторное открытие/закрытие веток; баны (забанивание пользователя в контексте комментария, отмена бана, предварительные сводки перед баном, статус и настройки бана, а также подсчёт заблокированных пользователей); и значки и доверие (назначение/удаление значка, перечисление ручных значков, получение/установка коэффициента доверия пользователя и получение внутреннего профиля пользователя). Каждый метод api_moderation принимает параметр sso, чтобы вызов был аутентифицирован как модератор SSO.

Быстрый старт Internal Link

Использование аутентифицированных API (DefaultAPI)

Важно: Аутентифицированные конечные точки требуют, чтобы ваш API-ключ был установлен в заголовке x-api-key.

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

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

# Выполнение аутентифицированных вызовов API
let (response, httpResponse) = getComments(
  httpClient = client,
  tenantId = "your-tenant-id",
  page = 0,
  limit = 0,
  skip = 0,
  asTree = false,
  skipChildren = 0,
  limitChildren = 0,
  maxTreeDepth = 0,
  urlId = "your-url-id",
  userId = "",
  anonUserId = "",
  contextUserId = "",
  hashTag = "",
  parentId = "",
  direction = SortDirections.DESC
)

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

Использование публичных API (PublicAPI)

Публичные конечные точки не требуют аутентификации:

import httpclient
import fastcomments
import fastcomments/apis/api_public

let client = newHttpClient()

# Выполнение публичных вызовов API
let (response, httpResponse) = getCommentsPublic(
  httpClient = client,
  tenantId = "your-tenant-id",
  urlId = "your-url-id",
  page = 0,
  direction = SortDirections.DESC,
  sso = "",
  skip = 0,
  skipChildren = 0,
  limit = 0,
  limitChildren = 0,
  countChildren = false,
  fetchPageForCommentId = "",
  includeConfig = false,
  countAll = false,
  includei10n = false,
  locale = "",
  modules = "",
  isCrawler = false,
  includeNotificationCount = false,
  asTree = false,
  maxTreeDepth = 0,
  useFullTranslationIds = false,
  parentId = "",
  searchText = "",
  hashTags = @[],
  userId = "",
  customConfigStr = "",
  afterCommentId = "",
  beforeCommentId = ""
)

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

Использование API модерации (ModerationAPI)

Конечные точки модерации обеспечивают работу панели модератора и аутентифицируются с помощью SSO-токена действующего модератора:

import httpclient
import fastcomments
import fastcomments/apis/api_moderation

let client = newHttpClient()

# Список комментариев в панели модерации
let (response, httpResponse) = getApiComments(
  httpClient = client,
  page = 0,
  count = 30,
  textSearch = "",
  byIPFromComment = "",
  filters = "",
  searchFilters = "",
  sorts = "",
  demo = false,
  sso = "your-sso-token"
)

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

Распространенные проблемы

  1. 401 ошибка аутентификации: Убедитесь, что вы установили заголовок x-api-key в вашем HttpClient перед выполнением запросов DefaultAPI: client.headers["x-api-key"] = "your-api-key"
  2. Неправильный класс API: Используйте api_default для серверных аутентифицированных запросов, api_public для клиентских/публичных запросов, и api_moderation для запросов панели модератора.

Вызовы API Internal Link


Все методы API в этом SDK возвращают кортежи (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

Идентификаторы Broadcast

Вы увидите, что в некоторых вызовах API нужно передавать broadcastId. Когда вы получите события, этот ID вернётся, так что вы сможете игнорировать событие, если планируете оптимистично применить изменения на клиенте (что, скорее всего, вы захотите сделать, так как это обеспечивает лучший опыт). Передавайте здесь UUID. ID должен быть достаточно уникальным, чтобы не встречаться дважды в рамках сессии браузера.

SSO (единого входа)

Для примеров SSO см. ниже.

Использование SSO Internal Link

Простой SSO

import fastcomments/sso

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

echo "SSO Token: ", token

Защищённый SSO

import fastcomments/sso

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

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

echo "Secure SSO Token: ", token

aggregate Internal Link


Агрегирует документы, группируя их (если указан groupBy) и применяя несколько операций. Поддерживаются различные операции (например, sum, countDistinct, avg и т.д.).

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
aggregationRequestAggregationRequestНет
parentTenantIdstringНет
includeStatsboolНет

Ответ

Возвращает: Option[AggregateResponse]

Пример

Пример использования aggregate
Copy Copy
1
2let (response, httpResponse) = client.aggregate(
3 tenantId = "my-tenant-123",
4 aggregationRequest = AggregationRequest(groupBy = @["articleId"], metrics = @["commentCount"], filters = @[], limit = 0),
5 parentTenantId = "",
6 includeStats = false
7)
8
9if response.isSome:
10 let agg = response.get()
11 discard agg
12

getAuditLogs Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
limitfloat64Нет
skipfloat64Нет
orderSORTDIRНет
afterfloat64Нет
beforefloat64Нет

Ответ

Возвращает: Option[GetAuditLogsResponse]

Пример

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

logoutPublic Internal Link

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример использования logoutPublic
Copy Copy
1
2let (response, httpResponse) = client.logoutPublic(tenantId = "my-tenant-123", sessionId = "sess-9a8b7c6d", userId = "editor-87", revokeAll = false, ipAddress = "")
3if response.isSome:
4 let emptyResp = response.get()
5 echo "Logout successful for user: ", "editor-87"
6else:
7 echo "Logout failed"
8

blockFromCommentPublic Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
publicBlockFromCommentParamsPublicBlockFromCommentParamsНет
ssostringНет

Ответ

Возвращает: Option[BlockSuccess]

Пример

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

unBlockCommentPublic Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
publicBlockFromCommentParamsPublicBlockFromCommentParamsНет
ssostringНет

Response

Возвращает: Option[UnblockSuccess]

Пример

Пример unBlockCommentPublic
Copy Copy
1
2let (response, httpResponse) = client.unBlockCommentPublic(tenantId = "my-tenant-123", commentId = "cmt-987654321", publicBlockFromCommentParams = PublicBlockFromCommentParams(), sso = "")
3if response.isSome:
4 let unblockResult = response.get()
5 discard unblockResult
6else:
7 discard httpResponse
8

checkedCommentsForBlocked Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdsstringНет
ssostringНет

Ответ

Возвращает: Option[CheckBlockedCommentsResponse]

Пример

Пример checkedCommentsForBlocked
Copy Copy
1
2let (response, httpResponse) = client.checkedCommentsForBlocked(
3 tenantId = "my-tenant-123",
4 commentIds = "",
5 sso = ""
6)
7if response.isSome:
8 let blockedResp = response.get()
9 echo "Received blocked comments response: ", blockedResp
10else:
11 echo "No response body; HTTP status: ", $httpResponse.status
12

blockUserFromComment Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
blockFromCommentParamsBlockFromCommentParamsНет
userIdstringНет
anonUserIdstringНет

Ответ

Возвращает: Option[BlockSuccess]

Пример

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

createCommentPublic Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
broadcastIdstringНет
commentDataCommentDataНет
sessionIdstringНет
ssostringНет

Ответ

Возвращает: Option[SaveCommentsResponseWithPresence]

Пример

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

deleteComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
contextUserIdstringНет
isLiveboolНет

Ответ

Возвращает: Option[DeleteCommentResult]

Пример

Пример deleteComment
Copy Copy
1
2let (response, httpResponse) = client.deleteComment(tenantId = "my-tenant-123", id = "cmt-98765", contextUserId = "user-456", isLive = true)
3if response.isSome:
4 let result = response.get()
5 echo "DeleteCommentResult received"
6else:
7 echo "No result, HTTP status: ", httpResponse.status
8

deleteCommentPublic Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringНет
editKeystringНет
ssostringНет

Ответ

Возвращает: Option[PublicAPIDeleteCommentResponse]

Пример

deleteCommentPublic Пример
Copy Copy
1
2let (response, httpResponse) = client.deleteCommentPublic(tenantId = "my-tenant-123", commentId = "cmt-987654321", broadcastId = "", editKey = "", sso = "")
3if response.isSome:
4 let deleted = response.get()
5 echo "Delete acknowledged, HTTP status: ", httpResponse.status
6

deleteCommentVote Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
voteIdstringНет
urlIdstringДа
broadcastIdstringНет
editKeystringНет
ssostringНет

Ответ

Возвращает: Option[VoteDeleteResponse]

Пример

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

flagComment Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
userIdstringНет
anonUserIdstringНет

Ответ

Возвращает: Option[FlagCommentResponse]

Пример

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

getComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIGetCommentResponse]

Пример

Пример getComment
Copy Copy
1
2let (response, httpResponse) = client.getComment(tenantId = "my-tenant-123", id = "cmt-7890")
3if response.isSome:
4 let comment = response.get()
5 discard comment
6else:
7 echo "Comment not found"
8

getComments Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
pageintНет
limitintНет
skipintНет
asTreeboolНет
skipChildrenintНет
limitChildrenintНет
maxTreeDepthintНет
urlIdstringДа
userIdstringНет
anonUserIdstringНет
contextUserIdstringНет
hashTagstringНет
parentIdstringНет
directionSortDirectionsНет
fromDateint64Нет
toDateint64Нет

Ответ

Возвращает: Option[APIGetCommentsResponse]

Пример

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

getCommentsPublic Internal Link

req tenantId urlId

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
pageintНет
directionSortDirectionsНет
ssostringНет
skipintНет
skipChildrenintНет
limitintНет
limitChildrenintНет
countChildrenboolНет
fetchPageForCommentIdstringНет
includeConfigboolНет
countAllboolНет
includei10nboolНет
localestringНет
modulesstringНет
isCrawlerboolНет
includeNotificationCountboolНет
asTreeboolНет
maxTreeDepthintНет
useFullTranslationIdsboolНет
parentIdstringНет
searchTextstringНет
hashTagsseq[string]Нет
userIdstringНет
customConfigStrstringНет
afterCommentIdstringНет
beforeCommentIdstringНет

Ответ

Возвращает: Option[GetCommentsResponseWithPresencePublicComment]

Пример

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

getCommentText Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
editKeystringНет
ssostringНет

Ответ

Возвращает: Option[PublicAPIGetCommentTextResponse]

Пример

Пример getCommentText
Copy Copy
1
2let (response, httpResponse) = client.getCommentText(tenantId = "my-tenant-123", commentId = "cmt-987654321", editKey = "", sso = "")
3
4if response.isSome:
5 let commentTextResp = response.get()
6 echo commentTextResp
7else:
8 echo "No comment text returned"
9

getCommentVoteUserNames Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
dirintНет
ssostringНет

Ответ

Возвращает: Option[GetCommentVoteUserNamesSuccessResponse]

Пример

Пример getCommentVoteUserNames
Copy Copy
1
2let (response, httpResponse) = client.getCommentVoteUserNames(tenantId = "my-tenant-123", commentId = "cmt-987654", dir = 0, sso = "")
3if response.isSome:
4 let success: GetCommentVoteUserNamesSuccessResponse = response.get()
5 discard success
6

lockComment Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример lockComment
Copy Copy
1
2let (response, httpResponse) = client.lockComment(tenantId = "news-tenant-42", commentId = "cmt-8f3a2b9d", broadcastId = "", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Locked comment successfully for tenant news-tenant-42"
6else:
7 echo "Failed to lock comment, HTTP status: ", $httpResponse.status
8

pinComment Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[ChangeCommentPinStatusResponse]

Пример

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

saveComment Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
createCommentParamsCreateCommentParamsНет
isLiveboolНет
doSpamCheckboolНет
sendEmailsboolНет
populateNotificationsboolНет

Response

Возвращает: Option[APISaveCommentResponse]

Пример

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

saveCommentsBulk Internal Link

Параметры

NameТипОбязательноОписание
tenantIdstringДа
createCommentParamsseq[CreateCommentParams]Нет
isLiveboolНет
doSpamCheckboolНет
sendEmailsboolНет
populateNotificationsbool): (Option[seq[SaveCommentsBulkResponse]]Нет
idstringНет
fromNamestringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

setCommentText Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringНет
commentTextUpdateRequestCommentTextUpdateRequestНет
editKeystringНет
ssostringНет

Ответ

Возвращает: Option[PublicAPISetCommentTextResponse]

Пример

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

unBlockUserFromComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
unBlockFromCommentParamsUnBlockFromCommentParamsНет
userIdstringНет
anonUserIdstringНет

Ответ

Возвращает: Option[UnblockSuccess]

Пример

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

unFlagComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
userIdstringНет
anonUserIdstringНет

Ответ

Возвращает: Option[FlagCommentResponse]

Пример

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

unLockComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

unPinComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[ChangeCommentPinStatusResponse]

Пример

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

updateComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
updatableCommentParamsUpdatableCommentParamsНет
contextUserIdstringНет
doSpamCheckboolНет
isLiveboolНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

voteComment Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
urlIdstringДа
broadcastIdstringНет
voteBodyParamsVoteBodyParamsНет
sessionIdstringНет
ssostringНет

Ответ

Возвращает: Option[VoteResponse]

Пример

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

getCommentsForUser Internal Link

Параметры

ИмяТипОбязательноОписание
userIdstringНет
directionSortDirectionsНет
repliesToUserIdstringНет
pagefloat64Нет
includei10nboolНет
localestringНет
isCrawlerboolНет

Ответ

Возвращает: Option[GetCommentsForUserResponse]

Пример

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

addDomainConfig Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
addDomainConfigParamsAddDomainConfigParamsНет

Ответ

Возвращает: Option[AddDomainConfigResponse]

Пример

Пример использования addDomainConfig
Copy Copy
1
2let config = AddDomainConfigParams(
3 domain: "comments.example-news.com",
4 enabled: true,
5 allowedOrigins: @["https://www.example-news.com", "https://m.example-news.com"],
6 commentsPath: "/news/world/election-coverage",
7 priority: 5
8)
9let (response, httpResponse) = client.addDomainConfig(tenantId = "my-tenant-123", addDomainConfigParams = config)
10if response.isSome:
11 let created = response.get()
12 echo "Created domain config:", created
13else:
14 echo "Failed to create domain config, HTTP status:", httpResponse.status.code
15

deleteDomainConfig Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
domainstringНет

Ответ

Возвращает: Option[DeleteDomainConfigResponse]

Пример

Пример deleteDomainConfig
Copy Copy
1
2let (response, httpResponse) = client.deleteDomainConfig(tenantId = "my-tenant-123", domain = "news.example.com")
3if response.isSome:
4 let deleted = response.get()
5 echo "DeleteDomainConfig succeeded for tenant ", "my-tenant-123"
6else:
7 echo "DeleteDomainConfig failed. HTTP status: ", $httpResponse.status
8

getDomainConfig Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
domainstringНет

Ответ

Возвращает: Option[GetDomainConfigResponse]

Пример

Пример getDomainConfig
Copy Copy
1
2let (response, httpResponse) = client.getDomainConfig(tenantId = "my-tenant-123", domain = "news/top-story-2026")
3if response.isSome:
4 let cfg = response.get()
5 discard cfg
6else:
7 discard httpResponse
8

getDomainConfigs Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа

Ответ

Возвращает: Option[GetDomainConfigsResponse]

Пример

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

patchDomainConfig Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
domainToUpdatestringНет
patchDomainConfigParamsPatchDomainConfigParamsНет

Ответ

Возвращает: Option[PatchDomainConfigResponse]

Пример

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

putDomainConfig Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
domainToUpdatestringНет
updateDomainConfigParamsUpdateDomainConfigParamsНет

Ответ

Возвращает: Option[PutDomainConfigResponse]

Пример

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

createEmailTemplate Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createEmailTemplateBodyCreateEmailTemplateBodyНет

Ответ

Возвращает: Option[CreateEmailTemplateResponse]

Пример

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

deleteEmailTemplate Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

deleteEmailTemplateRenderError Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
errorIdstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример использования deleteEmailTemplateRenderError
Copy Copy
1
2let (response, httpResponse) = client.deleteEmailTemplateRenderError(tenantId = "my-tenant-123", id = "welcome-email-template", errorId = "err-20250615-01")
3if response.isSome:
4 let emptyResp = response.get()
5 echo "Deleted render error, tenant:", "my-tenant-123"
6 echo "HTTP status:", httpResponse.status
7else:
8 echo "No body returned, HTTP status:", httpResponse.status
9

getEmailTemplate Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет

Response

Возвращает: Option[GetEmailTemplateResponse]

Пример

Пример getEmailTemplate
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplate(tenantId = "my-tenant-123", id = "welcome-email-01")
3if response.isSome:
4 let template = response.get()
5 discard template
6

getEmailTemplateDefinitions Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа

Ответ

Возвращает: Option[GetEmailTemplateDefinitionsResponse]

Пример

Пример getEmailTemplateDefinitions
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplateDefinitions(tenantId = "my-tenant-123")
3if response.isSome:
4 let definitions = response.get()
5 echo "Email template definitions for my-tenant-123: ", definitions
6else:
7 echo "Failed to retrieve templates, HTTP status: ", httpResponse.status
8

getEmailTemplateRenderErrors Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
skipfloat64Нет

Ответ

Возвращает: Option[GetEmailTemplateRenderErrorsResponse]

Пример

Пример getEmailTemplateRenderErrors
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplateRenderErrors(tenantId = "my-tenant-123", id = "", skip = 0.0)
3if response.isSome:
4 let templateErrors = response.get()
5 discard templateErrors
6else:
7 discard httpResponse
8

getEmailTemplates Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipfloat64Нет

Ответ

Возвращает: Option[GetEmailTemplatesResponse]

Пример

Пример getEmailTemplates
Copy Copy
1
2let (response, httpResponse) = client.getEmailTemplates(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let templates = response.get()
5 echo templates
6else:
7 echo "No email templates available"
8

renderEmailTemplate Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
renderEmailTemplateBodyRenderEmailTemplateBodyНет
localestringНет

Ответ

Возвращает: Option[RenderEmailTemplateResponse]

Пример

Пример renderEmailTemplate
Copy Copy
1
2let (response, httpResponse) = client.renderEmailTemplate(
3 tenantId = "my-tenant-123",
4 renderEmailTemplateBody = RenderEmailTemplateBody(),
5 locale = "en-US"
6)
7
8if response.isSome:
9 let rendered = response.get()
10 echo rendered
11

updateEmailTemplate Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
updateEmailTemplateBodyUpdateEmailTemplateBodyНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

getEventLog Internal Link

req tenantId urlId userIdWS

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
urlIdstringДа
userIdWSstringНет
startTimeint64Нет
endTimeint64Нет

Ответ

Возвращает: Option[GetEventLogResponse]

Пример

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

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
urlIdstringДа
userIdWSstringНет
startTimeint64Нет
endTimeint64Нет

Ответ

Возвращает: Option[GetEventLogResponse]

Пример

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

createFeedPost Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsНет
broadcastIdstringНет
isLiveboolНет
doSpamCheckboolНет
skipDupCheckboolНет

Ответ

Возвращает: Option[CreateFeedPostsResponse]

Пример

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

createFeedPostPublic Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsНет
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[CreateFeedPostResponse]

Пример

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

deleteFeedPostPublic Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
postIdstringНет
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[DeleteFeedPostPublicResponse]

Пример

Пример deleteFeedPostPublic
Copy Copy
1
2let (response, httpResponse) = client.deleteFeedPostPublic(tenantId = "my-tenant-123", postId = "", broadcastId = "", sso = "")
3if response.isSome:
4 let deleted = response.get()
5 echo "Delete successful"
6else:
7 echo "Delete failed"
8

getFeedPosts Internal Link

запрос tenantId afterId

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
afterIdstringНет
limitintНет
tagsseq[string]Нет

Ответ

Возвращает: Option[GetFeedPostsResponse]

Пример

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

getFeedPostsPublic Internal Link

req tenantId afterId

Параметры

NameTypeRequiredDescription
tenantIdstringДа
afterIdstringНет
limitintНет
tagsseq[string]Нет
ssostringНет
isCrawlerboolНет
includeUserInfoboolНет

Ответ

Возвращает: Option[PublicFeedPostsResponse]

Пример

Пример использования getFeedPostsPublic
Copy Copy
1
2let (response, httpResponse) = client.getFeedPostsPublic(
3 tenantId = "my-tenant-123",
4 afterId = "",
5 limit = 0,
6 tags = @[],
7 sso = "",
8 isCrawler = false,
9 includeUserInfo = false
10)
11if response.isSome:
12 let feed = response.get()
13 discard feed
14

getFeedPostsStats Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
postIdsseq[string]Нет
ssostringНет

Ответ

Возвращает: Option[FeedPostsStatsResponse]

Пример

Пример getFeedPostsStats
Copy Copy
1
2let (response, httpResponse) = client.getFeedPostsStats(tenantId = "my-tenant-123", postIds = @["news/article-2026", "opinion/market-trends"], sso = "")
3if response.isSome:
4 let stats = response.get()
5 echo "Received feed posts stats for tenant:", " my-tenant-123"
6 discard stats
7

getUserReactsPublic Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
postIdsseq[string]Нет
ssostringНет

Ответ

Возвращает: Option[UserReactsResponse]

Пример

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

reactFeedPostPublic Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
postIdstringНет
reactBodyParamsReactBodyParamsНет
isUndoboolНет
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[ReactFeedPostResponse]

Пример

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

updateFeedPost Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
feedPostFeedPostНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

updateFeedPostPublic Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
postIdstringНет
updateFeedPostParamsUpdateFeedPostParamsНет
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[CreateFeedPostResponse]

Пример

Пример использования updateFeedPostPublic
Copy Copy
1
2let (response, httpResponse) = client.updateFeedPostPublic(
3 tenantId = "my-tenant-123",
4 postId = "post-456",
5 updateFeedPostParams = UpdateFeedPostParams(title = "Weekly Product Update", content = "Released bug fixes and performance improvements in v2.1.", tags = @["release", "product"], pinned = false),
6 broadcastId = "",
7 sso = ""
8)
9if response.isSome:
10 let created = response.get()
11 echo "Updated feed post id: ", created.postId
12else:
13 echo "Update failed with HTTP status: ", httpResponse.status
14

flagCommentPublic Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
isFlaggedboolНет
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример flagCommentPublic
Copy Copy
1
2let (response, httpResponse) = client.flagCommentPublic(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456789",
5 isFlagged = true,
6 sso = ""
7)
8
9if response.isSome:
10 let apiResp = response.get()
11 discard apiResp
12else:
13 discard httpResponse
14

getGifLarge Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
largeInternalURLSanitizedstringНет

Ответ

Возвращает: Option[GifGetLargeResponse]

Пример

Пример getGifLarge
Copy Copy
1
2let (response, httpResponse) = client.getGifLarge(tenantId = "news-tenant-42", largeInternalURLSanitized = "")
3if response.isSome:
4 let gif = response.get()
5 echo "Received GifGetLargeResponse"
6 discard gif
7else:
8 echo "No gif returned, HTTP status: " & $httpResponse.status
9

getGifsSearch Internal Link

Параметры

ИмяТипОбязательноеОписание
tenantIdstringДа
searchstringНет
localestringНет
ratingstringНет
pagefloat64Нет

Ответ

Возвращает: Option[GetGifsSearchResponse]

Пример

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

getGifsTrending Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
localestringНет
ratingstringНет
pagefloat64Нет

Ответ

Возвращает: Option[GetGifsTrendingResponse]

Пример

Пример getGifsTrending
Copy Copy
1
2let (response, httpResponse) = client.getGifsTrending(tenantId = "my-tenant-123",
3 locale = "en-US",
4 rating = "pg-13",
5 page = 1.0)
6if response.isSome:
7 let trending = response.get()
8

addHashTag Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
createHashTagBodyCreateHashTagBodyНет

Ответ

Возвращает: Option[CreateHashTagResponse]

Пример

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

addHashTagsBulk Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
bulkCreateHashTagsBodyBulkCreateHashTagsBodyНет

Ответ

Возвращает: Option[BulkCreateHashTagsResponse]

Пример

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

deleteHashTag Internal Link

Параметры

NameTypeRequiredDescription
tagstringNo
tenantIdstringYes
deleteHashTagRequestBodyDeleteHashTagRequestBodyNo

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

getHashTags Internal Link


Параметры

NameTypeRequiredDescription
tenantIdstringДа
pagefloat64Нет

Ответ

Возвращает: Option[GetHashTagsResponse]

Пример

Пример getHashTags
Copy Copy
1
2let (response, httpResponse) = client.getHashTags(tenantId = "news-portal-987", page = 2.0)
3if response.isSome:
4 let tagsResp = response.get()
5 echo "Received hashtags response"
6else:
7 echo "No hashtags returned"
8

patchHashTag Internal Link

Параметры

ИмяТипОбязательноОписание
tagstringНет
tenantIdstringДа
updateHashTagBodyUpdateHashTagBodyНет

Ответ

Возвращает: Option[UpdateHashTagResponse]

Пример

Пример patchHashTag
Copy Copy
1
2let (response, httpResponse) = client.patchHashTag(tag = "breaking-news", tenantId = "my-tenant-123", updateHashTagBody = UpdateHashTagBody())
3if response.isSome:
4 let updatedHashTag = response.get()
5 echo updatedHashTag
6

deleteModerationVote Internal Link


Параметры

НазваниеТипОбязательноОписание
commentIdstringДа
voteIdstringНет
ssostringНет

Ответ

Возвращает: Option[VoteDeleteResponse]

Пример

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

getApiComments Internal Link

Параметры

ИмяТипОбязательноОписание
pagefloat64Нет
countfloat64Нет
textSearchstringНет
byIPFromCommentstringНет
filtersstringНет
searchFiltersstringНет
sortsstringНет
demoboolНет
ssostringНет

Ответ

Возвращает: Option[ModerationAPIGetCommentsResponse]

Пример

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

getApiExportStatus Internal Link

Параметры

ИмяТипОбязательныйОписание
batchJobIdstringНет
ssostringНет

Ответ

Возвращает: Option[ModerationExportStatusResponse]

Пример

Пример getApiExportStatus
Copy Copy
1
2let (response, httpResponse) = client.getApiExportStatus(batchJobId = "export-job-2026-06-01", sso = "sso-abc123token")
3if response.isSome:
4 let exportStatus = response.get()
5 echo repr(exportStatus)
6else:
7 echo "No export status available, HTTP code: ", httpResponse.statusCode
8

getApiIds Internal Link

Параметры

ИмяТипОбязательноОписание
textSearchstringНет
byIPFromCommentstringНет
filtersstringНет
searchFiltersstringНет
afterIdstringНет
demoboolНет
ssostringНет

Ответ

Возвращает: Option[ModerationAPIGetCommentIdsResponse]

Пример

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

getBanUsersFromComment Internal Link


Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[GetBannedUsersFromCommentResponse]

Пример

Пример getBanUsersFromComment
Copy Copy
1
2let (response, httpResponse) = client.getBanUsersFromComment(commentId = "comment-98765", sso = "")
3if response.isSome:
4 let bannedResp = response.get()
5 discard bannedResp
6else:
7 echo "No banned users found or request failed"
8

getCommentBanStatus Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[GetCommentBanStatusResponse]

Пример

Пример getCommentBanStatus
Copy Copy
1
2let (response, httpResponse) = client.getCommentBanStatus(commentId = "cmt-987654321", sso = "")
3
4if response.isSome:
5 let banStatus = response.get()
6 echo "Ban status for comment cmt-987654321: ", banStatus
7else:
8 echo "No ban status returned for comment cmt-987654321"
9

getCommentChildren Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[ModerationAPIChildCommentsResponse]

Пример

Пример использования getCommentChildren
Copy Copy
1
2let (response, httpResponse) = client.getCommentChildren(commentId = "comment-98765", sso = "")
3if response.isSome:
4 let childResp = response.get()
5 discard childResp
6

getCount Internal Link

Параметры

ИмяТипОбязательноОписание
textSearchstringНет
byIPFromCommentstringНет
filterstringНет
searchFiltersstringНет
demoboolНет
ssostringНет

Ответ

Возвращает: Option[ModerationAPICountCommentsResponse]

Пример

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

getCounts Internal Link

Параметры

ИмяТипОбязательноОписание
ssostringНет

Ответ

Возвращает: Option[GetBannedUsersCountResponse]

Пример

Пример getCounts
Copy Copy
1
2let (response, httpResponse) = client.getCounts(sso = "sso_my-tenant-123_token_AbCdEf123456")
3if response.isSome:
4 let counts = response.get()
5 echo counts
6else:
7 echo "Request failed with status:", httpResponse.status
8

getLogs Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[ModerationAPIGetLogsResponse]

Пример

Пример getLogs
Copy Copy
1
2let (response, httpResponse) = client.getLogs(commentId = "cmt-8471f2d3", sso = "")
3if response.isSome:
4 let logs = response.get()
5 echo "Fetched logs:", logs
6

getManualBadges Internal Link

Параметры

ИмяТипОбязательноОписание
ssostringНет

Ответ

Возвращает: Option[GetTenantManualBadgesResponse]

Пример

Пример getManualBadges
Copy Copy
1
2let (response, httpResponse) = client.getManualBadges(sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9")
3if response.isSome:
4 let badges = response.get()
5 echo "Manual badges received:"
6 echo badges
7else:
8 echo "No manual badges returned."
9 echo httpResponse
10

getManualBadgesForUser Internal Link

Параметры

NameTypeRequiredDescription
badgesUserIdstringНет
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[GetUserManualBadgesResponse]

Пример

Пример использования getManualBadgesForUser
Copy Copy
1
2let (response, httpResponse) = client.getManualBadgesForUser(
3 badgesUserId = "user-98765",
4 commentId = "comment-0a1b2c3d",
5 sso = "sso-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"
6)
7if response.isSome:
8 let badges = response.get()
9 echo "Received manual badges for user"
10 echo "HTTP status: ", httpResponse.status
11

getModerationComment Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
includeEmailboolНет
includeIPboolНет
ssostringНет

Ответ

Возвращает: Option[ModerationAPICommentResponse]

Пример

Пример getModerationComment
Copy Copy
1
2let (response, httpResponse) = client.getModerationComment(commentId = "cmt-8f3b2a9d", includeEmail = false, includeIP = false, sso = "")
3if response.isSome:
4 let comment = response.get()
5 discard comment
6else:
7 echo "No moderation comment returned"
8

getModerationCommentText Internal Link

Параметры

NameTypeRequiredDescription
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[GetCommentTextResponse]

Пример

Пример использования getModerationCommentText
Copy Copy
1
2let (response, httpResponse) = client.getModerationCommentText(commentId = "comment-9f8b7a6c", sso = "")
3if response.isSome:
4 let commentData = response.get()
5 echo "Moderation comment text retrieved"
6else:
7 echo "No moderation comment text available"
8

getPreBanSummary Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
includeByUserIdAndEmailboolНет
includeByIPboolНет
includeByEmailDomainboolНет
ssostringНет

Ответ

Возвращает: Option[PreBanSummary]

Пример

Пример getPreBanSummary
Copy Copy
1
2let commentId = "cmt-7423"
3let (response, httpResponse) = client.getPreBanSummary(
4 commentId = commentId,
5 includeByUserIdAndEmail = false,
6 includeByIP = false,
7 includeByEmailDomain = false,
8 sso = ""
9)
10if response.isSome:
11 let preBanSummary = response.get()
12 discard preBanSummary
13else:
14 discard httpResponse
15

getSearchCommentsSummary Internal Link

Параметры

ИмяТипОбязательноОписание
valuestringНет
filtersstringНет
searchFiltersstringНет
ssostringНет

Ответ

Возвращает: Option[ModerationCommentSearchResponse]

Пример

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

getSearchPages Internal Link

Параметры

NameTypeRequiredDescription
valuestringNo
ssostringNo

Ответ

Возвращает: Option[ModerationPageSearchResponse]

Пример

Пример getSearchPages
Copy Copy
1
2let (response, httpResponse) = client.getSearchPages(value = "news/politics/election-2024", sso = "sso-user-7f3b9c")
3if response.isSome:
4 let pageSearch = response.get()
5 echo "Moderation page search returned"
6else:
7 echo "No moderation pages found"
8

getSearchSites Internal Link


Параметры

NameTypeRequiredDescription
valuestringНет
ssostringНет

Ответ

Возвращает: Option[ModerationSiteSearchResponse]

Пример

Пример getSearchSites
Copy Copy
1
2let (response, httpResponse) = client.getSearchSites(value = "news/2026-olympics", sso = "sso-user-9876-token")
3if response.isSome:
4 let searchResponse: ModerationSiteSearchResponse = response.get()
5 echo "Found sites for search:", searchResponse
6

getSearchSuggest Internal Link

Параметры

ИмяТипОбязательныйОписание
textSearchstringНет
ssostringНет

Ответ

Возвращает: Option[ModerationSuggestResponse]

Пример

Пример getSearchSuggest
Copy Copy
1
2let (response, httpResponse) = client.getSearchSuggest(textSearch = "suspicious comment with spammy links", sso = "sso-user-789")
3if response.isSome:
4 let suggest = response.get()
5 echo "ModerationSuggestResponse:"
6 echo suggest
7else:
8 echo "No moderation suggestions returned. HTTP status: ", httpResponse.status
9

getSearchUsers Internal Link

Параметры

ИмяТипОбязательноОписание
valuestringНет
ssostringНет

Ответ

Возвращает: Option[ModerationUserSearchResponse]

Пример

Пример getSearchUsers
Copy Copy
1
2let (response, httpResponse) = client.getSearchUsers(value = "john.doe@example.com", sso = "sso-acme-789")
3if response.isSome:
4 let searchRes = response.get()
5 echo "Search result:", searchRes
6else:
7 echo "No users found"
8

getTrustFactor Internal Link

Параметры

NameTypeRequiredDescription
userIdstringНет
ssostringНет

Ответ

Возвращает: Option[GetUserTrustFactorResponse]

Пример

Пример getTrustFactor
Copy Copy
1
2let (response, httpResponse) = client.getTrustFactor(userId = "user-1001", sso = "sso-token-6f7d9c")
3if response.isSome:
4 let trust = response.get()
5 echo "Received trust factor for user-1001"
6else:
7 echo "No trust factor returned, HTTP status: ", $httpResponse.status
8

getUserBanPreference Internal Link

Параметры

ИмяТипОбязательноОписание
ssostringНет

Ответ

Возвращает: Option[APIModerateGetUserBanPreferencesResponse]

Пример

Пример getUserBanPreference
Copy Copy
1
2let (response, httpResponse) = client.getUserBanPreference(sso = "sso-jwt-7f3a9b")
3if response.isSome:
4 let prefs = response.get()
5 echo "User ban preferences:", prefs
6else:
7 echo "No ban preference found"
8

getUserInternalProfile Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[GetUserInternalProfileResponse]

Пример

Пример getUserInternalProfile
Copy Copy
1
2let (response, httpResponse) = client.getUserInternalProfile(commentId = "cmt-2026-00042", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoibXl1c2VyIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c")
3if response.isSome:
4 let profile = response.get()
5 discard profile
6

postAdjustCommentVotes Internal Link

Параметры

NameТипОбязательноОписание
commentIdstringДа
adjustCommentVotesParamsAdjustCommentVotesParamsНет
ssostringНет

Ответ

Возвращает: Option[AdjustVotesResponse]

Пример

Пример postAdjustCommentVotes
Copy Copy
1
2let (response, httpResponse) = client.postAdjustCommentVotes(commentId = "cmt-987654", adjustCommentVotesParams = nil, sso = "sso-token-abc123")
3if response.isSome:
4 let adjusted = response.get()
5 discard adjusted
6

postApiExport Internal Link

Параметры

ИмяТипОбязательноОписание
textSearchstringНет
byIPFromCommentstringНет
filtersstringНет
searchFiltersstringНет
sortsstringНет
ssostringНет

Ответ

Возвращает: Option[ModerationExportResponse]

Пример

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

postBanUserFromComment Internal Link

Параметры

NameTypeОбязательноDescription
commentIdstringДа
banEmailboolНет
banEmailDomainboolНет
banIPboolНет
deleteAllUsersCommentsboolНет
bannedUntilstringНет
isShadowBanboolНет
updateIdstringНет
banReasonstringНет
ssostringНет

Ответ

Возвращает: Option[BanUserFromCommentResult]

Пример

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

postBanUserUndo Internal Link


Параметры

ИмяТипОбязательноОписание
banUserUndoParamsBanUserUndoParamsНет
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

postBulkPreBanSummary Internal Link

Параметры

NameTypeОбязательноОписание
bulkPreBanParamsBulkPreBanParamsНет
includeByUserIdAndEmailboolНет
includeByIPboolНет
includeByEmailDomainboolНет
ssostringНет

Ответ

Возвращает: Option[BulkPreBanSummary]

Пример

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

postCommentsByIds Internal Link

Параметры

ИмяТипОбязательноОписание
commentsByIdsParamsCommentsByIdsParamsНет
ssostringНет

Response

Возвращает: Option[ModerationAPIChildCommentsResponse]

Пример

Пример postCommentsByIds
Copy Copy
1
2let commentsParams = CommentsByIdsParams(ids = @["cmt-1001", "cmt-1002"], includeReplies = true, maxDepth = 2)
3let (response, httpResponse) = client.postCommentsByIds(commentsByIdsParams = commentsParams, sso = "sso-user-7f3a9b")
4if response.isSome:
5 let result = response.get()
6 echo "Received child comments response: ", result
7

postFlagComment Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример использования postFlagComment
Copy Copy
1
2let (response, httpResponse) = client.postFlagComment(commentId = "comment-742", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Comment flagged successfully"
6else:
7 echo "Failed to flag comment"
8

postRemoveComment Internal Link

Параметры

NameTypeRequiredDescription
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[PostRemoveCommentResponse]

Пример

Пример postRemoveComment
Copy Copy
1
2let (response, httpResponse) = client.postRemoveComment(commentId = "cmt-987654321", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.abc123.signature")
3if response.isSome:
4 let removed = response.get()
5 echo "Comment removed:", removed
6else:
7 echo "Failed to remove comment, HTTP response:", httpResponse
8

postRestoreDeletedComment Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример postRestoreDeletedComment
Copy Copy
1
2let (response, httpResponse) = client.postRestoreDeletedComment(commentId = "comment-8a7b6c5d", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.SAMPLE_SIGNATURE")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Comment restored:", apiResp
6else:
7 echo "Restore request failed"
8

postSetCommentApprovalStatus Internal Link


Параметры

NameTypeRequiredDescription
commentIdstringДа
approvedboolНет
ssostringНет

Ответ

Возвращает: Option[SetCommentApprovedResponse]

Пример

Пример postSetCommentApprovalStatus
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentApprovalStatus(commentId = "cmt-7890", approved = false, sso = "")
3if response.isSome:
4 let setResp = response.get()
5 discard setResp
6

postSetCommentReviewStatus Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
reviewedboolНет
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

postSetCommentSpamStatus Internal Link

Параметры

ИмяТипОбязательныйОписание
commentIdstringДа
spamboolНет
permNotSpamboolНет
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример postSetCommentSpamStatus
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentSpamStatus(
3 commentId = "cmt-20250619-842",
4 spam = false,
5 permNotSpam = false,
6 sso = ""
7)
8if response.isSome:
9 let apiEmpty = response.get()
10 discard apiEmpty
11

postSetCommentText Internal Link

Параметры

NameTypeRequiredDescription
commentIdstringДа
setCommentTextParamsSetCommentTextParamsНет
ssostringНет

Ответ

Возвращает: Option[SetCommentTextResponse]

Пример

Пример использования postSetCommentText
Copy Copy
1
2let (response, httpResponse) = client.postSetCommentText(commentId = "comment-4821",
3 setCommentTextParams = SetCommentTextParams(text = "Updated comment to clarify the main point and fix a typo."),
4 sso = "sso-user-8f3b9c")
5
6if response.isSome:
7 let setCommentResp = response.get()
8 echo "Received SetCommentTextResponse"
9

postUnFlagComment Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример postUnFlagComment
Copy Copy
1
2let (response, httpResponse) = client.postUnFlagComment(commentId = "comment-8f3a2b4e", sso = "")
3if response.isSome:
4 let apiEmpty = response.get()
5 echo "Comment unflagged successfully, response: ", apiEmpty
6else:
7 echo "Failed to unflag comment. HTTP response: ", httpResponse
8

postVote Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
directionstringНет
ssostringНет

Ответ

Возвращает: Option[VoteResponse]

Пример

Пример postVote
Copy Copy
1
2let (response, httpResponse) = client.postVote(commentId = "comment-4f3a9e", direction = "up", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoidXNlci0xMjMifQ.signedPart")
3if response.isSome:
4 let vote = response.get()
5 echo "Vote recorded:", vote
6else:
7 echo "No vote returned"
8

putAwardBadge Internal Link

Параметры

NameTypeRequiredDescription
badgeIdstringНет
userIdstringНет
commentIdstringДа
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[AwardUserBadgeResponse]

Пример

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

putCloseThread Internal Link

Параметры

ИмяТипОбязательноОписание
urlIdstringДа
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример putCloseThread
Copy Copy
1
2let (response, httpResponse) = client.putCloseThread(urlId = "news/article-title", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Thread closed successfully:", $apiResp
6else:
7 echo "Failed to close thread, HTTP response:", $httpResponse
8

putRemoveBadge Internal Link

Параметры

ИмяТипОбязательноОписание
badgeIdstringНет
userIdstringНет
commentIdstringДа
broadcastIdstringНет
ssostringНет

Ответ

Возвращает: Option[RemoveUserBadgeResponse]

Пример

Пример putRemoveBadge
Copy Copy
1
2let (response, httpResponse) = client.putRemoveBadge(badgeId = "verified-journalist",
3 userId = "user-7890",
4 commentId = "comment-98765",
5 broadcastId = "",
6 sso = "")
7
8if response.isSome:
9 let removeResp = response.get()
10 discard removeResp
11else:
12 discard httpResponse
13

putReopenThread Internal Link

Параметры

NameTypeRequiredDescription
urlIdstringДа
ssostringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример putReopenThread
Copy Copy
1
2let (response, httpResponse) = client.putReopenThread(urlId = "news/2026-election-analysis", sso = "")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Reopen succeeded, response: ", apiResp
6else:
7 echo "Reopen failed, HTTP status: ", httpResponse.status
8

setTrustFactor Internal Link


Параметры

ИмяТипОбязательноОписание
userIdstringНет
trustFactorstringНет
ssostringНет

Ответ

Возвращает: Option[SetUserTrustFactorResponse]

Пример

Пример setTrustFactor
Copy Copy
1
2let (response, httpResponse) = client.setTrustFactor(userId = "user-9876", trustFactor = "high", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTk4NzYiLCJpYXQiOjE2MjQwMDAwMDB9.signature")
3if response.isSome:
4 let resultObj = response.get()
5 echo resultObj
6else:
7 echo "No response received"
8

createModerator Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
createModeratorBodyCreateModeratorBodyНет

Ответ

Возвращает: Option[CreateModeratorResponse]

Пример

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

deleteModerator Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
sendEmailstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deleteModerator
Copy Copy
1
2let (response, httpResponse) = client.deleteModerator(tenantId = "my-tenant-123", id = "", sendEmail = "")
3if response.isSome:
4 let apiEmpty = response.get()
5 echo "Moderator deleted successfully for tenant my-tenant-123"
6else:
7 echo "No response returned; inspect httpResponse"
8

getModerator Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetModeratorResponse]

Пример

Пример getModerator
Copy Copy
1
2let (response, httpResponse) = client.getModerator(tenantId = "my-tenant-123", id = "mod-456")
3if response.isSome:
4 let moderator = response.get()
5 echo moderator
6else:
7 echo "Moderator not found, HTTP status: ", $httpResponse.status
8

getModerators Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipfloat64Нет

Ответ

Возвращает: Option[GetModeratorsResponse]

Пример

Пример getModerators
Copy Copy
1
2let (response, httpResponse) = client.getModerators(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let moderators = response.get()
5 echo "Received moderators response:", moderators
6else:
7 echo "No moderators returned"
8

updateModerator Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
updateModeratorBodyUpdateModeratorBodyНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

deleteNotificationCount Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deleteNotificationCount
Copy Copy
1
2let (response, httpResponse) = client.deleteNotificationCount(tenantId = "my-tenant-123", id = "notification-789")
3if response.isSome:
4 let emptyResp = response.get()
5 echo "Notification count deleted for tenant: ", "my-tenant-123"
6else:
7 echo "Failed to delete notification count, status: ", $httpResponse.statusCode
8

getCachedNotificationCount Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetCachedNotificationCountResponse]

Пример

Пример использования getCachedNotificationCount
Copy Copy
1
2let (response, httpResponse) = client.getCachedNotificationCount(tenantId = "my-tenant-123", id = "notification-789")
3if response.isSome:
4 let cached = response.get()
5 echo "Cached notification count: ", $cached
6else:
7 echo "No cached notification count"
8

getNotificationCount Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringНет
urlIdstringДа
fromCommentIdstringНет
viewedboolНет

Ответ

Возвращает: Option[GetNotificationCountResponse]

Пример

Пример getNotificationCount
Copy Copy
1
2let (response, httpResponse) = client.getNotificationCount(tenantId = "my-tenant-123", userId = "user-987", urlId = "news/2026/06/election-results", fromCommentId = "", viewed = false)
3if response.isSome:
4 let notifyData = response.get()
5 echo notifyData
6

getNotifications Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringНет
urlIdstringДа
fromCommentIdstringНет
viewedboolНет
skipfloat64Нет

Ответ

Возвращает: Option[GetNotificationsResponse]

Пример

Пример getNotifications
Copy Copy
1
2let (response, httpResponse) = client.getNotifications(tenantId = "my-tenant-123", userId = "user-456", urlId = "news/article-title", fromCommentId = "cmt-789", viewed = false, skip = 0.0)
3if response.isSome:
4 let notifications = response.get()
5 echo notifications
6

updateNotification Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
updateNotificationBodyUpdateNotificationBodyНет
userIdstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

createV1PageReact Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
titlestringНет

Ответ

Возвращает: Option[CreateV1PageReact]

Пример

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

createV2PageReact Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
idstringНет
titlestringНет

Ответ

Возвращает: Option[CreateV1PageReact]

Пример

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

deleteV1PageReact Internal Link


Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: Option[CreateV1PageReact]

Пример

Пример deleteV1PageReact
Copy Copy
1
2let (response, httpResponse) = client.deleteV1PageReact(tenantId = "my-tenant-123", urlId = "news/article-title")
3if response.isSome:
4 let deletedReact = response.get()
5 echo "Deleted react:", deletedReact
6else:
7 echo "No react returned for tenant: my-tenant-123, url: news/article-title"
8

deleteV2PageReact Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
idstringНет

Ответ

Возвращает: Option[CreateV1PageReact]

Пример

Пример deleteV2PageReact
Copy Copy
1
2let (response, httpResponse) = client.deleteV2PageReact(tenantId = "my-tenant-123", urlId = "news/2026/politics-election", id = "react-456")
3if response.isSome:
4 let react = response.get()
5 echo react
6else:
7 echo "No reaction returned, status: ", httpResponse.status
8

getV1PageLikes Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: Option[GetV1PageLikes]

Пример

Пример getV1PageLikes
Copy Copy
1
2let (response, httpResponse) = client.getV1PageLikes(tenantId = "my-tenant-123", urlId = "news/how-to-train-your-dragon")
3if response.isSome:
4 let pageLikes = response.get()
5 echo "Fetched page likes for url:", "news/how-to-train-your-dragon"
6else:
7 echo "No likes returned for url:", "news/how-to-train-your-dragon"
8

getV2PageReacts Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: Option[GetV2PageReacts]

Пример

Пример getV2PageReacts
Copy Copy
1
2let (response, httpResponse) = client.getV2PageReacts(tenantId = "my-tenant-123", urlId = "news/elections/2026/us-primary-results")
3if response.isSome:
4 let reacts = response.get()
5 echo "Received reacts: ", $reacts
6else:
7 echo "No reacts available"
8

getV2PageReactUsers Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
idstringНет

Ответ

Возвращает: Option[GetV2PageReactUsersResponse]

Пример

Пример getV2PageReactUsers
Copy Copy
1
2let (response, httpResponse) = client.getV2PageReactUsers(tenantId = "my-tenant-123", urlId = "news/article-title", id = "")
3if response.isSome:
4 let usersResp = response.get()
5 echo repr(usersResp)
6else:
7 echo "No page react users returned. HTTP response: ", repr(httpResponse)
8

addPage Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createAPIPageDataCreateAPIPageDataНет

Ответ

Возвращает: Option[AddPageAPIResponse]

Пример

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

deletePage Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[DeletePageAPIResponse]

Пример

Пример deletePage
Copy Copy
1
2let (response, httpResponse) = client.deletePage(tenantId = "site-tenant-456", id = "news/winter-updates-2025")
3if response.isSome:
4 let deleted = response.get()
5 echo "DeletePageAPIResponse:", deleted
6else:
7 echo "Delete failed, HTTP response:", httpResponse
8

getOfflineUsers Internal Link


Пользователи, которые ранее комментировали на странице, но в данный момент НЕ в сети. Отсортировано по displayName. Используйте это после обращения к /users/online, чтобы отобразить раздел «Участники». Постраничная навигация курсором по commenterName: сервер проходит по частичному индексу {tenantId, urlId, commenterName} от afterName вперёд с помощью $gt, без затрат $skip.

Параметры

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
afterNamestringНет
afterUserIdstringНет

Ответ

Возвращает: Option[PageUsersOfflineResponse]

Пример

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

getOnlineUsers Internal Link

Текущие онлайн-зрители страницы: люди, чья websocket-сессия в данный момент подписана на страницу. Возвращает anonCount + totalCount (подписчики комнаты в целом, включая анонимных зрителей, которых мы не перечисляем).

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
afterNamestringНет
afterUserIdstringНет

Ответ

Возвращает: Option[PageUsersOnlineResponse]

Пример

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

getPageByURLId Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: Option[GetPageByURLIdAPIResponse]

Пример

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

getPages Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа

Ответ

Возвращает: Option[GetPagesAPIResponse]

Пример

Пример getPages
Copy Copy
1
2let (response, httpResponse) = client.getPages(tenantId = "news-site-456")
3if response.isSome:
4 let pages = response.get()
5 echo "Received pages response: ", pages
6else:
7 echo "No pages returned. HTTP response: ", httpResponse
8

getPagesPublic Internal Link

List pages for a tenant. Используется настольным клиентом FChat для заполнения списка комнат. Требуется, чтобы enableFChat был true в итоговой пользовательской конфигурации для каждой страницы. Страницы, требующие SSO, фильтруются с учётом прав доступа групп запрашивающего пользователя.

Параметры

NameTypeRequiredDescription
tenantIdstringДа
cursorstringНет
limitintНет
qstringНет
sortByPagesSortByНет
hasCommentsboolНет

Ответ

Возвращает: Option[GetPublicPagesResponse]

Пример

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

getUsersInfo Internal Link

Массовая информация о пользователях для тенанта. По заданным userIds возвращает отображаемую информацию из User / SSOUser. Используется виджетом комментариев для дополнения данных о пользователях, которые только что появились через событие присутствия. Нет контекста страницы: политика приватности применяется единообразно (приватные профили маскируются).

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idsstringНет

Ответ

Возвращает: Option[PageUsersInfoResponse]

Пример

Пример getUsersInfo
Copy Copy
1
2let (response, httpResponse) = client.getUsersInfo(tenantId = "my-tenant-123", ids = "user-42,user-87")
3if response.isSome:
4 let usersInfo = response.get()
5 echo "Retrieved users info:", usersInfo
6else:
7 echo "No users info returned. HTTP status:", httpResponse.status
8

patchPage Internal Link


Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
updateAPIPageDataUpdateAPIPageDataНет

Ответ

Возвращает: Option[PatchPageAPIResponse]

Пример

Пример patchPage
Copy Copy
1
2let updateData = UpdateAPIPageData(
3 title = "Breaking: Major Event Update",
4 urlId = "news/major-event-update",
5 visible = true,
6 tags = @["breaking", "headline"],
7 sortOrder = 5
8)
9
10let (response, httpResponse) = client.patchPage(
11 tenantId = "my-tenant-123",
12 id = "news/major-event-update",
13 updateAPIPageData = updateData
14)
15
16if response.isSome:
17 let page = response.get()
18 discard page
19

deletePendingWebhookEvent Internal Link


Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deletePendingWebhookEvent
Copy Copy
1
2let (response, httpResponse) = client.deletePendingWebhookEvent(tenantId = "my-tenant-123", id = "wh_evt_9f8b7a6c")
3if response.isSome:
4 let apiEmpty = response.get()
5 echo "Pending webhook event deleted for tenant my-tenant-123"
6else:
7 echo "Failed to delete pending webhook event"
8

getPendingWebhookEventCount Internal Link

Параметры

NameTypeОбязательноОписание
tenantIdstringДа
commentIdstringДа
externalIdstringНет
eventTypestringНет
domainstringНет
attemptCountGTfloat64Нет

Ответ

Возвращает: Option[GetPendingWebhookEventCountResponse]

Пример

Пример использования getPendingWebhookEventCount
Copy Copy
1
2let (response, httpResponse) = client.getPendingWebhookEventCount(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-456abc",
5 externalId = "ext-7890",
6 eventType = "comment_created",
7 domain = "news.example.com",
8 attemptCountGT = 2.0
9)
10
11if response.isSome:
12 let pending = response.get()
13 echo pending
14else:
15 echo "No pending webhook event count returned; HTTP status: ", httpResponse.status
16

getPendingWebhookEvents Internal Link


Параметры

НазваниеТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
externalIdstringНет
eventTypestringНет
domainstringНет
attemptCountGTfloat64Нет
skipfloat64Нет

Ответ

Возвращает: Option[GetPendingWebhookEventsResponse]

Пример

Пример getPendingWebhookEvents
Copy Copy
1
2let (response, httpResponse) = client.getPendingWebhookEvents(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654",
5 externalId = "",
6 eventType = "",
7 domain = "",
8 attemptCountGT = 0.0,
9 skip = 0.0
10)
11if response.isSome:
12 let pending = response.get()
13 discard pending
14

createQuestionConfig Internal Link

Параметры

NameTypeОбязательноОписание
tenantIdstringДа
createQuestionConfigBodyCreateQuestionConfigBodyНет

Ответ

Возвращает: Option[CreateQuestionConfigResponse]

Пример

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

deleteQuestionConfig Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deleteQuestionConfig
Copy Copy
1
2let (response, httpResponse) = client.deleteQuestionConfig(tenantId = "my-tenant-123", id = "")
3
4if response.isSome:
5 let deleted = response.get()
6 echo "Question config deleted for tenant: ", "my-tenant-123"
7else:
8 echo "Failed to delete question config"
9

getQuestionConfig Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetQuestionConfigResponse]

Пример

Пример getQuestionConfig
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfig(tenantId = "my-tenant-123", id = "qst-456")
3if response.isSome:
4 let cfg = response.get()
5 discard cfg
6

getQuestionConfigs Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
skipfloat64Нет

Ответ

Возвращает: Option[GetQuestionConfigsResponse]

Пример

Пример использования getQuestionConfigs
Copy Copy
1
2let (response, httpResponse) = client.getQuestionConfigs(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let configs = response.get()
5 echo "Received question configs for tenant my-tenant-123"
6 echo configs
7else:
8 echo "No question configs returned"
9

updateQuestionConfig Internal Link

Параметры

NameTypeОбязательноОписание
tenantIdstringДа
idstringНет
updateQuestionConfigBodyUpdateQuestionConfigBodyНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример updateQuestionConfig
Copy Copy
1
2let (response, httpResponse) = client.updateQuestionConfig(tenantId = "my-tenant-123", id = "question-config-456", updateQuestionConfigBody = default(UpdateQuestionConfigBody))
3if response.isSome:
4 let apiEmpty = response.get()
5 discard apiEmpty
6

createQuestionResult Internal Link


Параметры

NameTypeRequiredDescription
tenantIdstringДа
createQuestionResultBodyCreateQuestionResultBodyНет

Ответ

Возвращает: Option[CreateQuestionResultResponse]

Пример

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

deleteQuestionResult Internal Link


Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deleteQuestionResult
Copy Copy
1
2let tenantId = "my-tenant-123"
3let resultId = "question-result-456"
4let (response, httpResponse) = client.deleteQuestionResult(tenantId = tenantId, id = resultId)
5if response.isSome:
6 let emptyResp = response.get()
7 echo "Deleted question result:", resultId
8

getQuestionResult Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetQuestionResultResponse]

Пример

Пример getQuestionResult
Copy Copy
1
2let (response, httpResponse) = client.getQuestionResult(tenantId = "my-tenant-123", id = "question-456")
3if response.isSome:
4 let result = response.get()
5 echo "Question result received:"
6 echo result
7else:
8 echo "No question result returned, HTTP status: ", $httpResponse.status
9

getQuestionResults Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
userIdstringНет
startDatestringНет
questionIdstringНет
questionIdsstringНет
skipfloat64Нет

Ответ

Возвращает: Option[GetQuestionResultsResponse]

Пример

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

updateQuestionResult Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
updateQuestionResultBodyUpdateQuestionResultBodyНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

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

aggregateQuestionResults Internal Link


Параметры

NameТипОбязательноОписание
tenantIdstringДа
questionIdstringНет
questionIdsseq[string]Нет
urlIdstringДа
timeBucketAggregateTimeBucketНет
startDatestringНет
forceRecalculateboolНет

Ответ

Возвращает: Option[AggregateQuestionResultsResponse]

Пример

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

bulkAggregateQuestionResults Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestНет
forceRecalculateboolНет

Ответ

Возвращает: Option[BulkAggregateQuestionResultsResponse]

Пример

Пример bulkAggregateQuestionResults
Copy Copy
1
2let (response, httpResponse) = client.bulkAggregateQuestionResults(
3 tenantId = "my-tenant-123",
4 bulkAggregateQuestionResultsRequest = BulkAggregateQuestionResultsRequest(),
5 forceRecalculate = false
6)
7
8if response.isSome:
9 let aggregated = response.get()
10 echo "Aggregated question results received"
11

combineCommentsWithQuestionResults Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
questionIdstringНет
questionIdsseq[string]Нет
urlIdstringДа
startDatestringНет
forceRecalculateboolНет
minValuefloat64Нет
maxValuefloat64Нет
limitfloat64Нет

Ответ

Возвращает: Option[CombineQuestionResultsWithCommentsResponse]

Пример

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

addSSOUser Internal Link


Параметры

ИмяТипОбязательноеОписание
tenantIdstringДа
createAPISSOUserDataCreateAPISSOUserDataНет

Ответ

Возвращает: Option[AddSSOUserAPIResponse]

Пример

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

deleteSSOUser Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
deleteCommentsboolНет
commentDeleteModestringНет

Ответ

Возвращает: Option[DeleteSSOUserAPIResponse]

Пример

Пример использования deleteSSOUser
Copy Copy
1
2let (response, httpResponse) = client.deleteSSOUser(tenantId = "my-tenant-123", id = "sso-user-9876", deleteComments = true, commentDeleteMode = "hard")
3if response.isSome:
4 let deleted = response.get()
5 discard deleted
6else:
7 discard httpResponse
8

getSSOUserByEmail Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
emailstringНет

Ответ

Возвращает: Option[GetSSOUserByEmailAPIResponse]

Пример

Пример getSSOUserByEmail
Copy Copy
1
2let (response, httpResponse) = client.getSSOUserByEmail(tenantId = "my-tenant-123", email = "alice@newsco.com")
3if response.isSome:
4 let ssoUser = response.get()
5 echo "SSO user found: ", ssoUser.email
6else:
7 echo "No SSO user found. HTTP status: ", httpResponse.status
8

getSSOUserById Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetSSOUserByIdAPIResponse]

Пример

Пример getSSOUserById
Copy Copy
1
2let (response, httpResponse) = client.getSSOUserById(tenantId = "my-tenant-123", id = "user-789")
3if response.isSome:
4 let ssoUser: GetSSOUserByIdAPIResponse = response.get()
5 echo "SSO user retrieved: ", $ssoUser
6else:
7 echo "No SSO user found, HTTP status: ", httpResponse.statusCode
8

getSSOUsers Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
skipintНет

Ответ

Возвращает: Option[GetSSOUsersResponse]

Пример

Пример getSSOUsers
Copy Copy
1
2let (response, httpResponse) = client.getSSOUsers(tenantId = "my-tenant-123", skip = 0)
3if response.isSome:
4 let ssoUsers = response.get()
5 echo ssoUsers
6else:
7 echo "No SSO users returned; HTTP response:", httpResponse
8

patchSSOUser Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
updateAPISSOUserDataUpdateAPISSOUserDataНет
updateCommentsboolНет

Ответ

Возвращает: Option[PatchSSOUserAPIResponse]

Пример

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

putSSOUser Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
updateAPISSOUserDataUpdateAPISSOUserDataНет
updateCommentsboolНет

Ответ

Возвращает: Option[PutSSOUserAPIResponse]

Пример

putSSOUser Пример
Copy Copy
1
2let (response, httpResponse) = client.putSSOUser(
3 tenantId = "my-tenant-123",
4 id = "user-456",
5 updateAPISSOUserData = UpdateAPISSOUserData(
6 externalId = "ext-789",
7 displayName = "Jane Doe",
8 email = "jane.doe@example.com",
9 avatarUrl = "https://cdn.news-site.com/avatars/jane.jpg",
10 roles = @["member", "subscriber"]
11 ),
12 updateComments = true
13)
14
15if response.isSome:
16 let result = response.get()
17 echo "SSO user updated:", result
18

createSubscription Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataНет

Ответ

Возвращает: Option[CreateSubscriptionAPIResponse]

Пример

Пример createSubscription
Copy Copy
1
2let createData = CreateAPIUserSubscriptionData(
3 subscriberId = "user-987",
4 email = "jane.doe@newsreader.com",
5 urlId = "news/local-weather",
6 active = true,
7 tags = @["weather", "local"],
8 frequency = "immediate"
9)
10let (response, httpResponse) = client.createSubscription(tenantId = "my-tenant-123", createAPIUserSubscriptionData = createData)
11if response.isSome:
12 let created = response.get()
13 echo "Created subscription id: ", created.id
14

deleteSubscription Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
userIdstringНет

Ответ

Возвращает: Option[DeleteSubscriptionAPIResponse]

Пример

Пример deleteSubscription
Copy Copy
1
2let (response, httpResponse) = client.deleteSubscription(tenantId = "my-tenant-123", id = "sub-98765", userId = "user-456")
3if response.isSome:
4 let deleteResp = response.get()
5 echo "Delete subscription response received"
6else:
7 echo "No subscription response"
8

getSubscriptions Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringНет

Ответ

Возвращает: Option[GetSubscriptionsAPIResponse]

Пример

Пример getSubscriptions
Copy Copy
1
2let (response, httpResponse) = client.getSubscriptions(tenantId = "my-tenant-123", userId = "")
3if response.isSome:
4 let subscriptions = response.get()
5 discard subscriptions
6

updateSubscription Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataНет
userIdstringНет

Ответ

Возвращает: Option[UpdateSubscriptionAPIResponse]

Пример

Пример updateSubscription
Copy Copy
1
2let (response, httpResponse) = client.updateSubscription(
3 tenantId = "my-tenant-123",
4 id = "sub-456",
5 updateAPIUserSubscriptionData = UpdateAPIUserSubscriptionData(
6 subscribed = true,
7 channels = @["email", "push"]
8 ),
9 userId = "user-789"
10)
11
12if response.isSome:
13 let updated = response.get()
14 echo "Subscription updated:", updated
15else:
16 echo "Update failed, HTTP response:", httpResponse
17

getTenantDailyUsages Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
yearNumberfloat64Нет
monthNumberfloat64Нет
dayNumberfloat64Нет
skipfloat64Нет

Ответ

Возвращает: Option[GetTenantDailyUsagesResponse]

Пример

Пример getTenantDailyUsages
Copy Copy
1
2let (response, httpResponse) = client.getTenantDailyUsages(
3 tenantId = "my-tenant-123",
4 yearNumber = 2026.0,
5 monthNumber = 6.0,
6 dayNumber = 19.0,
7 skip = 0.0
8)
9
10if response.isSome:
11 let usage = response.get()
12 discard usage
13

createTenantPackage Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createTenantPackageBodyCreateTenantPackageBodyНет

Ответ

Возвращает: Option[CreateTenantPackageResponse]

Пример

Пример createTenantPackage
Copy Copy
1
2let (response, httpResponse) = client.createTenantPackage(tenantId = "my-tenant-123", createTenantPackageBody = CreateTenantPackageBody())
3
4if response.isSome:
5 let pkg = response.get()
6 echo "Created tenant package: ", $pkg
7else:
8 echo "Failed to create tenant package, HTTP response: ", $httpResponse
9

deleteTenantPackage Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deleteTenantPackage
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantPackage(tenantId = "my-tenant-123", id = "package-987")
3if response.isSome:
4 let emptyResp = response.get()
5 echo emptyResp
6else:
7 echo "Failed to delete tenant package"
8

getTenantPackage Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetTenantPackageResponse]

Пример

Пример getTenantPackage
Copy Copy
1
2let (response, httpResponse) = client.getTenantPackage(tenantId = "my-tenant-123", id = "premium-2026")
3if response.isSome:
4 let pkg = response.get()
5 echo "Retrieved tenant package:"
6 echo pkg
7else:
8 echo "Tenant package not found"
9

getTenantPackages Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
skipfloat64No

Ответ

Возвращает: Option[GetTenantPackagesResponse]

Пример

Пример getTenantPackages
Copy Copy
1
2let (response, httpResponse) = client.getTenantPackages(tenantId = "my-tenant-123", skip = 0.0)
3if response.isSome:
4 let packages = response.get()
5 echo "Received tenant packages:"
6 echo packages
7else:
8 echo "No packages found for tenant 'my-tenant-123'"
9

replaceTenantPackage Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
idstringНет
replaceTenantPackageBodyReplaceTenantPackageBodyНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример replaceTenantPackage
Copy Copy
1
2let (response, httpResponse) = client.replaceTenantPackage(
3 tenantId = "my-tenant-123",
4 id = "pkg-987",
5 replaceTenantPackageBody = ReplaceTenantPackageBody(
6 name = "Premium Plan",
7 priceCents = 999,
8 seats = 50,
9 enabled = true,
10 features = @["moderation", "analytics", "priority-support"]
11 )
12)
13
14if response.isSome:
15 let apiEmpty = response.get()
16 discard apiEmpty
17

updateTenantPackage Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
updateTenantPackageBodyUpdateTenantPackageBodyНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример updateTenantPackage
Copy Copy
1
2let packageBody = UpdateTenantPackageBody(
3 name: "Pro Plan",
4 priceCents: 1999,
5 active: true,
6 features: @["priority-support", "advanced-moderation"]
7)
8
9let (response, httpResponse) = client.updateTenantPackage(
10 tenantId = "my-tenant-123",
11 id = "pkg-789",
12 updateTenantPackageBody = packageBody
13)
14
15if response.isSome:
16 let apiEmpty = response.get()
17 echo "Tenant package updated successfully, HTTP status: " & $httpResponse.status
18

createTenantUser Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
createTenantUserBodyCreateTenantUserBodyНет

Ответ

Возвращает: Option[CreateTenantUserResponse]

Пример

Пример createTenantUser
Copy Copy
1
2let (response, httpResponse) = client.createTenantUser(tenantId = "my-tenant-123",
3 createTenantUserBody = CreateTenantUserBody(userId = "user-456",
4 email = "jane.doe@example.com",
5 displayName = "Jane Doe",
6 roles = @["editor"],
7 isAdmin = false))
8if response.isSome:
9 let created = response.get()
10 discard created
11

deleteTenantUser Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
deleteCommentsstringНет
commentDeleteModestringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deleteTenantUser
Copy Copy
1
2let (response, httpResponse) = client.deleteTenantUser(tenantId = "my-tenant-123", id = "user-789", deleteComments = "true", commentDeleteMode = "soft")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Tenant user deleted, response: ", apiResp
6else:
7 echo "Failed to delete tenant user, HTTP status: ", $httpResponse.status
8

getTenantUser Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetTenantUserResponse]

Пример

Пример getTenantUser
Copy Copy
1
2let (response, httpResponse) = client.getTenantUser(tenantId = "my-tenant-123", id = "user-789")
3if response.isSome:
4 let tenantUser = response.get()
5 echo "User fetched:", tenantUser
6else:
7 echo "No user found, HTTP status:", httpResponse.status
8

getTenantUsers Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringДа
skipfloat64Нет

Ответ

Возвращает: Option[GetTenantUsersResponse]

Пример

Пример getTenantUsers
Copy Copy
1
2let (response, httpResponse) = client.getTenantUsers(tenantId = "my-tenant-123", skip = 0.0)
3
4if response.isSome:
5 let tenantUsers = response.get()
6 echo "Retrieved tenant users"
7else:
8 echo "No tenant users returned"
9

replaceTenantUser Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringYes
idstringNo
replaceTenantUserBodyReplaceTenantUserBodyNo
updateCommentsstringNo

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример replaceTenantUser
Copy Copy
1
2let body = ReplaceTenantUserBody(
3 displayName = "Jane Doe",
4 email = "jane.doe@example.com",
5 externalId = "jdoe-789",
6 admin = false,
7 enabled = true,
8 tags = @["editor", "subscriber"]
9)
10
11let (response, httpResponse) = client.replaceTenantUser(
12 tenantId = "my-tenant-123",
13 id = "user-456",
14 replaceTenantUserBody = body,
15 updateComments = "true"
16)
17
18if response.isSome:
19 let apiEmpty = response.get()
20 echo "ReplaceTenantUser succeeded, http status:", httpResponse.status
21

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
redirectURLstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример sendLoginLink
Copy Copy
1
2let (response, httpResponse) = client.sendLoginLink(tenantId = "my-tenant-123", id = "user-456", redirectURL = "https://app.newsportal.com/welcome")
3if response.isSome:
4 let apiResp = response.get()
5 echo "Login link sent successfully"
6else:
7 echo "Failed to send login link, HTTP status: ", $httpResponse.status
8

updateTenantUser Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
idstringНет
updateTenantUserBodyUpdateTenantUserBodyНет
updateCommentsstringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример updateTenantUser
Copy Copy
1
2let (response, httpResponse) = client.updateTenantUser(
3 tenantId = "my-tenant-123",
4 id = "user-987",
5 updateTenantUserBody = UpdateTenantUserBody(
6 displayName = "Jane Doe",
7 email = "jane.doe@example.com",
8 roles = @["moderator", "editor"],
9 isActive = true
10 ),
11 updateComments = "true"
12)
13
14if response.isSome:
15 let apiEmpty = response.get()
16 discard apiEmpty
17

createTenant Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createTenantBodyCreateTenantBodyНет

Ответ

Возвращает: Option[CreateTenantResponse]

Пример

Пример createTenant
Copy Copy
1
2let (response, httpResponse) = client.createTenant(
3 tenantId = "my-tenant-123",
4 createTenantBody = CreateTenantBody(
5 name = "My Tenant 123",
6 domain = "news.example.com",
7 allowAnonymous = false,
8 allowedOrigins = @["https://news.example.com", "https://api.news.example.com"],
9 description = "Comments for News Example"
10 )
11)
12if response.isSome:
13 let created = response.get()
14 echo "Created tenant: ", created.tenantId
15else:
16 echo "Failed to create tenant, status: ", httpResponse.status
17

deleteTenant Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет
surestringНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример deleteTenant
Copy Copy
1
2let (response, httpResponse) = client.deleteTenant(tenantId = "my-tenant-123", id = "", sure = "")
3if response.isSome:
4 let emptyResp = response.get()
5else:
6 discard httpResponse
7

getTenant Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetTenantResponse]

Пример

Пример getTenant
Copy Copy
1
2let (response, httpResponse) = client.getTenant(tenantId = "my-tenant-123", id = "tenant-789")
3if response.isSome:
4 let tenant = response.get()
5 discard tenant
6else:
7 discard httpResponse
8

getTenants Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
metastringНет
skipfloat64Нет

Ответ

Возвращает: Option[GetTenantsResponse]

Пример

Пример getTenants
Copy Copy
1
2let (response, httpResponse) = client.getTenants(tenantId = "my-tenant-123", meta = "env=production", skip = 0.0)
3if response.isSome:
4 let tenantsResp = response.get()
5 discard tenantsResp
6 echo "Tenants fetched successfully"
7else:
8 echo "Request failed with status ", httpResponse.status
9

updateTenant Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
updateTenantBodyUpdateTenantBodyНет

Ответ

Возвращает: Option[APIEmptyResponse]

Пример

Пример updateTenant
Copy Copy
1
2let (response, httpResponse) = client.updateTenant(
3 tenantId = "my-tenant-123",
4 id = "settings",
5 updateTenantBody = UpdateTenantBody(
6 name = "My Tenant 123",
7 enableModeration = true,
8 allowedDomains = @["news.example.com", "blog.example.org"],
9 maxCommentLength = 1000
10 )
11)
12
13if response.isSome:
14 let apiResp = response.get()
15 echo "Tenant updated successfully: ", apiResp
16else:
17 echo "Failed to update tenant, HTTP status: ", httpResponse.status
18

changeTicketState Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringНет
idstringНет
changeTicketStateBodyChangeTicketStateBodyНет

Ответ

Возвращает: Option[ChangeTicketStateResponse]

Пример

Пример changeTicketState
Copy Copy
1
2let body = ChangeTicketStateBody()
3let (response, httpResponse) = client.changeTicketState(tenantId = "my-tenant-123", userId = "user-456", id = "ticket-789", changeTicketStateBody = body)
4if response.isSome:
5 let ticketResp = response.get()
6 echo "Ticket state changed:", ticketResp
7

createTicket Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
userIdstringНет
createTicketBodyCreateTicketBodyНет

Ответ

Возвращает: Option[CreateTicketResponse]

Пример

Пример createTicket
Copy Copy
1
2let body = CreateTicketBody(
3 subject = "Comment moderation issue",
4 message = "Several abusive comments reported on article, please review and moderate.",
5 tags = @["moderation", "abuse", "urgent"],
6 url = "https://news.example.com/world/2026-election",
7 priority = "high"
8)
9
10let (response, httpResponse) = client.createTicket(tenantId = "my-tenant-123", userId = "user-789", createTicketBody = body)
11
12if response.isSome:
13 let ticket = response.get()
14 echo "Created ticket ID: ", ticket.id
15

getTicket Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
userIdstringНет

Ответ

Возвращает: Option[GetTicketResponse]

Пример

Пример getTicket
Copy Copy
1
2let (response, httpResponse) = client.getTicket(tenantId = "my-tenant-123", id = "ticket-456", userId = "user-789")
3if response.isSome:
4 let ticket = response.get()
5 echo "Got ticket:", ticket
6else:
7 echo "No ticket returned; HTTP response:", httpResponse
8

getTickets Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringНет
statefloat64Нет
skipfloat64Нет
limitfloat64Нет

Ответ

Возвращает: Option[GetTicketsResponse]

Пример

Пример getTickets
Copy Copy
1
2let (response, httpResponse) = client.getTickets(tenantId = "my-tenant-123", userId = "user-789", state = 1.0, skip = 0.0, limit = 50.0)
3if response.isSome:
4 let tickets = response.get()
5 echo tickets
6

getTranslations Internal Link


Параметры

ИмяТипОбязательноОписание
namespacestringНет
componentstringНет
localestringНет
useFullTranslationIdsboolНет

Ответ

Возвращает: Option[GetTranslationsResponse]

Пример

Пример getTranslations
Copy Copy
1
2let (response, httpResponse) = client.getTranslations(
3 namespace = "news-site",
4 component = "article-comments",
5 locale = "en-US",
6 useFullTranslationIds = false
7)
8if response.isSome:
9 let translations = response.get()
10 discard translations
11else:
12 echo "No translations available"
13

uploadImage Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
filestringНет
sizePresetSizePresetНет
urlIdstringДа

Ответ

Возвращает: Option[UploadImageResponse]

Пример

Пример использования uploadImage
Copy Copy
1
2let (response, httpResponse) = client.uploadImage(
3 tenantId = "my-tenant-123",
4 file = "assets/images/comment-avatar.jpg",
5 sizePreset = SizePreset.small,
6 urlId = "news/article-2025-11-22"
7)
8if response.isSome:
9 let upload = response.get()
10 echo "Uploaded image id: ", upload.id
11 echo "Uploaded image url: ", upload.url
12

getUserBadgeProgressById Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIGetUserBadgeProgressResponse]

Пример

Пример использования getUserBadgeProgressById
Copy Copy
1
2let (response, httpResponse) = client.getUserBadgeProgressById(tenantId = "my-tenant-123", id = "")
3if response.isSome:
4 let badgeProgress = response.get()
5 echo badgeProgress
6else:
7 echo "No badge progress found"
8

getUserBadgeProgressByUserId Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
userIdstringНет

Ответ

Возвращает: Option[APIGetUserBadgeProgressResponse]

Пример

Пример getUserBadgeProgressByUserId
Copy Copy
1
2let tenantId = "my-tenant-123"
3let userId = "user-456"
4let (response, httpResponse) = client.getUserBadgeProgressByUserId(tenantId = tenantId, userId = userId)
5if response.isSome:
6 let badgeProgress = response.get()
7 echo "Badge progress retrieved for ", userId
8 discard badgeProgress
9

getUserBadgeProgressList Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringНет
limitfloat64Нет
skipfloat64Нет

Ответ

Возвращает: Option[APIGetUserBadgeProgressListResponse]

Пример

Пример getUserBadgeProgressList
Copy Copy
1
2let (response, httpResponse) = client.getUserBadgeProgressList(
3 tenantId = "my-tenant-123",
4 userId = "user-789",
5 limit = 25.0,
6 skip = 0.0
7)
8
9if response.isSome:
10 let badgeProgress = response.get()
11 echo "Received badge progress:", badgeProgress
12else:
13 echo "No badge progress; HTTP status: ", $httpResponse.status
14

createUserBadge Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createUserBadgeParamsCreateUserBadgeParamsНет

Ответ

Возвращает: Option[APICreateUserBadgeResponse]

Пример

Пример createUserBadge
Copy Copy
1
2let (response, httpResponse) = client.createUserBadge(
3 tenantId = "my-tenant-123",
4 createUserBadgeParams = CreateUserBadgeParams(
5 userId = "user-456",
6 badgeId = "top-commenter",
7 reason = "Top commenter for June 2026",
8 awardedBy = "mod-team",
9 metadata = @["news","engagement"]
10 )
11)
12if response.isSome:
13 let badgeResp = response.get()
14 discard badgeResp
15

deleteUserBadge Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIEmptySuccessResponse]

Пример

Пример использования deleteUserBadge
Copy Copy
1
2let tenantId = "my-tenant-123"
3let badgeId = "badge-456"
4
5let (response, httpResponse) = client.deleteUserBadge(tenantId = tenantId, id = badgeId)
6
7if response.isSome:
8 let success = response.get()
9 echo "Badge deleted successfully for tenant: ", tenantId, " id: ", badgeId
10else:
11 echo "Failed to delete badge. HTTP status: ", $httpResponse.status
12

getUserBadge Internal Link

Параметры

ИмяТипОбязательноеОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[APIGetUserBadgeResponse]

Пример

Пример getUserBadge
Copy Copy
1
2let (response, httpResponse) = client.getUserBadge(tenantId = "my-tenant-123", id = "badge-9876")
3if response.isSome:
4 let badge = response.get()
5 echo "Fetched badge:"
6 echo badge
7else:
8 echo "No badge found"
9 echo httpResponse
10

getUserBadges Internal Link


Параметры

NameТипОбязательноОписание
tenantIdstringДа
userIdstringНет
badgeIdstringНет
displayedOnCommentsboolНет
limitfloat64Нет
skipfloat64Нет

Ответ

Возвращает: Option[APIGetUserBadgesResponse]

Пример

Пример getUserBadges
Copy Copy
1
2let (response, httpResponse) = client.getUserBadges(
3 tenantId = "my-tenant-123",
4 userId = "user-9876",
5 badgeId = "top-commenter",
6 displayedOnComments = true,
7 limit = 20.0,
8 skip = 0.0
9)
10
11if response.isSome:
12 let badges = response.get()
13 echo "Badges response:", badges
14else:
15 echo "No badges found (HTTP status: ", httpResponse.status, ")"
16

updateUserBadge Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
idstringNo
updateUserBadgeParamsUpdateUserBadgeParamsNo

Ответ

Возвращает: Option[APIEmptySuccessResponse]

Пример

Пример updateUserBadge
Copy Copy
1
2let (response, httpResponse) = client.updateUserBadge(
3 tenantId = "my-tenant-123",
4 id = "user-456",
5 updateUserBadgeParams = UpdateUserBadgeParams()
6)
7
8if response.isSome:
9 let success = response.get()
10 echo "Badge updated successfully"
11else:
12 echo "Badge update failed"
13

getUserNotificationCount Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
ssostringНет

Ответ

Возвращает: Option[GetUserNotificationCountResponse]

Пример

Пример getUserNotificationCount
Copy Copy
1
2let (response, httpResponse) = client.getUserNotificationCount(tenantId = "news-tenant-123", sso = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTI0NyIsImlhdCI6MTYw945600fQ.sflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c")
3if response.isSome:
4 let countResp = response.get()
5 echo "Received user notification count response: ", countResp
6else:
7 echo "No notification count returned"
8

getUserNotifications Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
pageSizeintНет
afterIdstringНет
includeContextboolНет
afterCreatedAtint64Нет
unreadOnlyboolНет
dmOnlyboolНет
noDmboolНет
includeTranslationsboolНет
includeTenantNotificationsboolНет
ssostringНет

Ответ

Возвращает: Option[GetMyNotificationsResponse]

Пример

Пример getUserNotifications
Copy Copy
1
2let (response, httpResponse) = client.getUserNotifications(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 pageSize = 0,
6 afterId = "",
7 includeContext = false,
8 afterCreatedAt = 0,
9 unreadOnly = false,
10 dmOnly = false,
11 noDm = false,
12 includeTranslations = false,
13 includeTenantNotifications = false,
14 sso = ""
15)
16
17if response.isSome:
18 let notifications = response.get()
19 echo notifications
20

resetUserNotificationCount Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
ssostringНет

Ответ

Возвращает: Option[ResetUserNotificationsResponse]

Пример

Пример resetUserNotificationCount
Copy Copy
1
2let (response, httpResponse) = client.resetUserNotificationCount(tenantId = "my-tenant-123", sso = "user-sso-token-456")
3if response.isSome:
4 let result = response.get()
5 echo "ResetUserNotificationsResponse:", result
6else:
7 echo "Reset failed, HTTP response:", httpResponse
8

resetUserNotifications Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
afterIdstringНет
afterCreatedAtint64Нет
unreadOnlyboolНет
dmOnlyboolНет
noDmboolНет
ssostringНет

Ответ

Возвращает: Option[ResetUserNotificationsResponse]

Пример

Пример resetUserNotifications
Copy Copy
1
2let (response, httpResponse) = client.resetUserNotifications(
3 tenantId = "my-tenant-123",
4 afterId = "",
5 afterCreatedAt = 0'i64,
6 unreadOnly = false,
7 dmOnly = false,
8 noDm = false,
9 sso = ""
10)
11if response.isSome:
12 let resetResp = response.get()
13 echo "ResetUserNotificationsResponse received"
14else:
15 echo "No ResetUserNotificationsResponse"
16

updateUserNotificationCommentSubscriptionStatus Internal Link

Включить или отключить уведомления для конкретного комментария.

Параметры

NameTypeRequiredDescription
tenantIdstringДа
notificationIdstringНет
optedInOrOutstringНет
commentIdstringДа
ssostringНет

Ответ

Возвращает: Option[UpdateUserNotificationCommentSubscriptionStatusResponse]

Пример

Пример updateUserNotificationCommentSubscriptionStatus
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationCommentSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "",
5 optedInOrOut = "",
6 commentId = "cmt-789",
7 sso = ""
8)
9
10if response.isSome:
11 let updateResp = response.get()
12 echo "Subscription update response: ", updateResp
13

updateUserNotificationPageSubscriptionStatus Internal Link

Включение или отключение уведомлений для страницы. Когда пользователи подписаны на страницу, создаются уведомления для новых корневых комментариев, а также

Parameters

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
urlstringНет
pageTitlestringНет
subscribedOrUnsubscribedstringНет
ssostringНет

Response

Возвращает: Option[UpdateUserNotificationPageSubscriptionStatusResponse]

Example

Пример updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationPageSubscriptionStatus(
3 tenantId = "my-tenant-123",
4 urlId = "news/economy/market-rally-2026-06-19",
5 url = "",
6 pageTitle = "",
7 subscribedOrUnsubscribed = "",
8 sso = ""
9)
10
11if response.isSome:
12 let updateResp = response.get()
13 echo "Subscription update received: ", updateResp
14else:
15 echo "No subscription update returned."
16

updateUserNotificationStatus Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
notificationIdstringНет
newStatusstringНет
ssostringНет

Ответ

Возвращает: Option[UpdateUserNotificationStatusResponse]

Пример

Пример updateUserNotificationStatus
Copy Copy
1
2let (response, httpResponse) = client.updateUserNotificationStatus(
3 tenantId = "my-tenant-123",
4 notificationId = "notif-456",
5 newStatus = "read",
6 sso = "sso-token-abc123"
7)
8if response.isSome:
9 let updated = response.get()
10 echo "Notification status updated successfully"
11else:
12 echo "No update response received"
13

getUserPresenceStatuses Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
urlIdWSstringНет
userIdsstringНет

Ответ

Возвращает: Option[GetUserPresenceStatusesResponse]

Пример

Пример использования getUserPresenceStatuses
Copy Copy
1
2let (response, httpResponse) = client.getUserPresenceStatuses(tenantId = "my-tenant-123", urlIdWS = "news/article-title", userIds = "user-123,user-456")
3if response.isSome:
4 let presenceStatuses = response.get()
5 echo presenceStatuses
6else:
7 echo "No presence data"
8

searchUsers Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
usernameStartsWithstringНет
mentionGroupIdsseq[string]Нет
ssostringНет
searchSectionstringНет

Ответ

Возвращает: Option[SearchUsersResult]

Пример

Пример searchUsers
Copy Copy
1
2let (response, httpResponse) = client.searchUsers(
3 tenantId = "my-tenant-123",
4 urlId = "news/top-story",
5 usernameStartsWith = "",
6 mentionGroupIds = @[],
7 sso = "",
8 searchSection = ""
9)
10
11if response.isSome:
12 let searchResult = response.get()
13 echo "SearchUsersResult:", searchResult
14else:
15 echo "No result or error. HTTP response:", httpResponse
16

getUser Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringНет

Ответ

Возвращает: Option[GetUserResponse]

Пример

Пример getUser
Copy Copy
1
2let (response, httpResponse) = client.getUser(tenantId = "my-tenant-123", id = "user-456")
3if response.isSome:
4 let user = response.get()
5 echo user
6else:
7 echo "User not found"
8

createVote Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
directionstringНет
userIdstringНет
anonUserIdstringНет

Ответ

Возвращает: Option[VoteResponse]

Пример

Пример createVote
Copy Copy
1
2let (response, httpResponse) = client.createVote(
3 tenantId = "my-tenant-123",
4 commentId = "cmt-987654",
5 direction = "up",
6 userId = "user-42",
7 anonUserId = ""
8)
9if response.isSome:
10 let vote = response.get()
11 echo "Vote created:", vote
12else:
13 echo "No vote returned"
14

deleteVote Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringНет
editKeystringНет

Ответ

Возвращает: Option[VoteDeleteResponse]

Пример

Пример deleteVote
Copy Copy
1
2let (response, httpResponse) = client.deleteVote(tenantId = "my-tenant-123", id = "vote-7f3b2a", editKey = "")
3if response.isSome:
4 let voteDelete = response.get()
5 echo "Vote deleted successfully"
6else:
7 echo "Failed to delete vote"
8

getVotes Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: Option[GetVotesResponse]

Пример

Пример getVotes
Copy Copy
1
2let (response, httpResponse) = client.getVotes(tenantId = "my-tenant-123", urlId = "news/breaking-article-456")
3if response.isSome:
4 let votesResp = response.get()
5 echo "Received votes response:", $votesResp
6else:
7 echo "No votes returned, HTTP response:", $httpResponse
8

getVotesForUser Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
userIdstringНет
anonUserIdstringНет

Ответ

Возвращает: Option[GetVotesForUserResponse]

Пример

Пример getVotesForUser
Copy Copy
1
2let (response, httpResponse) = client.getVotesForUser(
3 tenantId = "my-tenant-123",
4 urlId = "news/article-title",
5 userId = "user-789",
6 anonUserId = ""
7)
8if response.isSome:
9 let votes = response.get()
10 echo "User votes retrieved"
11else:
12 echo "No votes found"
13

Нужна помощь?

Если вы столкнулись с проблемами или у вас есть вопросы по Nim SDK, пожалуйста:

Участие в развитии

Вклады приветствуются! Пожалуйста, посетите репозиторий на GitHub для получения инструкций по внесению вкладов.