FastComments.com

FastComments JavaScript/TypeScript SDK


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

Управљајте коментарима, корисницима, SSO, и модерацијом из Node.js-а или из прегледача.

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

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


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

npm

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 кључа. Могу се позивати директно из претраживача/мобилних уређаја/итд.
  • ModerationApi - Ендпоинти контролне табле модератора (модерација коментара, забране, значке, фактор поверења, претрага). Аутентикује се помоћу сесије модератора; проследите query параметар sso за модераторе аутентификоване преко SSO.
  • 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'
});

Пример: Коришћење Moderation API-ја

import { createFastCommentsSDK } from 'fastcomments-sdk/server';

const sdk = createFastCommentsSDK({ /* basePath, итд. */ });

// Позиви аутентификованог модератора (колачић сесије, или проследите `sso` за SSO модератора).
const comments = await sdk.moderationApi.getApiComments({
  tenantId: 'your-tenant-id'
});

await sdk.moderationApi.postSetCommentSpamStatus({
  commentId: 'comment-id',
  spam: true
});

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);
}

ID-јеви емитовања 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);
  }
}

aggregate Internal Link

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

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
aggregationRequestAggregationRequestYes
parentTenantIdstringNo
includeStatsbooleanNo

Одговор

Враћа: AggregateResponse

Пример

Пример агрегације
Copy Copy
1
2const tenantId: string = "tenant-12345";
3
4const aggregationRequest: AggregationRequest = {
5 predicates: [
6 {
7 field: "status",
8 operator: "eq",
9 value: { type: "string", value: "approved" }
10 }
11 ],
12 operations: [
13 { type: "count", field: "commentId" }
14 ],
15 sort: { field: "createdAt", direction: "desc" }
16};
17
18const parentTenantId: string = "parent-001";
19const includeStats: boolean = true;
20
21const result: AggregateResponse = await aggregate(
22 tenantId,
23 aggregationRequest,
24 parentTenantId,
25 includeStats
26);
27

getAuditLogs Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo

Odgovor

Vraća: GetAuditLogsResponse1

Primer

Primer getAuditLogs
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_42";
4 const limit: number = 100;
5 const skip: number = 10;
6 const order: SORTDIR = "desc";
7 const after: number = Date.now() - 3 * 24 * 60 * 60 * 1000; // pre 3 dana
8
9 const auditResponse: GetAuditLogsResponse1 = await getAuditLogs(
10 tenantId,
11 limit,
12 skip,
13 order,
14 after
15 );
16
17 console.log(auditResponse);
18})();
19

blockFromCommentPublic Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Odgovor

Vraća: BlockFromCommentPublicResponse

Primer

Primer blockFromCommentPublic
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_9f8b7c";
4 const commentId: string = "cmt_1234567890";
5 const blockParams: PublicBlockFromCommentParams = {
6 reason: "spam",
7 durationHours: 24,
8 };
9 const ssoToken: string = "sso_ABCDEF123456";
10
11 const responseWithSso: BlockFromCommentPublicResponse = await blockFromCommentPublic(
12 tenantId,
13 commentId,
14 blockParams,
15 ssoToken
16 );
17
18 const responseWithoutSso: BlockFromCommentPublicResponse = await blockFromCommentPublic(
19 tenantId,
20 commentId,
21 blockParams
22 );
23
24 console.log(responseWithSso, responseWithoutSso);
25}
26demo();
27

unBlockCommentPublic Internal Link

Параметри

ИмеТипОбавезанОпис
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Одговор

Враћа: UnBlockCommentPublicResponse

Пример

unBlockCommentPublic Primer
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const commentId: string = "cmt-20230915-001";
4const unblockParams: PublicBlockFromCommentParams = {
5 reason: "User appealed and was cleared",
6 unblockExpiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString()
7};
8const ssoToken: string = "sso-3d9f8a7b";
9
10const result: UnBlockCommentPublicResponse = await unBlockCommentPublic(
11 tenantId,
12 commentId,
13 unblockParams,
14 ssoToken
15);
16

checkedCommentsForBlocked Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
commentIdsstringDa
ssostringNe

Odgovor

Vraća: CheckedCommentsForBlockedResponse

Primer

checkedCommentsForBlocked Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const commentIds: string = "cmt_001,cmt_002";
5 const ssoToken: string = "ssoTokenXYZ";
6
7 const blockedCheck: CheckedCommentsForBlockedResponse = await checkedCommentsForBlocked(tenantId, commentIds);
8 const blockedCheckWithSso: CheckedCommentsForBlockedResponse = await checkedCommentsForBlocked(tenantId, commentIds, ssoToken);
9})();
10

blockUserFromComment Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Odgovor

Vraća: BlockUserFromCommentResponse

Primer

blockUserFromComment Primer
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const commentId: string = 'cmt_20231101';
4
5const blockParams: BlockFromCommentParams = {
6 reason: 'spam',
7 blockDurationHours: 24,
8};
9
10const userId: string = 'user_123'; // opcioni parametar
11
12const response: BlockUserFromCommentResponse = await blockUserFromComment(
13 tenantId,
14 commentId,
15 blockParams,
16 userId
17);
18

createCommentPublic Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
urlIdstringYes
broadcastIdstringYes
commentDataCommentDataYes
sessionIdstringNo
ssostringNo

Odgovor

Vraća: CreateCommentPublicResponse

Primer

Primer createCommentPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-abc123";
4 const urlId: string = "post-987654";
5 const broadcastId: string = "bcast-001";
6 const commentData: CommentData = {
7 content: "I really enjoyed this article!"
8 };
9 const sessionId: string = "session-xyz789";
10 const sso: string = "sso-token-456def";
11
12 const response: CreateCommentPublicResponse = await createCommentPublic(
13 tenantId,
14 urlId,
15 broadcastId,
16 commentData,
17 sessionId,
18 sso
19 );
20
21 console.log(response);
22})();
23

deleteComment Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
idstringYes
contextUserIdstringNo
isLivebooleanNo

Odgovor

Vraća: DeleteCommentResponse

Primer

deleteComment Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_01';
4 const commentId: string = 'comment_abc123';
5 const contextUserId: string = 'user_42';
6 const isLive: boolean = false;
7
8 const deleteResult: DeleteCommentResponse = await deleteComment(tenantId, commentId, contextUserId, isLive);
9 const simpleResult: DeleteCommentResponse = await deleteComment(tenantId, commentId);
10})();
11

deleteCommentPublic Internal Link

Параметри

НазивТипОбавезноОпис
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Одговор

Враћа: DeleteCommentPublicResponse

Пример

Primer deleteCommentPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = 'c6f9a2e3-9b1d-4f8a-b2d2-1a2b3c4d5e6f';
4 const commentId: string = '7d9f0b1c-2e3f-4a5b-6c7d-8e9f0a1b2c3d';
5 const broadcastId: string = 'live-2023-09-15';
6 const editKey: string = 'ed1tK3y1234567890';
7 const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.abc123';
8
9 const result: DeleteCommentPublicResponse = await deleteCommentPublic(
10 tenantId,
11 commentId,
12 broadcastId,
13 editKey,
14 sso
15 );
16})();
17

deleteCommentVote Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
voteIdstringYes
urlIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Odgovor

Vraća: DeleteCommentVoteResponse

Primer

deleteCommentVote Primer
Copy Copy
1
2async function removeVote() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const voteId: string = "vote_abcde";
6 const urlId: string = "url_56789";
7 const broadcastId: string = "brd_001";
8 const editKey: string = "edit_456";
9 // sso је опционално и изостављено
10
11 const response: DeleteCommentVoteResponse = await deleteCommentVote(
12 tenantId,
13 commentId,
14 voteId,
15 urlId,
16 broadcastId,
17 editKey
18 );
19
20 console.log(response);
21}
22
23removeVote();
24

flagComment Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Odgovor

Vraća: FlagCommentResponse1

Primer

Primer flagComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_2023";
4 const commentId: string = "comment_5678";
5 const userId: string = "user_1234";
6 const anonUserId: string = "anon_4321";
7
8 const result: FlagCommentResponse1 = await flagComment(tenantId, commentId, userId);
9 const anonResult: FlagCommentResponse1 = await flagComment(tenantId, commentId, undefined, anonUserId);
10})();
11

getComment Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: GetCommentResponse

Primer

Primer getComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-987654";
5 const result: GetCommentResponse = await getComment(tenantId, commentId);
6 const badgeInfo: CommentUserBadgeInfo | undefined = result.comment?.user?.badgeInfo;
7 console.log(badgeInfo?.label);
8})();
9

getComments Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringYes
pagenumberNo
limitnumberNo
skipnumberNo
asTreebooleanNo
skipChildrennumberNo
limitChildrennumberNo
maxTreeDepthnumberNo
urlIdstringNo
userIdstringNo
anonUserIdstringNo
contextUserIdstringNo
hashTagstringNo
parentIdstringNo
directionSortDirectionsNo
fromDatenumberNo
toDatenumberNo

Odgovor

Vraća: GetCommentsResponse

Primer

Primer getComments
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const page: number = 2;
4const limit: number = 50;
5const asTree: boolean = true;
6const urlId: string = "article_5678";
7const direction: SortDirections = "desc";
8const fromDate: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // pre nedelju dana
9const toDate: number = Date.now();
10
11const commentsResponse: GetCommentsResponse = await getComments({
12 tenantId,
13 page,
14 limit,
15 asTree,
16 urlId,
17 direction,
18 fromDate,
19 toDate,
20});
21

getCommentsPublic Internal Link

req tenantId urlId

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
urlIdstringDa
pagenumberNe
directionSortDirectionsNe
ssostringNe
skipnumberNe
skipChildrennumberNe
limitnumberNe
limitChildrennumberNe
countChildrenbooleanNe
fetchPageForCommentIdstringNe
includeConfigbooleanNe
countAllbooleanNe
includei10nbooleanNe
localestringNe
modulesstringNe
isCrawlerbooleanNe
includeNotificationCountbooleanNe
asTreebooleanNe
maxTreeDepthnumberNe
useFullTranslationIdsbooleanNe
parentIdstringNe
searchTextstringNe
hashTagsArrayNe
userIdstringNe
customConfigStrstringNe
afterCommentIdstringNe
beforeCommentIdstringNe

Odgovor

Vraća: GetCommentsPublicResponse

Primer

Primer getCommentsPublic
Copy Copy
1
2async function fetchComments() {
3 const tenantId: string = 'acme-corp';
4 const urlId: string = 'blog/post-789';
5 const page: number = 1;
6 const direction: SortDirections = SortDirections.Desc;
7 const limit: number = 25;
8 const includeConfig: boolean = true;
9 const locale: string = 'en-GB';
10 const modules: string = 'reactions,attachments';
11 const isCrawler: boolean = false;
12 const includeNotificationCount: boolean = true;
13 const asTree: boolean = true;
14 const maxTreeDepth: number = 4;
15 const searchText: string = 'TypeScript';
16 const hashTags: string[] = ['typescript', 'api'];
17 const response: GetCommentsPublicResponse = await getCommentsPublic(
18 tenantId,
19 urlId,
20 page,
21 direction,
22 undefined,
23 undefined,
24 undefined,
25 limit,
26 undefined,
27 undefined,
28 undefined,
29 includeConfig,
30 undefined,
31 undefined,
32 locale,
33 modules,
34 isCrawler,
35 includeNotificationCount,
36 asTree,
37 maxTreeDepth,
38 undefined,
39 undefined,
40 searchText,
41 hashTags,
42 undefined,
43 undefined,
44 undefined,
45 undefined
46 );
47}
48

getCommentText Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
editKeystringNo
ssostringNo

Odgovor

Vraća: GetCommentTextResponse1

Primer

Primer getCommentText
Copy Copy
1
2async function run() {
3 const tenantId: string = "acme-corp-tenant";
4 const commentId: string = "cmt-5f2e9a1b";
5 const editKey: string = "edk-9b7c3";
6 const ssoToken: string = "sso-xyz789";
7
8 const commentOnly: GetCommentTextResponse1 = await getCommentText(tenantId, commentId);
9 const commentWithEdit: GetCommentTextResponse1 = await getCommentText(tenantId, commentId, editKey);
10 const commentFull: GetCommentTextResponse1 = await getCommentText(tenantId, commentId, editKey, ssoToken);
11}
12run();
13

getCommentVoteUserNames Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
dirnumberYes
ssostringNo

Odgovor

Vraća: GetCommentVoteUserNamesResponse

Primer

Primer getCommentVoteUserNames
Copy Copy
1
2async function demoGetCommentVoteUserNames() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_5f2a1e3b";
5 const dir: number = 1; // uzlazno
6
7 const votesWithoutSSO: GetCommentVoteUserNamesResponse = await getCommentVoteUserNames(
8 tenantId,
9 commentId,
10 dir
11 );
12
13 const ssoToken: string = "sso_abcdef123456";
14 const votesWithSSO: GetCommentVoteUserNamesResponse = await getCommentVoteUserNames(
15 tenantId,
16 commentId,
17 dir,
18 ssoToken
19 );
20
21 console.log(votesWithoutSSO, votesWithSSO);
22}
23

lockComment Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Одговор

Returns: LockCommentResponse

Пример

lockComment Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_54321";
6
7 // Са опционалним SSO токеном
8 const ssoToken: string = "user-abc123";
9 const lockedWithSso: LockCommentResponse = await lockComment(tenantId, commentId, broadcastId, ssoToken);
10
11 // Без SSO токена
12 const lockedWithoutSso: LockCommentResponse = await lockComment(tenantId, commentId, broadcastId);
13})();
14

pinComment Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Odgovor

Vraća: PinCommentResponse

Primer

pinComment Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant-001';
4 const commentId: string = 'comment-5678';
5 const broadcastId: string = 'broadcast-2023';
6 const ssoToken: string = 'sso-xyz-789';
7
8 const pinResult: PinCommentResponse = await pinComment(tenantId, commentId, broadcastId);
9 const pinResultWithSso: PinCommentResponse = await pinComment(tenantId, commentId, broadcastId, ssoToken);
10})();
11

saveComment Internal Link

Parameters

ИмеТипОбавезноОпис
tenantIdstringДа
createCommentParamsCreateCommentParamsДа
isLivebooleanНе
doSpamCheckbooleanНе
sendEmailsbooleanНе
populateNotificationsbooleanНе

Одговор

Враћа: SaveCommentResponse

Пример

saveComment Primer
Copy Copy
1
2async function submitComment() {
3 const tenantId: string = "tenant_9f8e7d6c";
4 const commentParams: CreateCommentParams = {
5 text: "Great post, thanks for sharing!",
6 authorId: "user_123abc",
7 mentions: [] as CommentUserMentionInfo[],
8 hashtags: [] as CommentUserHashTagInfo[]
9 };
10 const response: SaveCommentResponse = await saveComment(
11 tenantId,
12 commentParams,
13 true, // isLive
14 false // doSpamCheck
15 );
16 console.log(response);
17}
18submitComment();
19

saveCommentsBulk Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Odgovor

Vraća: Array<SaveCommentsBulkResponse

Primer

saveCommentsBulk Primer
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const bulkComments: CreateCommentParams[] = [
5 {
6 content: "Welcome to the new forum thread!",
7 authorId: "user_42",
8 mentions: [{ userId: "user_84", username: "alice" }],
9 hashtags: [{ tag: "intro" }]
10 },
11 {
12 content: "Please review the updated guidelines.",
13 authorId: "moderator_1",
14 mentions: [],
15 hashtags: [{ tag: "guidelines" }, { tag: "update" }]
16 }
17];
18
19const results: SaveCommentsBulkResponse[] = await saveCommentsBulk(
20 tenantId,
21 bulkComments,
22 true, // isLive
23 false, // doSpamCheck
24 true, // sendEmails
25 undefined // populateNotifications (koristeći podrazumevano)
26);
27

setCommentText Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
commentTextUpdateRequestCommentTextUpdateRequestYes
editKeystringNo
ssostringNo

Odgovor

Vraća: SetCommentTextResponse1

Primer

setCommentText Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const commentId: string = 'cmt_98765';
5 const broadcastId: string = 'brd_112233';
6 const commentTextUpdateRequest: CommentTextUpdateRequest = {
7 text: 'Updated comment with @john.doe and #important',
8 mentions: [{ userId: 'user_001', username: 'john.doe' }],
9 hashtags: [{ tag: 'important' }],
10 };
11 const editKey: string = 'edit_abc123';
12 const result: SetCommentTextResponse1 = await setCommentText(
13 tenantId,
14 commentId,
15 broadcastId,
16 commentTextUpdateRequest,
17 editKey,
18 );
19 console.log(result);
20})();
21

unBlockUserFromComment Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
idstringYes
unBlockFromCommentParamsUnBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Odgovor

Vraća: UnBlockUserFromCommentResponse

Primer

