FastComments.com

FastComments JavaScript/TypeScript SDK


Ово је званични JavaScript/TypeScript SDK за FastComments.

Званични JavaScript/TypeScript SDK за FastComments API

Репозиторијум

Погледајте на GitHub


Инсталација Internal Link

npm install fastcomments-sdk

API документација Internal Link


Kompletna API referenca: docs/api/README.md

Компатибилност прегледача и сервера Internal Link


Овај SDK користи два улазна пута да обезбеди оптималну компатибилност и спречи грешке при извршавању:

  • fastcomments-sdk/browser - Верзија безбедна за прегледаче са нативним fetch
  • fastcomments-sdk/server - Пуна Node.js верзија са подршком за SSO
  • fastcomments-sdk (подразумевано) - Само типови, безбедно за увоз било где

Јавни и заштићени API-ји Internal Link

SDK pruža tri glavne API klase:

  • DefaultApi - Zaštićeni endpointi koji zahtijevaju vaš API ključ za autentifikaciju. Koristite ih za serverske operacije.
  • PublicApi - Javni endpointi kojima se može pristupiti bez API ključa. Mogu se pozivati direktno iz preglednika/mobilnih uređaja/itd.
  • HiddenApi - Interni/administratorski endpointi za napredne slučajeve upotrebe.

Primjer: Korištenje Public API (sigurno za preglednik)

import { PublicApi } from 'fastcomments-sdk/browser';

const publicApi = new PublicApi();

// Preuzmi komentare za stranicu (nije potreban API ključ)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Primjer: Korištenje Default API (samo na serverskoj strani)

import { DefaultApi, Configuration } from 'fastcomments-sdk/server';

const config = new Configuration({
  apiKey: 'your-api-key' // Čuvajte ovo u tajnosti!
});
const defaultApi = new DefaultApi(config);

// Preuzmi komentare sa punim administratorskim pristupom
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Интеграција SSO (једнократно пријављивање) Internal Link

FastComments подржава SSO за интеграцију са вашим постојећим системом аутентификације корисника. Функционалност SSO је доступна само у server export-у јер захтева Node.js crypto функције.

Једноставан SSO (само на серверу)

Једноставан SSO треба да буде генерисан на серверу и послат клијенту:

// Server-side code (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Create simple SSO using the built-in helper  
const userData = {
  username: 'john_doe',
  email: 'john@example.com',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg'
};

const sso = FastCommentsSSO.createSimple(userData, {
  loginURL: '/login',
  logoutURL: '/logout'
});

const ssoToken = sso.createToken();

// Send ssoToken to your client-side code
// Client-side code can then use this token with the browser SDK

Сигуран SSO (на серверу, препоручено)

Сигуран SSO треба да буде имплементиран на серверу и пружа бољу сигурност:

// Server-side code (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Create secure SSO using the built-in helper
const userData = {
  id: 'user-123',
  email: 'john@example.com',
  username: 'john_doe',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg',
  isAdmin: false,
  isModerator: false
};

const sso = FastCommentsSSO.createSecure('your-api-key', userData, {
  loginURL: '/login',
  logoutURL: '/logout'
});

const ssoConfig = sso.prepareToSend();

// Use with API calls on the server
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Or send ssoConfig to client for browser usage

Коришћење SSO из прегледача (са серверски генерисаним токеном)

// Client-side code (browser)
import { PublicApi } from 'fastcomments-sdk/browser';

// Get SSO token from your server endpoint
const ssoToken = await fetch('/api/sso-token').then(r => r.json());

const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: ssoToken // Use the server-generated SSO token
});

SSO са креирањем коментара

// Server-side: Create SSO and comment
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

const sso = FastCommentsSSO.createSecure('your-api-key', userData);
const ssoConfig = sso.prepareToSend();

const response = await publicApi.createCommentPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  broadcastId: 'unique-broadcast-id',
  commentData: {
    comment: 'This is my comment',
    date: Date.now(),
    commenterName: 'John Doe',
    url: 'https://example.com/page',
    urlId: 'page-url-id'
  },
  sso: JSON.stringify(ssoConfig)
});

Уобичајени случајеви употребе Internal Link

Dobijanje komentara za stranicu

const comments = await sdk.publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'article-123'
});

Kreiranje komentara

const newComment = await sdk.publicApi.createCommentPublic({
  createCommentParams: {
    tenantId: 'your-tenant-id',
    urlId: 'article-123',
    comment: 'Great article!',
    commenterName: 'John Doe',
    commenterEmail: 'john@example.com'
  }
});

Glasanje za komentar

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 za podršku, -1 za protiv
  }
});

Upravljanje korisnicima (zahteva API ključ)

// Pretraži korisnike (zahteva DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Догађаји уживо (ажурирања у реалном времену) Internal Link

Претплатите се на догађаје уживо да бисте добијали ажурирања у реалном времену за коментаре, гласове и друге активности.

Догађаји на нивоу странице

Слушајте догађаје уживо за одређену страницу (коментари, гласови итд.):

import { subscribeToChanges, LiveEvent, LiveEventType } from 'fastcomments-sdk/browser';

const config = {
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
};

// Претплатите се на догађаје уживо за страницу
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (преузмите ово из одговора getComments)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Ажурирајте ваш кориснички интерфејс са новим коментаром
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Ажурирајте број гласова у вашем корисничком интерфејсу
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // Return true if event was handled
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Затворите претплату када завршите
subscription.close();

Претплата на корисничке догађаје

Слушајте догађaje специфичне за корисника (обавештења, помињања итд.):

import { subscribeToUserFeed, LiveEvent, LiveEventType } from 'fastcomments-sdk/browser';

const userConfig = {
  userIdWS: 'user-session-id', // Преузмите ово из одговора getComments
};

// Претплатите се на лични фид корисника
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);

    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Прикажите обавештење у вашем корисничком интерфејсу
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }

    return true;
  },
  (isConnected: boolean) => {
    console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Затворите када завршите
userSubscription.close();

Добијање userIdWS

Параметар userIdWS је обавезан за догађаје уживо и може се добити из одговора API-ја:

const response = await sdk.publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-id'
});

// Извуците userIdWS из одговора
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Сада се можете претплатити на догађаје уживо
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

Идентификатори преноса Internal Link

Видећете да треба да проследите broadcastId у неким API позивима. Када примите догађаје, добићете овај ID назад, па ћете знати да игноришете догађај ако планирате да оптимистички примените промене на клијенту (што ћете вероватно желети, јер пружа најбоље корисничко искуство). Проследите UUID овде. ID треба да буде довољно јединствен да се не појави два пута у прегледачкој сесији.

import { v4 as uuidv4 } from 'uuid';

const response = await sdk.publicApi.createCommentPublic({
  createCommentParams: {
    tenantId: 'your-tenant-id',
    urlId: 'page-id',
    comment: 'My comment',
    broadcastId: uuidv4() // Јединствени ID за ову операцију
  }
});

