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


Пуна API референца: docs/api/README.md

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


Ovaj SDK koristi dualne ulazne tačke како би обезбедио оптималну компатибилност и спречио грешке при извршавању:

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

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

SDK пружа три главне API класе:

  • DefaultApi - Заштићени крајњи пункти који захтевају ваш API кључ за аутентификацију. Користите их за операције на серверској страни.
  • PublicApi - Јавни крајњи пункти који су доступни без API кључа. Могу се позивати директно из прегледача/мобилних уређаја/итд.
  • HiddenApi - Интерни/админ крајњи пункти за напредне случајеве употребе.

Пример: Коришћење Public API (безбедно за прегледач)

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

const publicApi = new PublicApi();

// Добијање коментара за страницу (API кључ није потребан)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Пример: Коришћење Default API (само на серверу)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Чувајте ово у тајности!
});
const defaultApi = new DefaultApi(config);

// Добијање коментара са пуном админ приступом
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

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

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

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

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

// Код на серверу (Node.js/бекенд)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Направите једноставан SSO користећи уграђеног помоћника  
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();

// Пошаљите ssoToken у код на клијентској страни
// Код на клијентској страни може затим да користи овај токен са SDK-ом за прегледач

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

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

// Код на серверу (Node.js/бекенд)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Направите сигуран SSO користећи уграђеног помоћника
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();

// Користите са API позивима на серверу
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Или пошаљите ssoConfig клијенту за употребу у прегледачу

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

// Код на клијентској страни (прегледач)
import { PublicApi } from 'fastcomments-sdk/browser';

// Преузмите SSO токен са вашег серверског ендпоинта
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 // Користите SSO токен генерисан на серверу
});

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

// Серверска страна: креирајте SSO и коментар
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

Добијање коментара за страницу

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

Креирање коментара

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

Гласање за коментар

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 за позитиван глас, -1 за негативан глас
  }
});

Управљање корисницима (захтева API кључ)

// Претрага корисника (захтева DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Живи догађаји (реално-временска ажурирања) Internal Link

Pretplatite se na događaje uživo da biste dobili ažuriranja u realnom vremenu za komentare, glasove i druge aktivnosti.

Događaji na nivou stranice

Slušajte događaje uživo na određenoj stranici (komentari, glasovi, itd.):

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

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

// Pretplatite se na događaje uživo za stranicu
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (dohvatite ovo iz odgovora getComments)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Ažurirajte vaš korisnički interfejs sa novim komentarom
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Ažurirajte broj glasova u vašem korisničkom interfejsu
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // Vrati true ako je događaj obrađen
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Zatvorite pretplatu kada završite
subscription.close();

Pretplata na događaje korisnika

Slušajte događaje specifične za korisnika (obaveštenja, pominjanja, itd.):

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

const userConfig = {
  userIdWS: 'user-session-id', // Dohvatite ovo iz odgovora getComments
};

// Pretplatite se na lični feed korisnika
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);

    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Prikažite obaveštenje u vašem korisničkom interfejsu
        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');
  }
);

// Zatvorite kada završite
userSubscription.close();

Kako dobiti userIdWS

Parametar userIdWS je obavezan za događaje uživo i može se dobiti iz odgovora API-ja:

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

// Izvucite userIdWS iz odgovora
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Sada se možete pretplatiti na događaje uživo
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

Идентификатори емитовања Internal Link

Videćete da treba da prosledite broadcastId u nekim API pozivima. Kada primite događaje, dobićete ovaj ID nazad, tako da ćete znati da ignorišete događaj ako planirate optimistično primeniti promene na klijentu (što verovatno želite, jer pruža najbolje iskustvo). Ovde prosledite UUID. ID treba biti dovoljno jedinstven da se ne pojavi dva puta tokom sesije pregledača.

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() // Jedinstveni ID za ovu operaciju
  }
});

Обрада грешака 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);
  }
}

Агрегирај Internal Link

Агрегира документе груписањем (ако је groupBy наведен) и примењујући више операција. Подржане су различите операције (нпр. sum, countDistinct, avg итд.).

Параметри

Име Тип Обавезно Опис
tenantId string Да
aggregationRequest AggregationRequest Да
parentTenantId string Не
includeStats boolean Не

Одговор

Враћа: AggregationResponse


Добиј дневнике ревизије Internal Link

Параметри

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

Одговор

Враћа: GetAuditLogs200Response


Блокирај коментар (јавно) Internal Link


Параметри

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

Одговор

Враћа: BlockFromCommentPublic200Response


