FastComments.com

FastComments JavaScript/TypeScript SDK


To je uradni JavaScript/TypeScript SDK za FastComments.

Uradni JavaScript/TypeScript SDK za FastComments API

Repository

Poglejte na GitHubu


Namestitev Internal Link

npm install fastcomments-sdk

API Documentation Internal Link


Popolna referenca API: docs/api/README.md

Browser vs Server Compatibility Internal Link


Ta SDK uporablja dvojne vstopne točke za zagotavljanje optimalne združljivosti in preprečevanje napak med izvajanjem:

  • fastcomments-sdk/browser - Različica varna za brskalnik z nativnim fetch
  • fastcomments-sdk/server - Polna Node.js različica s podporo za SSO
  • fastcomments-sdk (privzeto) - Samo tipi, varno za uvoz kjerkoli

Public vs Secured APIs Internal Link

SDK zagotavlja tri glavne razrede API:

  • DefaultApi - Zavarovani končni točki, ki zahtevata vaš API ključ za avtentikacijo. Uporabite jih za operacije na strežniški strani.
  • PublicApi - Javne končne točke, do katerih je mogoče dostopati brez API ključa. Klice lahko pošljete neposredno iz brskalnikov/mobilnih naprav/itd.
  • HiddenApi - Notranje/skrbniške končne točke za napredne primere uporabe.

Primer: Uporaba javnega API-ja (varno za brskalnik)

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

const publicApi = new PublicApi();

// Pridobi komentarje za stran (API ključ ni potreben)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Primer: Uporaba privzetega API-ja (samo na strežniku)

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

const config = new Configuration({
  apiKey: 'your-api-key' // To naj ostane skrivnost!
});
const defaultApi = new DefaultApi(config);

// Pridobi komentarje s popolnim skrbniškim dostopom
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

SSO (Single Sign-On) Integration Internal Link

FastComments podpira SSO za integracijo z vašim obstoječim sistemom za preverjanje pristnosti uporabnikov. Funkcionalnost SSO je na voljo le v strežniškem izvozu saj zahteva Node.js kriptografske funkcije.

Preprosto SSO (samo strežniško)

Preprosto SSO je treba generirati na strežniku in poslati odjemalcu:

// Strežniška koda (Node.js/strežnik)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Ustvari preprosto SSO z vgrajenim pripomočkom  
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();

// Pošlji ssoToken vaši odjemalski kodi
// Odjemalska koda lahko nato uporabi ta žeton z brskalniškim SDK-jem

Varen SSO (strežniško, priporočeno)

Varen SSO je treba implementirati na strežniku in nudi boljšo varnost:

// Strežniška koda (Node.js/strežnik)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Ustvari varen SSO z vgrajenim pripomočkom
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();

// Uporabi z API klici na strežniku
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Ali pošlji ssoConfig odjemalcu za uporabo v brskalniku

Uporaba SSO iz brskalnika (z žetonom, ustvarjenim na strežniku)

// Odjemalska koda (brskalnik)
import { PublicApi } from 'fastcomments-sdk/browser';

// Pridobi SSO žeton iz vašega strežniškega končnega mesta
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 // Uporabi strežniško ustvarjen SSO žeton
});

SSO z ustvarjanjem komentarja

// Strežniško: ustvari SSO in komentar
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)
});

Common Use Cases Internal Link

Pridobivanje komentarjev za stran

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

Ustvarjanje komentarja

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

Glasovanje za komentar

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

Upravljanje uporabnikov (zahteva API ključ)

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

Live Events (Real-time Updates) Internal Link

Naročite se na dogodke v živo, da dobite posodobitve v realnem času za komentarje, glasove in druge dejavnosti.

Dogodki na ravni strani

Poslušajte dogodke v živo na določeni strani (komentarji, glasovi itd.):

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

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