unBlockUserFromComment Primer
Copy Copy
1
2async function demoUnblock() {
3 const tenantId: string = "acme-corp-tenant";
4 const commentId: string = "cmt_9f8b7a6d";
5
6 const params: UnBlockFromCommentParams = {
7 reason: "User resolved the issue",
8 notifyUser: true
9 };
10
11 const userId: string = "usr_12345";
12
13 const result: UnBlockUserFromCommentResponse = await unBlockUserFromComment(
14 tenantId,
15 commentId,
16 params,
17 userId
18 // anonUserId izostavljen
19 );
20
21 console.log(result);
22}
23demoUnblock();
24

unFlagComment Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa
userIdstringNe
anonUserIdstringNe

Odgovor

Vraća: UnFlagCommentResponse

Primer

Primer unFlagComment
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_123456";
4const userId: string = "usr_98765";
5
6const result: UnFlagCommentResponse = await unFlagComment(tenantId, commentId, userId);
7
8const anonCommentId: string = "cmt_123457";
9const anonUserId: string = "anon_abc123";
10
11const anonResult: UnFlagCommentResponse = await unFlagComment(tenantId, anonCommentId, undefined, anonUserId);
12

unLockComment Internal Link

Параметри

НазивТипОбавезноОпис
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Одговор

Враћа: UnLockCommentResponse

Пример

Primer unLockComment
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_9876";
4const broadcastId: string = "brd_001";
5const ssoToken: string | undefined = "sso_token_abc";
6
7async function run() {
8 const unlocked: UnLockCommentResponse = await unLockComment(tenantId, commentId, broadcastId, ssoToken);
9 console.log(unlocked);
10
11 // Позив без опциона параметра sso
12 const unlockedWithoutSso: UnLockCommentResponse = await unLockComment(tenantId, commentId, broadcastId);
13 console.log(unlockedWithoutSso);
14}
15
16run();
17

unPinComment Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Odgovor

Vraća: UnPinCommentResponse

Primer

Primer unPinComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-001"
4 const commentId: string = "comment-123"
5 const broadcastId: string = "broadcast-456"
6 const sso: string = "sso-token-xyz"
7
8 const resultWithSso: UnPinCommentResponse = await unPinComment(tenantId, commentId, broadcastId, sso)
9 const resultWithoutSso: UnPinCommentResponse = await unPinComment(tenantId, commentId, broadcastId)
10
11 console.log(resultWithSso, resultWithoutSso)
12})()
13

updateComment Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa
updatableCommentParamsUpdatableCommentParamsDa
contextUserIdstringNe
doSpamCheckbooleanNe
isLivebooleanNe

Odgovor

Vraća: UpdateCommentResponse

Primer

updateComment Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4
5const updatableCommentParams: UpdatableCommentParams = {
6 // primer polja; stvarni oblik zavisi od definicije API-ja
7 // npr., body: "Edited comment content",
8};
9
10const contextUserId: string = "user_abcde";
11const doSpamCheck: boolean = true;
12const isLive: boolean = false;
13
14const result: UpdateCommentResponse = await updateComment(
15 tenantId,
16 commentId,
17 updatableCommentParams,
18 contextUserId,
19 doSpamCheck,
20 isLive
21);
22

voteComment Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
urlIdstringYes
broadcastIdstringYes
voteBodyParamsVoteBodyParamsYes
sessionIdstringNo
ssostringNo

Odgovor

Vraća: VoteCommentResponse

Primer

voteComment Primer
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_9f8e7d6c";
4const urlId: string = "url_123456";
5const broadcastId: string = "bcast_2024_01";
6
7const voteBodyParams: VoteBodyParams = {
8 vote: "up", // e.g., "up" | "down"
9 weight: 1, // optional weighting of the vote
10};
11
12const sessionId: string = "sess_abc123def";
13const sso: string = "sso_token_xyz";
14
15const result: VoteCommentResponse = await voteComment(
16 tenantId,
17 commentId,
18 urlId,
19 broadcastId,
20 voteBodyParams,
21 sessionId,
22 sso
23);
24

getCommentsForUser Internal Link

Parametri

ImeTipObaveznoOpis
userIdstringNo
directionSortDirectionsNo
repliesToUserIdstringNo
pagenumberNo
includei10nbooleanNo
localestringNo
isCrawlerbooleanNo

Odgovor

Vraća: GetCommentsForUserResponse1

Primer

Primer getCommentsForUser
Copy Copy
1
2async function demo() {
3 const userId: string = "user-12345";
4 const direction: SortDirections = "desc";
5 const page: number = 1;
6 const includei10n: boolean = true;
7 const locale: string = "en-US";
8 const isCrawler: boolean = false;
9
10 const response: GetCommentsForUserResponse1 = await getCommentsForUser(
11 userId,
12 direction,
13 undefined,
14 page,
15 includei10n,
16 locale,
17 isCrawler
18 );
19
20 console.log(response);
21}
22

addDomainConfig Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
addDomainConfigParamsAddDomainConfigParamsYes

Одговор

Враћа: AddDomainConfigResponse

Пример

addDomainConfig Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const config: AddDomainConfigParams = {
5 domain: 'myblog.example.com',
6 enabled: true,
7 // опис је необавезан и овде је изостављен
8 };
9 const response: AddDomainConfigResponse = await addDomainConfig(tenantId, config);
10 console.log(response);
11})();
12

deleteDomainConfig Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
domainstringDa

Odgovor

Vraća: DeleteDomainConfigResponse

Primer

deleteDomainConfig Primer
Copy Copy
1
2async function runExample() {
3 const tenantId: string = 'acme-corp';
4 const domain: string = 'blog.acme.com';
5 const response: DeleteDomainConfigResponse = await deleteDomainConfig(tenantId, domain);
6 console.log(response);
7}
8runExample();
9

getDomainConfig Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
domainstringDa

Odgovor

Vraća: GetDomainConfigResponse

Primer

getDomainConfig Primer
Copy Copy
1
2async function main() {
3 const tenantId: string = "acme-corp-123";
4 const domain: string = "blog.acme.com";
5 const config: GetDomainConfigResponse = await getDomainConfig(tenantId, domain);
6 console.log(config);
7}
8main();
9

getDomainConfigs Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes

Odgovor

Vraća: GetDomainConfigsResponse

Primer

Primer getDomainConfigs
Copy Copy
1
2async function fetchDomainConfigs(): Promise<void> {
3 const tenantId: string = "acme-corp-567";
4 const configs: GetDomainConfigsResponse = await getDomainConfigs(tenantId);
5 console.log(configs);
6}
7

patchDomainConfig Internal Link

Parameters

ИмеТипОбавезноОпис
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Response

Враћа: PatchDomainConfigResponse

Example

patchDomainConfig Primer
Copy Copy
1
2async function updateDomainConfig() {
3 const tenantId: string = "tenant_98765";
4 const domainToUpdate: string = "forum.mycompany.com";
5 const patchParams: PatchDomainConfigParams = {
6 enableComments: true,
7 moderationLevel: "strict",
8 allowAnonymous: false, // показан опционо параметар
9 };
10 const response: PatchDomainConfigResponse = await patchDomainConfig(tenantId, domainToUpdate, patchParams);
11 console.log(response);
12}
13
14updateDomainConfig();
15

putDomainConfig Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
domainToUpdatestringYes
updateDomainConfigParamsUpdateDomainConfigParamsYes

Odgovor

Vraća: PutDomainConfigResponse

Primer

putDomainConfig Primer
Copy Copy
1
2async function runExample() {
3 const tenantId: string = 'tenant-9f8c7b1a';
4 const domainToUpdate: string = 'comments.mywebsite.org';
5 const updateDomainConfigParams: UpdateDomainConfigParams = {
6 enableModeration: true,
7 // opciono polje izostavljeno, npr., maxCommentLength?: number
8 };
9 const result: PutDomainConfigResponse = await putDomainConfig(
10 tenantId,
11 domainToUpdate,
12 updateDomainConfigParams,
13 );
14 console.log(result);
15}
16runExample();
17

createEmailTemplate Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
createEmailTemplateBodyCreateEmailTemplateBodyYes

Odgovor

Vraća: CreateEmailTemplateResponse1

Primer

createEmailTemplate Primer
Copy Copy
1
2const tenantId: string = "tenant_9f8e7d6c";
3
4const emailTemplate: CreateEmailTemplateBody = {
5 name: "Account Activation",
6 subject: "Activate Your New Account",
7 htmlContent: "<p>Welcome! Please click <a href=\"\{{activationLink}}\">here</a> to activate.</p>",
8 // opcionalna polja poput textContent, isActive su izostavljena da bi se demonstrirali opcioni parametri
9};
10
11const result: CreateEmailTemplateResponse1 = await createEmailTemplate(
12 tenantId,
13 emailTemplate
14);
15
16console.log(result);
17

deleteEmailTemplate Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
idstringДа

Одговор

Враћа: DeleteEmailTemplateResponse

Пример

deleteEmailTemplate Primer
Copy Copy
1
2async () => {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_abcde";
5
6 const response: DeleteEmailTemplateResponse = await deleteEmailTemplate(tenantId, templateId);
7
8 // Primer pristupa opcionom svojstvu iz odgovora
9 const statusCode: number | undefined = response.status?.code;
10}();
11

deleteEmailTemplateRenderError Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
errorIdstringYes

Одговор

Returns: DeleteEmailTemplateRenderErrorResponse

Пример

deleteEmailTemplateRenderError Primer
Copy Copy
1
2async function executeDelete() {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "email_tpl_001";
5 const errorId: string = "render_err_2023";
6
7 const result: DeleteEmailTemplateRenderErrorResponse = await deleteEmailTemplateRenderError(
8 tenantId,
9 templateId,
10 errorId
11 );
12
13 console.log(result);
14}
15
16executeDelete();
17

getEmailTemplate Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: GetEmailTemplateResponse1

Primer

Primer getEmailTemplate
Copy Copy
1
2async function fetchTemplate(): Promise<void> {
3 const tenantId: string = "tenant-12345";
4 const templateId: string = "order-confirmation";
5 const response: GetEmailTemplateResponse1 = await getEmailTemplate(tenantId, templateId);
6 const emailTemplate: CustomEmailTemplate | undefined = response.customEmailTemplate;
7 const configParams: CustomConfigParameters | undefined = response.customConfigParameters;
8}
9

getEmailTemplateDefinitions Internal Link

Parameters

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

Response

Враћа: GetEmailTemplateDefinitionsResponse1

Example

Primer getEmailTemplateDefinitions
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const emailTemplateDefs: GetEmailTemplateDefinitionsResponse1 = await getEmailTemplateDefinitions(tenantId);
5 console.log(emailTemplateDefs);
6})();
7

getEmailTemplateRenderErrors Internal Link

Parameters

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
skipnumberNo

Response

Vraća: GetEmailTemplateRenderErrorsResponse1

Example

Primer getEmailTemplateRenderErrors
Copy Copy
1
2const tenantId: string = "c2f5a8d9-4b3e-4f6a-9e1b-2d5c6f7a8b9c";
3const templateId: string = "welcome-email-template";
4const skip: number = 20;
5
6const result: GetEmailTemplateRenderErrorsResponse1 = await getEmailTemplateRenderErrors(
7 tenantId,
8 templateId,
9 skip
10);
11

getEmailTemplates Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
skipnumberNe

Odgovor

Vraća: GetEmailTemplatesResponse1

Primer

Primer getEmailTemplates
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4
5 // Call without optional 'skip'
6 const templates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId);
7
8 // Call with optional 'skip' parameter
9 const pagedTemplates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId, 20);
10})();
11

renderEmailTemplate Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
renderEmailTemplateBodyRenderEmailTemplateBodyDa
localestringNe

Odgovor

Vraća: RenderEmailTemplateResponse1

Primer

renderEmailTemplate Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-01";
4 const templateBody: RenderEmailTemplateBody = {
5 templateId: "welcome-email",
6 placeholders: {
7 userName: "John Doe",
8 signupDate: "2024-04-01"
9 }
10 };
11 const locale: string = "en-US";
12 const result: RenderEmailTemplateResponse1 = await renderEmailTemplate(tenantId, templateBody, locale);
13 console.log(result);
14})();
15

updateEmailTemplate Internal Link

Параметри

ИмеТипОбавезноОписание
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

Одговор

Враћа: UpdateEmailTemplateResponse

Пример

пример updateEmailTemplate
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "email_tpl_67890";
5
6 const updateBody: UpdateEmailTemplateBody = {
7 subject: "Comment reply notification",
8 htmlContent: "<p>Someone replied to your comment.</p>",
9 plainTextContent: "Someone replied to your comment.",
10 // пример опционалног поља
11 isActive: true,
12 };
13
14 const result: UpdateEmailTemplateResponse = await updateEmailTemplate(
15 tenantId,
16 templateId,
17 updateBody
18 );
19
20 console.log(result);
21})();
22

getEventLog Internal Link

req
tenantId
urlId
userIdWS

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringYes
userIdWSstringYes
startTimenumberYes
endTimenumberNo

Одговор

Враћа: GetEventLogResponse1

Пример

Primer getEventLog
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9876";
4 const urlId: string = "page_54321";
5 const userIdWS: string = "ws_user_1122";
6 const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // пре недељу дана
7 const endTime: number = Date.now();
8
9 const log: GetEventLogResponse1 = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10 const recentLog: GetEventLogResponse1 = await getEventLog(tenantId, urlId, userIdWS, startTime);
11})();
12

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimenumberДа
endTimenumberНе

Одговор

Враћа: GetGlobalEventLogResponse

Пример

Primer getGlobalEventLog
Copy Copy
1
2(async () => {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const urlId: string = 'article-2023-09-15';
5 const userIdWS: string = 'ws_987654321';
6 const startTime: number = Date.now() - 86400000;
7 const endTime: number = Date.now();
8
9 const fullLog: GetGlobalEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10 const recentLog: GetGlobalEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime);
11
12 console.log(fullLog, recentLog);
13})();
14

createFeedPost Internal Link

Parameters

NazivTipObaveznoOpis
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Response

Vraća: CreateFeedPostResponse1

Primer

createFeedPost Primer
Copy Copy
1
2async function run() {
3 const tenantId = "tenant-12345";
4 const feedParams: CreateFeedPostParams = {
5 text: "New product launch!",
6 mediaItems: [{ type: "image", asset: { url: "https://cdn.example.com/img.jpg", width: 800, height: 600 } as FeedPostMediaItemAsset } as FeedPostMediaItem],
7 link: { url: "https://example.com/product", title: "Product" } as FeedPostLink
8 };
9 const result: CreateFeedPostResponse1 = await createFeedPost(tenantId, feedParams, "broadcast-987", true, false, true);
10 console.log(result);
11}
12run();
13

createFeedPostPublic Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
ssostringNo

Odgovor

Vraća: CreateFeedPostPublicResponse

Primer

Primjer createFeedPostPublic
Copy Copy
1
2async function submitPost() {
3 const tenantId: string = "tenant_12345";
4
5 const mediaItem: FeedPostMediaItem = {
6 asset: {
7 url: "https://cdn.example.com/image.jpg",
8 mimeType: "image/jpeg",
9 size: 104857,
10 },
11 type: "image",
12 };
13
14 const link: FeedPostLink = {
15 url: "https://example.com/blog/new-feature",
16 title: "New Feature Release",
17 description: "Details about our latest product update.",
18 };
19
20 const createFeedPostParams: CreateFeedPostParams = {
21 content: "Check out our new feature!",
22 media: [mediaItem],
23 link: link,
24 };
25
26 const broadcastId: string = "broadcast_9876";
27 const sso: string = "sso_token_abc123";
28
29 const response: CreateFeedPostPublicResponse = await createFeedPostPublic(
30 tenantId,
31 createFeedPostParams,
32 broadcastId,
33 sso
34 );
35}
36

deleteFeedPostPublic Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
postIdstringДа
broadcastIdstringНе
ssostringНе

Одговор

Враћа: DeleteFeedPostPublicResponse

Пример

deleteFeedPostPublic Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const postId: string = "post_987654321";
5 const broadcastId: string = "broadcast_2024Q1";
6 const sso: string = "sso_4fa3b9c2";
7
8 const response1: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(tenantId, postId);
9 const response2: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(tenantId, postId, broadcastId);
10 const response3: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(tenantId, postId, broadcastId, sso);
11})();
12

getFeedPosts Internal Link

req tenantId afterId

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
afterIdstringNe
limitnumberNe
tagsArrayNe

Odgovor

Vraća: GetFeedPostsResponse1

Primer

Primer getFeedPosts
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const afterId: string = 'post_9876';
5 const limit: number = 20;
6 const tags: string[] = ['news', 'sports'];
7
8 const feedResult: GetFeedPostsResponse1 = await getFeedPosts(tenantId, afterId, limit, tags);
9})();
10

getFeedPostsPublic Internal Link