Обрада грешака Internal Link

try {
  const comments = await sdk.publicApi.getCommentsPublic({
    tenantId: 'your-tenant-id',
    urlId: 'page-id'
  });
} catch (error) {
  if (error.response?.status === 404) {
    console.log('Page not found');
  } else {
    console.error('API Error:', error.message);
  }
}

aggregate Internal Link


Agregira dokumente grupišući ih (ako je groupBy naveden) i primjenjujući više operacija. Podržane su različite operacije (npr. sum, countDistinct, avg itd.).

Parametri

Name Type Required Description
tenantId string Da
aggregationRequest AggregationRequest Da
parentTenantId string Ne
includeStats boolean Ne

Odgovor

Vraća: AggregationResponse


getAuditLogs Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
limit number Не
skip number Не
order SORTDIR Не
after number Не
before number Не

Одговор

Враћа: GetAuditLogs200Response


blockFromCommentPublic Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
commentId string Да
publicBlockFromCommentParams PublicBlockFromCommentParams Да
sso string Не

Одговор

Враћа: BlockFromCommentPublic200Response


unBlockCommentPublic Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
commentId string Да
publicBlockFromCommentParams PublicBlockFromCommentParams Да
sso string Не

Одговор

Враћа: UnBlockCommentPublic200Response


checkedCommentsForBlocked Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
commentIds string Да
sso string Не

Одговор

Враћа: CheckedCommentsForBlocked200Response


blockUserFromComment Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
id string Да
blockFromCommentParams BlockFromCommentParams Да
userId string Не
anonUserId string Не

Одговор

Враћа: BlockFromCommentPublic200Response


createCommentPublic Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Da
urlId string Da
broadcastId string Da
commentData CommentData Da
sessionId string Ne
sso string Ne

Odgovor

Vraća: CreateCommentPublic200Response


deleteComment Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
id string Да
contextUserId string Не
isLive boolean Не

Одговор

Враћа: DeleteComment200Response


deleteCommentPublic Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
commentId string Да
broadcastId string Да
editKey string Не
sso string Не

Одговор

Враћа: DeleteCommentPublic200Response


deleteCommentVote Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
commentId string Да
voteId string Да
urlId string Да
broadcastId string Да
editKey string Не
sso string Не

Одговор

Враћа: DeleteCommentVote200Response


flagComment Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
id string Да
userId string Не
anonUserId string Не

Одговор

Враћа: FlagComment200Response


getComment Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetComment200Response


getComments Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
page number Не
limit number Не
skip number Не
asTree boolean Не
skipChildren number Не
limitChildren number Не
maxTreeDepth number Не
urlId string Не
userId string Не
anonUserId string Не
contextUserId string Не
hashTag string Не
parentId string Не
direction SortDirections Не

Одговор

Враћа: GetComments200Response


getCommentsPublic Internal Link

req tenantId urlId

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
urlId string Da
page number Ne
direction SortDirections Ne
sso string Ne
skip number Ne
skipChildren number Ne
limit number Ne
limitChildren number Ne
countChildren boolean Ne
fetchPageForCommentId string Ne
includeConfig boolean Ne
countAll boolean Ne
includei10n boolean Ne
locale string Ne
modules string Ne
isCrawler boolean Ne
includeNotificationCount boolean Ne
asTree boolean Ne
maxTreeDepth number Ne
useFullTranslationIds boolean Ne
parentId string Ne
searchText string Ne
hashTags Array Ne
userId string Ne
customConfigStr string Ne
afterCommentId string Ne
beforeCommentId string Ne

Odgovor

Vraća: GetCommentsPublic200Response

getCommentText Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
commentId string Da
editKey string Ne
sso string Ne

Odgovor

Vraća: GetCommentText200Response


getCommentVoteUserNames Internal Link

Параметри

Назив Тип Потребно Опис
tenantId string Да
commentId string Да
dir number Да
sso string Не

Одговор

Враћа: GetCommentVoteUserNames200Response


lockComment Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
commentId string Да
broadcastId string Да
sso string Не

Одговор

Враћа: LockComment200Response


pinComment Internal Link


Параметри

Назив Тип Обавезно Опис
tenantId string Да
commentId string Да
broadcastId string Да
sso string Не

Одговор

Враћа: PinComment200Response


saveComment Internal Link

Параметри

Име Тип Потребно Опис
tenantId string Да
createCommentParams CreateCommentParams Да
isLive boolean Не
doSpamCheck boolean Не
sendEmails boolean Не
populateNotifications boolean Не

Одговор

Враћа: SaveComment200Response


saveCommentsBulk Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
createCommentParams Array Да
isLive boolean Не
doSpamCheck boolean Не
sendEmails boolean Не
populateNotifications boolean Не

Одговор

Враћа: Array<SaveComment200Response


setCommentText Internal Link

Parameters

Назив Тип Обавезно Опис
tenantId string Да
commentId string Да
broadcastId string Да
commentTextUpdateRequest CommentTextUpdateRequest Да
editKey string Не
sso string Не

Response

Враћа: SetCommentText200Response

unBlockUserFromComment Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
unBlockFromCommentParams UnBlockFromCommentParams Да
userId string Не
anonUserId string Не

Одговор

Враћа: UnBlockCommentPublic200Response


unFlagComment Internal Link

Параметри

Name Type Required Description
tenantId string Да
id string Да
userId string Не
anonUserId string Не

Одговор

Враћа: FlagComment200Response


unLockComment Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
commentId string Да
broadcastId string Да
sso string Не

Одговор

Враћа: LockComment200Response


unPinComment Internal Link

Параметри

Име Тип Потребно Опис
tenantId string Да
commentId string Да
broadcastId string Да
sso string Не

Одговор

Враћа: PinComment200Response


updateComment Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
id string Da
body PickAPICommentUpdatableCommentFields Da
contextUserId string Ne
doSpamCheck boolean Ne
isLive boolean Ne

Odgovor

Vraća: FlagCommentPublic200Response


voteComment Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
commentId string Да
urlId string Да
broadcastId string Да
voteBodyParams VoteBodyParams Да
sessionId string Не
sso string Не

Одговор

Враћа: VoteComment200Response


addDomainConfig Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
addDomainConfigParams AddDomainConfigParams Da

Odgovor

Vraća: AddDomainConfig200Response


deleteDomainConfig Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
domain string Да

Одговор

Враћа: DeleteDomainConfig200Response


getDomainConfig Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
domain string Да

Одговор

Враћа: GetDomainConfig200Response


getDomainConfigs Internal Link


Parametri

Ime Tip Obavezno Opis
tenantId string Da

Odgovor

Vraća: GetDomainConfigs200Response


patchDomainConfig Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
domainToUpdate string Da
patchDomainConfigParams PatchDomainConfigParams Da

Odgovor

Vraća: GetDomainConfig200Response


putDomainConfig Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
domainToUpdate string Да
updateDomainConfigParams UpdateDomainConfigParams Да

Одговор

Враћа: GetDomainConfig200Response