// Naroči se na dogodke v živo za stran
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (pridobite ga iz odgovora getComments)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Posodobite svoj uporabniški vmesnik z novim komentarjem
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Posodobite število glasov v vašem uporabniškem vmesniku
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // Vrni true, če je bil dogodek obdelan
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Zaprite naročnino, ko končate
subscription.close();

Naročite se na uporabniške dogodke

Poslušajte dogodke, ki so specifični za uporabnika (obvestila, omembe itd.):

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

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

// Naročite se na osebni vir uporabnika
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 obvestilo v vašem uporabniškem vmesniku
        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');
  }
);

// Zaprite, ko končate
userSubscription.close();

Pridobivanje userIdWS

Parameter userIdWS je obvezen za dogodke v živo in ga je mogoče pridobiti iz odgovorov API-ja:

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

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

if (userIdWS) {
  // Zdaj se lahko naročite na dogodke v živo
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

Broadcast IDs Internal Link

Videli boste, da naj bi pri nekaterih klicih API posredovali broadcastId. Ko prejmete dogodke, boste to ID prejeli nazaj, tako da boste vedeli, da dogodek prezrete, če nameravate optimistično uporabiti spremembe na odjemalcu (kar boste verjetno želeli storiti, saj ponuja najboljšo izkušnjo). Tukaj posredujte UUID. ID naj bo dovolj edinstven, da se v isti brskalni seji ne pojavi dvakrat.

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() // Edinstven ID za to operacijo
  }
});

Error Handling 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

Združuje dokumente z njihovo grupiranjem (če je podan groupBy) in izvajanjem več operacij. Podprte so različne operacije (npr. sum, countDistinct, avg itd.).

Parametri

Ime Tip Obvezno Opis
tenantId string Da
aggregationRequest AggregationRequest Da
parentTenantId string Ne
includeStats boolean Ne

Odgovor

Vrne: AggregationResponse


getAuditLogs Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
limit number Ne
skip number Ne
order SORTDIR Ne
after number Ne
before number Ne

Odgovor

Vrne: GetAuditLogs200Response


blockFromCommentPublic Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
publicBlockFromCommentParams PublicBlockFromCommentParams Da
sso string Ne

Odgovor

Vrne: BlockFromCommentPublic200Response


unBlockCommentPublic Internal Link

Parametri

Name Type Required Description
tenantId string Da
commentId string Da
publicBlockFromCommentParams PublicBlockFromCommentParams Da
sso string Ne

Odgovor

Vrne: UnBlockCommentPublic200Response


checkedCommentsForBlocked Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentIds string Da
sso string Ne

Odgovor

Vrne: CheckedCommentsForBlocked200Response


blockUserFromComment Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
id string Da
blockFromCommentParams BlockFromCommentParams Da
userId string Ne
anonUserId string Ne

Odgovor

Vrne: BlockFromCommentPublic200Response


createCommentPublic Internal Link

Parametri

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

Odgovor

Vrne: CreateCommentPublic200Response

deleteComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
contextUserId string Ne
isLive boolean Ne

Odgovor

Vrača: DeleteComment200Response

deleteCommentPublic Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
commentId string Da
broadcastId string Da
editKey string Ne
sso string Ne

Odgovor

Vrne: DeleteCommentPublic200Response


deleteCommentVote Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
voteId string Da
urlId string Da
broadcastId string Da
editKey string Ne
sso string Ne

Odgovor

Vrne: DeleteCommentVote200Response


flagComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
userId string Ne
anonUserId string Ne

Odgovor

Vrne: FlagComment200Response


getComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: GetComment200Response


getComments Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
page number Ne
limit number Ne
skip number Ne
asTree boolean Ne
skipChildren number Ne
limitChildren number Ne
maxTreeDepth number Ne
urlId string Ne
userId string Ne
anonUserId string Ne
contextUserId string Ne
hashTag string Ne
parentId string Ne
direction SortDirections Ne

Odgovor

Vrača: GetComments200Response