req tenantId afterId

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
afterIdstringNe
limitnumberNe
tagsArrayNe
ssostringNe
isCrawlerbooleanNe
includeUserInfobooleanNe

Odgovor

Vraća: GetFeedPostsPublicResponse

Primer

getFeedPostsPublic Primer
Copy Copy
1
2async function example() {
3 const tenantId: string = "tenant_12345";
4 const afterId: string = "post_9876";
5 const limit: number = 20;
6 const tags: string[] = ["news", "tech"];
7 const sso: string = "userToken123";
8 const isCrawler: boolean = false;
9 const includeUserInfo: boolean = true;
10 const response: GetFeedPostsPublicResponse = await getFeedPostsPublic(
11 tenantId,
12 afterId,
13 limit,
14 tags,
15 sso,
16 isCrawler,
17 includeUserInfo
18 );
19}
20example();
21

getFeedPostsStats Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
postIdsArrayYes
ssostringNo

Odgovor

Vraća: GetFeedPostsStatsResponse

Primer

getFeedPostsStats Primer
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const postIds: string[] = ["post_a1b2c3", "post_d4e5f6"];
5 const ssoToken: string = "sso_abcdef123456";
6
7 const statsWithoutSso: GetFeedPostsStatsResponse = await getFeedPostsStats(tenantId, postIds);
8 const statsWithSso: GetFeedPostsStatsResponse = await getFeedPostsStats(tenantId, postIds, ssoToken);
9}
10
11runExample();
12

getUserReactsPublic Internal Link

Parameters

ИмеТипОбавезноОпис
tenantIdstringYes
postIdsArrayNo
ssostringNo

Одговор

Враћа: GetUserReactsPublicResponse

Пример

getUserReactsPublic Primer
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const postIds: string[] = ["post_1a2b3c", "post_4d5e6f"];
5 const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
6
7 const fullResponse: GetUserReactsPublicResponse = await getUserReactsPublic(tenantId, postIds, ssoToken);
8 const minimalResponse: GetUserReactsPublicResponse = await getUserReactsPublic(tenantId);
9}
10
11demo();
12

reactFeedPostPublic Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
postIdstringDa
reactBodyParamsReactBodyParamsDa
isUndobooleanNe
broadcastIdstringNe
ssostringNe

Odgovor

Vraća: ReactFeedPostPublicResponse

Primer

reactFeedPostPublic Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const postId: string = 'post_98765';
5 const reactBodyParams: ReactBodyParams = { reaction: 'thumbs_up' };
6 const isUndo: boolean = false;
7 const broadcastId: string = 'broadcast_abcde';
8 const sso: string = 'sso_token_xyz';
9
10 const response: ReactFeedPostPublicResponse = await reactFeedPostPublic(
11 tenantId,
12 postId,
13 reactBodyParams,
14 isUndo,
15 broadcastId,
16 sso
17 );
18
19 console.log(response);
20})();
21

updateFeedPost Internal Link

Parameters

ИмеТипОбавезноОписание
tenantIdstringYes
idstringYes
feedPostFeedPostYes

Одговор

Враћа: UpdateFeedPostResponse

Пример

Пример updateFeedPost
Copy Copy
1
2const tenantId: string = "tenant_3421";
3const postId: string = "feedpost_a9b8c7";
4
5const feedPost: FeedPost = {
6 content: "We've refreshed the announcement with the latest project milestones.",
7 media: [
8 {
9 type: "image",
10 url: "https://assets.example.com/images/milestone.png",
11 caption: "Project Milestones"
12 } as FeedPostMediaItem
13 ],
14 link: {
15 url: "https://example.com/project-updates",
16 title: "Project Updates",
17 description: "Read about the recent progress and upcoming goals."
18 } as FeedPostLink
19};
20
21const result: UpdateFeedPostResponse = await updateFeedPost(tenantId, postId, feedPost);
22

updateFeedPostPublic Internal Link

Parameters

ImeTipObaveznoOpis
tenantIdstringDa
postIdstringDa
updateFeedPostParamsUpdateFeedPostParamsDa
broadcastIdstringNe
ssostringNe

Response

Vraća: UpdateFeedPostPublicResponse

Primer

updateFeedPostPublic Primer
Copy Copy
1
2async function updatePostExample() {
3 const tenantId: string = 'tenant-9f8b7c';
4 const postId: string = 'post-3a4d5e';
5 const updateParams: UpdateFeedPostParams = {
6 title: 'New Announcement',
7 content: 'We have updated our terms of service.',
8 media: [
9 {
10 url: 'https://cdn.example.com/assets/image.png',
11 type: 'image',
12 asset: {
13 width: 800,
14 height: 600,
15 size: 124000
16 } as FeedPostMediaItemAsset
17 } as FeedPostMediaItem
18 ],
19 link: {
20 url: 'https://example.com/terms',
21 title: 'Read the new TOS'
22 } as FeedPostLink
23 };
24 const broadcastId: string = 'broadcast-2023-09';
25 const sso: string = 'sso-abc123xyz';
26 const result: UpdateFeedPostPublicResponse = await updateFeedPostPublic(
27 tenantId,
28 postId,
29 updateParams,
30 broadcastId,
31 sso
32 );
33}
34

flagCommentPublic Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
commentIdstringDa
isFlaggedbooleanDa
ssostringNe

Odgovor

Vraća: FlagCommentPublicResponse

Primer

flagCommentPublic Primer
Copy Copy
1
2async function demoFlagComment() {
3 const tenantId: string = "acme-tenant-123";
4 const commentId: string = "comment-987654";
5 const isFlagged: boolean = true;
6 const sso: string = "sso-token-abc123";
7
8 const result: FlagCommentPublicResponse = await flagCommentPublic(
9 tenantId,
10 commentId,
11 isFlagged,
12 sso
13 );
14
15 console.log(result);
16}
17
18demoFlagComment();
19

getGifLarge Internal Link

Parameters

NazivTipObaveznoOpis
tenantIdstringYes
largeInternalURLSanitizedstringYes

Response

Vraća: GetGifLargeResponse

Example

getGifLarge Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = 'c9f4a1b2-3d5e-4f6a-8b9c-0d1e2f3a4b5c';
4 const largeInternalURLSanitized: string = 'https://cdn.fastcomments.com/gifs/awesome-cat-large.gif';
5 const result: GetGifLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6 console.log(result);
7})();
8

getGifsSearch Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
searchstringYes
localestringNo
ratingstringNo
pagenumberNo

Одговор

Враћа: GetGifsSearchResponse

Пример

getGifsSearch Primer
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_9f8b7c";
4 const search: string = "funny cats";
5 const locale: string = "en-US";
6 const rating: string = "pg";
7 const page: number = 1;
8
9 const result: GetGifsSearchResponse = await getGifsSearch(
10 tenantId,
11 search,
12 locale,
13 rating,
14 page
15 );
16
17 console.log(result);
18}
19
20demo();
21

getGifsTrending Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
localestringNo
ratingstringNo
pagenumberNo

Odgovor

Vraća: GetGifsTrendingResponse

Primer

Primer getGifsTrending
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const locale: string = "en-US";
5 const rating: string = "PG-13";
6 const page: number = 1;
7
8 const trendingAll: GetGifsTrendingResponse = await getGifsTrending(tenantId, locale, rating, page);
9 console.log(trendingAll);
10
11 // Korišćenje samo obaveznog parametra
12 const trendingMinimal: GetGifsTrendingResponse = await getGifsTrending(tenantId);
13 console.log(trendingMinimal);
14}
15
16runExample();
17

addHashTag Internal Link

Parameters

NazivTipObaveznoOpis
tenantIdstringNo
createHashTagBodyCreateHashTagBodyNo

Response

Vraća: AddHashTagResponse

Example

addHashTag Primer
Copy Copy
1
2const tenantId: string = "tenant_9876";
3
4const newHashTag: CreateHashTagBody = {
5 tag: "typescript",
6 description: "Discussions about TypeScript"
7};
8
9const responseWithTenant: AddHashTagResponse = await addHashTag(tenantId, newHashTag);
10
11const responseWithoutTenant: AddHashTagResponse = await addHashTag(undefined, newHashTag);
12

addHashTagsBulk Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringNo
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

Odgovor

Vraća: AddHashTagsBulkResponse

Primer

addHashTagsBulk Primer
Copy Copy
1
2async () => {
3 const tenantId: string | undefined = "tenant_9f8b7c6d";
4 const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
5 tags: [
6 {
7 name: "typescript",
8 description: "Discussions about TypeScript",
9 color: "#3178c6"
10 },
11 {
12 name: "fastcomments",
13 description: "Tags for FastComments integration",
14 color: "#00aaff"
15 }
16 ]
17 };
18 const result: AddHashTagsBulkResponse = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
19 console.log(result);
20}();
21

deleteHashTag Internal Link

Parameters

NazivTipObaveznoOpis
tagstringDa
tenantIdstringNe
deleteHashTagRequestBodyDeleteHashTagRequestBodyNe

Response

Vraća: DeleteHashTagResponse

Example

deleteHashTag Primer
Copy Copy
1
2(async () => {
3 const tag: string = "announcement";
4 const tenantId: string = "tenant_9876";
5 const requestBody: DeleteHashTagRequestBody = {
6 confirmDeletion: true
7 };
8 const response: DeleteHashTagResponse = await deleteHashTag(tag, tenantId, requestBody);
9 console.log(response);
10})();
11

getHashTags Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
pagenumberNo

Odgovor

Vraća: GetHashTagsResponse1

Primer

getHashTags Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4
5 const responseWithPage: GetHashTagsResponse1 = await getHashTags(tenantId, 1);
6 const responseDefault: GetHashTagsResponse1 = await getHashTags(tenantId);
7
8 console.log(responseWithPage, responseDefault);
9})();
10

patchHashTag Internal Link

Parametri

NameTypeRequiredDescription
tagstringYes
tenantIdstringNo
updateHashTagBodyUpdateHashTagBodyNo

Odgovor

Vraća: PatchHashTagResponse

Primer

patchHashTag Primer
Copy Copy
1
2const response1: PatchHashTagResponse = await patchHashTag("new-feature");
3
4const response2: PatchHashTagResponse = await patchHashTag(
5 "beta-release",
6 "tenant-9f8b7c"
7);
8
9const updateBody: UpdateHashTagBody = {
10 description: "Mark comments related to the upcoming beta release",
11 color: "#1e90ff"
12};
13
14const response3: PatchHashTagResponse = await patchHashTag(
15 "beta-release",
16 "tenant-9f8b7c",
17 updateBody
18);
19

deleteModerationVote Internal Link

Parametri

ImeTipObaveznoOpis
commentIdstringYes
voteIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: DeleteModerationVoteResponse

Primer

deleteModerationVote Primer
Copy Copy
1
2const commentId: string = "cmt_12345";
3const voteId: string = "vote_9876";
4const broadcastId: string = "brd_001";
5const tenantId: string = "tenant_42";
6const sso: string = "sso_token_abc";
7
8const result: DeleteModerationVoteResponse = await deleteModerationVote(
9 commentId,
10 voteId,
11 broadcastId,
12 tenantId,
13 sso
14);
15

getApiComments Internal Link

Параметри

ИмеТипОбавезноОпис
pagenumberNo
countnumberNo
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
sortsstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Одговор

Враћа: GetApiCommentsResponse

Пример

getApiComments Primer
Copy Copy
1
2async function loadComments() {
3 const fullResult: GetApiCommentsResponse = await getApiComments(
4 2, // страница
5 25, // број
6 "feedback", // textSearch
7 "192.168.1.100", // byIPFromComment
8 "approved", // filters
9 "hasReplies", // searchFilters
10 "dateDesc", // sorts
11 false, // demo
12 "tenant-abc123", // tenantId
13 "sso-token-xyz" // sso
14 );
15
16 const minimalResult: GetApiCommentsResponse = await getApiComments(undefined, 5);
17}
18

getApiExportStatus Internal Link

Параметри

ИмеТипОбавезноОпис
batchJobIdstringNo
tenantIdstringNo
ssostringNo

Одговор

Враћа: GetApiExportStatusResponse

Пример

getApiExportStatus Primer
Copy Copy
1
2async function demoExportStatus() {
3 const batchJobId: string = "exportBatch-20231101-001";
4 const tenantId: string = "tenant-abc123";
5 const ssoToken: string = "sso-xyz789";
6
7 const fullStatus: GetApiExportStatusResponse = await getApiExportStatus(batchJobId, tenantId, ssoToken);
8 const simpleStatus: GetApiExportStatusResponse = await getApiExportStatus(batchJobId);
9 console.log(fullStatus, simpleStatus);
10}
11

getApiIds Internal Link

Parameters

NazivTipObaveznoOpis
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
afterIdstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: GetApiIdsResponse

Primer

Primer getApiIds
Copy Copy
1
2const textSearch: string = "urgent feedback";
3const byIPFromComment: string = "203.0.113.42";
4const filters: string = "status:approved";
5const afterId: string = "comment-789";
6const demo: boolean = true;
7const tenantId: string = "tenant-001";
8
9const apiIds: GetApiIdsResponse = await getApiIds({
10 textSearch,
11 byIPFromComment,
12 filters,
13 afterId,
14 demo,
15 tenantId,
16});
17

getBanUsersFromComment Internal Link

Параметри

ИмеТипОбавезноОпис
commentIdstringYes
tenantIdstringNo
ssostringNo

Одговор

Враћа: GetBanUsersFromCommentResponse

Пример

getBanUsersFromComment Пример
Copy Copy
1
2async function demoGetBanUsers() {
3 const commentId: string = "cmt_5f8e3a9b2d";
4 const tenantId: string = "tenant_42";
5 const sso: string = "sso_token_abc123";
6
7 // Позив са свим параметрима
8 const fullResult: GetBanUsersFromCommentResponse = await getBanUsersFromComment(commentId, tenantId, sso);
9 console.log(fullResult);
10
11 // Позив само са потребним параметром
12 const minimalResult: GetBanUsersFromCommentResponse = await getBanUsersFromComment(commentId);
13 console.log(minimalResult);
14}
15
16demoGetBanUsers();
17

getCommentBanStatus Internal Link

Параметри

ИмеТипОбавезноОпис
commentIdstringДа
tenantIdstringНе
ssostringНе

Одговор

Враћа: GetCommentBanStatusResponse1

Пример

Primer getCommentBanStatus
Copy Copy
1
2async function checkCommentBanStatus() {
3 const banStatus: GetCommentBanStatusResponse1 = await getCommentBanStatus('cmt_987654321', 'tenant_42', 'sso_token_abc123');
4 const banStatusNoTenant: GetCommentBanStatusResponse1 = await getCommentBanStatus('cmt_987654322', undefined, 'sso_token_def456');
5}
6

getCommentChildren Internal Link

Parameters

NameTypeRequiredDescription
commentIdstringYes
tenantIdstringNo
ssostringNo

Response

Returns: GetCommentChildrenResponse

Example

Primer getCommentChildren
Copy Copy
1
2const commentId: string = "cmt_12345";
3const tenantId: string = "tenant_xyz";
4const sso: string = "sso_987654";
5
6const fullResponse: GetCommentChildrenResponse = await getCommentChildren(commentId, tenantId, sso);
7const minimalResponse: GetCommentChildrenResponse = await getCommentChildren(commentId);
8

getCount Internal Link

Parameters

ImeTipObaveznoOpis
textSearchstringNo
byIPFromCommentstringNo
filterstringNo
searchFiltersstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Response

Vraća: GetCountResponse

Primer

getCount Primer
Copy Copy
1
2async function main(): Promise<void> {
3 const count: GetCountResponse = await getCount({
4 textSearch: "order issue",
5 byIPFromComment: "198.51.100.23",
6 filter: "pending",
7 demo: true,
8 tenantId: "acme_corp",
9 sso: "sso_abcdef123456"
10 });
11 console.log(count);
12}
13main();
14

getCounts Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringNo
ssostringNo

Odgovor

Vraća: GetCountsResponse

Primer

Primer getCounts
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "acme-corp";
4 const ssoToken: string = "sso-token-2024";
5
6 const withBoth: GetCountsResponse = await getCounts(tenantId, ssoToken);
7 const withTenantOnly: GetCountsResponse = await getCounts(tenantId);
8 const withoutParams: GetCountsResponse = await getCounts();
9
10 console.log(withBoth, withTenantOnly, withoutParams);
11}
12runExample();
13

getLogs Internal Link

Параметри

NameTypeRequiredDescription
commentIdstringYes
tenantIdstringNo
ssostringNo

Одговор

Враћа: GetLogsResponse

Пример

Primer getLogs
Copy Copy
1
2async function fetchLogs() {
3 const commentId: string = "cmt_9a8b7c6d5e4f3a2b";
4 const tenantId: string = "tenant_9876";
5 const sso: string = "sso_abcdef123456";
6
7 const fullResponse: GetLogsResponse = await getLogs(commentId, tenantId, sso);
8 const minimalResponse: GetLogsResponse = await getLogs(commentId);
9}
10