createEmailTemplate Internal Link

Параметри

Name Type Required Description
tenantId string Да
createEmailTemplateBody CreateEmailTemplateBody Да

Одговор

Враћа: CreateEmailTemplate200Response

Пример

createEmailTemplate Пример
Copy Copy
1
2const tenantId: string = "tenant_7a9f2b3d";
3
4const createEmailTemplateBody: CreateEmailTemplateBody = {
5 name: "Comment Notification",
6 subject: "New comment on your article: ",
7 htmlBody: "<p> left a comment:</p><blockquote></blockquote>",
8 enabled: true,
9 defaultLocale: "en-US",
10 metadata: { createdBy: "admin@example.com", purpose: "notify_comment" } // необавезни додатни подаци
11};
12
13const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
14

deleteEmailTemplate Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: FlagCommentPublic200Response

Примјер

deleteEmailTemplate Примјер
Copy Copy
1
2const tenantId: string = "tenant_4b2f6a-4b2f6a2d";
3const templateId: string = "email_template_9f8b7c3e";
4const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
5const status: APIStatus | undefined = result?.status
6

deleteEmailTemplateRenderError Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
errorId string Да

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = "tenant_8f3b2a9c";
3const id: string = "template_4a1c9f7e";
4const errorId: string = "err_20260112_abc123";
5const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
6

getEmailTemplate Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetEmailTemplate200Response

Пример

getEmailTemplate Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-enterprises-123';
4 const id: string = 'welcome-email-template-v2';
5 const locale: string | undefined = 'en-US'; // пример опционалног параметра
6 const template: GetEmailTemplate200Response = await getEmailTemplate(tenantId, id);
7 console.log(template, locale);
8})();
9

getEmailTemplateDefinitions Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да

Одговор

Враћа: GetEmailTemplateDefinitions200Response

Пример

getEmailTemplateDefinitions Пример
Copy Copy
1
2const tenantId: string = 'acme-enterprises-78f2';
3const emailTemplates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4

getEmailTemplateRenderErrors Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
skip number Не

Одговор

Враћа: GetEmailTemplateRenderErrors200Response

Примјер

getEmailTemplateRenderErrors Примјер
Copy Copy
1
2const tenantId: string = "tenant_7b3f2a9c";
3const id: string = "tmpl_4f1b2c9e";
4const skip: number = 25;
5const result: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id, skip);
6

getEmailTemplates Internal Link


Параметри

Назив Тип Обавезно Опис
tenantId string Да
skip number Не

Одговор

Враћа: GetEmailTemplates200Response

Пример

Пример getEmailTemplates
Copy Copy
1
2const tenantId: string = 'tenant_8f4d2b7c';
3const responseWithoutSkip: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
4const skip: number = 20;
5const responseWithSkip: GetEmailTemplates200Response = await getEmailTemplates(tenantId, skip);
6

renderEmailTemplate Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
renderEmailTemplateBody RenderEmailTemplateBody Да
locale string Не

Одговор

Враћа: RenderEmailTemplate200Response

Примјер

renderEmailTemplate Примјер
Copy Copy
1
2const tenantId: string = 'acme-corp-7f3';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'new-comment-notification',
5 recipientEmail: 'jane.doe@acme.com',
6 variables: {
7 commenterName: 'Samir Patel',
8 commentText: 'I found this article really helpful — thanks for sharing!',
9 threadUrl: 'https://acme.com/blog/123#comments'
10 },
11 includeUnsubscribeLink: true
12};
13const locale: string = 'en-US';
14const response: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
15

updateEmailTemplate Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
id string Da
updateEmailTemplateBody UpdateEmailTemplateBody Da

Odgovor

Vraća: FlagCommentPublic200Response

Primjer

Primjer updateEmailTemplate
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const id: string = 'email_tpl_42b7a9';
4const updateEmailTemplateBody: UpdateEmailTemplateBody = {
5 name: 'Comment Flag Notification',
6 subject: 'A comment was flagged on acme.com',
7 html: '<p>A comment by was flagged. Review at </p>',
8 replyTo: 'noreply@acme.com', // prikazano neobavezno polje
9 enabled: true,
10 customConfig: { priority: 'high' } // neobavezni prilagođeni parametri
11};
12const response: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
13

getEventLog Internal Link

req tenantId urlId userIdWS

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
urlId string Da
userIdWS string Da
startTime number Da
endTime number Da

Odgovor

Vraća: GetEventLog200Response

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Параметри

Име Тип Обавезно Опис
tenantId string Да
urlId string Да
userIdWS string Да
startTime number Да
endTime number Да

Одговор

Враћа: GetEventLog200Response

createFeedPost Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
createFeedPostParams CreateFeedPostParams Да
broadcastId string Не
isLive boolean Не
doSpamCheck boolean Не
skipDupCheck boolean Не

Одговор

Враћа: CreateFeedPost200Response


createFeedPostPublic Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
createFeedPostParams CreateFeedPostParams Da
broadcastId string Ne
sso string Ne

Odgovor

Vraća: CreateFeedPostPublic200Response


deleteFeedPostPublic Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
postId string Да
broadcastId string Не
sso string Не

Одговор

Враћа: DeleteFeedPostPublic200Response


getFeedPosts Internal Link

req tenantId afterId

Параметри

Име Тип Обавезно Опис
tenantId string Да
afterId string Не
limit number Не
tags Array Не

Одговор

Враћа: GetFeedPosts200Response


getFeedPostsPublic Internal Link


req tenantId afterId

Параметри

Име Тип Обавезно Опис
tenantId string Да
afterId string Не
limit number Не
tags Array Не
sso string Не
isCrawler boolean Не
includeUserInfo boolean Не

Одговор

Враћа: GetFeedPostsPublic200Response


getFeedPostsStats Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
postIds Array Да
sso string Не

Одговор

Враћа: GetFeedPostsStats200Response


getUserReactsPublic Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
postIds Array Ne
sso string Ne

Odgovor

Vraća: GetUserReactsPublic200Response

reactFeedPostPublic Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
postId string Да
reactBodyParams ReactBodyParams Да
isUndo boolean Не
broadcastId string Не
sso string Не

Одговор

Враћа: ReactFeedPostPublic200Response


updateFeedPost Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
feedPost FeedPost Да

Одговор

Враћа: FlagCommentPublic200Response


updateFeedPostPublic Internal Link


Parametri

Naziv Тип Обавезно Опис
tenantId string Да
postId string Да
updateFeedPostParams UpdateFeedPostParams Да
broadcastId string Не
sso string Не

Одговор

Враћа: CreateFeedPostPublic200Response


flagCommentPublic Internal Link

Parametri

Naziv Type Obavezno Opis
tenantId string Da
commentId string Da
isFlagged boolean Da
sso string Ne

Odgovor

Vraća: FlagCommentPublic200Response


addHashTag Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Не
createHashTagBody CreateHashTagBody Не

Одговор

Враћа: AddHashTag200Response