getCommentsPublic Internal Link

req tenantId urlId

Parametri

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

Vrne: GetCommentsPublic200Response


getCommentText Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
commentId string Da
editKey string Ne
sso string Ne

Odgovor

Vrne: GetCommentText200Response


getCommentVoteUserNames Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
dir number Da
sso string Ne

Odgovor

Vrne: GetCommentVoteUserNames200Response


lockComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
broadcastId string Da
sso string Ne

Odgovor

Vrne: LockComment200Response


pinComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
broadcastId string Da
sso string Ne

Odgovor

Vrača: PinComment200Response


saveComment Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
createCommentParams CreateCommentParams Da
isLive boolean Ne
doSpamCheck boolean Ne
sendEmails boolean Ne
populateNotifications boolean Ne

Odgovor

Vrne: SaveComment200Response


saveCommentsBulk Internal Link


Parametri

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

Odgovor

Vrne: Array<SaveComment200Response


setCommentText Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
broadcastId string Da
commentTextUpdateRequest CommentTextUpdateRequest Da
editKey string Ne
sso string Ne

Odgovor

Vrne: SetCommentText200Response


unBlockUserFromComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
unBlockFromCommentParams UnBlockFromCommentParams Da
userId string Ne
anonUserId string Ne

Odgovor

Vrne: UnBlockCommentPublic200Response

unFlagComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
userId string Ne
anonUserId string Ne

Odgovor

Vrne: FlagComment200Response


unLockComment Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
commentId string Da
broadcastId string Da
sso string Ne

Odgovor

Vrača: LockComment200Response


unPinComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
broadcastId string Da
sso string Ne

Odgovor

Vrne: PinComment200Response


updateComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
body PickAPICommentUpdatableCommentFields Da
contextUserId string Ne
doSpamCheck boolean Ne
isLive boolean Ne

Odgovor

Vrne: FlagCommentPublic200Response


voteComment Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
urlId string Da
broadcastId string Da
voteBodyParams VoteBodyParams Da
sessionId string Ne
sso string Ne

Odgovor

Vrne: VoteComment200Response


addDomainConfig Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
addDomainConfigParams AddDomainConfigParams Da

Odgovor

Vrača: AddDomainConfig200Response


deleteDomainConfig Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
domain string Da

Odgovor

Vrne: DeleteDomainConfig200Response


getDomainConfig Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
domain string Da

Odziv

Vrne: GetDomainConfig200Response


getDomainConfigs Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da

Odgovor

Vrne: GetDomainConfigs200Response

patchDomainConfig Internal Link


Parametri

Ime Tip Zahtevano Opis
tenantId string Da
domainToUpdate string Da
patchDomainConfigParams PatchDomainConfigParams Da

Odgovor

Vrne: GetDomainConfig200Response


putDomainConfig Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
domainToUpdate string Da
updateDomainConfigParams UpdateDomainConfigParams Da

Odgovor

Vrne: GetDomainConfig200Response


createEmailTemplate Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
createEmailTemplateBody CreateEmailTemplateBody Da

Odgovor

Vrača: CreateEmailTemplate200Response

Primer

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

deleteEmailTemplate Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Parametri

Name Type Required Description
tenantId string Da
id string Da
errorId string Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: GetEmailTemplate200Response

Primer

Primer 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'; // primer neobveznega parametra
6 const template: GetEmailTemplate200Response = await getEmailTemplate(tenantId, id);
7 console.log(template, locale);
8})();
9

getEmailTemplateDefinitions Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da

Odgovor

Vrne: GetEmailTemplateDefinitions200Response

Primer

Primer getEmailTemplateDefinitions
Copy Copy
1
2const tenantId: string = 'acme-enterprises-78f2';
3const emailTemplates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4

getEmailTemplateRenderErrors Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
skip number Ne

Odgovor

Vrača: GetEmailTemplateRenderErrors200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
skip number Ne

Odgovor