getManualBadges Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringНе
ssostringНе

Одговор

Враћа: GetManualBadgesResponse

Пример

Primer getManualBadges
Copy Copy
1
2async function fetchBadges() {
3 const tenantId: string = "tenant_987654321";
4 const ssoToken: string = "sso_ABCdef123456";
5
6 // Позив са оба опциона параметра
7 const responseFull: GetManualBadgesResponse = await getManualBadges(tenantId, ssoToken);
8 console.log(responseFull);
9
10 // Позив само са tenantId
11 const responseTenantOnly: GetManualBadgesResponse = await getManualBadges(tenantId);
12 console.log(responseTenantOnly);
13}
14
15fetchBadges();
16

getManualBadgesForUser Internal Link

Parametri

ImeTipObaveznoOpis
badgesUserIdstringNe
commentIdstringNe
tenantIdstringNe
ssostringNe

Odgovor

Vraća: GetManualBadgesForUserResponse

Primer

getManualBadgesForUser Primer
Copy Copy
1
2(async () => {
3 const userId: string = "user_42";
4 const commentId: string = "comment_1001";
5 const tenantId: string = "tenant_acme";
6 const ssoToken: string = "sso_5f6g7h8i9j";
7
8 const badges: GetManualBadgesForUserResponse = await getManualBadgesForUser(userId, commentId, tenantId, ssoToken);
9 const limitedBadges: GetManualBadgesForUserResponse = await getManualBadgesForUser(userId);
10})();
11

getModerationComment Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringYes
includeEmailbooleanNo
includeIPbooleanNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: GetModerationCommentResponse

Primer

Primer getModerationComment
Copy Copy
1
2async function fetchCommentDetails() {
3 // Kompletan skup parametara
4 const commentId: string = "cmt_12345abc";
5 const includeEmail: boolean = true;
6 const includeIP: boolean = false;
7 const tenantId: string = "tenant_9876";
8 const sso: string = "sso_token_xyz";
9
10 const fullResult: GetModerationCommentResponse = await getModerationComment(
11 commentId,
12 includeEmail,
13 includeIP,
14 tenantId,
15 sso
16 );
17
18 // Minimalni poziv koristeći samo obavezni argument
19 const minimalResult: GetModerationCommentResponse = await getModerationComment("cmt_67890def");
20
21 // Koristite rezultate po potrebi...
22}
23

getModerationCommentText Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringDa
tenantIdstringNe
ssostringNe

Odgovor

Vraća: GetModerationCommentTextResponse

Primer

Primer getModerationCommentText
Copy Copy
1
2async function exampleUsage(): Promise<void> {
3 const commentId: string = "cmt_9f8e7d6c5b4a3b2c1d0e";
4 const tenantId: string = "tenant_67890";
5 const sso: string = "sso_token_abc123";
6
7 // Poziv sa samo obaveznim parametrom
8 const result1: GetModerationCommentTextResponse = await getModerationCommentText(commentId);
9
10 // Poziv sa opcionim parametrima
11 const result2: GetModerationCommentTextResponse = await getModerationCommentText(commentId, tenantId, sso);
12}
13

getPreBanSummary Internal Link

Parametri

ImeTipObaveznoOpis
commentIdstringYes
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: GetPreBanSummaryResponse

Primer

Primer getPreBanSummary
Copy Copy
1
2const commentId: string = "5f8d0c2e4b1a2c3d4e5f6a7b";
3const includeByUserIdAndEmail: boolean = true;
4const includeByIP: boolean = true;
5const includeByEmailDomain: boolean = false;
6const tenantId: string = "tenant-001";
7const sso: string = "sso-xyz-123";
8
9const preBanSummary: GetPreBanSummaryResponse = await getPreBanSummary(
10 commentId,
11 includeByUserIdAndEmail,
12 includeByIP,
13 includeByEmailDomain,
14 tenantId,
15 sso
16);
17

getSearchCommentsSummary Internal Link

Параметри

ИмеТипОбавезноОпис
valuestringNo
filtersstringNo
searchFiltersstringNo
tenantIdstringNo
ssostringNo

Одговор

Враћа: GetSearchCommentsSummaryResponse

Пример

Пример getSearchCommentsSummary
Copy Copy
1
2async function runExample(): Promise<void> {
3 const searchTerm: string = "fastcomments integration";
4 const filterString: string = "status:approved";
5 const searchFilterString: string = "author:jane";
6 const tenantId: string = "123e4567-e89b-12d3-a456-426614174000";
7 const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
8
9 const summary: GetSearchCommentsSummaryResponse = await getSearchCommentsSummary(
10 searchTerm,
11 filterString,
12 searchFilterString,
13 tenantId,
14 ssoToken
15 );
16
17 console.log(summary);
18}
19runExample();
20

getSearchPages Internal Link

Параметри

ImeTipObaveznoOpis
valuestringNo
tenantIdstringNo
ssostringNo

Одговор

Vraća: GetSearchPagesResponse

Пример

getSearchPages Primer
Copy Copy
1
2(async () => {
3 const query: string = "network outage";
4 const tenantId: string = "tenant-9876";
5 const ssoToken: string = "sso-abc123def456";
6
7 const searchResult: GetSearchPagesResponse = await getSearchPages(query, tenantId, ssoToken);
8 const searchResultNoSso: GetSearchPagesResponse = await getSearchPages(query, tenantId);
9})();
10

getSearchSites Internal Link

Parameters

NameTypeRequiredDescription
valuestringNo
tenantIdstringNo
ssostringNo

Response

Returns: GetSearchSitesResponse

Example

Primer getSearchSites
Copy Copy
1
2async function fetchSites() {
3 const value: string = "customer support"
4 const tenantId: string = "tenant-9876"
5 const sso: string = "sso-abc123"
6
7 const sites: GetSearchSitesResponse = await getSearchSites(value, tenantId, sso)
8 const sitesOnlyTenant: GetSearchSitesResponse = await getSearchSites(undefined, tenantId)
9}
10

getSearchSuggest Internal Link

Parametri

NazivTipObaveznoOpis
textSearchstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: GetSearchSuggestResponse

Primer

getSearchSuggest Primer
Copy Copy
1
2async function example(): Promise<void> {
3 const term: string = "fastcomments api";
4 const tenant: string = "tenant_001";
5 const sso: string = "sso_9a8b7c";
6
7 const fullResult: GetSearchSuggestResponse = await getSearchSuggest(term, tenant, sso);
8 const partialResult: GetSearchSuggestResponse = await getSearchSuggest(term);
9}
10
11example();
12

getSearchUsers Internal Link

Parametri

NazivTipObaveznoOpis
valuestringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: GetSearchUsersResponse

Primer

getSearchUsers Primer
Copy Copy
1
2async function demoSearch() {
3 const query: string = "john.doe@example.com";
4 const tenantId: string = "tenant_12345";
5 const ssoToken: string = "sso_token_abc";
6
7 const resultWithSso: GetSearchUsersResponse = await getSearchUsers(query, tenantId, ssoToken);
8 const resultWithoutSso: GetSearchUsersResponse = await getSearchUsers(query, tenantId);
9}
10

getTrustFactor Internal Link

Parametri

NazivTipObaveznoOpis
userIdstringNe
tenantIdstringNe
ssostringNe

Odgovor

Vraća: GetTrustFactorResponse

Primer

Primer getTrustFactor
Copy Copy
1
2async function runDemo(): Promise<void> {
3 const trustFull: GetTrustFactorResponse = await getTrustFactor("user_12345", "tenant_abc", "sso_token_987");
4 const trustUserOnly: GetTrustFactorResponse = await getTrustFactor("user_12345");
5 console.log(trustFull, trustUserOnly);
6}
7runDemo();
8

getUserBanPreference Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringNe
ssostringNe

Odgovor

Vraća: GetUserBanPreferenceResponse

Primer

Primer getUserBanPreference
Copy Copy
1
2async function demoGetUserBanPreference(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant-2024";
4 const sso: string = "sso-token-9f8b7a6c";
5
6 const result: GetUserBanPreferenceResponse = await getUserBanPreference(tenantId, sso);
7 console.log(result);
8}
9
10demoGetUserBanPreference();
11

getUserInternalProfile Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: GetUserInternalProfileResponse1

Primer

getUserInternalProfile Primer
Copy Copy
1
2(async () => {
3 const fullProfile: GetUserInternalProfileResponse1 = await getUserInternalProfile({
4 commentId: "cmt_12345",
5 tenantId: "tenant_67890",
6 sso: "sso_token_abcdef"
7 });
8
9 const partialProfile: GetUserInternalProfileResponse1 = await getUserInternalProfile({
10 commentId: "cmt_98765"
11 });
12})();
13

postAdjustCommentVotes Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringYes
adjustCommentVotesParamsAdjustCommentVotesParamsYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PostAdjustCommentVotesResponse

Primer

postAdjustCommentVotes Primer
Copy Copy
1
2const commentId: string = "cmt_9f8b7a6d";
3
4const adjustParams: AdjustCommentVotesParams = {
5 voteDelta: 1,
6 // additional fields as required by AdjustCommentVotesParams
7};
8
9const broadcastId: string = "brd_20230915";
10const tenantId: string = "tenant_42";
11const sso: string = "sso-token-abc123";
12
13const result: PostAdjustCommentVotesResponse = await postAdjustCommentVotes(
14 commentId,
15 adjustParams,
16 broadcastId,
17 tenantId,
18 sso
19);
20

postApiExport Internal Link

Параметри

ИмеТипОбавезноОпис
textSearchstringНе
byIPFromCommentstringНе
filtersstringНе
searchFiltersstringНе
sortsstringНе
tenantIdstringНе
ssostringНе

Одговор

Враћа: PostApiExportResponse

Пример

postApiExport Primer
Copy Copy
1
2(async () => {
3 const textSearch: string = "keyword:feedback"
4 const byIPFromComment: string = "203.0.113.45"
5 const filters: string = "status:pending,category:support"
6 const searchFilters: string = "createdAt>2023-01-01"
7 const sorts: string = "createdAt:desc"
8 const tenantId: string = "tenant_9876"
9 const sso: string = "sso_7e2a9b"
10
11 const exportResult: PostApiExportResponse = await postApiExport(
12 textSearch,
13 byIPFromComment,
14 filters,
15 searchFilters,
16 sorts,
17 tenantId,
18 sso
19 )
20
21 console.log(exportResult)
22})()
23

postBanUserFromComment Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringYes
banEmailbooleanNo
banEmailDomainbooleanNo
banIPbooleanNo
deleteAllUsersCommentsbooleanNo
bannedUntilstringNo
isShadowBanbooleanNo
updateIdstringNo
banReasonstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PostBanUserFromCommentResponse

Primer

postBanUserFromComment Primer
Copy Copy
1
2async function runBan() {
3 const commentId: string = "cmt_5f8a2b3c";
4 const banEmail: boolean = true;
5 const banIP: boolean = false;
6 const deleteAllUsersComments: boolean = true;
7 const bannedUntil: string = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString();
8 const isShadowBan: boolean = false;
9 const banReason: string = "Repeated spam posting";
10 const tenantId: string = "tenant_12345";
11
12 const response: PostBanUserFromCommentResponse = await postBanUserFromComment(
13 commentId,
14 banEmail,
15 undefined,
16 banIP,
17 deleteAllUsersComments,
18 bannedUntil,
19 isShadowBan,
20 undefined,
21 banReason,
22 tenantId
23 );
24 console.log(response);
25}
26runBan();
27

postBanUserUndo Internal Link

Parametri

NameTypeRequiredDescription
banUserUndoParamsBanUserUndoParamsДа
tenantIdstringНе
ssostringНе

Odgovor

Vraća: PostBanUserUndoResponse

Primer

postBanUserUndo Primer
Copy Copy
1
2const undoParams: BanUserUndoParams = {
3 userId: "user-8421",
4 commentId: "comment-6702",
5 reason: "Accidental ban"
6};
7
8const tenantId: string = "tenant-7f9e";
9const ssoToken: string = "sso-4b2c1d";
10
11async function runUndo() {
12 const resultAll: PostBanUserUndoResponse = await postBanUserUndo(undoParams, tenantId, ssoToken);
13 console.log(resultAll);
14
15 const resultMinimal: PostBanUserUndoResponse = await postBanUserUndo(undoParams);
16 console.log(resultMinimal);
17}
18
19runUndo();
20

postBulkPreBanSummary Internal Link

Параметри

ИмеТипОбавезноОпис
bulkPreBanParamsBulkPreBanParamsYes
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
tenantIdstringNo
ssostringNo

Одговор

Враћа: PostBulkPreBanSummaryResponse

Пример

postBulkPreBanSummary Пример
Copy Copy
1
2async function runExample() {
3 const bulkPreBanParams: BulkPreBanParams = {
4 userIds: [10234, 56789],
5 emails: ["spam_user@example.com", "abuse@badsite.org"],
6 ips: ["203.0.113.45", "198.51.100.22"],
7 emailDomains: ["maliciousdomain.com"]
8 };
9
10 const includeByUserIdAndEmail: boolean = true;
11 const includeByIP: boolean = false;
12 const includeByEmailDomain: boolean = true;
13 const tenantId: string = "tenant_8f4b2c1a";
14 const sso: string = "sso-3948abf0";
15
16 const summary: PostBulkPreBanSummaryResponse = await postBulkPreBanSummary(
17 bulkPreBanParams,
18 includeByUserIdAndEmail,
19 includeByIP,
20 includeByEmailDomain,
21 tenantId,
22 sso
23 );
24
25 console.log(summary);
26}
27
28runExample();
29

postCommentsByIds Internal Link

Parameters

ИмеТипОбавезноОпис
commentsByIdsParamsCommentsByIdsParamsДа
tenantIdstringНе
ssostringНе

Response

Враћа: PostCommentsByIdsResponse

Example

postCommentsByIds Primer
Copy Copy
1
2const commentsByIdsParams: CommentsByIdsParams = {
3 commentIds: ['cmt001', 'cmt002'],
4 includeUserInfo: true,
5 includeThreadInfo: false,
6} as CommentsByIdsParams;
7
8const fullResponse: PostCommentsByIdsResponse = await postCommentsByIds(
9 commentsByIdsParams,
10 'tenant-12345',
11 'sso-token-xyz'
12);
13
14const minimalResponse: PostCommentsByIdsResponse = await postCommentsByIds(
15 commentsByIdsParams
16);
17

postFlagComment Internal Link

Параметри

ИмеТипОбавезноОпис
commentIdstringДа
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Одговор

Враћа: PostFlagCommentResponse

Пример

postFlagComment Primer
Copy Copy
1
2const commentId: string = "cmt_20230915_001";
3const broadcastId: string = "brd_20230915_live";
4const tenantId: string = "tenant_42";
5const sso: string = "sso_token_abc123";
6
7const flaggedResponse: PostFlagCommentResponse = await postFlagComment(
8 commentId,
9 broadcastId,
10 tenantId,
11 sso
12);
13

postRemoveComment Internal Link

Parametri

NameTypeRequiredDescription
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PostRemoveCommentResponse

Primer

postRemoveComment Primer
Copy Copy
1
2async function removeCommentExample(): Promise<void> {
3 const commentId: string = "cmt_7f9a3e2b";
4
5 const result1: PostRemoveCommentResponse = await postRemoveComment(commentId);
6
7 const broadcastId: string = "brd_12ab34cd";
8 const tenantId: string = "tenant_5678efgh";
9 const sso: string = "sso_XYZ12345";
10
11 const result2: PostRemoveCommentResponse = await postRemoveComment(commentId, broadcastId, tenantId, sso);
12
13 console.log(result1, result2);
14}
15

postRestoreDeletedComment Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PostRestoreDeletedCommentResponse

Primer

postRestoreDeletedComment Primer
Copy Copy
1
2async function restoreCommentDemo(): Promise<void> {
3 const commentId: string = "cmt_5f2a9b7e1234567890abcd";
4 const broadcastId: string | undefined = "brd_2023_09";
5 const tenantId: string | undefined = "tenant_42";
6 const sso: string | undefined = "sso_token_abcdef123456";
7
8 const response: PostRestoreDeletedCommentResponse = await postRestoreDeletedComment(
9 commentId,
10 broadcastId,
11 tenantId,
12 sso
13 );
14
15 console.log(response);
16}
17
18restoreCommentDemo();
19

postSetCommentApprovalStatus Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringDa
approvedbooleanNe
broadcastIdstringNe
tenantIdstringNe
ssostringNe

Odgovor

Vraća: PostSetCommentApprovalStatusResponse

Primer