Пример

Пример addHashTag
Copy Copy
1
2const tenantId: string = 'tenant_7b2f6c2b';
3const createBody: CreateHashTagBody = {
4 tag: 'feature-request',
5 label: 'Feature Request',
6 description: 'Requests for new functionality in the web client',
7 isActive: true,
8 visibility: 'public',
9 allowedDomains: ['example.com', 'internal.example.com']
10};
11const result: AddHashTag200Response = await addHashTag(tenantId, createBody);
12const resultWithoutTenant: AddHashTag200Response = await addHashTag(undefined, {
13 tag: 'bug',
14 label: 'Bug',
15 description: 'Use for reproducible bugs reported by users',
16 isActive: true,
17 visibility: 'public'
18});
19

addHashTagsBulk Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string No
bulkCreateHashTagsBody BulkCreateHashTagsBody No

Одговор

Враћа: AddHashTagsBulk200Response

Пример

Пример addHashTagsBulk
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_3f2b9a';
4 const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
5 tags: [
6 { name: 'performance', description: 'Comments about site performance', visibleToModeratorsOnly: false },
7 { name: 'feature-request', description: 'Requests for new features', visibleToModeratorsOnly: true }
8 ]
9 };
10 const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
11 const resultWithNoTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBody);
12 console.log(result, resultWithNoTenant);
13})();
14

deleteHashTag Internal Link

Parametri

Naziv Tip Obavezno Opis
tag string Da
tenantId string Ne
deleteHashTagRequest DeleteHashTagRequest Ne

Odgovor

Vraća: FlagCommentPublic200Response

Primjer

Primjer za deleteHashTag
Copy Copy
1
2const tag: string = 'breaking-news';
3const tenantId: string = 'tenant_42';
4const deleteReq: DeleteHashTagRequest = { removedBy: 'moderator_jane', reason: 'off-topic for this community', deleteAssociatedComments: true } as DeleteHashTagRequest;
5const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteReq);
6

getHashTags Internal Link

Параметри

Name Type Required Description
tenantId string Да
page number Не

Одговор

Враћа: GetHashTags200Response

Пример

getHashTags Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-7a9f";
4 const tagsPage1: GetHashTags200Response = await getHashTags(tenantId);
5 const tagsPage2: GetHashTags200Response = await getHashTags(tenantId, 2);
6 console.log(tagsPage1, tagsPage2);
7})();
8

patchHashTag Internal Link

Parametri

Naziv Tip Obavezno Opis
tag string Da
tenantId string Ne
updateHashTagBody UpdateHashTagBody Ne

Odgovor

Vraća: PatchHashTag200Response

Primjer

patchHashTag Primjer
Copy Copy
1
2const tag: string = 'release-2026';
3const tenantId: string = 'tenant_42';
4const updateHashTagBody: UpdateHashTagBody = {
5 displayName: 'Release 2026',
6 description: 'Discussions and notes for the 2026 product release',
7 isActive: true
8};
9const result: PatchHashTag200Response = await patchHashTag(tag, tenantId, updateHashTagBody);
10

createModerator Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
createModeratorBody CreateModeratorBody Да

Одговор

Враћа: CreateModerator200Response

Примјер

createModerator Примјер
Copy Copy
1
2const tenantId: string = "tenant_prod_us-east_01";
3const createModeratorBody: CreateModeratorBody = {
4 email: "maria.lopez+mod@fastcompany.com",
5 username: "mlopez_mod",
6 displayName: "Maria Lopez",
7 roles: ["content_moderator"],
8 notifyOnReports: true,
9 metadata: { region: "us-east", team: "community" }
10};
11const result: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
12

deleteModerator Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
sendEmail string Не

Одговор

Враћа: FlagCommentPublic200Response

Пример

deleteModerator Пример
Copy Copy
1
2const tenantId: string = 'acme-tenant-987';
3const moderatorId: string = 'mod-78b2c9a4-3f1e-4d6a';
4const sendEmail: string = 'true';
5const result: FlagCommentPublic200Response = await deleteModerator(tenantId, moderatorId, sendEmail);
6

getModerator Internal Link

Parametri

Name Type Required Description
tenantId string Da
id string Da

Odgovor

Vraća: GetModerator200Response

Primjer

getModerator Primjer
Copy Copy
1
2const tenantId: string = "tenant_eu_4f8d2b9e";
3const maybeModeratorId: string | undefined = "mod_91c3b7a2"; // neobavezni izvor (može biti undefined)
4const moderator: GetModerator200Response = await getModerator(tenantId, maybeModeratorId!);
5

getModerators Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
skip number Не

Одговор

Враћа: GetModerators200Response

Пример

getModerators Пример
Copy Copy
1
2const tenantId: string = "tenant_corp_7f9b2a";
3const moderatorsPage1: GetModerators200Response = await getModerators(tenantId);
4const skip: number = 50;
5const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, skip);
6

sendInvite Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
fromName string Да

Одговор

Враћа: FlagCommentPublic200Response

Примјер

sendInvite Примјер
Copy Copy
1
2const tenantId: string = 'acme-tenant-004';
3const id: string = 'comment_9b7f3a2c';
4const fromName: string = 'María Hernández';
5const response: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName);
6

updateModerator Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
id string Da
updateModeratorBody UpdateModeratorBody Da

Odgovor

Vraća: FlagCommentPublic200Response

Primjer

Primjer ažuriranja moderatora
Copy Copy
1
2const tenantId: string = '4f8a9c2e-3b6d-4d9e-8c2f-1a2b3c4d5e6f';
3const id: string = 'mod_92a7c4';
4const updateModeratorBodyMinimal: UpdateModeratorBody = { displayName: 'Sophia Patel' };
5const updateModeratorBodyWithOptional: UpdateModeratorBody = {
6 displayName: 'Sophia Patel',
7 email: 'sophia.patel@newsroom.example',
8 permissions: ['remove_comments', 'ban_user'],
9 notifyOnFlag: true // neobavezni parametar
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBodyWithOptional);
12

deleteNotificationCount Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: FlagCommentPublic200Response

Примјер

deleteNotificationCount Примјер
Copy Copy
1
2const tenantId: string = 'tenant_7f3a1b2c4d9e';
3const notificationId: string = 'notif_8c9d0a1b2f3e4b7';
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, notificationId);
5

getCachedNotificationCount Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Yes
id string Yes

Одговор

Враћа: GetCachedNotificationCount200Response

Пример

Пример getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const baseNotificationId: string = 'notif-000123';
4const idSuffix: string | undefined = undefined; // пример опционог параметра
5const notificationId: string = idSuffix ? `${baseNotificationId}-${idSuffix}` : baseNotificationId;
6const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, notificationId);
7console.log(result);
8

getNotificationCount Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
userId string Не
urlId string Не
fromCommentId string Не
viewed boolean Не
type string Не

Одговор

Враћа: GetNotificationCount200Response

Пример