Уклони блокаду коментара (јавно) Internal Link

Параметри

Name Type Required Description
tenantId string Да
commentId string Да
publicBlockFromCommentParams PublicBlockFromCommentParams Да
sso string Не

Одговор

Враћа: UnBlockCommentPublic200Response


Провера блокираних коментара Internal Link

Параметри

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

Одговор

Враћа: CheckedCommentsForBlocked200Response


Блокирај корисника са коментара Internal Link

Параметри

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

Одговор

Враћа: BlockFromCommentPublic200Response


Креирај коментар (јавно) Internal Link

Параметри

Назив Тип Обавезно Опис
tenantId string Да
urlId string Да
broadcastId string Да
commentData CommentData Да
sessionId string Не
sso string Не

Одговор

Враћа: CreateCommentPublic200Response


Обриши коментар Internal Link

Параметри

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

Одговор

Враћа: DeleteComment200Response


Обриши коментар (јавно) Internal Link

Параметри

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

Одговор

Враћа: DeleteCommentPublic200Response


Обриши глас за коментар Internal Link

Параметри

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

Одговор

Враћа: DeleteCommentVote200Response

Пријави коментар Internal Link


Параметри

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

Одговор

Враћа: FlagComment200Response


Добиј коментар Internal Link

Параметри

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

Одговор

Враћа: GetComment200Response


Добиј коментаре Internal Link

Параметри

Име Type Обавезно Опис
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


Добиј коментаре (јавно) Internal Link


req tenantId urlId

Параметри

Име Тип Обавезно Опис
tenantId string Да
urlId string Да
page number Не
direction SortDirections Не
sso string Не
skip number Не
skipChildren number Не
limit number Не
limitChildren number Не
countChildren boolean Не
fetchPageForCommentId string Не
includeConfig boolean Не
countAll boolean Не
includei10n boolean Не
locale string Не
modules string Не
isCrawler boolean Не
includeNotificationCount boolean Не
asTree boolean Не
maxTreeDepth number Не
useFullTranslationIds boolean Не
parentId string Не
searchText string Не
hashTags Array Не
userId string Не
customConfigStr string Не
afterCommentId string Не
beforeCommentId string Не

Одговор

Враћа: GetCommentsPublic200Response


Добиј текст коментара Internal Link


Параметри

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

Одговор

Враћа: GetCommentText200Response


Добиј имена корисника који су гласали за коментар Internal Link

Параметри

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

Одговор

Враћа: GetCommentVoteUserNames200Response


Закључај коментар Internal Link

Параметри

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

Одговор

Враћа: LockComment200Response

Закачи коментар Internal Link

Параметри

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

Одговор

Враћа: PinComment200Response

Сачувај коментар Internal Link

Параметри

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

Одговор

Враћа: SaveComment200Response


Сачувај коментаре (групно) Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Da
createCommentParams Array Da
isLive boolean Ne
doSpamCheck boolean Ne
sendEmails boolean Ne
populateNotifications boolean Ne

Odgovor

Vraća: Array<SaveComment200Response

Постави текст коментара Internal Link


Параметри

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

Одговор

Враћа: SetCommentText200Response


Уклони блокаду корисника са коментара Internal Link


Параметри

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

Одговор

Враћа: UnBlockCommentPublic200Response


Уклони пријаву коментара Internal Link


Параметри

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

Одговор

Враћа: FlagComment200Response


Откључај коментар Internal Link

Параметри

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

Одговор

Враћа: LockComment200Response


Откачи коментар Internal Link

Параметри

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

Одговор

Враћа: PinComment200Response


Ажурирај коментар 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


Гласај за коментар Internal Link

Параметри

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

Одговор

Враћа: VoteComment200Response


Додај конфигурацију домена Internal Link

Параметри

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

Одговор

Враћа: AddDomainConfig200Response


Обриши конфигурацију домена Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Да
domain string Да

Odgovor

Vraća: DeleteDomainConfig200Response


Добиј конфигурацију домена Internal Link


Параметри

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

Одговор

Враћа: GetDomainConfig200Response


Добиј конфигурације домена Internal Link


Параметри

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

Одговор

Враћа: GetDomainConfigs200Response


Делимична измена конфигурације домена Internal Link

Параметри

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

Одговор

Враћа: GetDomainConfig200Response


Замени/постави конфигурацију домена Internal Link


Параметри

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

Одговор

Враћа: GetDomainConfig200Response


Креирај шаблон е-поште Internal Link

Parametri

Name Type Required Description
tenantId string Da
createEmailTemplateBody CreateEmailTemplateBody Da