postSetCommentApprovalStatus Primer
Copy Copy
1
2async function main() {
3 const commentIdOnly: string = "cmt_1001";
4 const resultOnly: PostSetCommentApprovalStatusResponse = await postSetCommentApprovalStatus(commentIdOnly);
5
6 const commentIdFull: string = "cmt_2002";
7 const approvedFull: boolean = true;
8 const broadcastIdFull: string = "brd_3003";
9 const tenantIdFull: string = "tenant_abc";
10 const ssoFull: string = "sso_token_xyz";
11 const resultFull: PostSetCommentApprovalStatusResponse = await postSetCommentApprovalStatus(
12 commentIdFull,
13 approvedFull,
14 broadcastIdFull,
15 tenantIdFull,
16 ssoFull
17 );
18
19 console.log(resultOnly, resultFull);
20}
21main();
22

postSetCommentReviewStatus Internal Link

Parametri

ImeTipObaveznoOpis
commentIdstringDa
reviewedbooleanNe
broadcastIdstringNe
tenantIdstringNe
ssostringNe

Odgovor

Vraća: PostSetCommentReviewStatusResponse

Primer

postSetCommentReviewStatus Primer
Copy Copy
1
2async function updateCommentReviewStatus(): Promise<void> {
3 const commentId: string = "cmt_9f8a7b6c5d4e3f2a1b0c";
4 const reviewed: boolean = true;
5 const broadcastId: string = "broadcast_2024Q1";
6 const tenantId: string = "tenant_1001";
7 const sso: string = "alice@example.com";
8
9 const response: PostSetCommentReviewStatusResponse = await postSetCommentReviewStatus(
10 commentId,
11 reviewed,
12 broadcastId,
13 tenantId,
14 sso
15 );
16
17 console.log(response);
18}
19

postSetCommentSpamStatus Internal Link

Parametri

NazivTipObaveznoOpis
commentIdstringYes
spambooleanNo
permNotSpambooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PostSetCommentSpamStatusResponse

Primer

postSetCommentSpamStatus Primer
Copy Copy
1
2async function demoSpamStatus(): Promise<void> {
3 const commentId: string = "cmt_5f2a1b3c4d6e7f8g9h0i";
4
5 // Samo obavezni parametar
6 const resultSimple: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(commentId, true);
7
8 // Svi opcioni parametri su prosleđeni
9 const resultFull: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(
10 commentId,
11 false,
12 true,
13 "brd_1234abcd",
14 "tenant_42",
15 "sso_9876xyz"
16 );
17
18 console.log(resultSimple, resultFull);
19}
20

postSetCommentText Internal Link


Параметри

ИмеТипОбавезноОпис
commentIdstringДа
setCommentTextParamsSetCommentTextParamsДа
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Одговор

Враћа: PostSetCommentTextResponse

Пример

postSetCommentText Пример
Copy Copy
1
2(async () => {
3 const commentId: string = "cmt_9f8b7a6d5e4c3b2a1";
4 const setParams: SetCommentTextParams = {
5 text: "Edited comment to correct a typo and add clarification."
6 };
7 const broadcastId: string = "brd_1a2b3c4d5e6f7g8h9";
8 const tenantId: string = "tenant_xyz123";
9 const sso: string = "sso_user_456def";
10
11 const fullResult: PostSetCommentTextResponse = await postSetCommentText(
12 commentId,
13 setParams,
14 broadcastId,
15 tenantId,
16 sso
17 );
18
19 const minimalResult: PostSetCommentTextResponse = await postSetCommentText(
20 commentId,
21 setParams
22 );
23
24 console.log(fullResult, minimalResult);
25})();
26

postUnFlagComment Internal Link

Parametri

NameTypeRequiredDescription
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PostUnFlagCommentResponse

Primer

postUnFlagComment Primer
Copy Copy
1
2async () => {
3 const response: PostUnFlagCommentResponse = await postUnFlagComment(
4 "cmt_12345", // commentId
5 "brd_67890", // broadcastId (optional)
6 "tenant_abc", // tenantId (optional)
7 "sso_user_token_789" // sso (optional)
8 );
9};
10

postVote Internal Link

Параметри

ИмеТипОбавезноОпис
commentIdstringYes
directionstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Одговор

Враћа: PostVoteResponse

Пример

postVote Primer
Copy Copy
1
2let commentId: string = 'cmt_12345';
3let direction: string = 'up';
4let broadcastId: string = 'brd_67890';
5let tenantId: string = 'tenant_abc';
6let sso: string = 'sso_token_xyz';
7
8const fullVote: PostVoteResponse = await postVote(
9 commentId,
10 direction,
11 broadcastId,
12 tenantId,
13 sso
14);
15
16const simpleVote: PostVoteResponse = await postVote('cmt_67890');
17

putAwardBadge Internal Link

Parametri

NazivTipObaveznoOpis
badgeIdstringDa
userIdstringNe
commentIdstringNe
broadcastIdstringNe
tenantIdstringNe
ssostringNe

Odgovor

Vraća: PutAwardBadgeResponse

Primer

putAwardBadge Primer
Copy Copy
1
2(async () => {
3 const badgeId: string = "badge-superstar"
4 const userId: string = "user-42"
5 const commentId: string = "comment-7f9c3"
6 const broadcastId: string = "broadcast-2023-09"
7 const result: PutAwardBadgeResponse = await putAwardBadge(badgeId, userId, commentId, broadcastId)
8 console.log(result)
9})()
10

putCloseThread Internal Link

Parameters

ImeTipObaveznoOpis
urlIdstringDa
tenantIdstringNe
ssostringNe

Response

Vraća: PutCloseThreadResponse

Example

Primer putCloseThread
Copy Copy
1
2async function closeThreadDemo(): Promise<void> {
3 const urlId: string = "article-2023-09-15";
4 const tenantId: string = "tenant-42";
5 const sso: string = "sso-token-xyz";
6
7 const response: PutCloseThreadResponse = await putCloseThread(urlId, tenantId, sso);
8 console.log(response);
9}
10
11closeThreadDemo();
12

putRemoveBadge Internal Link

Parametri

ImeTipObaveznoOpis
badgeIdstringYes
userIdstringNo
commentIdstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PutRemoveBadgeResponse

Primer

putRemoveBadge Primer
Copy Copy
1
2const badgeId: string = "badge-12345";
3const userId: string = "user-9876";
4const commentId: string = "comment-5555";
5const broadcastId: string = "broadcast-001";
6
7const result: PutRemoveBadgeResponse = await putRemoveBadge(
8 badgeId,
9 userId,
10 commentId,
11 broadcastId
12);
13

putReopenThread Internal Link

Parametri

NazivTipObaveznoOpis
urlIdstringYes
tenantIdstringNo
ssostringNo

Odgovor

Vraća: PutReopenThreadResponse

Primer

putReopenThread Primer
Copy Copy
1
2async function exampleUsage() {
3 const urlId: string = "thread-9f8b7c6a";
4 const tenantId: string = "tenant-001";
5 const sso: string = "sso-3f9d2e1a";
6
7 const resultAll: PutReopenThreadResponse = await putReopenThread(urlId, tenantId, sso);
8 console.log(resultAll);
9
10 const resultMinimal: PutReopenThreadResponse = await putReopenThread(urlId);
11 console.log(resultMinimal);
12}
13

setTrustFactor Internal Link

Параметри

ИмеТипОбавезноОпис
userIdstringНе
trustFactorstringНе
tenantIdstringНе
ssostringНе

Одговор

Враћа: SetTrustFactorResponse

Пример

setTrustFactor Primer
Copy Copy
1
2(async () => {
3 const userId: string = "user_8421";
4 const trustFactor: string = "high";
5 const tenantId: string = "tenant_33";
6 const ssoToken: string = "sso_7d9f";
7
8 const fullResult: SetTrustFactorResponse = await setTrustFactor(userId, trustFactor, tenantId, ssoToken);
9 const minimalResult: SetTrustFactorResponse = await setTrustFactor(userId, trustFactor);
10})();
11

createModerator Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
createModeratorBodyCreateModeratorBodyYes

Odgovor

Vraća: CreateModeratorResponse1

Primer

Primer createModerator
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9876";
4 const moderatorPayload: CreateModeratorBody = {
5 name: "Alice Johnson",
6 email: "alice.johnson@example.com"
7 // opcionalna polja poput opisa su izostavljena
8 };
9 const result: CreateModeratorResponse1 = await createModerator(tenantId, moderatorPayload);
10 console.log(result);
11}
12
13runExample();
14

deleteModerator Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa
sendEmailstringNe

Odgovor

Vraća: DeleteModeratorResponse

Primer

deleteModerator Primer
Copy Copy
1
2async function runDeleteModeratorExample() {
3 const tenantId: string = "tenant_2023";
4 const moderatorId: string = "mod_001";
5 const notificationEmail: string = "admin@mycompany.com";
6
7 const resultWithEmail: DeleteModeratorResponse = await deleteModerator(tenantId, moderatorId, notificationEmail);
8 const resultWithoutEmail: DeleteModeratorResponse = await deleteModerator(tenantId, moderatorId);
9}
10

getModerator Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes

Odgovor

Returns: GetModeratorResponse1

Primer

getModerator Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-001";
4 const id: string = "mod-12345";
5
6 const result: GetModeratorResponse1 = await getModerator(tenantId, id);
7
8 const moderatorName: string | undefined = result.moderator?.name;
9 console.log(moderatorName);
10})();
11

getModerators Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
skipnumberНе

Одговор

Враћа: GetModeratorsResponse1

Пример

Primer getModerators
Copy Copy
1
2async function fetchModerators(): Promise<void> {
3 const tenantId: string = "tenant-9876";
4 const skip: number = 30; // opciono pomeraj paginacije
5 const moderators: GetModeratorsResponse1 = await getModerators(tenantId, skip);
6 // Primer bez paginacije:
7 // const allModerators: GetModeratorsResponse1 = await getModerators(tenantId);
8}
9

sendInvite Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
fromNamestringYes

Odgovor

Vraća: SendInviteResponse

Primer

sendInvite Primer
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const inviteId: string = "invite-12345";
4const fromName: string = "John Doe";
5
6const inviteResult: SendInviteResponse = await sendInvite(tenantId, inviteId, fromName);
7

updateModerator Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa
updateModeratorBodyUpdateModeratorBodyDa

Odgovor

Returns: UpdateModeratorResponse

Primer

Primer updateModerator
Copy Copy
1
2async function demoUpdateModerator(): Promise<void> {
3 const tenantId: string = "tenant_42abc";
4 const moderatorId: string = "moderator_8f9e";
5 const updateBody: UpdateModeratorBody = {
6 isActive: true,
7 role: "admin",
8 // opcionalno polje
9 notes: "Promoted to senior moderator"
10 };
11 const result: UpdateModeratorResponse = await updateModerator(tenantId, moderatorId, updateBody);
12 console.log(result);
13}
14
15demoUpdateModerator();
16

deleteNotificationCount Internal Link

Parameters

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Response

Vraća: DeleteNotificationCountResponse

Primer

deleteNotificationCount Primer
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_12345";
4 const notificationId: string = "notif_98765";
5 const result: DeleteNotificationCountResponse = await deleteNotificationCount(tenantId, notificationId);
6 console.log(result);
7}
8run();
9

getCachedNotificationCount Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: GetCachedNotificationCountResponse1

Primer

getCachedNotificationCount Primer
Copy Copy
1
2const tenantId: string = "e3f1a9b2-4c5d-6e7f-8a9b-0c1d2e3f4a5b";
3const userId: string = "u-20231101-001";
4
5const notificationResult: GetCachedNotificationCountResponse1 = await getCachedNotificationCount(tenantId, userId);
6
7console.log(notificationResult);
8

getNotificationCount Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Odgovor

Vraća: GetNotificationCountResponse1

Primer

getNotificationCount Primer
Copy Copy
1
2async function demoNotificationCount() {
3 const tenantId: string = "tenant_001";
4 const userId: string = "user_42";
5 const urlId: string = "url_9f8e7d";
6 const fromCommentId: string = "comment_12345";
7 const viewed: boolean = false;
8 const type: string = "mention";
9
10 const result: GetNotificationCountResponse1 = await getNotificationCount(
11 tenantId,
12 userId,
13 urlId,
14 fromCommentId,
15 viewed,
16 type
17 );
18
19 console.log(result);
20}
21
22demoNotificationCount();
23

getNotifications Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Odgovor

Vraća: GetNotificationsResponse1

Primer

Primer getNotifications
Copy Copy
1
2async function demo() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe";
5
6 const notifications: GetNotificationsResponse1 = await getNotifications(tenantId, userId);
7 console.log(notifications);
8
9 const more: GetNotificationsResponse1 = await getNotifications(
10 tenantId,
11 undefined,
12 "article-5678",
13 undefined,
14 true,
15 "reply",
16 10
17 );
18 console.log(more);
19}
20demo();
21

updateNotification Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
idstringДа
updateNotificationBodyUpdateNotificationBodyДа
userIdstringНе

Одговор

Returns: UpdateNotificationResponse

Пример

Primer updateNotification
Copy Copy
1
2const tenantId: string = "tenant_5f4d2c";
3const notificationId: string = "notif_9b8a7c";
4
5const updateBody: UpdateNotificationBody = {
6 enabled: false,
7 sendEmail: true,
8 schedule: "2023-12-01T08:00:00Z"
9};
10
11const userId: string = "user_123e4567";
12
13const responseWithUser: UpdateNotificationResponse = await updateNotification(
14 tenantId,
15 notificationId,
16 updateBody,
17 userId
18);
19
20const responseWithoutUser: UpdateNotificationResponse = await updateNotification(
21 tenantId,
22 notificationId,
23 updateBody
24);
25

createV1PageReact Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringYes
titlestringNo

Одговор

Враћа: CreateV1PageReactResponse

Пример

Primer createV1PageReact
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "article-2024-06-improvements";
4const title: string = "FastComments API Integration Guide";
5
6const responseWithTitle: CreateV1PageReactResponse = await createV1PageReact(tenantId, urlId, title);
7const responseWithoutTitle: CreateV1PageReactResponse = await createV1PageReact(tenantId, urlId);
8

createV2PageReact Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
urlIdstringYes
idstringYes
titlestringNo

Odgovor

Vraća: CreateV2PageReactResponse

Primer

Primer createV2PageReact
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "blog/posts/fastcomments-integration";
5 const pageId: string = "page-12345";
6 const title: string = "FastComments API Integration Guide";
7
8 const responseWithoutTitle: CreateV2PageReactResponse = await createV2PageReact(tenantId, urlId, pageId);
9 const responseWithTitle: CreateV2PageReactResponse = await createV2PageReact(tenantId, urlId, pageId, title);
10
11 console.log(responseWithoutTitle, responseWithTitle);
12})();
13

deleteV1PageReact Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringYes

Одговор

Враћа: DeleteV1PageReactResponse

Пример

deleteV1PageReact Primer
Copy Copy
1
2const tenantId: string = "acme-corp";
3const urlId: string = "article-2024-06-01";
4
5const response: DeleteV1PageReactResponse = await deleteV1PageReact(tenantId, urlId);
6console.log(response);
7

deleteV2PageReact Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
urlIdstringDa
idstringDa

Odgovor

Vraća: DeleteV2PageReactResponse

Primer

deleteV2PageReact Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "page_98765";
4const reactionId: string = "react_abcde";
5
6const deleteResult: DeleteV2PageReactResponse = await deleteV2PageReact(tenantId, urlId, reactionId);
7

getV1PageLikes Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringYes

Одговор

Враћа: GetV1PageLikesResponse

Пример

getV1PageLikes Primer
Copy Copy
1
2async function fetchPageLikes() {
3 const tenantId: string = "acme-corp-tenant-42";
4 const urlId: string = "blog-post-2024-06-typescript-best-practices";
5
6 const likes: GetV1PageLikesResponse = await getV1PageLikes(tenantId, urlId);
7 console.log(likes);
8}
9

getV2PageReacts Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
urlIdstringDa

Odgovor

Vraća: GetV2PageReactsResponse

Primer

getV2PageReacts Primer
Copy Copy
1
2async function demoGetPageReacts(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant";
4 const urlId: string = "article-2024-06-01";
5
6 const reacts: GetV2PageReactsResponse = await getV2PageReacts(tenantId, urlId);
7
8 // primer opcionalnog pristupa svojstvu
9 const customConfig: CustomConfigParameters | undefined = reacts.customConfig;
10 console.log(reacts);
11}
12
13demoGetPageReacts();
14

getV2PageReactUsers Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
urlIdstringYes
idstringYes

Odgovor

Vraća: GetV2PageReactUsersResponse1

Primer

getV2PageReactUsers Primer
Copy Copy
1
2async function fetchReactUsers() {
3 const tenantId: string = 'tenant_12345';
4 const urlId: string = 'article-9876';
5 const id: string = 'user_abcde';
6 const response: GetV2PageReactUsersResponse1 = await getV2PageReactUsers(tenantId, urlId, id);
7 console.log(response);
8}
9fetchReactUsers();
10