Vrača: GetEmailTemplates200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
renderEmailTemplateBody RenderEmailTemplateBody Da
locale string Ne

Odgovor

Vrne: RenderEmailTemplate200Response

Primer

Primer 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

Ime Tip Obvezno Opis
tenantId string Da
id string Da
updateEmailTemplateBody UpdateEmailTemplateBody Da

Odgovor

Vrača: FlagCommentPublic200Response

Primer

Primer 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', // neobvezno polje (prikazano)
9 enabled: true,
10 customConfig: { priority: 'high' } // neobvezni prilagojeni parametri
11};
12const response: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
13

getEventLog Internal Link

req tenantId urlId userIdWS

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
urlId string Da
userIdWS string Da
startTime number Da
endTime number Da

Odgovor

Vrne: GetEventLog200Response

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Parametri

Ime Tip Obvezno Opis
tenantId string Da
urlId string Da
userIdWS string Da
startTime number Da
endTime number Da

Odgovor

Vrne: GetEventLog200Response

createFeedPost Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
createFeedPostParams CreateFeedPostParams Da
broadcastId string Ne
isLive boolean Ne
doSpamCheck boolean Ne
skipDupCheck boolean Ne

Odgovor

Vrne: CreateFeedPost200Response


createFeedPostPublic Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
createFeedPostParams CreateFeedPostParams Da
broadcastId string Ne
sso string Ne

Odgovor

Vrača: CreateFeedPostPublic200Response

deleteFeedPostPublic Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
postId string Da
broadcastId string Ne
sso string Ne

Odgovor

Vrne: DeleteFeedPostPublic200Response


getFeedPosts Internal Link


req tenantId afterId

Parametri

Ime Tip Obvezno Opis
tenantId string Da
afterId string Ne
limit number Ne
tags Array Ne

Odgovor

Vrne: GetFeedPosts200Response


getFeedPostsPublic Internal Link

req tenantId afterId

Parametri

Ime Tip Obvezno 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

getFeedPostsStats Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
postIds Array Da
sso string Ne

Odgovor

Vrne: GetFeedPostsStats200Response


getUserReactsPublic Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
postIds Array Ne
sso string Ne

Odgovor

Vrne: GetUserReactsPublic200Response


reactFeedPostPublic Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
postId string Da
reactBodyParams ReactBodyParams Da
isUndo boolean Ne
broadcastId string Ne
sso string Ne

Odgovor

Vrne: ReactFeedPostPublic200Response


updateFeedPost Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
feedPost FeedPost Da

Odgovor

Vrača: FlagCommentPublic200Response


updateFeedPostPublic Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
postId string Da
updateFeedPostParams UpdateFeedPostParams Da
broadcastId string Ne
sso string Ne

Odgovor

Vrne: CreateFeedPostPublic200Response


flagCommentPublic Internal Link


Parametri

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

Odgovor

Vrne: FlagCommentPublic200Response


addHashTag Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Ne
createHashTagBody CreateHashTagBody Ne

Odgovor

Vrne: AddHashTag200Response

Primer

addHashTag Primer
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

Parametri

Ime Tip Zahtevano Opis
tenantId string Ne
bulkCreateHashTagsBody BulkCreateHashTagsBody Ne

Odgovor

Vrne: AddHashTagsBulk200Response

Primer

Primer 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

Name Type Required Description
tag string Da
tenantId string Ne
deleteHashTagRequest DeleteHashTagRequest Ne

Odgovor

Vrača: FlagCommentPublic200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
page number Ne

Odziv

Vrne: GetHashTags200Response

Primer

getHashTags Primer
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

Ime Tip Obvezno Opis
tag string Da
tenantId string Ne
updateHashTagBody UpdateHashTagBody Ne

Odgovor

Vrača: PatchHashTag200Response

Primer

Primer 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

createModerator Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
createModeratorBody CreateModeratorBody Da

Odgovor