getNotificationCount Пример
Copy Copy
1
2const tenantId: string = 'tenant_8a9b7c';
3const userId: string = 'user_42b3c';
4const urlId: string = 'https://blog.example.com/posts/introducing-new-editor';
5const fromCommentId: string | undefined = undefined;
6const viewed: boolean = false;
7const type: string = 'mention';
8const result: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, fromCommentId, viewed, type);
9

getNotifications Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
userId string Ne
urlId string Ne
fromCommentId string Ne
viewed boolean Ne
type string Ne
skip number Ne

Odgovor

Vraća: GetNotifications200Response

Primjer

getNotifications Primjer
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_8f3b1a2c';
4 const userId: string = 'user_42';
5 const urlId: string = 'https://news.example.com/articles/2026/01/11/comment-thread';
6 const fromCommentId: string = 'cmt_9a7b';
7 const viewed: boolean = false;
8 const type: string = 'mention';
9 const skip: number = 0;
10 const response: GetNotifications200Response = await getNotifications(tenantId, userId, urlId, fromCommentId, viewed, type, skip);
11 console.log(response);
12})();
13

updateNotification Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
updateNotificationBody UpdateNotificationBody Да
userId string Не

Респонс

Враћа: FlagCommentPublic200Response

Пример

Пример updateNotification-а
Copy Copy
1
2const tenantId: string = "tenant_86a7b3";
3const id: string = "notif_20260112_01";
4const userId: string = "moderator_42";
5const updateNotificationBody: UpdateNotificationBody = {
6 name: "Flagged comment alert",
7 enabled: true,
8 channels: ["email"],
9 recipients: ["mod-team@news-site.com"],
10 threshold: 1
11};
12
13(async () => {
14 const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
15 console.log(result);
16})();
17

addPage Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
createAPIPageData CreateAPIPageData Da

Odgovor

Vraća: AddPageAPIResponse


deletePage Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: DeletePageAPIResponse


getPageByURLId Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
urlId string Да

Одговор

Враћа: GetPageByURLIdAPIResponse


getPages Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да

Одговор

Враћа: GetPagesAPIResponse


patchPage Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
updateAPIPageData UpdateAPIPageData Да

Одговор

Враћа: PatchPageAPIResponse


deletePendingWebhookEvent Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: FlagCommentPublic200Response

Примјер

deletePendingWebhookEvent Примјер
Copy Copy
1
2const tenantId: string = 'tenant_7f4e2b';
3const pendingEventId: string = '9f7b6a8c-3b2a-4c0d-a8e5-1234567890ab';
4const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, pendingEventId);
5console.log(result);
6

getPendingWebhookEventCount Internal Link

Параметри

Name Type Required Description
tenantId string Да
commentId string Не
externalId string Не
eventType string Не
type string Не
domain string Не
attemptCountGT number Не

Одговор

Враћа: GetPendingWebhookEventCount200Response

Пример

getPendingWebhookEventCount Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9c3b2b';
4 const commentId: string = 'cmt_f4a1b2';
5 const externalId: string = 'ext-789';
6 const eventType: string = 'comment.created';
7 const type: string = 'delivery';
8 const domain: string = 'app.example.com';
9 const attemptCountGT: number = 2;
10
11 const result: GetPendingWebhookEventCount200Response = await getPendingWebhookEventCount(
12 tenantId,
13 commentId,
14 externalId,
15 eventType,
16 type,
17 domain,
18 attemptCountGT
19 );
20
21 console.log(result);
22})();
23

getPendingWebhookEvents Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
commentId string Не
externalId string Не
eventType string Не
type string Не
domain string Не
attemptCountGT number Не
skip number Не

Одговор

Враћа: GetPendingWebhookEvents200Response

Пример

getPendingWebhookEvents Пример
Copy Copy
1
2const tenantId: string = "tenant_78b2f1";
3const commentId: string = "cmt_0042";
4const eventType: string = "comment.created";
5const domain: string = "blog.example.com";
6const attemptCountGT: number = 1;
7const skip: number = 0;
8
9const pending: GetPendingWebhookEvents200Response = await getPendingWebhookEvents(
10 tenantId,
11 commentId,
12 undefined, // externalId
13 eventType,
14 undefined, // type
15 domain,
16 attemptCountGT,
17 skip
18);
19

createQuestionConfig Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
createQuestionConfigBody CreateQuestionConfigBody Da

Odgovor

Vraća: CreateQuestionConfig200Response

Primjer

Primjer createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_live_7f8b3c2a";
3const customOptions: QuestionConfigCustomOptionsInner[] = [
4 { value: "under18", label: "Under 18" },
5 { value: "18-24", label: "18-24" },
6 { value: "25-34", label: "25-34", defaultSelected: true }
7];
8const createQuestionConfigBody: CreateQuestionConfigBody = {
9 key: "age_range",
10 label: "What is your age range?",
11 required: false, // opciono: prikaži izostavljanje naspram uključenih opcionalnih polja
12 renderingType: QuestionRenderingType.Dropdown,
13 options: customOptions,
14 whenSave: QuestionWhenSave.Always
15};
16const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
17

deleteQuestionConfig Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: FlagCommentPublic200Response

Пример

deleteQuestionConfig Пример
Copy Copy
1
2async function deleteIfPresent(tenantId: string, id?: string): Promise<FlagCommentPublic200Response | null> {
3 if (!id) return null;
4 const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5 return result;
6}
7const tenantId: string = 'tenant_acme_001';
8const optionalConfigId: string | undefined = 'qcfg_20260112_01';
9(async (): Promise<void> => {
10 const deleted: FlagCommentPublic200Response | null = await deleteIfPresent(tenantId, optionalConfigId);
11 void deleted;
12})();
13

getQuestionConfig Internal Link

Параметри

Name Type Required Description
tenantId string Да
id string Да

Одговор

Враћа: GetQuestionConfig200Response

Пример

getQuestionConfig Пример
Copy Copy
1
2const tenantId: string = 'acme-corp-47';
3const questionId: string = 'q-2026-01-12-01';
4const result: GetQuestionConfig200Response = await getQuestionConfig(tenantId, questionId);
5function summarizeConfig(cfg: GetQuestionConfig200Response, includeMetadata?: boolean): QuestionConfig | undefined {
6 // includeMetadata је опционалан; имплементација изостављена ради краткоће
7 return undefined;
8}
9const summarizedWithMeta: QuestionConfig | undefined = summarizeConfig(result, true);
10const summarizedDefault: QuestionConfig | undefined = summarizeConfig(result);
11

getQuestionConfigs Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
skip number Не

Одговор

Враћа: GetQuestionConfigs200Response

Пример

Пример getQuestionConfigs
Copy Copy
1
2const tenantId: string = 'tenant-42a7b9';
3const firstPage: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const secondPage: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, 50);
5