addPage Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
createAPIPageDataCreateAPIPageDataYes

Odgovor

Vraća: AddPageAPIResponse

Primer

addPage Primer
Copy Copy
1
2const tenantId: string = "tenant_9f8432b1-4c2e-4f9d-8a5d-7bc9e2f6d9a0";
3
4const pageData: CreateAPIPageData = {
5 url: "https://example.com/articles/fastcomments-intro",
6 title: "FastComments Introduction",
7 description: "An introductory guide to FastComments API usage.",
8 tags: ["fastcomments", "api", "tutorial"],
9 metadata: {
10 author: "Jane Doe",
11 publishedAt: "2024-03-15T08:00:00Z"
12 }
13};
14
15const response: AddPageAPIResponse = await addPage(tenantId, pageData);
16

deletePage Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
idstringYes

Odgovor

Vrati: DeletePageAPIResponse

Primer

Primer deletePage
Copy Copy
1
2async function example() {
3 const tenantId: string = "acme-corp-001";
4 const pageId: string = "page-987654321";
5 const result: DeletePageAPIResponse = await deletePage(tenantId, pageId);
6 console.log(result);
7}
8example();
9

getOfflineUsers Internal Link

Prethodni komentatori na stranici koji NISU trenutno online. Sortirano po displayName.
Koristite ovo nakon što iscrpite /users/online za prikaz sekcije „Članovi”.
Kursor paginacija po commenterName: server prolazi kroz parcijalni {tenantId, urlId, commenterName} indeks od afterName napred putem $gt, bez troška $skip.

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
urlIdstringDa
afterNamestringNe
afterUserIdstringNe

Odgovor

Vraća: GetOfflineUsersResponse

Primer

Primer getOfflineUsers
Copy Copy
1
2async function fetchOfflineUsers(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "thread_9876";
5 const afterName: string = "Jane Smith";
6 const afterUserId: string = "user_7f9b3c";
7
8 const offlineUsers: GetOfflineUsersResponse = await getOfflineUsers(
9 tenantId,
10 urlId,
11 afterName,
12 afterUserId
13 );
14
15 console.log(offlineUsers);
16}
17

getOnlineUsers Internal Link

Тренутно онлајн прегледачи странице: људи чија веб‑сокет сесија је претплаћена на страницу тренутно.
Враћа anonCount + totalCount (претплатници у просторији, укључујући анонимне прегледаче које не наводимо).

Параметри

ИмеТипНеопходноОпис
tenantIdstringДа
urlIdstringДа
afterNamestringНе
afterUserIdstringНе

Одговор

Враћа: GetOnlineUsersResponse

Пример

Primer getOnlineUsers
Copy Copy
1
2async function demoOnlineUsers() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_98765";
5
6 // Са опционалним параметрима страничења
7 const pagedResult: GetOnlineUsersResponse = await getOnlineUsers(
8 tenantId,
9 urlId,
10 "alice_smith",
11 "user_9"
12 );
13
14 // Без опционалних параметара страничења
15 const fullResult: GetOnlineUsersResponse = await getOnlineUsers(tenantId, urlId);
16}
17

getPageByURLId Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringYes

Одговор

Враћа: GetPageByURLIdAPIResponse

Пример

Пример getPageByURLId
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_9876";
5
6 const response: GetPageByURLIdAPIResponse = await getPageByURLId(tenantId, urlId);
7 const page: APIPage | undefined = response.page;
8})();
9

getPages Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes

Odgovor

Vraća: GetPagesAPIResponse

Primer

getPages Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4(async () => {
5 const response: GetPagesAPIResponse = await getPages(tenantId);
6 const firstPage: APIPage | undefined = response.pages?.[0];
7 console.log(firstPage?.title);
8})();
9

getPagesPublic Internal Link

Листа страница за најемника. Користи FChat десктоп клијент да попуни листу соба.
Захтева да је enableFChat подешен на true у решеном прилагођеном конфигурацијском за сваку страницу.
Странице које захтевају SSO филтрирају се на основу групног приступа корисника који захтева.

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
cursorstringNo
limitnumberNo
qstringNo
sortByPagesSortByNo
hasCommentsbooleanNo

Одговор

Враћа: GetPagesPublicResponse

Пример

Пример getPagesPublic
Copy Copy
1
2async function fetchPages() {
3 const tenantId: string = "tenant_12345";
4 const cursor: string = "nextPageToken";
5 const limit: number = 20;
6 const q: string = "blog";
7 const sortBy: PagesSortBy = "createdAt";
8 const hasComments: boolean = true;
9
10 const response: GetPagesPublicResponse = await getPagesPublic(
11 tenantId,
12 cursor,
13 limit,
14 q,
15 sortBy,
16 hasComments
17 );
18
19 console.log(response);
20}
21

getUsersInfo Internal Link

Bulk user info for a tenant. Given userIds, return display info from User / SSOUser.
Used by the comment widget to enrich users that just appeared via a presence event.
No page context: privacy is enforced uniformly (private profiles are masked).

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idsstringYes

Response

Returns: GetUsersInfoResponse

Пример

Primer getUsersInfo
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const ids: string = "user-1001,user-1002";
4
5const usersInfo: GetUsersInfoResponse = await getUsersInfo(tenantId, ids);
6
7// Optional fields in the response may be undefined
8const firstUser: PageUserEntry | undefined = usersInfo?.users?.[0];
9

patchPage Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
updateAPIPageDataUpdateAPIPageDataYes

Odgovor

Vraća: PatchPageAPIResponse

Primer

patchPage Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const pageId: string = "page_98765";
5
6 const updateData: UpdateAPIPageData = {
7 title: "Updated FAQ Page"
8 // description?: string može biti izostavljen
9 };
10
11 const response: PatchPageAPIResponse = await patchPage(tenantId, pageId, updateData);
12})();
13

deletePendingWebhookEvent Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes

Odgovor

Vraća: DeletePendingWebhookEventResponse

Primer

Primer deletePendingWebhookEvent
Copy Copy
1
2async function runDemo() {
3 const tenantId: string = 'c3f5e9d2-1a2b-4c3d-9e7f-1234567890ab';
4 const eventId: string = 'event_987654321';
5 const response: DeletePendingWebhookEventResponse = await deletePendingWebhookEvent(tenantId, eventId);
6 console.log(response);
7}
8runDemo();
9

getPendingWebhookEventCount Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
commentIdstringNe
externalIdstringNe
eventTypestringNe
typestringNe
domainstringNe
attemptCountGTnumberNe

Odgovor

Returns: GetPendingWebhookEventCountResponse1

Primer

Primer getPendingWebhookEventCount
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_001";
4
5 const responseAll: GetPendingWebhookEventCountResponse1 = await getPendingWebhookEventCount(
6 tenantId,
7 "comment_456",
8 "ext_789",
9 "comment.updated",
10 "webhook",
11 "mydomain.com",
12 3
13 );
14
15 const responseMinimal: GetPendingWebhookEventCountResponse1 = await getPendingWebhookEventCount(tenantId);
16
17 console.log(responseAll, responseMinimal);
18})();
19

getPendingWebhookEvents Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

Одговор

Враћа: GetPendingWebhookEventsResponse1

Пример

Primer getPendingWebhookEvents
Copy Copy
1
2async function fetchPendingEvents(): Promise<void> {
3 const tenantId: string = "123e4567-e89b-12d3-a456-426614174000";
4 const commentId: string = "cmt-987654321";
5 const externalId: string = "ext-abc-123";
6 const eventType: string = "comment_created";
7 const type: string = "outbound";
8 const domain: string = "myblog.com";
9 const attemptCountGT: number = 3;
10 const skip: number = 0;
11
12 const pending: GetPendingWebhookEventsResponse1 = await getPendingWebhookEvents(
13 tenantId,
14 commentId,
15 externalId,
16 eventType,
17 type,
18 domain,
19 attemptCountGT,
20 skip
21 );
22
23 console.log(pending);
24}
25
26fetchPendingEvents();
27

createQuestionConfig Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
createQuestionConfigBodyCreateQuestionConfigBodyYes

Odgovor

Vraća: CreateQuestionConfigResponse1

Primer

createQuestionConfig Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const customOption: QuestionConfigCustomOptionsInner = {
5 label: "Option A",
6 value: "a",
7};
8
9const createQuestionConfigBody: CreateQuestionConfigBody = {
10 questionText: "What is your favorite color?",
11 isActive: true,
12 // opcionalna polja se mogu izostaviti
13 customOptions: [customOption],
14};
15
16const response: CreateQuestionConfigResponse1 = await createQuestionConfig(
17 tenantId,
18 createQuestionConfigBody
19);
20

deleteQuestionConfig Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes

Odgovor

Vraća: DeleteQuestionConfigResponse

Primer

deleteQuestionConfig Primer
Copy Copy
1
2async function runDeletion(): Promise<void> {
3 const tenantId: string = "tenant_8f5a2c9d";
4 const configId: string = "questionConfig_4b7e1f";
5 const deleteResult: DeleteQuestionConfigResponse = await deleteQuestionConfig(tenantId, configId);
6 console.log(deleteResult);
7}
8void runDeletion();
9

getQuestionConfig Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: GetQuestionConfigResponse1

Primer

Primer getQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-42";
3const questionId: string = "question-7f9b3e";
4
5const response: GetQuestionConfigResponse1 = await getQuestionConfig(tenantId, questionId);
6

getQuestionConfigs Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
skipnumberNo

Одговор

Враћа: GetQuestionConfigsResponse1

Пример

Primer getQuestionConfigs
Copy Copy
1
2async function fetchQuestionConfigs() {
3 const tenantId: string = "tenant-9876";
4
5 // Call without the optional 'skip' parameter
6 const configsWithoutSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId);
7
8 // Call with the optional 'skip' parameter
9 const skip: number = 10;
10 const configsWithSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId, skip);
11
12 console.log(configsWithoutSkip, configsWithSkip);
13}
14

updateQuestionConfig Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Odgovor

Vraća: UpdateQuestionConfigResponse

Primer

Primer updateQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const questionId: string = "qstn-2023-04";
4
5const updateBody: UpdateQuestionConfigBody = {
6 // demonstrirane opciona polja
7 customOptions: [
8 {
9 id: "opt-001",
10 label: "Extra Details",
11 required: true,
12 },
13 ],
14 renderingType: "markdown",
15};
16
17const response: UpdateQuestionConfigResponse = await updateQuestionConfig(
18 tenantId,
19 questionId,
20 updateBody
21);
22

createQuestionResult Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
createQuestionResultBodyCreateQuestionResultBodyYes

Odgovor

Vraća: CreateQuestionResultResponse1

Primer

Primer createQuestionResult
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3
4const metaItem: MetaItem = {
5 key: "campaign",
6 value: "spring-launch"
7};
8
9const questionResultBody: CreateQuestionResultBody = {
10 questionId: "question-42",
11 answer: "Positive",
12 metadata: [metaItem]
13 // opcionalna polja kao što su napomene su izostavljena
14};
15
16const result: CreateQuestionResultResponse1 = await createQuestionResult(tenantId, questionResultBody);
17

deleteQuestionResult Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: DeleteQuestionResultResponse

Primer

deleteQuestionResult Primer
Copy Copy
1
2async function runDeletion(): Promise<void> {
3 const tenantId: string = "tenant-001";
4 const resultId: string = "c9f2a5b3-7e6d-4c9a-8b1f-2d3e4f5a6b7c";
5 const result: DeleteQuestionResultResponse = await deleteQuestionResult(tenantId, resultId);
6 console.log(result);
7}
8
9runDeletion();
10

getQuestionResult Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: GetQuestionResultResponse1

Primer

getQuestionResult Primer
Copy Copy
1
2async function fetchQuestionResult(): Promise<void> {
3 const tenantId: string = "acme-corp-001";
4 const questionId: string = "question-7a9b8c";
5 const result: GetQuestionResultResponse1 = await getQuestionResult(tenantId, questionId);
6
7 const question: QuestionResult | undefined = result.questionResult;
8 const firstMeta: MetaItem | undefined = result.meta?.[0];
9
10 console.log(question?.id, firstMeta?.key);
11}
12

getQuestionResults Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Odgovor

Vraća: GetQuestionResultsResponse1

Primer

Primer getQuestionResults
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const urlId: string = "post-456";
5 const userId: string = "user-789";
6 const startDate: string = "2023-09-01T00:00:00Z";
7 const questionId: string = "q-101";
8 const questionIds: string = "q-102,q-103";
9 const skip: number = 20;
10
11 const results: GetQuestionResultsResponse1 = await getQuestionResults(
12 tenantId,
13 urlId,
14 userId,
15 startDate,
16 questionId,
17 questionIds,
18 skip
19 );
20
21 console.log(results);
22})();
23

updateQuestionResult Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
idstringYes
updateQuestionResultBodyUpdateQuestionResultBodyYes

Odgovor

Vraća: UpdateQuestionResultResponse

Primer

updateQuestionResult Primer
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "acme-corp-01";
4 const id: string = "qr-20230915-001";
5
6 const updateQuestionResultBody: UpdateQuestionResultBody = {
7 // obavezna polja
8 answer: "No",
9 // opcionalna polja
10 comment: "User clarified their response",
11 // drugoOpcionalnoPolje?: value,
12 };
13
14 const result: UpdateQuestionResultResponse = await updateQuestionResult(
15 tenantId,
16 id,
17 updateQuestionResultBody
18 );
19
20 console.log(result);
21}
22
23runUpdate();
24

aggregateQuestionResults Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Odgovor

Vraća: AggregateQuestionResultsResponse1

Primer

aggregateQuestionResults Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const questionId: string = "feedback-rating";
5 const questionIds: string[] = ["feedback-rating", "recommendation"];
6 const urlId: string = "https://myblog.com/articles/42";
7 const timeBucket: AggregateTimeBucket = "month";
8 const startDate: Date = new Date("2023-01-01T00:00:00Z");
9 const forceRecalculate: boolean = true;
10
11 const result: AggregateQuestionResultsResponse1 = await aggregateQuestionResults(
12 tenantId,
13 questionId,
14 questionIds,
15 urlId,
16 timeBucket,
17 startDate,
18 forceRecalculate
19 );
20
21 console.log(result);
22})();
23

bulkAggregateQuestionResults Internal Link

Parameters

NazivTipObaveznoOpis
tenantIdstringDa
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestDa
forceRecalculatebooleanNe

Response

Vraća: BulkAggregateQuestionResultsResponse1

Primer

bulkAggregateQuestionResults Primer
Copy Copy
1
2const tenantId: string = "acme-corp";
3
4const request: BulkAggregateQuestionResultsRequest = {
5 questionIds: ["product-satisfaction", "feature-usage"],
6 startDate: "2024-01-01T00:00:00Z",
7 endDate: "2024-01-31T23:59:59Z",
8 timeBucket: "day"
9};
10
11const result: BulkAggregateQuestionResultsResponse1 = await bulkAggregateQuestionResults(
12 tenantId,
13 request,
14 true
15);
16

combineCommentsWithQuestionResults Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Odgovor

Vraća: CombineCommentsWithQuestionResultsResponse

Primer

combineCommentsWithQuestionResults Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const questionIds: string[] = ["question_1", "question_2"];
4const urlId: string = "article-9876";
5const startDate: Date = new Date("2023-01-01T00:00:00Z");
6const forceRecalculate: boolean = false;
7const minValue: number = 1;
8const maxValue: number = 5;
9const limit: number = 50;
10
11const result: CombineCommentsWithQuestionResultsResponse = await combineCommentsWithQuestionResults(
12 tenantId,
13 undefined,
14 questionIds,
15 urlId,
16 startDate,
17 forceRecalculate,
18 minValue,
19 maxValue,
20 limit
21);
22

addSSOUser Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
createAPISSOUserDataCreateAPISSOUserDataДа

Одговор

Враћа: AddSSOUserAPIResponse

Пример

addSSOUser Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const newUser: CreateAPISSOUserData = {
5 userId: "sso_user_987",
6 name: "Jane Doe",
7 email: "jane.doe@example.com",
8 // опционо поље
9 avatarUrl: "https://example.com/avatars/jane.jpg",
10};
11
12const result: AddSSOUserAPIResponse = await addSSOUser(tenantId, newUser);
13

deleteSSOUser Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
deleteCommentsbooleanNo
commentDeleteModestringNo

Odgovor

Vraća: DeleteSSOUserAPIResponse

Primer

deleteSSOUser Primer
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const userId: string = "sso-user-42";
4const deleteComments: boolean = true;
5const commentDeleteMode: string = "hard";
6
7const detailedResult: DeleteSSOUserAPIResponse = await deleteSSOUser(
8 tenantId,
9 userId,
10 deleteComments,
11 commentDeleteMode
12);
13
14const simpleResult: DeleteSSOUserAPIResponse = await deleteSSOUser(
15 tenantId,
16 userId
17);
18