Vrne: CreateModerator200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
sendEmail string Ne

Odgovor

Vrne: FlagCommentPublic200Response

Primer

deleteModerator Primer
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 Yes
id string Yes

Odgovor

Vrača: GetModerator200Response

Primer

Primer getModerator
Copy Copy
1
2const tenantId: string = "tenant_eu_4f8d2b9e";
3const maybeModeratorId: string | undefined = "mod_91c3b7a2"; // neobvezen vir (lahko je undefined)
4const moderator: GetModerator200Response = await getModerator(tenantId, maybeModeratorId!);
5

getModerators Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
skip number Ne

Odziv

Vrača: GetModerators200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
fromName string Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Name Type Required Description
tenantId string Da
id string Da
updateModeratorBody UpdateModeratorBody Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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 // prikazan neobvezni parameter
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBodyWithOptional);
12

deleteNotificationCount Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

deleteNotificationCount Primer
Copy Copy
1
2const tenantId: string = 'tenant_7f3a1b2c4d9e';
3const notificationId: string = 'notif_8c9d0a1b2f3e4b7';
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, notificationId);
5

getCachedNotificationCount Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odziv

Vrne: GetCachedNotificationCount200Response

Primer

Primer getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const baseNotificationId: string = 'notif-000123';
4const idSuffix: string | undefined = undefined; // primer neobveznega parametra
5const notificationId: string = idSuffix ? `${baseNotificationId}-${idSuffix}` : baseNotificationId;
6const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, notificationId);
7console.log(result);
8

getNotificationCount Internal Link

Parametri

Name Type Required Description
tenantId string Da
userId string Ne
urlId string Ne
fromCommentId string Ne
viewed boolean Ne
type string Ne

Odgovor

Vrača: GetNotificationCount200Response

Primer

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

getNotifications Internal Link

Parametri

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

Primer

Primer 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

updateNotification Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
updateNotificationBody UpdateNotificationBody Da
userId string Ne

Odgovor

Vrne: 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

addPage Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
createAPIPageData CreateAPIPageData Da

Odgovor

Vrne: AddPageAPIResponse


deletePage Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
id string Da

Odgovor

Vrne: DeletePageAPIResponse

getPageByURLId Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
urlId string Da

Odgovor

Vrača: GetPageByURLIdAPIResponse

getPages Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da

Odziv

Vrne: GetPagesAPIResponse


patchPage Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
updateAPIPageData UpdateAPIPageData Da

Odgovor

Vrne: PatchPageAPIResponse


deletePendingWebhookEvent Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

deletePendingWebhookEvent Primer
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

Parametri

Name Type Required Description
tenantId string Da
commentId string Ne
externalId string Ne
eventType string Ne
type string Ne
domain string Ne
attemptCountGT number Ne

Odgovor

Vrača: GetPendingWebhookEventCount200Response

Primer

getPendingWebhookEventCount Primer
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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Ne
externalId string Ne
eventType string Ne
type string Ne
domain string Ne
attemptCountGT number Ne
skip number Ne

Odgovor

Vrne: GetPendingWebhookEvents200Response

Primer

getPendingWebhookEvents Primer
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

Name Type Required Description
tenantId string Da
createQuestionConfigBody CreateQuestionConfigBody Da

Odgovor

Vrne: CreateQuestionConfig200Response

Primer

Primer 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, // izbirno: prikaže izpuščena v primerjavi z vključenimi izbirnimi polji
12 renderingType: QuestionRenderingType.Dropdown,
13 options: customOptions,
14 whenSave: QuestionWhenSave.Always
15};
16const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
17

deleteQuestionConfig Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrača: FlagCommentPublic200Response

Primer

Primer 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

Parametri

Name Type Required Description
tenantId string Yes
id string Yes

Odgovor

Vrne: GetQuestionConfig200Response

Primer