Odgovor

Vraća: CreateEmailTemplate200Response

Primer

createEmailTemplate Primer
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" } // neobavezni dodatni podaci
11};
12
13const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
14

Обриши шаблон е-поште 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

Обриши грешку рендеровања шаблона е-поште 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

Добиј шаблон е-поште 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

Добиј дефиниције шаблона е-поште Internal Link

Параметри

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

Одговор

Враћа: GetEmailTemplateDefinitions200Response

Пример

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

Добиј грешке рендеровања шаблона е-поште 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

Добиј шаблоне е-поште 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

Рендеруј шаблон е-поште 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

Ажурирај шаблон е-поште Internal Link

Параметри

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

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример 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', // опционално поље (пример)
9 enabled: true,
10 customConfig: { priority: 'high' } // опционални прилагођени параметри
11};
12const response: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
13

Добиј дневник догађаја Internal Link

req tenantId urlId userIdWS

Параметри

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

Одговор

Враћа: GetEventLog200Response

Добиј глобални дневник догађаја Internal Link

req tenantId urlId userIdWS

Параметри

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

Одговор

Враћа: GetEventLog200Response

Креирај објаву Internal Link


Параметри

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

Одговор

Враћа: CreateFeedPost200Response


Креирај објаву (јавно) Internal Link

Параметри

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

Одговор

Враћа: CreateFeedPostPublic200Response


Обриши објаву (јавно) Internal Link

Параметри

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

Одговор

Враћа: DeleteFeedPostPublic200Response


Добиј објаве Internal Link

req tenantId afterId

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
afterId string Ne
limit number Ne
tags Array Ne

Odgovor

Vraća: GetFeedPosts200Response

Добиј објаве (јавно) Internal Link


req tenantId afterId

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
afterId string Ne
limit number Ne
tags Array Ne
sso string Ne
isCrawler boolean Ne
includeUserInfo boolean Ne

Odgovor

Vraća: GetFeedPostsPublic200Response


Добиј статистику објава Internal Link

Параметри

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

Одговор

Враћа: GetFeedPostsStats200Response


Добиј реакције корисника (јавно) Internal Link

Параметри

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

Одговор

Враћа: GetUserReactsPublic200Response


Реагуј на објаву (јавно) Internal Link

Параметри

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

Одговор

Враћа: ReactFeedPostPublic200Response


Ажурирај објаву Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
id string Da
feedPost FeedPost Da

Odgovor

Vraća: FlagCommentPublic200Response


Ажурирај објаву (јавно) Internal Link

Параметри

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

Одговор

Враћа: CreateFeedPostPublic200Response


Пријави коментар (јавно) Internal Link

Parametri

Ime Tip Obavezno Opis
tenantId string Da
commentId string Da
isFlagged boolean Da
sso string Ne

Odgovor

Vraća: FlagCommentPublic200Response


Додај хештег 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

Додај хештегове (групно) Internal Link

Параметри

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

Одговор

Враћа: 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

Обриши хештег Internal Link


Параметри

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

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример 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

Добиј хештегове Internal Link

Параметри

Име Тип Обавезно Опис
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

Измени хештег Internal Link

Параметри

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

Одговор

Враћа: PatchHashTag200Response

Пример

patchHashTag пример
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

Креирај модератора 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

Обриши модератора 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

Добиј модератора Internal Link

Параметри

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

Одговор

Враћа: GetModerator200Response

Пример

getModerator Пример
Copy Copy
1
2const tenantId: string = "tenant_eu_4f8d2b9e";
3const maybeModeratorId: string | undefined = "mod_91c3b7a2"; // опциони извор (може бити undefined)
4const moderator: GetModerator200Response = await getModerator(tenantId, maybeModeratorId!);
5

Добиј модераторе 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

Пошаљи позивницу 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

Ажурирај модератора Internal Link

Параметри

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

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример updateModerator
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 // демонстрација опционалног параметра
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBodyWithOptional);
12

Обриши број обавештења 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

Добиј кеширан број обавештења Internal Link

Параметри

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

Одговор

Враћа: 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

Добиј број обавештења Internal Link

Parametri

Naziv Tip Obavezno Оpis
tenantId string Da
userId string Ne
urlId string Ne
fromCommentId string Ne
viewed boolean Ne
type string Ne

Одговор

Vraća: GetNotificationCount200Response

Пример

Primer 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

Добиј обавештења Internal Link

Параметри

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

Одговор

Враћа: GetNotifications200Response

Пример

getNotifications Пример
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