getSSOUserByEmail Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
emailstringDa

Odgovor

Vraća: GetSSOUserByEmailAPIResponse

Primer

Primer getSSOUserByEmail
Copy Copy
1
2async function fetchSSOUser() {
3 const tenantId: string = "tenant_12345";
4 const email: string = "john.doe@example.com";
5
6 const result: GetSSOUserByEmailAPIResponse = await getSSOUserByEmail(tenantId, email);
7 const user: APISSOUser | undefined = result?.user;
8}
9

getSSOUserById Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: GetSSOUserByIdAPIResponse

Primer

Primer getSSOUserById
Copy Copy
1
2async function fetchUser() {
3 const tenantId: string = "tenant-987654321";
4 const userId: string = "sso-user-abc123";
5 const result: GetSSOUserByIdAPIResponse = await getSSOUserById(tenantId, userId);
6 const ssoUser: APISSOUser = result.user;
7}
8

getSSOUsers Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Response

Vraća: GetSSOUsersResponse

Example

getSSOUsers Primer
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4
5 // Poziv bez opcionalnog `skip`
6 const firstPage: GetSSOUsersResponse = await getSSOUsers(tenantId);
7
8 // Poziv sa opcionalnim `skip`
9 const secondPage: GetSSOUsersResponse = await getSSOUsers(tenantId, 100);
10
11 console.log(firstPage, secondPage);
12}
13
14runExample();
15

patchSSOUser Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsbooleanNo

Odgovor

Vraća: PatchSSOUserAPIResponse

Primer

Primer patchSSOUser
Copy Copy
1
2const tenantId: string = "c1f2a3b4-5678-90ab-cdef-1234567890ab";
3const userId: string = "user-987654321";
4const updateData: UpdateAPISSOUserData = {
5 email: "jane.smith@enterprise.com",
6 displayName: "Jane Smith",
7 role: "editor"
8};
9
10const responseWithComments: PatchSSOUserAPIResponse = await patchSSOUser(
11 tenantId,
12 userId,
13 updateData,
14 true
15);
16
17const responseWithoutComments: PatchSSOUserAPIResponse = await patchSSOUser(
18 tenantId,
19 userId,
20 updateData
21);
22

putSSOUser Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringDa
idstringDa
updateAPISSOUserDataUpdateAPISSOUserDataDa
updateCommentsbooleanNe

Odgovor

Vraća: PutSSOUserAPIResponse

Primer

putSSOUser Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_abc123";
4 const userId: string = "user_456def";
5
6 const updateData: UpdateAPISSOUserData = {
7 email: "jane.doe@example.com",
8 displayName: "Jane Doe",
9 isActive: true,
10 };
11
12 const response: PutSSOUserAPIResponse = await putSSOUser(tenantId, userId, updateData, true);
13})();
14

createSubscription Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataDa

Odgovor

Vraća: CreateSubscriptionAPIResponse

Primer

createSubscription Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4
5 const subscriptionData: CreateAPIUserSubscriptionData = {
6 userId: "user-456",
7 planId: "premium-monthly",
8 startDate: new Date(),
9 trialPeriodDays: 14 // опционално поље
10 };
11
12 const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, subscriptionData);
13 console.log(result);
14})();
15

deleteSubscription Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa
userIdstringNe

Odgovor

Vraća: DeleteSubscriptionAPIResponse

Primer

deleteSubscription Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9876";
4 const subscriptionId: string = "sub_54321";
5 const userId: string = "user_abc123";
6
7 // Sa opcionim userId
8 const responseWithUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId, userId);
9
10 // Bez opcionog userId
11 const responseWithoutUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId);
12})();
13

getSubscriptions Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
userIdstringNo

Odgovor

Vraća: GetSubscriptionsAPIResponse

Primer

Primer getSubscriptions
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const userId: string = "user-789";
5
6 const responseWithUser: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId, userId);
7 const responseWithoutUser: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId);
8})();
9

updateSubscription Internal Link

Параметри

ImeTipObaveznoOpis
tenantIdstringDa
idstringDa
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataDa
userIdstringNe

Одговор

Vraća: UpdateSubscriptionAPIResponse

Пример

updateSubscription Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const subscriptionId: string = "sub_98765";
4
5const updateData: UpdateAPIUserSubscriptionData = {
6 planId: "premium_plan",
7 status: "active",
8 renewalDate: "2024-12-31",
9};
10
11const userId: string = "user_abcde";
12
13const response: UpdateSubscriptionAPIResponse = await updateSubscription(
14 tenantId,
15 subscriptionId,
16 updateData,
17 userId
18);
19

getTenantDailyUsages Internal Link

Параметри

ИмеТипПотребноОписание
tenantIdstringYes
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Одговор

Враћа: GetTenantDailyUsagesResponse1

Пример

getTenantDailyUsages Primer
Copy Copy
1
2async function fetchDailyUsage() {
3 const tenantId: string = "tenant-9876";
4 const yearNumber: number = 2024;
5 const monthNumber: number = 5; // мај
6 const dayNumber: number = 12;
7 const skip: number = 0;
8
9 const fullResult: GetTenantDailyUsagesResponse1 = await getTenantDailyUsages(
10 tenantId,
11 yearNumber,
12 monthNumber,
13 dayNumber,
14 skip
15 );
16
17 // Користећи само потребан и један опциони параметар
18 const partialResult: GetTenantDailyUsagesResponse1 = await getTenantDailyUsages(
19 tenantId,
20 yearNumber
21 );
22
23 console.log(fullResult, partialResult);
24}
25
26fetchDailyUsage();
27

createTenantPackage Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
createTenantPackageBodyCreateTenantPackageBodyDa

Odgovor

Vraća: CreateTenantPackageResponse1

Primer

createTenantPackage Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9876";
4
5 const body: CreateTenantPackageBody = {
6 packageName: "Standard",
7 quota: 5000,
8 // opciono polje
9 description: "Standard package for medium traffic",
10 };
11
12 const result: CreateTenantPackageResponse1 = await createTenantPackage(tenantId, body);
13 console.log(result);
14})();
15

deleteTenantPackage Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes

Odgovor

Vraća: DeleteTenantPackageResponse

Primer

deleteTenantPackage Primer
Copy Copy
1
2async function removeTenantPackage(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const packageId: string = "pkg_67890";
5
6 const result: DeleteTenantPackageResponse = await deleteTenantPackage(tenantId, packageId);
7 // koristi rezultat po potrebi
8}
9
10removeTenantPackage();
11

getTenantPackage Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
idstringYes

Одговор

Враћа: GetTenantPackageResponse1

Пример

Primer getTenantPackage
Copy Copy
1
2async function fetchTenantPackage(): Promise<void> {
3 const tenantId: string = "acme-tenant-2024";
4 const packageId: string = "premium-package-01";
5 const response: GetTenantPackageResponse1 = await getTenantPackage(tenantId, packageId);
6
7 // Опционална поља у одговору
8 const tenantPackage: TenantPackage | undefined = response.tenantPackage;
9 const customConfig: CustomConfigParameters | undefined = response.customConfigParameters;
10}
11

getTenantPackages Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
skipnumberNo

Одговор

Враћа: GetTenantPackagesResponse1

Пример

Primer getTenantPackages
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_67890';
4 const skip: number = 30;
5
6 const packagesWithSkip: GetTenantPackagesResponse1 = await getTenantPackages(tenantId, skip);
7 const packagesWithoutSkip: GetTenantPackagesResponse1 = await getTenantPackages(tenantId);
8
9 console.log(packagesWithSkip, packagesWithoutSkip);
10})();
11

replaceTenantPackage Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa
replaceTenantPackageBodyReplaceTenantPackageBodyDa

Odgovor

Vraća: ReplaceTenantPackageResponse

Primer

replaceTenantPackage Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant-01";
4 const packageId: string = "pkg-2024-annual";
5
6 const config: CustomConfigParameters = {
7 // prilagođena polja konfiguracije ovde
8 };
9
10 const body: ReplaceTenantPackageBody = {
11 name: "Enterprise Package",
12 // opcionalna prilagođena konfiguracija
13 customConfig: config,
14 };
15
16 const response: ReplaceTenantPackageResponse = await replaceTenantPackage(tenantId, packageId, body);
17 console.log(response);
18})();
19

updateTenantPackage Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
idstringYes
updateTenantPackageBodyUpdateTenantPackageBodyYes

Одговор

Враћа: UpdateTenantPackageResponse

Пример

updateTenantPackage Primer
Copy Copy
1
2const tenantId: string = "tenant-9876";
3const packageId: string = "pkg-2023";
4
5const customConfig: CustomConfigParameters = {
6 enableSpamFilter: true,
7 spamRatingThreshold: 4,
8};
9
10const updateBody: UpdateTenantPackageBody = {
11 displayName: "Enterprise Pro",
12 customConfig,
13};
14
15const response: UpdateTenantPackageResponse = await updateTenantPackage(
16 tenantId,
17 packageId,
18 updateBody
19);
20

createTenantUser Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

Odgovor

Vraća: CreateTenantUserResponse1

Primer

createTenantUser Primer
Copy Copy
1
2const tenantId: string = "a1b2c3d4-5678-90ab-cdef-1234567890ab";
3
4const newUser: CreateTenantUserBody = {
5 email: "jane.doe@example.com",
6 firstName: "Jane",
7 lastName: "Doe",
8 role: "admin",
9 // opcioni parametri
10 phoneNumber: "+15551234567",
11 isActive: true,
12};
13
14const result: CreateTenantUserResponse1 = await createTenantUser(tenantId, newUser);
15

deleteTenantUser Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
deleteCommentsstringNo
commentDeleteModestringNo

Odgovor

Vraća: DeleteTenantUserResponse

Primer

Primer deleteTenantUser
Copy Copy
1
2async function demoDeleteTenantUser() {
3 const tenantId: string = "acme-corp-tenant";
4 const userId: string = "user-9876";
5
6 // Izbrišite korisnika i sve njegove komentare, koristeći hard delete režim
7 const resultWithOptions: DeleteTenantUserResponse = await deleteTenantUser(
8 tenantId,
9 userId,
10 "true",
11 "hard"
12 );
13
14 // Izbrišite korisnika bez uklanjanja komentara (podrazumevano ponašanje)
15 const resultBasic: DeleteTenantUserResponse = await deleteTenantUser(tenantId, userId);
16}
17

getTenantUser Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
idstringYes

Одговор

Враћа: GetTenantUserResponse1

Пример

getTenantUser Primer
Copy Copy
1
2async function fetchUser(): Promise<void> {
3 const tenantId: string = "tenant-01a2b3c";
4 const userId: string = "user-7890";
5 const result: GetTenantUserResponse1 = await getTenantUser(tenantId, userId);
6 console.log(result);
7}
8

getTenantUsers Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
skipnumberNo

Odgovor

Vraća: GetTenantUsersResponse1

Primer

Primer getTenantUsers
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9f7a2c";
4 const skip: number = 25;
5
6 const usersPage: GetTenantUsersResponse1 = await getTenantUsers(tenantId, skip);
7 const allUsers: GetTenantUsersResponse1 = await getTenantUsers(tenantId);
8})();
9

replaceTenantUser Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

Odgovor

Vraća: ReplaceTenantUserResponse

Primer

replaceTenantUser Primer
Copy Copy
1
2async function updateUser() {
3 const tenantId: string = "c3d1f2e4-5b6a-4c7d-9f2e-1234567890ab";
4 const userId: string = "u-654321";
5 const replaceBody: ReplaceTenantUserBody = {
6 email: "newuser@example.com",
7 username: "newusername"
8 };
9 const response: ReplaceTenantUserResponse = await replaceTenantUser(
10 tenantId,
11 userId,
12 replaceBody,
13 "true"
14 );
15 console.log(response);
16}
17updateUser();
18

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
idstringYes
redirectURLstringNo

Одговор

Враћа: SendLoginLinkResponse

Пример

Пример sendLoginLink
Copy Copy
1
2async function demoSendLoginLink() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-9876";
5 const redirectURL: string = "https://app.acme-corp.com/auth/callback";
6
7 const resultWithRedirect: SendLoginLinkResponse = await sendLoginLink(tenantId, userId, redirectURL);
8 const resultWithoutRedirect: SendLoginLinkResponse = await sendLoginLink(tenantId, userId);
9}
10

updateTenantUser Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
idstringDa
updateTenantUserBodyUpdateTenantUserBodyDa
updateCommentsstringNe

Odgovor

Vraća: UpdateTenantUserResponse

Primer

updateTenantUser Primer
Copy Copy
1
2let tenantId: string = "5f8f8c1a2e9b3c001c2a9b2d";
3let userId: string = "user_98765";
4
5let updateBody: UpdateTenantUserBody = {
6 email: "jane.smith@example.com",
7 role: "moderator",
8 isActive: false,
9};
10
11let updateComments: string = "Deactivated user due to policy violation.";
12
13let result: UpdateTenantUserResponse = await updateTenantUser(tenantId, userId, updateBody, updateComments);
14

createTenant Internal Link

Parameters

NazivTipObaveznoOpis
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

Response

Vraća: CreateTenantResponse1

Example

Primer createTenant
Copy Copy
1
2async function example() {
3 const tenantId: string = 'tenant-2024-01';
4 const createTenantBody: CreateTenantBody = {
5 // obavezna polja
6 name: 'Acme International',
7 // opcionalna polja se mogu dodati po potrebi, npr.:
8 // billingInfo: { address: '123 Main St', city: 'Metropolis' } as BillingInfo,
9 };
10 const response: CreateTenantResponse1 = await createTenant(tenantId, createTenantBody);
11 console.log(response);
12}
13

deleteTenant Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
surestringNo

Odgovor

Vraća: DeleteTenantResponse

Primer

deleteTenant Primer
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const id: string = "resource_98765";
5 const sure: string = "confirm";
6
7 // Poziv sa opcionalnim parametrom 'sure'
8 const responseWithSure: DeleteTenantResponse = await deleteTenant(tenantId, id, sure);
9 console.log(responseWithSure);
10
11 // Poziv bez opcionalnog parametra 'sure'
12 const responseWithoutSure: DeleteTenantResponse = await deleteTenant(tenantId, id);
13 console.log(responseWithoutSure);
14}
15
16runExample();
17

getTenant Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
idstringYes

Одговор

Враћа: GetTenantResponse1

Пример

getTenant Primer
Copy Copy
1
2async function fetchTenant(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const id: string = "user_9876";
5 const tenantInfo: GetTenantResponse1 = await getTenant(tenantId, id);
6 console.log(tenantInfo);
7}
8
9fetchTenant();
10

getTenants Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
metastringNe
skipnumberNe

Odgovor

Vraća: GetTenantsResponse1

Primer

Primer getTenants
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8e7d6c";
4 const resultOnlyId: GetTenantsResponse1 = await getTenants(tenantId);
5 const resultWithMeta: GetTenantsResponse1 = await getTenants(tenantId, "full");
6 const resultAllParams: GetTenantsResponse1 = await getTenants(tenantId, "full", 15);
7 console.log(resultOnlyId, resultWithMeta, resultAllParams);
8})();
9

updateTenant Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Odgovor

Vraća: UpdateTenantResponse

Primer

updateTenant Primer
Copy Copy
1
2const tenantId: string = "c8f9e3d2-4b6a-11ee-8c99-0242ac130003";
3const id: string = "tenant-config-01";
4
5const updateBody: UpdateTenantBody = {
6 domain: "mytenant.fastcomments.io",
7 branding: {
8 logoUrl: "https://cdn.mytenant.com/assets/logo.png"
9 },
10 description: "Branding update for Q3"
11};
12
13const response: UpdateTenantResponse = await updateTenant(tenantId, id, updateBody);
14console.log(response);
15

changeTicketState Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
userIdstringDa
idstringDa
changeTicketStateBodyChangeTicketStateBodyDa

Odgovor

Vraća: ChangeTicketStateResponse1

Primer

Primer changeTicketState
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-97123";
4const ticketId: string = "ticket-45001";
5
6const changeTicketStateBody: ChangeTicketStateBody = {
7 state: "closed",
8 // opciono polje u telu
9 comment: "Issue resolved after code fix"
10};
11
12const response: ChangeTicketStateResponse1 = await changeTicketState(
13 tenantId,
14 userId,
15 ticketId,
16 changeTicketStateBody
17);
18

createTicket Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
userIdstringYes
createTicketBodyCreateTicketBodyYes

Odgovor

Vraća: CreateTicketResponse1

Primer

createTicket Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const userId: string = "user_98765";
4
5const ticketBody: CreateTicketBody = {
6 subject: "Issue with payment processing"
7 // description?: string je opciona i izostavljena
8};
9
10const response: CreateTicketResponse1 = await createTicket(tenantId, userId, ticketBody);
11// Primer upotrebe opcionalnog polja iz odgovora
12// console.log(response.ticket?.id);
13