Primer 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 je izbiren; implementacija je izpuščena zaradi jedrnatosti
7 return undefined;
8}
9const summarizedWithMeta: QuestionConfig | undefined = summarizeConfig(result, true);
10const summarizedDefault: QuestionConfig | undefined = summarizeConfig(result);
11

getQuestionConfigs Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
skip number Ne

Odgovor

Vrne: GetQuestionConfigs200Response

Primer

getQuestionConfigs Primer
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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
updateQuestionConfigBody UpdateQuestionConfigBody Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Ime Tip Zahtevano Opis
tenantId string Da
createQuestionResultBody CreateQuestionResultBody Da

Odgovor

Vrne: CreateQuestionResult200Response

Primer

Primer 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] // prikazani neobvezni metapodatki
10} as CreateQuestionResultBody;
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

deleteQuestionResult Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

deleteQuestionResult Primer
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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: GetQuestionResult200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
urlId string Ne
userId string Ne
startDate string Ne
questionId string Ne
questionIds string Ne
skip number Ne

Odgovor

Vrne: GetQuestionResults200Response

Primer

Primer 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


Parametri

Ime Tip Zahtevano Opis
tenantId string Yes
id string Yes
updateQuestionResultBody UpdateQuestionResultBody Yes

Odgovor

Vrača: FlagCommentPublic200Response

Primer

Primer 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 // neobvezen parameter je vključen
8};
9const response: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
10

aggregateQuestionResults Internal Link

Parametri

Ime Tip Obvezno 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest Da
forceRecalculate boolean Ne

Odgovor

Vrača: BulkAggregateQuestionResults200Response


combineCommentsWithQuestionResults Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
questionId string Ne
questionIds Array Ne
urlId string Ne
startDate Date Ne
forceRecalculate boolean Ne
minValue number Ne
maxValue number Ne
limit number Ne

Odgovor

Vrne: CombineCommentsWithQuestionResults200Response


addSSOUser Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
createAPISSOUserData CreateAPISSOUserData Da

Odgovor

Vrne: AddSSOUserAPIResponse


deleteSSOUser Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
deleteComments boolean Ne
commentDeleteMode string Ne

Odgovor

Vrne: DeleteSSOUserAPIResponse


getSSOUserByEmail Internal Link

Parametri

Ime Vrsta Obvezno Opis
tenantId string Da
email string Da

Odgovor

Vrača: GetSSOUserByEmailAPIResponse

getSSOUserById Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrača: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
skip number Ne

Odziv

Vrne: GetSSOUsers200Response


patchSSOUser Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
updateAPISSOUserData UpdateAPISSOUserData Da
updateComments boolean Ne

Odgovor

Vrača: PatchSSOUserAPIResponse


putSSOUser Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
id string Da
updateAPISSOUserData UpdateAPISSOUserData Da
updateComments boolean Ne

Odgovor

Vrne: PutSSOUserAPIResponse


createSubscription Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
createAPIUserSubscriptionData CreateAPIUserSubscriptionData Da

Odgovor

Vrača: CreateSubscriptionAPIResponse


deleteSubscription Internal Link


Parametri

Ime Tip Zahtevano Opis
tenantId string Da
id string Da
userId string Ne

Odgovor

Vrne: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
userId string Ne

Odgovor

Vrne: GetSubscriptionsAPIResponse


getTenantDailyUsages Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
yearNumber number Ne
monthNumber number Ne
dayNumber number Ne
skip number Ne

Odgovor

Vrne: GetTenantDailyUsages200Response

Primer

Primer 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

Parametri

Name Type Required Description
tenantId string Da
createTenantPackageBody CreateTenantPackageBody Da

Odgovor

Vrača: CreateTenantPackage200Response

Primer

Primer 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" // prikazan neobvezni parameter
10};
11const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
12

deleteTenantPackage Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

deleteTenantPackage Primer
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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrača: GetTenantPackage200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
skip number Ne

Odgovor

Vrne: GetTenantPackages200Response

Primer