updateQuestionConfig Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
updateQuestionConfigBody UpdateQuestionConfigBody Да

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример updateQuestionConfig
Copy Copy
1
2const tenantId: string = 'tenant-82b3a';
3const id: string = 'qst-20260112';
4const updateQuestionConfigBody: UpdateQuestionConfigBody = { label: 'Age verification', required: true, renderingType: 'singleChoice', customOptions: [{ value: '18-24', label: '18–24' }] } as UpdateQuestionConfigBody;
5const result: FlagCommentPublic200Response = await updateQuestionConfig(tenantId, id, updateQuestionConfigBody);
6

createQuestionResult Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
createQuestionResultBody CreateQuestionResultBody Da

Odgovor

Vraća: CreateQuestionResult200Response

Primjer

Primjer createQuestionResult
Copy Copy
1
2const tenantId: string = "fc_tenant_7a3c_us-east-1";
3const metaItem: MetaItem = { key: "referrer", value: "/blog/how-to-comment" };
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "q_42",
6 commenterId: "user_1984",
7 answer: "yes",
8 score: 4,
9 meta: [metaItem] // opcionalni metapodaci prikazani
10} as CreateQuestionResultBody;
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

deleteQuestionResult Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: FlagCommentPublic200Response

Пример

deleteQuestionResult Пример
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const questionResultId: string = '6f1a2b3c-4d5e-6789-abcd-ef0123456789';
4const deletedResult: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, questionResultId);
5console.log(deletedResult);
6

getQuestionResult Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetQuestionResult200Response

Пример

Пример getQuestionResult
Copy Copy
1
2const tenantId: string = "3fa85f64-5717-4562-b3fc-2c963f66afa6";
3const questionId: string = "question_72f1b9c3a4";
4const result: GetQuestionResult200Response = await getQuestionResult(tenantId, questionId);
5console.log(result);
6

getQuestionResults Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
urlId string Не
userId string Не
startDate string Не
questionId string Не
questionIds string Не
skip number Не

Одговор

Враћа: GetQuestionResults200Response

Пример

getQuestionResults Пример
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const urlId: string = 'news/2025/fastcomments-release';
4const userId: string = 'user_8b7f3c';
5const startDate: string = '2025-01-01T00:00:00Z';
6const questionIds: string = 'q123,q124';
7const skip: number = 20;
8const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, undefined, questionIds, skip);
9

updateQuestionResult Internal Link

Параметри

Name Type Required Description
tenantId string Yes
id string Yes
updateQuestionResultBody UpdateQuestionResultBody Yes

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример за updateQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_84f2b9';
3const id: string = 'question_3a7c1d';
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 result: { verdict: 'helpful', confidence: 0.92 },
6 reviewer: { id: 'mod_102', name: 'Aisha Rahman' },
7 notifyUser: true // необавезни параметар је укључен
8};
9const response: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
10

aggregateQuestionResults Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
questionId string Ne
questionIds Array Ne
urlId string Ne
timeBucket AggregateTimeBucket Ne
startDate Date Ne
forceRecalculate boolean Ne

Odgovor

Vraća: AggregateQuestionResults200Response

bulkAggregateQuestionResults Internal Link


Параметри

Назив Тип Обавезно Опис
tenantId string Да
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest Да
forceRecalculate boolean Не

Одговор

Враћа: BulkAggregateQuestionResults200Response


combineCommentsWithQuestionResults Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
questionId string Не
questionIds Array Не
urlId string Не
startDate Date Не
forceRecalculate boolean Не
minValue number Не
maxValue number Не
limit number Не

Одговор

Враћа: CombineCommentsWithQuestionResults200Response


addSSOUser Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Да
createAPISSOUserData CreateAPISSOUserData Да

Odgovor

Vraća: AddSSOUserAPIResponse


deleteSSOUser Internal Link


Parametri

Ime Type Obavezno Opis
tenantId string Da
id string Da
deleteComments boolean Ne
commentDeleteMode string Ne

Odgovor

Vraća: DeleteSSOUserAPIResponse


getSSOUserByEmail Internal Link


Параметри

Назив Тип Обавезно Опис
tenantId string Да
email string Да

Одговор

Враћа: GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Da
id string Da

Odgovor

Vraća: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
skip number Не

Одговор

Враћа: GetSSOUsers200Response


patchSSOUser Internal Link

Параметри

Ime Type Обавезно Опис
tenantId string Да
id string Да
updateAPISSOUserData UpdateAPISSOUserData Да
updateComments boolean Не

Одговор

Враћа: PatchSSOUserAPIResponse


putSSOUser Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
updateAPISSOUserData UpdateAPISSOUserData Да
updateComments boolean Не

Одговор

Враћа: PutSSOUserAPIResponse


createSubscription Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
createAPIUserSubscriptionData CreateAPIUserSubscriptionData Da

Odgovor

Vraća: CreateSubscriptionAPIResponse


deleteSubscription Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
userId string Не

Одговор

Враћа: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
userId string Ne

Odgovor

Vraća: GetSubscriptionsAPIResponse

getTenantDailyUsages Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
yearNumber number Не
monthNumber number Не
dayNumber number Не
skip number Не

Одговор

Враћа: GetTenantDailyUsages200Response

Пример

getTenantDailyUsages Пример
Copy Copy
1
2const tenantId: string = "tenant_89f3c2-prod";
3const yearNumber: number = 2026;
4const monthNumber: number = 1;
5const skip: number = 0;
6const usages: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, undefined, skip);
7

createTenantPackage Internal Link

Параметри

Назив Тип Потребно Опис
tenantId string Да
createTenantPackageBody CreateTenantPackageBody Да

Одговор

Враћа: CreateTenantPackage200Response

Пример

createTenantPackage Пример
Copy Copy
1
2const tenantId: string = "tenant_7f3b1a9c";
3const tenantPackage: TenantPackage = { id: "pkg_001", name: "Premium Plan", seats: 100 };
4const customConfig: CustomConfigParameters = { enableImages: true, maxImageSizeMb: 10 };
5const createTenantPackageBody: CreateTenantPackageBody = {
6 packageName: "Premium Plus",
7 tenantPackage,
8 customConfig,
9 notes: "Enable advanced moderation and image uploads" // необавезан параметар (показано)
10};
11const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
12

deleteTenantPackage Internal Link

Параметри

Name Type Required Description
tenantId string Да
id string Да

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'fc-tenant-8a9c2b';
3const packageId: string = 'pkg-47f3c9';
4const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
5

getTenantPackage Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetTenantPackage200Response

Пример

getTenantPackage Пример
Copy Copy
1
2const tenantId: string = 'tenant_westus_01';
3const packageId: string = 'pkg_premium_annual_2026';
4interface FetchOptions { includeArchived?: boolean }
5const options: FetchOptions = { includeArchived: false };
6const result: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
7

getTenantPackages Internal Link

Параметри

Name Type Required Description
tenantId string Да
skip number Не

Одговор

Враћа: GetTenantPackages200Response

Пример

getTenantPackages Пример
Copy Copy
1
2const tenantId: string = 'tenant_4f3a9c2d';
3const skip: number = 25;
4const packagesResponse: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const pagedPackagesResponse: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