Ажурирај обавештење Internal Link

Parametri

Naziv Tip Obavezno Opis
tenantId string Da
id string Da
updateNotificationBody UpdateNotificationBody Da
userId string Ne

Odgovor

Vraća: FlagCommentPublic200Response

Primer

Primer 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

Додај страницу Internal Link

Параметри

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

Одговор

Враћа: AddPageAPIResponse


Обриши страницу Internal Link


Parametri

Naziv Tip Obavezno Opis
tenantId string Da
id string Da

Odgovor

Vraća: DeletePageAPIResponse


Добиј страницу по URL ИД-у Internal Link

Параметри

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

Одговор

Враћа: GetPageByURLIdAPIResponse

Добиј странице Internal Link


Параметри

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

Одговор

Враћа: GetPagesAPIResponse


Измени страницу (делимично) Internal Link

Параметри

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

Одговор

Враћа: PatchPageAPIResponse


Обриши очекујући вебхук догађај 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

Добиј број очекујућих вебхук догађаја Internal Link

Параметри

Име Тип Обавезно Опис
tenantId string Yes
commentId string No
externalId string No
eventType string No
type string No
domain string No
attemptCountGT number No

Одговор

Враћа: 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

Добиј очекујуће вебхук догађаје 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

Креирај конфигурацију питања Internal Link

Параметри

Name Type Required Description
tenantId string Да
createQuestionConfigBody CreateQuestionConfigBody Да

Одговор

Враћа: CreateQuestionConfig200Response

Пример

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, // необавезно: демонстрира изостављање у односу на укључена необавезна поља
12 renderingType: QuestionRenderingType.Dropdown,
13 options: customOptions,
14 whenSave: QuestionWhenSave.Always
15};
16const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
17

Обриши конфигурацију питања 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

Добиј конфигурацију питања Internal Link

Параметри

Име Тип Обавезно Опис
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

Добиј конфигурације питања 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

Ажурирај конфигурацију питања 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

Креирај резултат питања Internal Link

Параметри

Name Type Required Description
tenantId string Да
createQuestionResultBody CreateQuestionResultBody Да

Одговор

Враћа: CreateQuestionResult200Response

Пример

Пример 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] // пример опционих метаподатака
10} as CreateQuestionResultBody;
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

Обриши резултат питања Internal Link

Параметри

Name Type Required Description
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

Добиј резултат питања 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

Добиј резултате питања 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

Ажурирај резултат питања Internal Link

Параметри

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

Одговор

Враћа: 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

Агрегирај резултате питања Internal Link

Параметри

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

Одговор

Враћа: AggregateQuestionResults200Response


Агрегирај резултате питања (групно) Internal Link

Параметри

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

Одговор

Враћа: BulkAggregateQuestionResults200Response


Комбинуј коментаре са резултатима питања Internal Link


Параметри

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

Одговор

Враћа: CombineCommentsWithQuestionResults200Response


Додај SSO корисника Internal Link


Параметри

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

Одговор

Враћа: AddSSOUserAPIResponse


Обриши SSO корисника Internal Link


Параметри

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

Одговор

Враћа: DeleteSSOUserAPIResponse


Добиј SSO корисника по имејлу Internal Link

Параметри

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

Одговор

Враћа: GetSSOUserByEmailAPIResponse


Добиј SSO корисника по ИД-у Internal Link

Параметри

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

Одговор

Враћа: GetSSOUserByIdAPIResponse


Добиј SSO кориснике Internal Link

Параметри

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

Одговор

Враћа: GetSSOUsers200Response


Измени SSO корисника (делимично) Internal Link

Параметри

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

Одговор

Враћа: PatchSSOUserAPIResponse


Замени/постави SSO корисника Internal Link

Параметри

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

Одговор

Враћа: PutSSOUserAPIResponse


Креирај претплату Internal Link

Параметри

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

Одговор

Враћа: CreateSubscriptionAPIResponse


Обриши претплату Internal Link

Параметри

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

Одговор

Враћа: DeleteSubscriptionAPIResponse


Добиј претплате Internal Link

Параметри

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

Одговор

Враћа: GetSubscriptionsAPIResponse


Добиј дневну употребу закупца 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

Креирај пакет закупца Internal Link

Параметри

Name Type Required Description
tenantId string Yes
createTenantPackageBody CreateTenantPackageBody Yes

Одговор

Враћа: 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

Обриши пакет закупца Internal Link


Параметри

Назив Тип Обавезно Опис
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

Добиј пакет закупца 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

Добиј пакете закупца Internal Link