Primer 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

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
id string Da
replaceTenantPackageBody ReplaceTenantPackageBody Da

Odgovor

Vrača: FlagCommentPublic200Response

Primer

Primer 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 // Neobvezna polja, kot so "notes" ali "trialExpiry", so tukaj namerno izpuščena
9} as ReplaceTenantPackageBody;
10const result: FlagCommentPublic200Response = await replaceTenantPackage(
11 tenantId,
12 packageId,
13 replaceTenantPackageBody
14);
15

updateTenantPackage Internal Link

Parametri

Name Type Required Description
tenantId string Da
id string Da
updateTenantPackageBody UpdateTenantPackageBody Da

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
createTenantUserBody CreateTenantUserBody Da

Odgovor

Vrača: CreateTenantUser200Response

Primer

Primer 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, // prikazan je opcijski parameter
9 locale: "en-US",
10 metadata: { department: "Customer Success" }
11};
12const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
13

deleteTenantUser Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
deleteComments string Ne
commentDeleteMode string Ne

Odgovor

Vrne: FlagCommentPublic200Response

Primer

deleteTenantUser Primer
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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrača: GetTenantUser200Response

Primer

Primer getTenantUser
Copy Copy
1
2const tenantId: string = "tenant_9f7d4b2a-1c3e";
3const id: string = "user_6a12b3c4d5";
4const includeProfile: boolean | undefined = true; // primer neobveznega parametra
5const response: GetTenantUser200Response = await getTenantUser(tenantId, id);
6console.log("Tenant user fetched", response);
7

getTenantUsers Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
skip number Ne

Odgovor

Vrne: GetTenantUsers200Response

Primer

Primer 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

replaceTenantUser Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
replaceTenantUserBody ReplaceTenantUserBody Da
updateComments string Ne

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
updateTenantUserBody UpdateTenantUserBody Da
updateComments string Ne

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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 Obvezno Opis
tenantId string Yes
createTenantBody CreateTenantBody Yes

Odgovor

Vrne: CreateTenant200Response

Primer

Primer 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

Ime Tip Obvezno Opis
tenantId string Da
id string Da
sure string Ne

Odgovor

Vrne: FlagCommentPublic200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Yes
id string Yes

Odgovor

Vrne: GetTenant200Response

Primer

Primer 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

Parametri

Ime Tip Obvezno Opis
tenantId string Da
meta string Ne
skip number Ne

Odgovor

Vrne: GetTenants200Response

Primer

Primer 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 Type Obvezno Opis
tenantId string Yes
id string Yes
updateTenantBody UpdateTenantBody Yes

Odgovor

Vrača: FlagCommentPublic200Response

Primer

Primer uporabe 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, // neobvezen parameter (prikazan)
17 enableModeration: true
18};
19const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
20

uploadImage Internal Link


Naloži in spremeni velikost slike

Parametri

Ime Tip Obvezno Opis
tenantId string Da
file Blob Da
sizePreset SizePreset Ne
urlId string Ne

Odgovor

Vrne: UploadImageResponse


getUserBadgeProgressById Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrača: GetUserBadgeProgressById200Response

getUserBadgeProgressByUserId Internal Link

Parametri

Ime Tip Zahtevano Opis
tenantId string Da
userId string Da

Odgovor

Vrne: GetUserBadgeProgressById200Response


getUserBadgeProgressList Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
userId string Ne
limit number Ne
skip number Ne

Odgovor

Vrne: GetUserBadgeProgressList200Response

createUserBadge Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
createUserBadgeParams CreateUserBadgeParams Da

Odgovor

Vrne: CreateUserBadge200Response


deleteUserBadge Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: UpdateUserBadge200Response


getUserBadge Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrne: GetUserBadge200Response


getUserBadges Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
userId string Ne
badgeId string Ne
type number Ne
displayedOnComments boolean Ne
limit number Ne
skip number Ne

Odgovor

Vrne: GetUserBadges200Response