replaceTenantPackage Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
replaceTenantPackageBody ReplaceTenantPackageBody Да

Одговор

Враћа: FlagCommentPublic200Response

Пример

replaceTenantPackage Пример
Copy Copy
1
2const tenantId: string = 'tenant-9b72f2';
3const packageId: string = 'pkg-prod-v2';
4const replaceTenantPackageBody: ReplaceTenantPackageBody = {
5 name: 'Premium Moderation Bundle',
6 enabled: true,
7 maxModerators: 4,
8 // опционална поља као што су "notes" или "trialExpiry" су намерно изостављена овде
9} as ReplaceTenantPackageBody;
10const result: FlagCommentPublic200Response = await replaceTenantPackage(
11 tenantId,
12 packageId,
13 replaceTenantPackageBody
14);
15

updateTenantPackage Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
updateTenantPackageBody UpdateTenantPackageBody Да

Одговор

Враћа: FlagCommentPublic200Response

Примјер

updateTenantPackage Примјер
Copy Copy
1
2const tenantId: string = 'tenant_8a4f1c9b';
3const packageId: string = 'pkg_premium_v2';
4const customConfig: CustomConfigParameters = { enableRichText: true, maxImagesPerComment: 5 };
5const updateTenantPackageBody: UpdateTenantPackageBody = {
6 name: 'Premium Moderation Package',
7 enabled: true,
8 description: 'Adds advanced spam rules, image moderation and priority support',
9 customConfigParameters: customConfig
10};
11const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, packageId, updateTenantPackageBody);
12

createTenantUser Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
createTenantUserBody CreateTenantUserBody Да

Одговор

Враća: CreateTenantUser200Response

Пример

Пример createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_9a8c7e4b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "julia.smith@acme-corp.com",
5 displayName: "Julia Smith",
6 role: "moderator",
7 password: "Str0ngP@ssword!23",
8 sendInviteEmail: true, // опциони параметар демонстриран
9 locale: "en-US",
10 metadata: { department: "Customer Success" }
11};
12const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
13

deleteTenantUser Internal Link

Parametri

Naziv Тип Обавезно Опис
tenantId string Да
id string Да
deleteComments string Не
commentDeleteMode string Не

Одговор

Враћа: FlagCommentPublic200Response

Примјер

Примјер deleteTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2a9c';
3const id: string = 'user_4e5f6a7b';
4const deleteComments: string = 'true';
5const commentDeleteMode: string = 'hard';
6
7const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
8

getTenantUser Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetTenantUser200Response

Пример

Пример getTenantUser
Copy Copy
1
2const tenantId: string = "tenant_9f7d4b2a-1c3e";
3const id: string = "user_6a12b3c4d5";
4const includeProfile: boolean | undefined = true; // пример опционалног параметра
5const response: GetTenantUser200Response = await getTenantUser(tenantId, id);
6console.log("Tenant user fetched", response);
7

getTenantUsers Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Da
skip number Ne

Odgovor

Vraća: GetTenantUsers200Response

Primjer

getTenantUsers Primjer
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2c1a';
3const skip: number = 50;
4const firstPage: GetTenantUsers200Response = await getTenantUsers(tenantId);
5const nextPage: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
6

replaceTenantUser Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
replaceTenantUserBody ReplaceTenantUserBody Да
updateComments string Не

Одговор

Враћа: FlagCommentPublic200Response

Пример

replaceTenantUser Пример
Copy Copy
1
2const tenantId: string = "tenant_5f8b9a";
3const id: string = "user_92bf21";
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 email: "jane.doe@acme-corp.com",
6 displayName: "Jane Doe",
7 externalId: "acme|12345",
8 roles: ["commenter", "moderator"],
9 isActive: true,
10 metadata: { team: "product", location: "NYC" }
11};
12const updateComments: string = "Update historical comments to reflect new display name";
13const result: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
14

Parametri

Name Type Required Description
tenantId string Da
id string Da
redirectURL string Ne

Odgovor

Vraća: FlagCommentPublic200Response

Primjer

Primjer sendLoginLink
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const id: string = 'user_9f3b2a';
4const redirectURL: string = 'https://app.example.com/onboard?source=login-email';
5const result: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
6

updateTenantUser Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
updateTenantUserBody UpdateTenantUserBody Да
updateComments string Не

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример за updateTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_84f3b2';
3const id: string = 'user_7a9d1c';
4const updateComments: string = 'Promoted to moderator and updated contact email';
5const updateTenantUserBody: UpdateTenantUserBody = {
6 email: 'jane.doe+mod@example.com',
7 displayName: 'Jane D.',
8 roles: ['moderator'],
9 isBanned: false,
10 metadata: { department: 'community' }
11};
12const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, id, updateTenantUserBody, updateComments);
13

createTenant Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Da
createTenantBody CreateTenantBody Da

Odgovor

Vraća: CreateTenant200Response

Primjer

Primjer createTenant
Copy Copy
1
2const tenantId: string = "acme-corporation";
3const billing: BillingInfo = { planId: "pro", billingContactEmail: "finance@acme-corp.com", currency: "USD" };
4const domainConfig: APIDomainConfiguration = { primaryDomain: "comments.acme-corp.com", allowedDomains: ["acme-corp.com", "www.acme-corp.com"], enforceHttps: true };
5const importedSites: ImportedSiteType[] = [{ siteId: "site-001", url: "https://blog.acme-corp.com", name: "Acme Blog" }]; // optional
6const createBody: CreateTenantBody = { tenantName: "Acme Corporation", adminEmail: "admin@acme-corp.com", billingInfo: billing, domainConfiguration: domainConfig, importedSites, enableModeration: true };
7const response: CreateTenant200Response = await createTenant(tenantId, createBody);
8

deleteTenant Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
id string Da
sure string Ne

Odgovor

Vraća: FlagCommentPublic200Response

Primjer

Primjer deleteTenant
Copy Copy
1
2const tenantId: string = "tenant_7b3f1a9e";
3const id: string = "flag_9c4d2b1a";
4const sure: string = "yes_confirm_delete";
5
6const result: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
7console.log(result);
8

getTenant Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetTenant200Response

Пример

getTenant Пример
Copy Copy
1
2const tenantId: string = "tenant_acme_corp";
3const id: string = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
4interface GetOptions { includeDeleted?: boolean; locale?: string; }
5const options: GetOptions = { locale: "en-US" };
6const result: GetTenant200Response = await getTenant(tenantId, id);
7

getTenants Internal Link

Параметри

Name Type Required Description
tenantId string Да
meta string Не
skip number Не

Одговор

Враћа: GetTenants200Response

Пример

Пример getTenants
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9f2d1b7c';
4 const meta: string = 'include=domains,billing,customConfig';
5 const skip: number = 20;
6 const response: GetTenants200Response = await getTenants(tenantId, meta, skip);
7 console.log(response);
8})();
9

updateTenant Internal Link