getTicket Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
userIdstringNo

Odgovor

Vraća: GetTicketResponse1

Primer

Primer getTicket
Copy Copy
1
2const tenantId: string = "acme-inc";
3const ticketId: string = "ticket-3421";
4const userId: string = "alice.smith";
5
6const ticketWithUser: GetTicketResponse1 = await getTicket(tenantId, ticketId, userId);
7const ticketWithoutUser: GetTicketResponse1 = await getTicket(tenantId, ticketId);
8

getTickets Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Одговор

Vraća: GetTicketsResponse1

Пример

Primer getTickets
Copy Copy
1
2async function loadTickets() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe";
5 const state: number = 2; // npr., zatvoreno
6 const skip: number = 10;
7 const limit: number = 5;
8
9 const ticketsFull: GetTicketsResponse1 = await getTickets(tenantId, userId, state, skip, limit);
10 const ticketsPartial: GetTicketsResponse1 = await getTickets(tenantId);
11}
12
13loadTickets();
14

getTranslations Internal Link

Parametri

NazivTipObaveznoOpis
namespacestringDa
componentstringDa
localestringNe
useFullTranslationIdsbooleanNe

Odgovor

Vraća: GetTranslationsResponse1

Primer

Primer getTranslations
Copy Copy
1
2(async () => {
3 const namespace: string = 'blog';
4 const component: string = 'comment-editor';
5 const locale: string = 'fr-FR';
6 const useFullTranslationIds: boolean = true;
7
8 const basicTranslations: GetTranslationsResponse1 = await getTranslations(namespace, component);
9 const fullTranslations: GetTranslationsResponse1 = await getTranslations(namespace, component, locale, useFullTranslationIds);
10})();
11

uploadImage Internal Link

Upload and resize an image

Parameters

NameTypeRequiredDescription
tenantIdstringYes
fileBlobYes
sizePresetSizePresetNo
urlIdstringNo

Response

Returns: UploadImageResponse

Example

Primer uploadImage
Copy Copy
1
2const tenantId: string = "acme-tenant-01";
3const imageBlob: Blob = new Blob([new Uint8Array([137,80,78,71])], { type: "image/png" });
4
5const uploadResult1: UploadImageResponse = await uploadImage(tenantId, imageBlob);
6
7const sizePreset: SizePreset = { presetName: "medium" };
8const urlId: string = "article-9876";
9
10const uploadResult2: UploadImageResponse = await uploadImage(tenantId, imageBlob, sizePreset, urlId);
11

getUserBadgeProgressById Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
idstringYes

Одговор

Враћа: GetUserBadgeProgressByIdResponse

Пример

Primer getUserBadgeProgressById
Copy Copy
1
2async function demo(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-42";
5 const result: GetUserBadgeProgressByIdResponse = await getUserBadgeProgressById(tenantId, userId);
6 const progress: UserBadgeProgress | undefined = result.progress;
7 const earnedAt: Date | undefined = progress?.earnedAt;
8 console.log(`Badge earned at: ${earnedAt?.toISOString() ?? "not earned yet"}`);
9}
10demo();
11

getUserBadgeProgressByUserId Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
userIdstringДа

Одговор

Враћа: GetUserBadgeProgressByUserIdResponse

Пример

getUserBadgeProgressByUserId Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-12345";
5
6 const badgeProgress: GetUserBadgeProgressByUserIdResponse = await getUserBadgeProgressByUserId(tenantId, userId);
7 console.log(badgeProgress);
8})();
9

getUserBadgeProgressList Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
userIdstringNo
limitnumberNo
skipnumberNo

Odgovor

Returns: GetUserBadgeProgressListResponse

Primer

Primer getUserBadgeProgressList
Copy Copy
1
2async function fetchBadgeProgress() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe@example.com";
5 const limit: number = 10;
6 const skip: number = 5;
7
8 const fullList: GetUserBadgeProgressListResponse = await getUserBadgeProgressList(
9 tenantId,
10 userId,
11 limit,
12 skip
13 );
14
15 const simpleList: GetUserBadgeProgressListResponse = await getUserBadgeProgressList(tenantId);
16}
17
18fetchBadgeProgress();
19

createUserBadge Internal Link

Параметри

ImeTipObaveznoOpis
tenantIdstringYes
createUserBadgeParamsCreateUserBadgeParamsYes

Одговор

Враћа: CreateUserBadgeResponse

Пример

createUserBadge Primer
Copy Copy
1
2const tenantId: string = "company-42";
3
4const badgeParams: CreateUserBadgeParams = {
5 name: "Community Champion",
6 iconUrl: "https://assets.example.com/badges/champion.png",
7 // opis je opciona i ovde je izostavljen
8};
9
10const result: CreateUserBadgeResponse = await createUserBadge(tenantId, badgeParams);
11

deleteUserBadge Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: DeleteUserBadgeResponse

Primer

deleteUserBadge Primer
Copy Copy
1
2async function exampleDeleteBadge(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6a";
4 const badgeId: string = "badge_4e3d2c1b";
5 const result: DeleteUserBadgeResponse = await deleteUserBadge(tenantId, badgeId);
6 console.log(result);
7}
8exampleDeleteBadge();
9

getUserBadge Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
idstringДа

Одговор

Returns: GetUserBadgeResponse

Пример

Primer getUserBadge
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant-001";
4 const badgeId: string = "badge-5f9d3a2b";
5
6 const badgeResponse: GetUserBadgeResponse = await getUserBadge(tenantId, badgeId);
7
8 // Безбедно приступање опционалним пољима
9 const badgeName: string | undefined = badgeResponse.userBadge?.name;
10 console.log(`Badge ID: ${badgeId}, Name: ${badgeName ?? "Unnamed"}`);
11}
12
13runExample();
14

getUserBadges Internal Link

Parameters

ImeTipObaveznoOpis
tenantIdstringYes
userIdstringNo
badgeIdstringNo
typenumberNo
displayedOnCommentsbooleanNo
limitnumberNo
skipnumberNo

Odgovor

Vraća: GetUserBadgesResponse

Primer

Primer getUserBadges
Copy Copy
1
2async function example() {
3 const tenantId: string = "tenant-01";
4 const userId: string = "user-42";
5 const badgeId: string = "badge-gold";
6 const type: number = 1;
7 const displayedOnComments: boolean = true;
8 const limit: number = 10;
9 const skip: number = 5;
10
11 const fullResult: GetUserBadgesResponse = await getUserBadges(
12 tenantId,
13 userId,
14 badgeId,
15 type,
16 displayedOnComments,
17 limit,
18 skip
19 );
20
21 const minimalResult: GetUserBadgesResponse = await getUserBadges(tenantId);
22}
23example();
24

updateUserBadge Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Odgovor

Vraća: UpdateUserBadgeResponse

Primer

Primer updateUserBadge
Copy Copy
1
2async function applyBadge() {
3 const tenantId: string = "acme-corp-tenant";
4 const userId: string = "user-98765";
5
6 const params: UpdateUserBadgeParams = {
7 badgeId: "gold-contributor",
8 // primer opcionog polja
9 expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),
10 };
11
12 const result: UpdateUserBadgeResponse = await updateUserBadge(tenantId, userId, params);
13 console.log(result);
14}
15
16applyBadge();
17

getUserNotificationCount Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
ssostringNe

Odgovor

Vraća: GetUserNotificationCountResponse1

Primer

Primer getUserNotificationCount
Copy Copy
1
2async function demoGetUserNotificationCount() {
3 const tenantId: string = "acme-corp-01";
4
5 // Poziv sa opcionalnim SSO tokenom
6 const countWithSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
7 tenantId,
8 "sso-token-abc123"
9 );
10
11 // Poziv bez SSO tokena
12 const countWithoutSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
13 tenantId
14 );
15
16 console.log(countWithSSO, countWithoutSSO);
17}
18

getUserNotifications Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
urlIdstringNo
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
includeTenantNotificationsbooleanNo
ssostringNo

Odgovor

Vraća: GetUserNotificationsResponse

Primer

Primer getUserNotifications
Copy Copy
1
2async function fetchUserNotifications() {
3 const tenantId: string = "tenant_9f4b2c";
4 const urlId: string = "post_1234";
5 const pageSize: number = 25;
6 const afterId: string = "notif_5678";
7 const includeContext: boolean = true;
8 const unreadOnly: boolean = false;
9 const dmOnly: boolean = false;
10 const includeTranslations: boolean = true;
11
12 const notifications: GetUserNotificationsResponse = await getUserNotifications(
13 tenantId,
14 urlId,
15 pageSize,
16 afterId,
17 includeContext,
18 undefined,
19 unreadOnly,
20 dmOnly,
21 undefined,
22 includeTranslations,
23 undefined,
24 undefined
25 );
26
27 console.log(notifications);
28}
29

resetUserNotificationCount Internal Link

Параметри

ИмеТипОбавезанОпис
tenantIdstringYes
ssostringNo

Одговор

Враћа: ResetUserNotificationCountResponse

Пример

resetUserNotificationCount Primer
Copy Copy
1
2async function demoResetCount() {
3 const tenantId: string = "acme-corp-tenant";
4 const sso: string = "sso-user-9876";
5
6 // Позив са опционим sso параметром
7 const resultWithSso: ResetUserNotificationCountResponse = await resetUserNotificationCount(tenantId, sso);
8
9 // Позив без опционог sso параметра
10 const resultWithoutSso: ResetUserNotificationCountResponse = await resetUserNotificationCount(tenantId);
11
12 console.log(resultWithSso, resultWithoutSso);
13}
14

resetUserNotifications Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

Odgovor

Vraća: ResetUserNotificationsResponse1

Primer

resetUserNotifications Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-001";
4 const afterId: string = "notif-123";
5 const afterCreatedAt: number = 1697049600; // primer UNIX vremenskog žiga
6 const unreadOnly: boolean = true;
7 const dmOnly: boolean = false;
8 const noDm: boolean = false;
9 const sso: string = "sso-token-xyz";
10
11 const result: ResetUserNotificationsResponse1 = await resetUserNotifications(
12 tenantId,
13 afterId,
14 afterCreatedAt,
15 unreadOnly,
16 dmOnly,
17 noDm,
18 sso
19 );
20
21 console.log(result);
22})();
23

updateUserNotificationCommentSubscriptionStatus Internal Link

Omogućite ili onemogućite obaveštenja za određeni komentar.

Parameters

NazivTipObaveznoOpis
tenantIdstringDa
notificationIdstringDa
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumDa
commentIdstringDa
ssostringNe

Response

Vraća: UpdateUserNotificationCommentSubscriptionStatusResponse

Primer

Primer updateUserNotificationCommentSubscriptionStatus
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const notificationId: string = "notif_9876";
4const commentId: string = "comment_abc123";
5const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum =
6 UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptIn;
7const sso: string = "ssoTokenXYZ";
8
9const responseWithSso: UpdateUserNotificationCommentSubscriptionStatusResponse =
10 await updateUserNotificationCommentSubscriptionStatus(
11 tenantId,
12 notificationId,
13 optedInOrOut,
14 commentId,
15 sso
16 );
17
18const responseWithoutSso: UpdateUserNotificationCommentSubscriptionStatusResponse =
19 await updateUserNotificationCommentSubscriptionStatus(
20 tenantId,
21 notificationId,
22 optedInOrOut,
23 commentId
24 );
25

updateUserNotificationPageSubscriptionStatus Internal Link

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

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumYes
ssostringNo

Одговор

Враћа: UpdateUserNotificationPageSubscriptionStatusResponse

Пример

updateUserNotificationPageSubscriptionStatus Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-2024";
4 const urlId: string = "page-5678";
5 const url: string = "https://example.com/articles/typescript-tips";
6 const pageTitle: string = "Top TypeScript Tips";
7 const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum =
8 UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
9 const sso: string = "sso-token-xyz";
10
11 const resultWithSso: UpdateUserNotificationPageSubscriptionStatusResponse = await updateUserNotificationPageSubscriptionStatus(
12 tenantId,
13 urlId,
14 url,
15 pageTitle,
16 subscribedOrUnsubscribed,
17 sso
18 );
19
20 const resultWithoutSso: UpdateUserNotificationPageSubscriptionStatusResponse = await updateUserNotificationPageSubscriptionStatus(
21 tenantId,
22 urlId,
23 url,
24 pageTitle,
25 subscribedOrUnsubscribed
26 );
27})();
28

updateUserNotificationStatus Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringYes
notificationIdstringYes
newStatusUpdateUserNotificationStatusNewStatusEnumYes
ssostringNo

Odgovor

Vraća: UpdateUserNotificationStatusResponse

Primer

Primer updateUserNotificationStatus
Copy Copy
1
2const tenantId: string = "acme-corp";
3const notificationId: string = "notif-20231101-001";
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.Dismissed;
5const ssoToken: string = "sso-9f8e7d6c5b4a";
6
7const result: UpdateUserNotificationStatusResponse = await updateUserNotificationStatus(
8 tenantId,
9 notificationId,
10 newStatus,
11 ssoToken
12);
13

getUserPresenceStatuses Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Odgovor

Vraća: GetUserPresenceStatusesResponse1

Primer

Primer getUserPresenceStatuses
Copy Copy
1
2async function fetchUserPresences() {
3 const tenantId: string = "tenant_9f8e2d";
4 const urlIdWS: string = "blog.mycompany.com/thread/12345";
5 const userIds: string = "alice,bob,carol";
6
7 const result: GetUserPresenceStatusesResponse1 = await getUserPresenceStatuses(
8 tenantId,
9 urlIdWS,
10 userIds
11 );
12
13 console.log(result);
14}
15

searchUsers Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
urlIdstringYes
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

Odgovor

Vraća: SearchUsersResponse1

Primer

searchUsers Primer
Copy Copy
1
2async function demoSearch(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "article-9876";
5 const usernameStartsWith: string = "john";
6 const mentionGroupIds: string[] = ["groupA", "groupB"];
7 const sso: string = "sso_abc123";
8 const searchSection: SearchUsersSearchSectionEnum = SearchUsersSearchSectionEnum.Users;
9
10 const response: SearchUsersResponse1 = await searchUsers(
11 tenantId,
12 urlId,
13 usernameStartsWith,
14 mentionGroupIds,
15 sso,
16 searchSection
17 );
18
19 console.log(response);
20}
21
22demoSearch();
23

getUser Internal Link

Parametri

NazivTipObaveznoOpis
tenantIdstringDa
idstringDa

Odgovor

Vraća: GetUserResponse1

Primer

getUser Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_98765";
5 const result: GetUserResponse1 = await getUser(tenantId, userId);
6})();
7

createVote Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringYes
commentIdstringYes
directionCreateVoteDirectionEnumYes
userIdstringNo
anonUserIdstringNo

Odgovor

Vraća: CreateVoteResponse

Primer

Primer createVote
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "comment_987654";
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Upvote;
5const userId: string = "user_7f9a2b";
6
7const voteResult: CreateVoteResponse = await createVote(
8 tenantId,
9 commentId,
10 direction,
11 userId
12);
13

deleteVote Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
idstringДа
editKeystringНе

Одговор

Враћа: DeleteVoteResponse

Пример

deleteVote Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-9876";
5 const editKey: string = "edit-key-123";
6
7 const resultWithEdit: DeleteVoteResponse = await deleteVote(tenantId, commentId, editKey);
8 const resultWithoutEdit: DeleteVoteResponse = await deleteVote(tenantId, commentId);
9})();
10

getVotes Internal Link

Parametri

ImeTipObaveznoOpis
tenantIdstringDa
urlIdstringDa

Odgovor

Vraća: GetVotesResponse1

Primer

Primer getVotes
Copy Copy
1
2async function fetchVotes(): Promise<void> {
3 const tenantId: string = "acme-corp-01";
4 const urlId: string = "article-2024-05-15";
5
6 const response: GetVotesResponse1 = await getVotes(tenantId, urlId);
7
8 // Primer pristupa opcionom polju u odgovoru
9 const firstVoteId: string | undefined = response?.votes?.[0]?.id;
10}
11

getVotesForUser Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringYes
userIdstringNo
anonUserIdstringNo

Одговор

Враћа: GetVotesForUserResponse1

Пример

Primer getVotesForUser
Copy Copy
1
2async function demo() {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "post-9f8b7c";
5 const userId: string = "user-42";
6 const anonUserId: string = "anon-123";
7
8 const votesRequiredOnly: GetVotesForUserResponse1 = await getVotesForUser(tenantId, urlId);
9 const votesWithUserId: GetVotesForUserResponse1 = await getVotesForUser(tenantId, urlId, userId);
10 const votesWithAnonId: GetVotesForUserResponse1 = await getVotesForUser(tenantId, urlId, undefined, anonUserId);
11}
12demo();
13

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.