updateUserBadge Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da
updateUserBadgeParams UpdateUserBadgeParams Da

Odgovor

Vrne: UpdateUserBadge200Response


getUserNotificationCount Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
sso string Ne

Odgovor

Vrne: GetUserNotificationCount200Response


getUserNotifications Internal Link

Parametri

Name Tip Zahtevano Opis
tenantId string Da
pageSize number Ne
afterId string Ne
includeContext boolean Ne
afterCreatedAt number Ne
unreadOnly boolean Ne
dmOnly boolean Ne
noDm boolean Ne
includeTranslations boolean Ne
sso string Ne

Odgovor

Vrača: GetUserNotifications200Response


resetUserNotificationCount Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
sso string Ne

Odgovor

Vrne: ResetUserNotifications200Response


resetUserNotifications Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
afterId string Ne
afterCreatedAt number Ne
unreadOnly boolean Ne
dmOnly boolean Ne
noDm boolean Ne
sso string Ne

Odgovor

Vrne: ResetUserNotifications200Response


updateUserNotificationCommentSubscriptionStatus Internal Link


Omogočite ali onemogočite obvestila za določen komentar.

Parametri

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

Odgovor

Vrne: UpdateUserNotificationStatus200Response


updateUserNotificationPageSubscriptionStatus Internal Link

Omogoči ali onemogoči obvestila za stran. Ko so uporabniki naročeni na stran, se ustvarijo obvestila za nove korenske komentarje, in tudi

Parametri

Ime Tip Obvezno Opis
tenantId string Da
urlId string Da
url string Da
pageTitle string Da
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum Da
sso string Ne

Odgovor

Vrača: UpdateUserNotificationStatus200Response


updateUserNotificationStatus Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
notificationId string Da
newStatus UpdateUserNotificationStatusNewStatusEnum Da
sso string Ne

Odgovor

Vrne: UpdateUserNotificationStatus200Response


getUserPresenceStatuses Internal Link


Parametri

Ime Tip Obvezno Opis
tenantId string Da
urlIdWS string Da
userIds string Da

Odgovor

Vrača: GetUserPresenceStatuses200Response


searchUsers Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
urlId string Da
usernameStartsWith string Da
mentionGroupIds Array Ne
sso string Ne

Odgovor

Vrne: SearchUsers200Response


getUser Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
id string Da

Odgovor

Vrača: GetUser200Response

Primer

Primer getUser
Copy Copy
1
2const tenantId: string = "acme-publishing-42";
3const userIdOptional: string | undefined = "user_9d7b4c"; // je lahko undefined v nekaterih potekih (neobvezno)
4const id: string = userIdOptional ?? "user_default_0001";
5const result: GetUser200Response = await getUser(tenantId, id);
6console.log(result);
7

createVote Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
commentId string Da
direction CreateVoteDirectionEnum Da
userId string Ne
anonUserId string Ne

Odgovor

Vrne: VoteComment200Response

Primer

Primer 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

Parametri

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

Odgovor

Vrne: DeleteCommentVote200Response

Primer

Primer 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 Obvezno Opis
tenantId string Da
urlId string Da

Odgovor

Vrne: GetVotes200Response

Primer

Primer 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// Če bi obstajal izbirni parameter, npr. includeHidden, bi ga lahko uporabili tako:
6// const votesWithHidden: GetVotes200Response = await getVotes(tenantId, urlId, { includeHidden: true });
7

getVotesForUser Internal Link

Parametri

Ime Tip Obvezno Opis
tenantId string Da
urlId string Da
userId string Ne
anonUserId string Ne

Odgovor

Vrne: GetVotesForUser200Response

Primer

Primer 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

Potrebujete pomoč?

Če naletite na težave ali imate vprašanja glede JavaScript/TypeScript SDK, prosimo:

Sodelovanje

Prispevki so dobrodošli! Prosimo, obiščite GitHub repozitorij za smernice za prispevanje.