Parametri

Name Tip Obavezno Opis
tenantId string Yes
id string Yes
updateTenantBody UpdateTenantBody Yes

Odgovor

Vraća: FlagCommentPublic200Response

Primjer

Primjer za updateTenant
Copy Copy
1
2const tenantId: string = "tenant_01H4ZQ7KABCD";
3const id: string = "site_9f8e7d6c";
4const apiDomainConfiguration: APIDomainConfiguration = {
5 primaryDomain: "comments.acme.com",
6 allowSubdomains: true
7};
8const billingInfo: BillingInfo = {
9 planName: "Business",
10 billingContactEmail: "billing@acme.com",
11 seats: 25
12};
13const updateTenantBody: UpdateTenantBody = {
14 displayName: "Acme Corporation Comments",
15 apiDomainConfiguration,
16 billingInfo, // opcioni parametar prikazan
17 enableModeration: true
18};
19const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
20

uploadImage Internal Link


Отпреми и промијени величину слике

Параметри

Назив Тип Обавезно Опис
tenantId string Да
file Blob Да
sizePreset SizePreset Не
urlId string Не

Одговор

Враћа: UploadImageResponse


getUserBadgeProgressById Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetUserBadgeProgressById200Response


getUserBadgeProgressByUserId Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
userId string Да

Одговор

Враћа: GetUserBadgeProgressById200Response


getUserBadgeProgressList Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
userId string Не
limit number Не
skip number Не

Одговор

Враћа: GetUserBadgeProgressList200Response


createUserBadge Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
createUserBadgeParams CreateUserBadgeParams Да

Одговор

Враћа: CreateUserBadge200Response


deleteUserBadge Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: UpdateUserBadge200Response


getUserBadge Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetUserBadge200Response


getUserBadges Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
userId string Не
badgeId string Не
type number Не
displayedOnComments boolean Не
limit number Не
skip number Не

Одговор

Враћа: GetUserBadges200Response


updateUserBadge Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да
updateUserBadgeParams UpdateUserBadgeParams Да

Одговор

Враћа: UpdateUserBadge200Response


getUserNotificationCount Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
sso string Не

Одговор

Враћа: GetUserNotificationCount200Response


getUserNotifications Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
pageSize number Не
afterId string Не
includeContext boolean Не
afterCreatedAt number Не
unreadOnly boolean Не
dmOnly boolean Не
noDm boolean Не
includeTranslations boolean Не
sso string Не

Одговор

Враћа: GetUserNotifications200Response


resetUserNotificationCount Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
sso string Ne

Odgovor

Vraća: ResetUserNotifications200Response


resetUserNotifications Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
afterId string Не
afterCreatedAt number Не
unreadOnly boolean Не
dmOnly boolean Не
noDm boolean Не
sso string Не

Одговор

Враћа: ResetUserNotifications200Response


updateUserNotificationCommentSubscriptionStatus Internal Link

Omogući ili onemogući obavještenja za određeni komentar.

Parametri

Ime Tip Obavezno Opis
tenantId string Da
notificationId string Da
optedInOrOut UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum Da
commentId string Da
sso string Ne

Odgovor

Vraća: UpdateUserNotificationStatus200Response


updateUserNotificationPageSubscriptionStatus Internal Link

Омогући или онемогући обавештења за страницу. Када су корисници претплаћени на страницу, обавештења се креирају за нове коренске коментаре, и такође

Параметри

Име Тип Обавезно Опис
tenantId string Да
urlId string Да
url string Да
pageTitle string Да
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum Да
sso string Не

Одговор

Враћа: UpdateUserNotificationStatus200Response

updateUserNotificationStatus Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
notificationId string Da
newStatus UpdateUserNotificationStatusNewStatusEnum Da
sso string Ne

Odgovor

Vraća: UpdateUserNotificationStatus200Response


getUserPresenceStatuses Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
urlIdWS string Да
userIds string Да

Одговор

Враћа: GetUserPresenceStatuses200Response


searchUsers Internal Link


Параметри

Име Тип Обавезно Опис
tenantId string Да
urlId string Да
usernameStartsWith string Да
mentionGroupIds Array Не
sso string Не

Одговор

Враћа: SearchUsers200Response


getUser Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Да
id string Да

Одговор

Враћа: GetUser200Response

Пример

getUser Пример
Copy Copy
1
2const tenantId: string = "acme-publishing-42";
3const userIdOptional: string | undefined = "user_9d7b4c"; // може бити undefined у неким токовима (опционо)
4const id: string = userIdOptional ?? "user_default_0001";
5const result: GetUser200Response = await getUser(tenantId, id);
6console.log(result);
7

createVote Internal Link

Parametri

Name Type Obavezno Opis
tenantId string Da
commentId string Da
direction CreateVoteDirectionEnum Da
userId string Ne
anonUserId string Ne

Odgovor

Vraća: VoteComment200Response

Primjer

Primjer createVote
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-tenant-812';
4 const commentId: string = '5e8f8b7a-3d4b-4f1b-9a2e-1c9f2d6a7b8c';
5 const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.UP;
6 const anonUserId: string = 'anon-84b9c2d';
7 const voteResult: VoteComment200Response = await createVote(tenantId, commentId, direction, undefined, anonUserId);
8 console.log(voteResult);
9})();
10

deleteVote Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
id string Да
editKey string Не

Одговор

Враћа: DeleteCommentVote200Response

Пример

Пример deleteVote
Copy Copy
1
2const tenantId: string = 'tenant_7f3b21c9';
3const id: string = 'vote_4a2d9f1b';
4const editKey: string = 'edit_92b7c6a1';
5
6const resultWithoutEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id);
7const resultWithEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
8

getVotes Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Da
urlId string Da

Odgovor

Vraća: GetVotes200Response

Primjer

getVotes Primjer
Copy Copy
1
2const tenantId: string = 'tenant_9f8b3c_prod';
3const urlId: string = '/news/2026/typescript-ecosystem-update';
4const votes: GetVotes200Response = await getVotes(tenantId, urlId);
5// Ako bi postojao opcionalan parametar, npr. includeHidden, mogao bi se koristiti ovako:
6// const votesWithHidden: GetVotes200Response = await getVotes(tenantId, urlId, { includeHidden: true });
7

getVotesForUser Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
urlId string Da
userId string Ne
anonUserId string Ne

Odgovor

Vraća: GetVotesForUser200Response

Primjer

getVotesForUser Primjer
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const urlId: string = 'news/2026/01/12/product-launch';
4const userId: string = 'user_9c3f2b';
5const anonUserId: string = 'anon_d4e7a1';
6
7const votesForUser: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, userId);
8const votesForAnon: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, undefined, anonUserId);
9

Treba vam pomoć?

Ako naiđete na bilo kakve probleme ili imate pitanja u vezi JavaScript/TypeScript SDK-a, molimo vas:

Doprinosi

Doprinosi su dobrodošli! Molimo posjetite GitHub repozitorij za smjernice za doprinos.