Параметри

Име Тип Обавезно Опис
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

Замени пакет закупца 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

Ажурирај пакет закупца 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

Креирај корисника закупца Internal Link

Параметри

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

Одговор

Враћа: 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

Обриши корисника закупца Internal Link

Параметри

Име Тип Обавезно Опис
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

Добиј корисника закупца 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

Добиј кориснике закупца Internal Link

Параметри

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

Одговор

Враћа: GetTenantUsers200Response

Пример

Пример getTenantUsers
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

Замени корисника закупца Internal Link

Параметри

Name Type Required Description
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

Параметри

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

Одговор

Враћа: FlagCommentPublic200Response

Пример

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

Ажурирај корисника закупца 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

Креирај закупца Internal Link

Параметри

Name Type Required Description
tenantId string Да
createTenantBody CreateTenantBody Да

Одговор

Враћа: CreateTenant200Response

Пример

Пример 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

Обриши закупца Internal Link

Параметри

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

Одговор

Враћа: FlagCommentPublic200Response

Пример

Пример 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

Добиј закупца 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

Добиј закупце 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

Ажурирај закупца Internal Link

Параметри

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

Одговор

Враћа: FlagCommentPublic200Response

Пример

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, // опционални параметар (показано)
17 enableModeration: true
18};
19const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
20

Отпреми слику Internal Link


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

Параметри

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

Одговор

Враћа: UploadImageResponse


Добиј напредак корисничке ознаке по ИД-у Internal Link


Параметри

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

Одговор

Враћа: GetUserBadgeProgressById200Response


Добиј напредак корисничке ознаке по ИД-у корисника Internal Link


Параметри

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

Одговор

Враћа: GetUserBadgeProgressById200Response


Добиј листу напретка корисничких ознака Internal Link


Параметри

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

Одговор

Враћа: GetUserBadgeProgressList200Response


Креирај корисничку ознаку Internal Link


Параметри

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

Одговор

Враћа: CreateUserBadge200Response


Обриши корисничку ознаку Internal Link


Параметри

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

Одговор

Враћа: UpdateUserBadge200Response


Добиј корисничку ознаку Internal Link

Параметри

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

Одговор

Враћа: GetUserBadge200Response


Добиј корисничке ознаке Internal Link

Параметри

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

Одговор

Враћа: GetUserBadges200Response


Ажурирај корисничку ознаку Internal Link


Параметри

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

Одговор

Враћа: UpdateUserBadge200Response


Добиј број корисничких обавештења Internal Link

Параметри

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

Одговор

Враћа: GetUserNotificationCount200Response


Добиј корисничка обавештења Internal Link

Параметри

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

Одговор

Враћа: GetUserNotifications200Response


Ресетуј број корисничких обавештења Internal Link


Параметри

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

Одговор

Враћа: ResetUserNotifications200Response


Ресетуј корисничка обавештења Internal Link

Параметри

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

Одговор

Враћа: ResetUserNotifications200Response


Ажурирај статус претплате корисника за обавештења о коментарима Internal Link


Омогућите или онемогућите обавештења за одређени коментар.

Параметри

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

Одговор

Враћа: UpdateUserNotificationStatus200Response


Ажурирај статус претплате корисника за обавештења о страници Internal Link

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

Параметри

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

Одговор

Враћа: UpdateUserNotificationStatus200Response


Ажурирај статус корисничког обавештења Internal Link

Параметри

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

Одговор

Враћа: UpdateUserNotificationStatus200Response


Добиј статусе присутности корисника Internal Link

Параметри

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

Одговор

Враћа: GetUserPresenceStatuses200Response


Претражи кориснике Internal Link


Параметри

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

Одговор

Враћа: SearchUsers200Response


Добиј корисника 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

Креирај глас Internal Link

Параметри

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

Одговор

Враћа: VoteComment200Response

Пример

Пример за 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

Обриши глас 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

Добиј гласове Internal Link


Параметри

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

Одговор

Враћа: GetVotes200Response

Пример

getVotes Пример
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// Ако би постојао опциони параметар, нпр. includeHidden, могао би да се користи овако:
6// const votesWithHidden: GetVotes200Response = await getVotes(tenantId, urlId, { includeHidden: true });
7

Добиј гласове за корисника Internal Link

Параметри

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

Одговор

Враћа: GetVotesForUser200Response

Пример

Пример getVotesForUser
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

Trebate pomoć?

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

Doprinosi

Doprinosi su dobrodošli! Posetite GitHub repozitorijum za smernice o doprinosu.