FastComments.com

FastComments JavaScript/TypeScript SDK


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

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

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

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


AI агенти за кодирање Internal Link

skills.sh

Дајте вашем кодујућем агенту FastComments контекст који му је потребан - виџети, конфигурација, Secure SSO, REST API и SDK‑ове:

npx skills add fastcomments/skills

Ради са Claude Code, Codex, Cursor, Copilot, Gemini, и свим осталим агентима које подржава skills CLI.

Инсталација 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 (подразумевано) - Само типови, безбедно за увоз било где

Јавни vs заштићени 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

Subscribe to live events to get real-time updates for comments, votes, and other activities.

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

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

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

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

// Пријавите се на живе догађаје за страницу
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (добавите ово из getComments одговора)
  (event: LiveEvent) => {
    console.log('Live event received:', event);
    
    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Ажурирајте ваш UI новим коментаром
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Ажурирајте број гласа у вашем UI-у
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }
    
    return true; // Вратите true ако је догађај обрађен
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

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

Пријава на корисничке догађаје

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

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

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

// Пријавите се на лични фид
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);
    
    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Прикажите обавештење у вашем UI-у
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }
    
    return true;
  },
  (isConnected: boolean) => {
    console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
  }
);

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

Добијање userIdWS

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

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

// Extract userIdWS from the response
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Now you can subscribe to live events
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

ИД-еви емитовања Internal Link

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

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() // Јединствени ИД за ову операцију
  }
});

Руковање грешкама 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);
  }
}

createAgentTenant Internal Link

Creates a new trial account for an AI agent without a human signup. No API key is needed to call this.

The response contains the tenant id, an API key that works immediately against the REST API and the MCP server, and a claim URL. Give the claim URL to the human you are working for: opening it while logged in to FastComments attaches the account to them. Unclaimed accounts, and their keys, are deleted 72 hours after creation. Until claimed, the account has the standard trial limits.

Параметри

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

Одговор

Враћа: CreateAgentTenantResponse

Пример

createAgentTenant Пример
Copy Copy
1
2const tenantBody: CreateAgentTenantBody = {
3 name: "Acme Corp",
4 domain: "acme.example.com",
5 contactEmail: "admin@acme.example.com", // опционално
6 planId: 3 // опционално
7};
8
9const result: CreateAgentTenantResponse = await createAgentTenant(tenantBody);
10

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

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo
usernamestringNo
ipstringNo
crudTypestringNo
resourceNamestringNo
targetIdstringNo
targetstringNo
includeManagedTenantsbooleanNo

Одговор

Враћа: GetAuditLogsResponse

Пример

Primer getAuditLogs
Copy Copy
1
2async function fetchAuditLogs(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const limit: number = 50;
5 const skip: number = 0;
6 const order: SORTDIR = { direction: "DESC" };
7 const after: number = Date.now() - 86400000; // 1 day ago
8 const before: number = Date.now();
9 const username: string = "alice.smith";
10 const ip: string = "198.51.100.23";
11 const crudType: string = "CREATE";
12 const resourceName: string = "thread";
13 const targetId: string = "thread_45678";
14 const target: string = "forum_12";
15 const includeManagedTenants: boolean = false;
16
17 const logs: GetAuditLogsResponse = await getAuditLogs(
18 tenantId,
19 limit,
20 skip,
21 order,
22 after,
23 before,
24 username,
25 ip,
26 crudType,
27 resourceName,
28 targetId,
29 target,
30 includeManagedTenants
31 );
32
33 console.log(logs);
34}
35
36fetchAuditLogs();
37

blockFromCommentPublic Internal Link

Параметри

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

Одговор

Враћа: BlockSuccess

Пример

blockFromCommentPublic Пример
Copy Copy
1
2async function demoBlock() {
3 const tenantId: string = "tenant_9f8b7c";
4 const commentId: string = "comment_3e2d1a";
5 const blockParams: PublicBlockFromCommentParams = {
6 reason: "harassment",
7 expiresInHours: 48
8 };
9 const ssoToken: string = "sso_5g6h7i";
10
11 const resultWithSso: BlockSuccess = await blockFromCommentPublic(tenantId, commentId, blockParams, ssoToken);
12 const resultWithoutSso: BlockSuccess = await blockFromCommentPublic(tenantId, commentId, blockParams);
13}
14

unBlockCommentPublic Internal Link

Параметри

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

Одговор

Враћа: UnblockSuccess

Пример

unBlockCommentPublic Пример
Copy Copy
1
2const tenantId: string = "c9f1e2a4-5b6d-4f8a-9c2e-123456789abc";
3const commentId: string = "d3b2c1a9-8f7e-4d6b-9a0b-987654321def";
4
5const unblockParams: PublicBlockFromCommentParams = {
6 reason: "User request resolved",
7 moderatorId: "mod-456"
8};
9
10const ssoToken: string = "sso-token-789xyz";
11
12const unblockResult: UnblockSuccess = await unBlockCommentPublic(tenantId, commentId, unblockParams, ssoToken);
13const unblockResultNoSso: UnblockSuccess = await unBlockCommentPublic(tenantId, commentId, unblockParams);
14

checkedCommentsForBlocked Internal Link

Параметри

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

Одговор

Враћа: CheckBlockedCommentsResponse

Пример

Пример checkedCommentsForBlocked
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentIds: string = "cmt_9876,cmt_5432";
5 const ssoToken: string = "sso_user_abc123";
6
7 const responseWithSso: CheckBlockedCommentsResponse = await checkedCommentsForBlocked(tenantId, commentIds, ssoToken);
8 const responseWithoutSso: CheckBlockedCommentsResponse = await checkedCommentsForBlocked(tenantId, commentIds);
9})();
10

blockUserFromComment Internal Link

Параметри

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

Одговор

Враћа: BlockSuccess

Пример

Пример blockUserFromComment
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant-123e4567-e89b-12d3-a456-426614174000";
4 const commentId: string = "cmt-9876543210";
5 const blockParams: BlockFromCommentParams = {
6 reason: "spam",
7 durationHours: 24
8 };
9 const userId: string = "user-abc123";
10 const anonUserId: string = "anon-xyz789";
11 const result: BlockSuccess = await blockUserFromComment(tenantId, commentId, blockParams, userId, anonUserId);
12 console.log(result);
13}
14demo();
15

createCommentPublic Internal Link

Параметри

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

Одговор

Враћа: SaveCommentsResponseWithPresence

Пример

Пример createCommentPublic
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant-456";
4 const urlId: string = "url-789";
5 const broadcastId: string = "broadcast-101112";
6 const commentData: CommentData = { text: "This is a comment", userId: "user-123" };
7 const sessionId: string = "session-131415";
8 const sso: string = "sso-token-xyz";
9 const result: SaveCommentsResponseWithPresence = await createCommentPublic(tenantId, urlId, broadcastId, commentData, sessionId, sso);
10 const resultNoOpt: SaveCommentsResponseWithPresence = await createCommentPublic(tenantId, urlId, broadcastId, commentData);
11}
12

deleteComment Internal Link

Параметри

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

Одговор

Враћа: DeleteCommentResult

Пример

deleteComment Пример
Copy Copy
1
2async function removeComment(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "comment_9876";
5 const contextUserId: string = "user_42";
6 const result: DeleteCommentResult = await deleteComment(tenantId, commentId, contextUserId, true);
7 console.log(result);
8}
9removeComment();
10

deleteCommentPublic Internal Link

Параметри

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

Одговор

Враћа: PublicAPIDeleteCommentResponse

Пример

Пример deleteCommentPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_9876";
5 const broadcastId: string = "brd_5555";
6 const editKey: string = "edit_abc123";
7 const sso: string = "sso_token_xyz";
8
9 const resultWithoutOptional: PublicAPIDeleteCommentResponse = await deleteCommentPublic(tenantId, commentId, broadcastId);
10 const resultWithOptional: PublicAPIDeleteCommentResponse = await deleteCommentPublic(tenantId, commentId, broadcastId, editKey, sso);
11})();
12

deleteCommentVote Internal Link

Параметри

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

Одговор

Враћа: VoteDeleteResponse

Пример

Пример deleteCommentVote
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_9876";
4const voteId: string = "vote_555";
5const urlId: string = "url_abcde";
6const broadcastId: string = "brd_2023";
7const editKey: string = "edit_abc123"; // опционално
8const ssoToken: string = "sso_token_xyz"; // опционално
9
10// Позив са само потребним параметрима и једним опционо
11const deleteResult: VoteDeleteResponse = await deleteCommentVote(
12 tenantId,
13 commentId,
14 voteId,
15 urlId,
16 broadcastId,
17 editKey
18);
19
20// Позив са оба опциона параметра
21const deleteResultWithSSO: VoteDeleteResponse = await deleteCommentVote(
22 tenantId,
23 commentId,
24 voteId,
25 urlId,
26 broadcastId,
27 editKey,
28 ssoToken
29);
30

flagComment Internal Link

Параметри

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

Одговор

Враћа: FlagCommentResponse

Пример

flagComment Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-20230915-001";
5 const userId: string = "user-42";
6 const anonUserId: string = "anon-abc123";
7
8 const response: FlagCommentResponse = await flagComment(tenantId, commentId, userId, anonUserId);
9 console.log(response);
10})();
11

getComment Internal Link

Параметри

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

Одговор

Враћа: APIGetCommentResponse

Пример

getComment Primer
Copy Copy
1
2async function fetchComment(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5
6 const response: APIGetCommentResponse = await getComment(tenantId, commentId);
7 const comment: APIComment | undefined = response.comment;
8
9 // Демонстрација опционох поља
10 const badgeInfo: CommentUserBadgeInfo | undefined = comment?.user?.badge;
11 const hashtags: CommentUserHashTagInfo[] | undefined = comment?.user?.hashtags;
12 const mentions: CommentUserMentionInfo[] | undefined = comment?.user?.mentions;
13 const meta: APICommentBaseMeta | undefined = comment?.meta;
14
15 console.log(comment?.id, badgeInfo?.type);
16}
17
18fetchComment();
19

getComments Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
pagenumberНе
limitnumberНе
skipnumberНе
asTreebooleanНе
skipChildrennumberНе
limitChildrennumberНе
maxTreeDepthnumberНе
urlIdstringНе
userIdstringНе
anonUserIdstringНе
contextUserIdstringНе
hashTagstringНе
parentIdstringНе
directionSortDirectionsНе
fromDatenumberНе
toDatenumberНе

Одговор

Враћа: APIGetCommentsResponse

Пример

Primer getComments
Copy Copy
1
2async function loadComments(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const page: number = 1;
5 const limit: number = 50;
6 const asTree: boolean = false;
7 const direction: SortDirections = "asc";
8 const fromDate: number = Date.now() - 30 * 24 * 60 * 60 * 1000; // 30 days ago
9 const toDate: number = Date.now();
10
11 const commentsResponse: APIGetCommentsResponse = await getComments(
12 tenantId,
13 page,
14 limit,
15 undefined,
16 asTree,
17 undefined,
18 undefined,
19 undefined,
20 undefined,
21 undefined,
22 undefined,
23 undefined,
24 undefined,
25 undefined,
26 direction,
27 fromDate,
28 toDate
29 );
30
31 console.log(commentsResponse);
32}
33

getCommentsPublic Internal Link

req tenantId urlId

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
urlIdstringДа
pagenumberНе
directionSortDirectionsНе
ssostringНе
skipnumberНе
skipChildrennumberНе
limitnumberНе
limitChildrennumberНе
countChildrenbooleanНе
fetchPageForCommentIdstringНе
includeConfigbooleanНе
countAllbooleanНе
includei10nbooleanНе
localestringНе
modulesstringНе
isCrawlerbooleanНе
includeNotificationCountbooleanНе
asTreebooleanНе
maxTreeDepthnumberНе
useFullTranslationIdsbooleanНе
parentIdstringНе
searchTextstringНе
hashTagsArrayНе
userIdstringНе
customConfigStrstringНе
afterCommentIdstringНе
beforeCommentIdstringНе

Одговор

Враћа: GetCommentsResponseWithPresencePublicComment

Пример

Пример getCommentsPublic
Copy Copy
1
2async function loadComments(): Promise<void> {
3 const tenantId: string = "tenant-42",
4 urlId: string = "post-2023-09-15",
5 page: number = 1,
6 direction: SortDirections = "desc",
7 limit: number = 30,
8 includeConfig: boolean = true,
9 locale: string = "en-US",
10 isCrawler: boolean = false,
11 asTree: boolean = true,
12 maxTreeDepth: number = 2,
13 searchText: string = "fastcomments",
14 hashTags: string[] = ["fastcomments","typescript"],
15 userId: string = "user-123";
16
17 const result: GetCommentsResponseWithPresencePublicComment = 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 undefined,
34 isCrawler,
35 undefined,
36 asTree,
37 maxTreeDepth,
38 undefined,
39 undefined,
40 searchText,
41 hashTags,
42 userId
43 );
44}
45

getCommentText Internal Link

Параметри

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

Одговор

Враћа: PublicAPIGetCommentTextResponse

Пример

Пример getCommentText
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const commentId: string = "comment-987654321";
4const editKey: string = "edit-key-abc123";
5const sso: string = "sso-token-xyz789";
6
7const commentWithEdit: PublicAPIGetCommentTextResponse = await getCommentText(
8 tenantId,
9 commentId,
10 editKey,
11 sso
12);
13
14const commentBasic: PublicAPIGetCommentTextResponse = await getCommentText(
15 tenantId,
16 commentId
17);
18

getCommentVoteUserNames Internal Link

Параметри

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

Одговор

Враћа: GetCommentVoteUserNamesSuccessResponse

Пример

Пример getCommentVoteUserNames
Copy Copy
1
2async function example() {
3 const tenantId: string = 'tenant-9876';
4 const commentId: string = 'comment-abc123';
5 const dir: number = 1;
6 const ssoToken: string = 'sso-xyz789';
7
8 const resultWithSso: GetCommentVoteUserNamesSuccessResponse = await getCommentVoteUserNames(tenantId, commentId, dir, ssoToken);
9 const resultWithoutSso: GetCommentVoteUserNamesSuccessResponse = await getCommentVoteUserNames(tenantId, commentId, dir);
10}
11

lockComment Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

lockComment пример
Copy Copy
1
2async function demoLockComment() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_9876";
5 const broadcastId: string = "brd_5555";
6 const ssoToken: string = "sso_user_abc";
7
8 const resultWithSso: APIEmptyResponse = await lockComment(tenantId, commentId, broadcastId, ssoToken);
9 const resultWithoutSso: APIEmptyResponse = await lockComment(tenantId, commentId, broadcastId);
10}
11
12demoLockComment();
13

pinComment Internal Link

Параметри

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

Одговор

Враћа: ChangeCommentPinStatusResponse

Пример

pinComment пример
Copy Copy
1
2async function demoPinComment() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_54321";
6
7 const resultWithoutSso: ChangeCommentPinStatusResponse = await pinComment(tenantId, commentId, broadcastId);
8 const ssoToken: string = "sso_abcde12345";
9 const resultWithSso: ChangeCommentPinStatusResponse = await pinComment(tenantId, commentId, broadcastId, ssoToken);
10}
11
12demoPinComment();
13

saveComment Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
createCommentParamsCreateCommentParamsYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Одговор

Враћа: APISaveCommentResponse

Пример

saveComment Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const commentParams: CreateCommentParams = {
5 content: "This is a comment with a mention and a hashtag.",
6 userId: "user_987",
7 mentions: [
8 { userId: "user_123", start: 27, end: 34 }
9 ] as CommentUserMentionInfo[],
10 hashtags: [
11 { tag: "feedback", start: 45, end: 53 }
12 ] as CommentUserHashTagInfo[],
13 poll: {
14 question: "Do you like this feature?",
15 options: ["Yes", "No"]
16 } as CommentPollInput,
17};
18
19const response: APISaveCommentResponse = await saveComment(
20 tenantId,
21 commentParams,
22 true, // isLive
23 true, // doSpamCheck
24 false, // sendEmails
25 true // populateNotifications
26);
27

saveCommentsBulk Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Одговор

Враћа: Array<SaveCommentsBulkResponse

Пример

saveCommentsBulk пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const mention1: CommentUserMentionInfo = {
5 userId: "user_002",
6 start: 10,
7 end: 20,
8};
9
10const hashtag1: CommentUserHashTagInfo = {
11 tag: "news",
12 start: 30,
13 end: 35,
14};
15
16const poll1: CommentPollInput = {
17 question: "Did you find this helpful?",
18 options: ["Yes", "No"],
19};
20
21const commentA: CreateCommentParams = {
22 content: "This is a great article!",
23 userId: "user_001",
24 mentions: [mention1],
25 hashtags: [hashtag1],
26 poll: poll1,
27};
28
29const commentB: CreateCommentParams = {
30 content: "I have a question about the topic.",
31 userId: "user_003",
32};
33
34const createCommentParams: CreateCommentParams[] = [commentA, commentB];
35
36const isLive: boolean = true;
37const doSpamCheck: boolean = false;
38const sendEmails: boolean = true;
39const populateNotifications: boolean = false;
40
41const results: SaveCommentsBulkResponse[] = await saveCommentsBulk(
42 tenantId,
43 createCommentParams,
44 isLive,
45 doSpamCheck,
46 sendEmails,
47 populateNotifications
48);
49

setCommentText Internal Link

Параметри

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

Одговор

Враћа: PublicAPISetCommentTextResponse

Пример

setCommentText Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_54321";
6 const commentTextUpdateRequest: CommentTextUpdateRequest = {
7 text: "Revised comment text with additional details."
8 };
9 const editKey: string = "edit_abc123";
10 const sso: string = "sso_token_456def";
11
12 const response: PublicAPISetCommentTextResponse = await setCommentText(
13 tenantId,
14 commentId,
15 broadcastId,
16 commentTextUpdateRequest,
17 editKey,
18 sso
19 );
20})();
21

unBlockUserFromComment Internal Link

Параметри

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

Одговор

Враћа: UnblockSuccess

Пример

Primer unBlockUserFromComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const commentId: string = "comment-4a3b2c1d";
5 const params: UnBlockFromCommentParams = {
6 reason: "User appealed the block",
7 adminNote: "Reviewed and unblocked"
8 };
9 const userId: string = "user-5e6f7g8h";
10 const anonUserId: string = "anon-1a2b3c4d";
11 const result: UnblockSuccess = await unBlockUserFromComment(
12 tenantId,
13 commentId,
14 params,
15 userId,
16 anonUserId
17 );
18 console.log(result);
19})();
20

unFlagComment Internal Link

Параметри

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

Одговор

Враћа: FlagCommentResponse

Пример

unFlagComment Пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt-20230915-001";
5 const userId: string = "user-42";
6
7 const unflaggedByUser: FlagCommentResponse = await unFlagComment(tenantId, commentId, userId);
8 const unflaggedByAnon: FlagCommentResponse = await unFlagComment(tenantId, commentId, undefined, "anon-xyz");
9
10 console.log(unflaggedByUser, unflaggedByAnon);
11}
12

unLockComment Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

Пример unLockComment
Copy Copy
1
2async function demoUnlock() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5 const broadcastId: string = "brd_987654321";
6 const ssoToken: string = "sso_abcdef123456";
7
8 const resultWithoutSso: APIEmptyResponse = await unLockComment(tenantId, commentId, broadcastId);
9 const resultWithSso: APIEmptyResponse = await unLockComment(tenantId, commentId, broadcastId, ssoToken);
10}
11

unPinComment Internal Link

Параметри

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

Одговор

Враћа: ChangeCommentPinStatusResponse

Пример

unPinComment Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-20230915-001";
5 const broadcastId: string = "broadcast-2023-09-15";
6 const ssoToken: string = "sso-abc123";
7
8 const result: ChangeCommentPinStatusResponse = await unPinComment(tenantId, commentId, broadcastId, ssoToken);
9 const resultWithoutSso: ChangeCommentPinStatusResponse = await unPinComment(tenantId, commentId, broadcastId);
10})();
11

updateComment Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateComment Пример
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3const commentId: string = "comment-9876543210";
4const updateParams: UpdatableCommentParams = {
5 content: "Edited comment content",
6 isApproved: true
7};
8
9const contextUserId: string = "user-11223344";
10const doSpamCheck: boolean = true;
11const isLive: boolean = false;
12
13const response: APIEmptyResponse = await updateComment(
14 tenantId,
15 commentId,
16 updateParams,
17 contextUserId,
18 doSpamCheck,
19 isLive
20);
21

voteComment Internal Link

Параметри

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

Одговор

Враћа: VoteResponse

Пример

voteComment Пример
Copy Copy
1
2async function runVote() {
3 const tenantId: string = 'tenant_001';
4 const commentId: string = 'cmt_987654';
5 const urlId: string = 'url_12345';
6 const broadcastId: string = 'brd_56789';
7 const voteBody: VoteBodyParams = { direction: 'up' };
8 const sessionId: string = 'sess_abc123';
9 const sso: string = 'sso_token_xyz';
10 const response: VoteResponse = await voteComment(
11 tenantId,
12 commentId,
13 urlId,
14 broadcastId,
15 voteBody,
16 sessionId,
17 sso
18 );
19 console.log(response);
20}
21runVote();
22

getCommentsForUser Internal Link

Параметри

ИмеТипОбавезноОпис
userIdstringNo
directionSortDirectionsNo
repliesToUserIdstringNo
pagenumberNo
includei10nbooleanNo
localestringNo
isCrawlerbooleanNo

Одговор

Враћа: GetCommentsForUserResponse

Пример

Пример getCommentsForUser
Copy Copy
1
2const userId: string = '550e8400-e29b-41d4-a716-446655440000';
3const direction: SortDirections = SortDirections.Descending;
4const page: number = 3;
5const includei10n: boolean = true;
6const locale: string = 'fr-FR';
7const isCrawler: boolean = false;
8
9const commentsResponse: GetCommentsForUserResponse = await getCommentsForUser(
10 userId,
11 direction,
12 undefined,
13 page,
14 includei10n,
15 locale,
16 isCrawler
17);
18

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

Параметри

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

Одговор

Враћа: DeleteDomainConfigResponse

Пример

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

Параметри

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

Одговор

Враћа: GetDomainConfigResponse

Пример

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

Параметри

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

Одговор

Враћа: GetDomainConfigsResponse

Пример

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

Параметри

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

Одговор

Враћа: PutDomainConfigResponse

Пример

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 // опционално поље изостављено, нпр., 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

Параметри

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

Одговор

Враћа: CreateEmailTemplateResponse

Пример

Пример createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const templateBody: CreateEmailTemplateBody = {
5 name: "Weekly Summary",
6 subject: "Your weekly activity report",
7 // опционално поље
8 replyTo: "no-reply@myapp.com",
9 htmlContent: "<p>Hello \{{userName}}, here is your summary...</p>"
10};
11
12const response: CreateEmailTemplateResponse = await createEmailTemplate(tenantId, templateBody);
13
14console.log(response.template.id);
15

deleteEmailTemplate Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteEmailTemplate Пример
Copy Copy
1
2interface APIStatus {
3 code: number;
4 message: string;
5}
6
7interface APIEmptyResponse {
8 status?: APIStatus;
9}
10
11(async () => {
12 const tenantId: string = "tenant_12345";
13 const templateId: string = "template_987";
14
15 const result: APIEmptyResponse = await deleteEmailTemplate(tenantId, templateId);
16})();
17

deleteEmailTemplateRenderError Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

Пример deleteEmailTemplateRenderError
Copy Copy
1
2async function removeRenderError() {
3 const tenantId: string = "acme-corp-tenant";
4 const templateId: string = "welcome-email-template";
5 const errorId: string = "render-err-20230915";
6
7 const result: APIEmptyResponse = await deleteEmailTemplateRenderError(tenantId, templateId, errorId);
8}
9

getEmailTemplate Internal Link

Параметри

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

Одговор

Враћа: GetEmailTemplateResponse

Пример

Пример getEmailTemplate
Copy Copy
1
2async function fetchTemplate() {
3 const tenantId: string = "acme-corp-123";
4 const templateId: string = "welcome-email-456";
5 const response: GetEmailTemplateResponse = await getEmailTemplate(tenantId, templateId);
6 const status: APIStatus | undefined = response.status;
7 const customTemplate: CustomEmailTemplate | undefined = response.template;
8}
9

getEmailTemplateDefinitions Internal Link

Параметри

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

Одговор

Враћа: GetEmailTemplateDefinitionsResponse

Пример

getEmailTemplateDefinitions Primer
Copy Copy
1
2async function fetchEmailTemplates() {
3 const tenantId: string = "acme-corp-456";
4 const result: GetEmailTemplateDefinitionsResponse = await getEmailTemplateDefinitions(tenantId);
5 const status: APIStatus = result.status;
6 const definitions: EmailTemplateDefinition[] = result.definitions ?? [];
7 console.log(`Status: ${status.code}, Templates: ${definitions.length}`);
8}
9

getEmailTemplateRenderErrors Internal Link

Параметри

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

Одговор

Враћа: GetEmailTemplateRenderErrorsResponse

Пример

getEmailTemplateRenderErrors Primer
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_9876";
5
6 const resultWithSkip: GetEmailTemplateRenderErrorsResponse = await getEmailTemplateRenderErrors(tenantId, templateId, 10);
7 const resultWithoutSkip: GetEmailTemplateRenderErrorsResponse = await getEmailTemplateRenderErrors(tenantId, templateId);
8
9 console.log(resultWithSkip, resultWithoutSkip);
10}
11demo();
12

getEmailTemplates Internal Link

Parameters

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

Response

Враћа: GetEmailTemplatesResponse

Example

Пример getEmailTemplates
Copy Copy
1
2async function fetchEmailTemplates() {
3 const tenantId: string = "acme-corp-123";
4 const skip: number = 20;
5 const templatesWithSkip: GetEmailTemplatesResponse = await getEmailTemplates(tenantId, skip);
6 const templatesWithoutSkip: GetEmailTemplatesResponse = await getEmailTemplates(tenantId);
7}
8

renderEmailTemplate Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
renderEmailTemplateBodyRenderEmailTemplateBodyYes
localestringNo

Одговор

Враћа: RenderEmailTemplateResponse

Пример

Пример renderEmailTemplate
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3
4const templateBody: RenderEmailTemplateBody = {
5 templateId: "welcome-email",
6 variables: {
7 userName: "Jane Doe",
8 signupDate: "2024-04-01"
9 }
10};
11
12const locale: string = "en-US";
13
14(async () => {
15 const rendered: RenderEmailTemplateResponse = await renderEmailTemplate(
16 tenantId,
17 templateBody,
18 locale
19 );
20 console.log(rendered);
21})();
22

updateEmailTemplate Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateEmailTemplate Пример
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_67890";
5
6 const updateBody: UpdateEmailTemplateBody = {
7 subject: "New Comment Notification",
8 // htmlContent је опционо и изостављено
9 status: { code: 200, message: "Active" } // APIStatus
10 };
11
12 const response: APIEmptyResponse = await updateEmailTemplate(tenantId, templateId, updateBody);
13 console.log(response);
14}
15

getEventLog Internal Link

req tenantId urlId userIdWS

Параметри

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

Одговор

Враћа: GetEventLogResponse

Пример

getEventLog Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "url_9876";
4const userIdWS: string = "user_abcde";
5const startTime: number = Date.now() - 86_400_000; // 24 сата назад
6const endTime: number = Date.now();
7
8const fullLog: GetEventLogResponse = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9const partialLog: GetEventLogResponse = await getEventLog(tenantId, urlId, userIdWS, startTime);
10

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Параметри

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimenumberДа
endTimenumberНе

Одговор

Враћа: GetEventLogResponse

Пример

getGlobalEventLog Пример
Copy Copy
1
2async function fetchEventLogs() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_9876";
5 const userIdWS: string = "user_ws_abcde";
6 const startTime: number = Date.now() - 24 * 60 * 60 * 1000; // 24 сата назад
7 const endTime: number = Date.now();
8
9 const logWithEnd: GetEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10 const logWithoutEnd: GetEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime);
11}
12

createFeedPost Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Одговор

Враћа: CreateFeedPostsResponse

Пример

createFeedPost Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
4 const broadcastId: string = "b1c2d3e4-5678-90ab-cdef-1234567890cd";
5 const isLive: boolean = true;
6 const doSpamCheck: boolean = false;
7 const skipDupCheck: boolean = true;
8
9 const mediaAsset: FeedPostMediaItemAsset = {
10 url: "https://cdn.example.com/photos/sunrise.jpg",
11 type: "image/jpeg"
12 };
13 const mediaItem: FeedPostMediaItem = {
14 asset: mediaAsset,
15 caption: "Sunrise over the mountains"
16 };
17 const linkItem: FeedPostLink = {
18 url: "https://blog.example.com/tech-trends-2024",
19 title: "Top Tech Trends for 2024"
20 };
21 const postParams: CreateFeedPostParams = {
22 text: "Excited to share the latest tech trends!",
23 media: [mediaItem],
24 link: linkItem
25 };
26
27 const response: CreateFeedPostsResponse = await createFeedPost(
28 tenantId,
29 postParams,
30 broadcastId,
31 isLive,
32 doSpamCheck,
33 skipDupCheck
34 );
35 console.log(response);
36})();
37

createFeedPostPublic Internal Link

Параметри

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

Одговор

Враћа: CreateFeedPostResponse

Пример

createFeedPostPublic Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const mediaAsset: FeedPostMediaItemAsset = {
5 url: "https://cdn.example.com/image.jpg",
6 width: 800,
7 height: 600,
8 mimeType: "image/jpeg"
9};
10
11const mediaItem: FeedPostMediaItem = {
12 type: "image",
13 asset: mediaAsset,
14 caption: "Sunset over the hills"
15};
16
17const link: FeedPostLink = {
18 url: "https://example.com/blog/post",
19 title: "Exciting New Features",
20 description: "Read about our latest updates."
21};
22
23const createFeedPostParams: CreateFeedPostParams = {
24 content: "Check out our latest blog post!",
25 media: [mediaItem],
26 link: link,
27 visibility: "public"
28};
29
30const broadcastId: string = "broadcast_9876";
31const sso: string = "sso_token_abc123";
32
33const response: CreateFeedPostResponse = await createFeedPostPublic(
34 tenantId,
35 createFeedPostParams,
36 broadcastId,
37 sso
38);
39

deleteFeedPostPublic Internal Link

Параметри

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

Одговор

Враћа: DeleteFeedPostPublicResponse

Пример

deleteFeedPostPublic Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const postId: string = "post_98765";
5 const broadcastId: string = "broadcast_abcde";
6 const sso: string = "sso_token_xyz";
7
8 const responseWithOpts: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(
9 tenantId,
10 postId,
11 broadcastId,
12 sso
13 );
14
15 const responseWithoutOpts: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(
16 tenantId,
17 postId
18 );
19})();
20

getFeedPosts Internal Link

req tenantId afterId

Параметри

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
limitnumberNo
tagsArrayNo

Одговор

Враћа: GetFeedPostsResponse

Пример

Primer getFeedPosts
Copy Copy
1
2async function loadFeed() {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const afterId: string = 'post_987654321';
5 const limit: number = 25;
6 const tags: string[] = ['technology', 'innovation'];
7 const response: GetFeedPostsResponse = await getFeedPosts(tenantId, afterId, limit, tags);
8 console.log(response);
9}
10loadFeed();
11

getFeedPostsPublic Internal Link

req tenantId afterId

Параметри

ИмеТипОбавезноОпис
tenantIdstringДа
afterIdstringНе
limitnumberНе
tagsArrayНе
ssostringНе
isCrawlerbooleanНе
includeUserInfobooleanНе

Одговор

Враћа: PublicFeedPostsResponse

Пример

getFeedPostsPublic Primer
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const afterId: string = "post-20230915-abc123";
4const limit: number = 15;
5const tags: string[] = ["technology", "innovation"];
6const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NSJ9.s3cr3tSignature";
7const isCrawler: boolean = false;
8const includeUserInfo: boolean = true;
9
10const feedResponse: PublicFeedPostsResponse = await getFeedPostsPublic(
11 tenantId,
12 afterId,
13 limit,
14 tags,
15 sso,
16 isCrawler,
17 includeUserInfo
18);
19

getFeedPostsStats Internal Link

Параметри

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

Одговор

Враћа: FeedPostsStatsResponse

Пример

Пример getFeedPostsStats
Copy Copy
1
2const tenantId: string = "tenant-9f8b7c6d";
3const postIds: string[] = ["post-1a2b3c", "post-4d5e6f", "post-7g8h9i"];
4const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
5const feedStats: FeedPostsStatsResponse = await getFeedPostsStats(tenantId, postIds, ssoToken);
6

getUserReactsPublic Internal Link

Параметри

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

Одговор

Враћа: UserReactsResponse

Пример

Пример getUserReactsPublic
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const postIds: string[] = ["post_abc", "post_def"];
4const ssoToken: string = "sso_token_987";
5
6const fullResponse: UserReactsResponse = await getUserReactsPublic(tenantId, postIds, ssoToken);
7const minimalResponse: UserReactsResponse = await getUserReactsPublic(tenantId);
8

reactFeedPostPublic Internal Link

Параметри

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

Одговор

Враћа: ReactFeedPostResponse

Пример

reactFeedPostPublic Пример
Copy Copy
1
2async function demoReact() {
3 const tenantId: string = "tenant_12345";
4 const postId: string = "post_98765";
5 const reactBodyParams: ReactBodyParams = {
6 type: "like",
7 userId: "user_abcde"
8 };
9 const response: ReactFeedPostResponse = await reactFeedPostPublic(
10 tenantId,
11 postId,
12 reactBodyParams,
13 true,
14 "broadcast_001",
15 "sso_token_xyz"
16 );
17}
18

updateFeedPost Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateFeedPost Пример
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "tenant_12345";
4 const postId: string = "post_98765";
5
6 const mediaAsset: FeedPostMediaItemAsset = {
7 url: "https://cdn.example.com/image.jpg",
8 width: 800,
9 height: 600,
10 mimeType: "image/jpeg"
11 };
12
13 const mediaItem: FeedPostMediaItem = {
14 type: "image",
15 asset: mediaAsset,
16 caption: "Sunrise over the hills"
17 };
18
19 const link: FeedPostLink = {
20 url: "https://example.com/blog",
21 title: "Latest Blog Post",
22 description: "Insights on recent developments"
23 };
24
25 const feedPost: FeedPost = {
26 title: "Daily Highlights",
27 content: "Check out today’s top stories.",
28 mediaItems: [mediaItem], // опционално
29 links: [link] // опционално
30 };
31
32 const response: APIEmptyResponse = await updateFeedPost(tenantId, postId, feedPost);
33 console.log(response);
34}
35
36runUpdate();
37

updateFeedPostPublic Internal Link

Параметри

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

Одговор

Враћа: CreateFeedPostResponse

Пример

Пример updateFeedPostPublic
Copy Copy
1
2// Дефинишите параметре
3const tenantId: string = "tenant_12345";
4const postId: string = "post_98765";
5
6const mediaAsset: FeedPostMediaItemAsset = {
7 url: "https://cdn.example.com/image.jpg",
8 width: 800,
9 height: 600,
10 mimeType: "image/jpeg"
11};
12
13const mediaItem: FeedPostMediaItem = {
14 type: "image",
15 asset: mediaAsset,
16 caption: "A beautiful scenery"
17};
18
19const link: FeedPostLink = {
20 url: "https://example.com/article",
21 title: "Interesting Article",
22 description: "An article about TypeScript best practices."
23};
24
25const updateParams: UpdateFeedPostParams = {
26 content: "Updated post content with new media and link.",
27 media: [mediaItem],
28 link: link,
29 isPublic: true
30};
31
32const broadcastId: string = "broadcast_001";
33const sso: string = "sso_token_abc123";
34
35const response: CreateFeedPostResponse = await updateFeedPostPublic(
36 tenantId,
37 postId,
38 updateParams,
39 broadcastId,
40 sso
41);
42

flagCommentPublic Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

flagCommentPublic Пример
Copy Copy
1
2const tenantId: string = "tenant_42";
3const commentId: string = "comment_1001";
4const isFlagged: boolean = true;
5const sso: string = "sso_user_5678";
6
7const resultWithSso: APIEmptyResponse = await flagCommentPublic(tenantId, commentId, isFlagged, sso);
8const resultWithoutSso: APIEmptyResponse = await flagCommentPublic(tenantId, commentId, false);
9

getGifLarge Internal Link

Параметри

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

Одговор

Враћа: GifGetLargeResponse

Пример

getGifLarge Primer
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
4 const largeInternalURLSanitized: string = "https://cdn.fastcomments.com/gifs/large/abc123.gif";
5 const response: GifGetLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6 console.log(response);
7}
8

getGifsSearch Internal Link

Параметри

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

Одговор

Враћа: GetGifsSearchResponse

Пример

Primer getGifsSearch
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9876";
4 const search: string = "celebration fireworks";
5 const locale: string = "fr-FR";
6 const rating: string = "g";
7 const page: number = 1;
8
9 const fullResult: GetGifsSearchResponse = await getGifsSearch(tenantId, search, locale, rating, page);
10 const minimalResult: GetGifsSearchResponse = await getGifsSearch(tenantId, "dog memes");
11}
12
13runExample();
14

getGifsTrending Internal Link

Параметри

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

Одговор

Враћа: GetGifsTrendingResponse

Пример

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 // Користећи само потребан параметар
12 const trendingMinimal: GetGifsTrendingResponse = await getGifsTrending(tenantId);
13 console.log(trendingMinimal);
14}
15
16runExample();
17

addHashTag Internal Link

Параметри

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

Одговор

Враћа: CreateHashTagResponse

Пример

addHashTag Пример
Copy Copy
1
2const tenantId: string = "c3f5e8b2-9d4a-4f6a-8b2c-1a2b3c4d5e6f";
3
4const tagPayload: CreateHashTagBody = {
5 tag: "typescript",
6 description: "Discussions about TypeScript"
7};
8
9const responseWithBody: CreateHashTagResponse = await addHashTag(tenantId, tagPayload);
10const responseWithoutBody: CreateHashTagResponse = await addHashTag(tenantId);
11

addHashTagsBulk Internal Link

Параметри

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

Одговор

Враћа: BulkCreateHashTagsResponse

Пример

addHashTagsBulk Пример
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const tags: BulkCreateHashTagsBodyTagsInner[] = [
5 { name: "typescript", color: "#3178c6" },
6 { name: "fastcomments", color: "#ff6600" }
7];
8
9const bulkBody: BulkCreateHashTagsBody = { tags };
10
11const resultWithBody: BulkCreateHashTagsResponse = await addHashTagsBulk(tenantId, bulkBody);
12
13const resultWithoutBody: BulkCreateHashTagsResponse = await addHashTagsBulk(tenantId);
14

deleteHashTag Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteHashTag Пример
Copy Copy
1
2const tenantId: string = "tenant_42";
3const tag: string = "high-priority";
4
5const requestBody: DeleteHashTagRequestBody = {
6 // попуни поља по потреби
7};
8
9const resultWithBody: APIEmptyResponse = await deleteHashTag(tenantId, tag, requestBody);
10const resultWithoutBody: APIEmptyResponse = await deleteHashTag(tenantId, tag);
11

getHashTags Internal Link

Параметри

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

Одговор

Враћа: GetHashTagsResponse

Пример

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

patchHashTag Internal Link

Параметри

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

Одговор

Враћа: UpdateHashTagResponse

Пример

patchHashTag Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const tag: string = "news";
5
6 // Позив без опционо тело
7 const responseWithoutBody: UpdateHashTagResponse = await patchHashTag(tenantId, tag);
8
9 // Припрема тела за ажурирање
10 const updateBody: UpdateHashTagBody = {
11 name: "Latest News",
12 description: "Tag for the most recent news articles"
13 };
14
15 const responseWithBody: UpdateHashTagResponse = await patchHashTag(tenantId, tag, updateBody);
16})();
17

getMe Internal Link

Идентификује кориснички акредитив у употреби: tenant којем припада и, за OAuth токене, корисника који га је ауторизовао.
Интеграције користе ово за тестирање везе и означавање.

Parameters

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

Response

Враћа: GetMeResponse

Пример

Пример getMe
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant";
4 const me: GetMeResponse = await getMe(tenantId);
5 const authType: MeAuthType = me.auth.type;
6 const scopes: OAuthScope[] = me.auth.scopes ?? [];
7 const status: APIStatus = me.status;
8})();
9

deleteModerationVote Internal Link

Параметри

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

Одговор

Враћа: VoteDeleteResponse

Пример

deleteModerationVote Пример
Copy Copy
1
2async function runDeleteModerationVote(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6a";
4 const commentId: string = "comment_4d3e2f1a";
5 const voteId: string = "vote_12345abcde";
6 const broadcastId: string | undefined = "broadcast_2023_09_15";
7 const sso: string | undefined = "sso_user_7890token";
8
9 const result: VoteDeleteResponse = await deleteModerationVote(
10 tenantId,
11 commentId,
12 voteId,
13 broadcastId,
14 sso
15 );
16
17 console.log(result);
18}
19

getApiComments Internal Link

Параметри

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

Одговор

Враћа: ModerationAPIGetCommentsResponse

Пример

getApiComments Пример
Copy Copy
1
2async function fetchComments(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const page: number = 2;
5 const count: number = 20;
6 const textSearch: string = "typescript";
7 const byIPFromComment: string = "192.168.1.100";
8 const filters: string = "spam,offensive";
9 const searchFilters: string = "user:john";
10 const sorts: string = "date_desc";
11 const demo: boolean = true;
12 const sso: string = "sso_token_abc";
13
14 const response: ModerationAPIGetCommentsResponse = await getApiComments(
15 tenantId,
16 page,
17 count,
18 textSearch,
19 byIPFromComment,
20 filters,
21 searchFilters,
22 sorts,
23 demo,
24 sso
25 );
26}
27
28fetchComments();
29

getApiExportStatus Internal Link

Параметри

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

Одговор

Враћа: ModerationExportStatusResponse

Пример

Primer getApiExportStatus
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_12345";
4 const batchJobId: string = "job_98765";
5 const ssoToken: string = "sso_abcde12345";
6
7 const statusOnlyTenant: ModerationExportStatusResponse = await getApiExportStatus(tenantId);
8 const statusWithBatch: ModerationExportStatusResponse = await getApiExportStatus(tenantId, batchJobId);
9 const statusFull: ModerationExportStatusResponse = await getApiExportStatus(tenantId, batchJobId, ssoToken);
10}
11run();
12

getApiIds Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
textSearchstringНе
byIPFromCommentstringНе
filtersstringНе
searchFiltersstringНе
afterIdstringНе
demobooleanНе
ssostringНе

Одговор

Враћа: ModerationAPIGetCommentIdsResponse

Пример

Primer getApiIds
Copy Copy
1
2async function run(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const textSearch: string = "offensive language";
5 const byIPFromComment: string = "203.0.113.45";
6 const filters: string = "status:unmoderated";
7 const searchFilters: string = "author:alice";
8 const afterId: string = "cmt_00123";
9 const demo: boolean = true;
10 const sso: string = "sso_9f8e7d6c";
11
12 const fullResult: ModerationAPIGetCommentIdsResponse = await getApiIds(
13 tenantId,
14 textSearch,
15 byIPFromComment,
16 filters,
17 searchFilters,
18 afterId,
19 demo,
20 sso
21 );
22
23 const minimalResult: ModerationAPIGetCommentIdsResponse = await getApiIds(tenantId);
24}
25

getBanUsersFromComment Internal Link

Параметри

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

Одговор

Враћа: GetBannedUsersFromCommentResponse

Пример

Primer getBanUsersFromComment
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c";
3const commentId: string = "comment_a1b2c3";
4const ssoToken: string = "sso_abc123";
5
6const bannedUsers: GetBannedUsersFromCommentResponse = await getBanUsersFromComment(tenantId, commentId, ssoToken);
7const bannedUsersNoSso: GetBannedUsersFromCommentResponse = await getBanUsersFromComment(tenantId, commentId);
8

getCommentBanStatus Internal Link

Параметри

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

Одговор

Враћа: GetCommentBanStatusResponse

Пример

Пример getCommentBanStatus
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_987654";
5 const ssoToken: string = "sso_user_abc";
6
7 const statusWithSso: GetCommentBanStatusResponse = await getCommentBanStatus(tenantId, commentId, ssoToken);
8 const statusWithoutSso: GetCommentBanStatusResponse = await getCommentBanStatus(tenantId, commentId);
9})();
10

getCommentChildren Internal Link

Параметри

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

Одговор

Враћа: ModerationAPIChildCommentsResponse

Пример

Primer getCommentChildren
Copy Copy
1
2async function fetchChildren() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const ssoToken: string = "sso_user_abc123";
6
7 const responseWithSSO: ModerationAPIChildCommentsResponse = await getCommentChildren(tenantId, commentId, ssoToken);
8 const responseWithoutSSO: ModerationAPIChildCommentsResponse = await getCommentChildren(tenantId, commentId);
9}
10
11fetchChildren();
12

getCount Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
textSearchstringNo
byIPFromCommentstringNo
filterstringNo
searchFiltersstringNo
demobooleanNo
ssostringNo

Одговор

Враћа: ModerationAPICountCommentsResponse

Пример

Пример getCount
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const basicCount: ModerationAPICountCommentsResponse = await getCount(tenantId);
5
6const detailedCount: ModerationAPICountCommentsResponse = await getCount(
7 tenantId,
8 "spam",
9 "192.168.1.100",
10 "status:pending",
11 "user:john",
12 true,
13 "sso_token_abc"
14);
15

getCounts Internal Link

Параметри

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

Одговор

Враћа: GetBannedUsersCountResponse

Пример

Пример getCounts
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_9876";
4 const ssoToken: string = "sso_user_42";
5
6 const resultWithOnlyTenant: GetBannedUsersCountResponse = await getCounts(tenantId);
7 const resultWithBoth: GetBannedUsersCountResponse = await getCounts(tenantId, ssoToken);
8}
9
10run();
11

getLogs Internal Link

Параметри

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

Одговор

Враћа: ModerationAPIGetLogsResponse

Пример

Пример getLogs
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const commentId: string = "cmt_4567890";
5 const ssoToken: string = "sso_abcdef123456";
6
7 const logsWithSso: ModerationAPIGetLogsResponse = await getLogs(tenantId, commentId, ssoToken);
8 const logsWithoutSso: ModerationAPIGetLogsResponse = await getLogs(tenantId, commentId);
9})();
10

getManualBadges Internal Link

Параметри

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

Одговор

Враћа: GetTenantManualBadgesResponse

Пример

getManualBadges Пример
Copy Copy
1
2async function fetchBadges() {
3 const tenantId: string = "tenant-987654321";
4 const ssoToken: string = "sso-token-abc123";
5
6 const badgesWithSso: GetTenantManualBadgesResponse = await getManualBadges(tenantId, ssoToken);
7 const badgesWithoutSso: GetTenantManualBadgesResponse = await getManualBadges(tenantId);
8}
9

getManualBadgesForUser Internal Link

Параметри

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

Одговор

Враћа: GetUserManualBadgesResponse

Пример

Пример getManualBadgesForUser
Copy Copy
1
2async () => {
3 const tenantId: string = "tenant_12345";
4 const badgesUserId: string | undefined = "user_98765";
5 const commentId: string | undefined = "comment_abcde";
6 const sso: string | undefined = "sso_token_xyz";
7
8 const basicResponse: GetUserManualBadgesResponse = await getManualBadgesForUser(tenantId);
9 const fullResponse: GetUserManualBadgesResponse = await getManualBadgesForUser(
10 tenantId,
11 badgesUserId,
12 commentId,
13 sso
14 );
15
16 console.log(basicResponse, fullResponse);
17}();
18

getModerationComment Internal Link


Параметри

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

Одговор

Враћа: ModerationAPICommentResponse

Пример

getModerationComment Пример
Copy Copy
1
2async function fetchComments() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5
6 // Позив са само обавезним параметрима
7 const basicResponse: ModerationAPICommentResponse = await getModerationComment(tenantId, commentId);
8
9 // Позив са опционама параметрима
10 const includeEmail: boolean = true;
11 const includeIP: boolean = false;
12 const sso: string = "sso-token-abc123";
13 const detailedResponse: ModerationAPICommentResponse = await getModerationComment(
14 tenantId,
15 commentId,
16 includeEmail,
17 includeIP,
18 sso
19 );
20}
21

getModerationCommentText Internal Link

Параметри

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

Одговор

Враћа: GetCommentTextResponse

Пример

Пример getModerationCommentText
Copy Copy
1
2async function fetchComment() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const ssoToken: string = "sso_abcde12345";
6
7 const commentWithoutSso: GetCommentTextResponse = await getModerationCommentText(tenantId, commentId);
8 const commentWithSso: GetCommentTextResponse = await getModerationCommentText(tenantId, commentId, ssoToken);
9}
10
11fetchComment();
12

getPreBanSummary Internal Link

Параметри

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

Одговор

Враћа: PreBanSummary

Пример

Primer getPreBanSummary
Copy Copy
1
2async function fetchSummary(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const includeByUserIdAndEmail: boolean = true;
6 const includeByIP: boolean = false;
7 const includeByEmailDomain: boolean = true;
8 const sso: string = "sso_token_abc";
9
10 const summary: PreBanSummary = await getPreBanSummary(
11 tenantId,
12 commentId,
13 includeByUserIdAndEmail,
14 includeByIP,
15 includeByEmailDomain,
16 sso
17 );
18
19 console.log(summary);
20}
21
22fetchSummary();
23

getSearchCommentsSummary Internal Link

Параметри

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

Одговор

Враћа: ModerationCommentSearchResponse

Пример

getSearchCommentsSummary Пример
Copy Copy
1
2async function runSearch() {
3 const tenantId: string = "tenant_12345";
4 const value: string = "spam";
5 const filters: string = "status:pending";
6 const searchFilters: string = "author:john";
7 const sso: string = "sso_token_abc";
8
9 const result: ModerationCommentSearchResponse = await getSearchCommentsSummary(
10 tenantId,
11 value,
12 filters,
13 searchFilters,
14 sso
15 );
16
17 console.log(result);
18}
19
20runSearch();
21

getSearchPages Internal Link

Параметри

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

Одговор

Враћа: ModerationPageSearchResponse

Пример

Пример getSearchPages
Copy Copy
1
2const tenantId: string = "acme-corp-123";
3const searchValue: string = "spam";
4const ssoToken: string = "sso-abc123def456";
5
6const result1: ModerationPageSearchResponse = await getSearchPages(tenantId);
7const result2: ModerationPageSearchResponse = await getSearchPages(tenantId, searchValue);
8const result3: ModerationPageSearchResponse = await getSearchPages(tenantId, searchValue, ssoToken);
9

getSearchSites Internal Link

Параметри

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

Одговор

Враћа: ModerationSiteSearchResponse

Пример

Пример getSearchSites
Copy Copy
1
2async function runSearches(): Promise<void> {
3 const tenantId: string = "tenant-987654";
4 const query: string = "offensive content";
5 const ssoToken: string = "sso-token-xyz";
6
7 const fullResult: ModerationSiteSearchResponse = await getSearchSites(tenantId, query, ssoToken);
8 const minimalResult: ModerationSiteSearchResponse = await getSearchSites(tenantId);
9}
10
11runSearches();
12

getSearchSuggest Internal Link

Параметри

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

Одговор

Враћа: ModerationSuggestResponse

Пример

getSearchSuggest Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const textSearch: string = "harassment";
5 const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
6 const suggestResponse: ModerationSuggestResponse = await getSearchSuggest(tenantId, textSearch, sso);
7 const minimalResponse: ModerationSuggestResponse = await getSearchSuggest(tenantId);
8})();
9

getSearchUsers Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
valuestringNo
ssostringNo

Одговор

Враћа: ModerationUserSearchResponse

Пример

Primer getSearchUsers
Copy Copy
1
2async function runSearch() {
3 const tenantId: string = "tenant-9876";
4 const emailFragment: string = "jane";
5 const ssoToken: string = "sso-token-456";
6
7 const resultWithAll: ModerationUserSearchResponse = await getSearchUsers(tenantId, emailFragment, ssoToken);
8 const resultWithTenantOnly: ModerationUserSearchResponse = await getSearchUsers(tenantId);
9}
10

getTrustFactor Internal Link

Параметри

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

Одговор

Враћа: GetUserTrustFactorResponse

Пример

Primer getTrustFactor
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_98765";
5 const sso: string = "sso_token_abcde";
6
7 const trustFactor: GetUserTrustFactorResponse = await getTrustFactor(tenantId);
8 const trustFactorWithUser: GetUserTrustFactorResponse = await getTrustFactor(tenantId, userId);
9 const trustFactorFull: GetUserTrustFactorResponse = await getTrustFactor(tenantId, userId, sso);
10}
11

getUserBanPreference Internal Link

Параметри

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

Одговор

Враћа: APIModerateGetUserBanPreferencesResponse

Пример

getUserBanPreference Пример
Copy Copy
1
2async function demoGetUserBanPreference() {
3 const tenantId: string = "tenant_987654321";
4 const ssoToken: string = "sso_user_abc123xyz";
5
6 const responseWithSso: APIModerateGetUserBanPreferencesResponse = await getUserBanPreference(tenantId, ssoToken);
7 const responseWithoutSso: APIModerateGetUserBanPreferencesResponse = await getUserBanPreference(tenantId);
8}
9

getUserInternalProfile Internal Link

Параметри

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

Одговор

Враћа: GetUserInternalProfileResponse

Пример

Пример getUserInternalProfile
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_9876";
5 const ssoToken: string = "sso_abcde12345";
6
7 const profileOnly: GetUserInternalProfileResponse = await getUserInternalProfile(tenantId);
8 const profileWithComment: GetUserInternalProfileResponse = await getUserInternalProfile(tenantId, commentId);
9 const fullProfile: GetUserInternalProfileResponse = await getUserInternalProfile(tenantId, commentId, ssoToken);
10}
11
12demo();
13

postAdjustCommentVotes Internal Link

Параметри

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

Одговор

Враћа: AdjustVotesResponse

Пример

postAdjustCommentVotes Primer
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_987654321";
4const adjustParams: AdjustCommentVotesParams = { voteDelta: 1 };
5const broadcastId: string = "brd_112233";
6const sso: string = "sso-token-xyz";
7
8const result: AdjustVotesResponse = await postAdjustCommentVotes(
9 tenantId,
10 commentId,
11 adjustParams,
12 broadcastId,
13 sso
14);
15

postApiExport Internal Link

Параметри

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

Одговор

Враћа: ModerationExportResponse

Пример

postApiExport Пример
Copy Copy
1
2async function runExport() {
3 const tenantId: string = "c9f1e2b4-8a6d-4f3a-9d2e-5b6c7d8e9f0a";
4 const textSearch: string = "spam";
5 const byIPFromComment: string = "203.0.113.45";
6 const filters: string = "status:pending";
7 const searchFilters: string = "createdAt>2023-01-01";
8 const sorts: string = "createdAt:desc";
9 const sso: string = "sso-token-abc123";
10
11 const fullExport: ModerationExportResponse = await postApiExport(
12 tenantId,
13 textSearch,
14 byIPFromComment,
15 filters,
16 searchFilters,
17 sorts,
18 sso
19 );
20
21 const minimalExport: ModerationExportResponse = await postApiExport(tenantId);
22
23 console.log(fullExport, minimalExport);
24}
25runExport();
26

postBanUserFromComment Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
commentIdstringYes
banEmailbooleanNo
banEmailDomainbooleanNo
banIPbooleanNo
deleteAllUsersCommentsbooleanNo
bannedUntilstringNo
isShadowBanbooleanNo
updateIdstringNo
banReasonstringNo
ssostringNo

Одговор

Враћа: BanUserFromCommentResult

Пример

postBanUserFromComment Пример
Copy Copy
1
2async function banUserExample(): Promise<void> {
3 const result: BanUserFromCommentResult = await postBanUserFromComment(
4 "tenant_42",
5 "comment_1001",
6 true, // забрана е‑поште
7 undefined, // banEmailDomain (изостављено)
8 true, // забрана IP‑а
9 false, // брисање свих коментара корисника
10 "2025-01-01T00:00:00Z", // забрањено до
11 true, // је сенчана забрана
12 undefined, // updateId (изостављено)
13 "Harassment", // разлог забране
14 undefined // sso (изостављено)
15 );
16
17 console.log(result);
18}
19

postBanUserUndo Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

postBanUserUndo Primer
Copy Copy
1
2const tenantId: string = "tenant_9876";
3
4const undoParams: BanUserUndoParams = {
5 userId: "user_12345",
6 // могу се додати додатна обавезна поља овде
7};
8
9const resultWithoutSSO: APIEmptyResponse = await postBanUserUndo(tenantId, undoParams);
10
11const ssoToken: string = "sso_abcdef123456";
12
13const resultWithSSO: APIEmptyResponse = await postBanUserUndo(tenantId, undoParams, ssoToken);
14

postBulkPreBanSummary Internal Link

Параметри

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

Одговор

Враћа: BulkPreBanSummary

Пример

postBulkPreBanSummary Пример
Copy Copy
1
2const tenantId: string = "c1f2e3d4-5678-90ab-cdef-1234567890ab";
3
4const bulkPreBanParams: BulkPreBanParams = {
5 userIds: ["user123"],
6 emails: ["spam@example.com"],
7 ips: ["192.0.2.1"],
8 emailDomains: ["example.com"]
9};
10
11const includeByUserIdAndEmail: boolean = true;
12const includeByIP: boolean = false;
13const includeByEmailDomain: boolean = true;
14const sso: string = "sso-token-abc123";
15
16const summary: BulkPreBanSummary = await postBulkPreBanSummary(
17 tenantId,
18 bulkPreBanParams,
19 includeByUserIdAndEmail,
20 includeByIP,
21 includeByEmailDomain,
22 sso
23);
24

postCommentsByIds Internal Link

Параметри

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

Одговор

Враћа: ModerationAPIChildCommentsResponse

Пример

postCommentsByIds Пример
Copy Copy
1
2const tenantId: string = 'tenant-9f8b7c6d-1234-5678-90ab-cdef12345678';
3const commentsByIdsParams: CommentsByIdsParams = {
4 commentIds: ['comment-1', 'comment-2'],
5 includeUserBadges: true
6};
7const responseWithoutSso: ModerationAPIChildCommentsResponse = await postCommentsByIds(tenantId, commentsByIdsParams);
8const sso: string = 'sso-abc123def456';
9const responseWithSso: ModerationAPIChildCommentsResponse = await postCommentsByIds(tenantId, commentsByIdsParams, sso);
10

postFlagComment Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

postFlagComment Пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5
6 // Само потребни параметри
7 const result1: APIEmptyResponse = await postFlagComment(tenantId, commentId);
8
9 // Укључујући опционо параметре
10 const broadcastId: string = "brd_54321";
11 const sso: string = "user@example.com";
12 const result2: APIEmptyResponse = await postFlagComment(tenantId, commentId, broadcastId, sso);
13
14 console.log(result1, result2);
15}
16runExample();
17

postRemoveComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringNo
ssostringNo

Одговор

Враћа: PostRemoveCommentApiResponse

Пример

postRemoveComment Пример
Copy Copy
1
2async function removeCommentExample() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_555";
6 const sso: string = "sso_token_abc";
7
8 const response: PostRemoveCommentApiResponse = await postRemoveComment(
9 tenantId,
10 commentId,
11 broadcastId,
12 sso
13 );
14 console.log(response);
15}
16
17removeCommentExample();
18

postRestoreDeletedComment Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

postRestoreDeletedComment Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4
5const resultRequired: APIEmptyResponse = await postRestoreDeletedComment(tenantId, commentId);
6
7const broadcastId: string = "brd_001";
8const sso: string = "sso_token_abc123";
9
10const resultAll: APIEmptyResponse = await postRestoreDeletedComment(
11 tenantId,
12 commentId,
13 broadcastId,
14 sso
15);
16

postSetCommentApprovalStatus Internal Link

Параметри

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

Одговор

Враћа: SetCommentApprovedResponse

Пример

postSetCommentApprovalStatus Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_001";
4 const commentId: string = "comment_123";
5 const approved: boolean = false;
6 const broadcastId: string = "broadcast_456";
7 const sso: string = "sso_789";
8
9 const result: SetCommentApprovedResponse = await postSetCommentApprovalStatus(
10 tenantId,
11 commentId,
12 approved,
13 broadcastId,
14 sso
15 );
16
17 const minimalResult: SetCommentApprovedResponse = await postSetCommentApprovalStatus(
18 tenantId,
19 commentId
20 );
21})();
22

postSetCommentReviewStatus Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

postSetCommentReviewStatus Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4const reviewed: boolean = true;
5const broadcastId: string = "brd_001";
6const sso: string = "sso_token_abc";
7
8const result: APIEmptyResponse = await postSetCommentReviewStatus(
9 tenantId,
10 commentId,
11 reviewed,
12 broadcastId,
13 sso
14);
15

postSetCommentSpamStatus Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

postSetCommentSpamStatus Пример
Copy Copy
1
2const tenantId: string = "tenant_42";
3const commentId: string = "comment_1001";
4
5const spam: boolean = true;
6const permNotSpam: boolean = false;
7const broadcastId: string = "broadcast_2023";
8const sso: string = "sso_user_5678";
9
10const resultFull: APIEmptyResponse = await postSetCommentSpamStatus(
11 tenantId,
12 commentId,
13 spam,
14 permNotSpam,
15 broadcastId,
16 sso
17);
18
19const resultMinimal: APIEmptyResponse = await postSetCommentSpamStatus(
20 tenantId,
21 commentId
22);
23

postSetCommentText Internal Link

Параметри

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

Одговор

Returns: SetCommentTextResponse

Пример

postSetCommentText Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_9876";
4const setCommentTextParams: SetCommentTextParams = {
5 text: "Revised comment after user edit.",
6 format: "plain"
7};
8const broadcastId: string = "broadcast_2023_09";
9
10const response: SetCommentTextResponse = await postSetCommentText(
11 tenantId,
12 commentId,
13 setCommentTextParams,
14 broadcastId
15);
16
17console.log(response);
18

postUnFlagComment Internal Link


Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

postUnFlagComment Пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "comment_98765";
5 const broadcastId: string = "broadcast_55555";
6 const sso: string = "sso_token_abcde";
7
8 const result1: APIEmptyResponse = await postUnFlagComment(tenantId, commentId);
9 const result2: APIEmptyResponse = await postUnFlagComment(tenantId, commentId, broadcastId, sso);
10}
11
12runExample();
13

postVote Internal Link


Параметри

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

Одговор

Враћа: VoteResponse

Пример

postVote Пример
Copy Copy
1
2async function runVoteExamples(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5
6 // Позив са само обавезним параметрима
7 const simpleVote: VoteResponse = await postVote(tenantId, commentId);
8
9 // Позив са опционама параметрима
10 const direction: string = "down";
11 const broadcastId: string = "brd_987654321";
12 const sso: string = "user-42";
13 const detailedVote: VoteResponse = await postVote(tenantId, commentId, direction, broadcastId, sso);
14
15 console.log(simpleVote, detailedVote);
16}
17

putAwardBadge Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
badgeIdstringYes
userIdstringNo
commentIdstringNo
broadcastIdstringNo
ssostringNo

Одговор

Returns: AwardUserBadgeResponse

Пример

putAwardBadge Пример
Copy Copy
1
2async function awardBadgeExample(): Promise<void> {
3 const tenantId: string = "tenant_42";
4 const badgeId: string = "badge_superstar";
5 const userId: string = "user_1001";
6 const commentId: string = "comment_2023";
7
8 const result: AwardUserBadgeResponse = await putAwardBadge(
9 tenantId,
10 badgeId,
11 userId,
12 commentId
13 );
14
15 console.log(result);
16}
17

putCloseThread Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

putCloseThread Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "my-company";
4 const urlId: string = "post-2023-09-15";
5 const ssoToken: string = "sso-abc123def";
6
7 const resultWithSso: APIEmptyResponse = await putCloseThread(tenantId, urlId, ssoToken);
8 const resultWithoutSso: APIEmptyResponse = await putCloseThread(tenantId, urlId);
9})();
10

putRemoveBadge Internal Link

Параметри

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

Одговор

Враћа: RemoveUserBadgeResponse

Пример

putRemoveBadge Пример
Copy Copy
1
2async function demoRemoveBadge() {
3 const tenantId: string = "tenant_42";
4 const badgeId: string = "badge_gold";
5 const userId: string = "user_1001";
6 const commentId: string = "comment_20230915";
7 const broadcastId: string = "broadcast_live_01";
8 const sso: string = "sso_abcdef123456";
9
10 const result: RemoveUserBadgeResponse = await putRemoveBadge(
11 tenantId,
12 badgeId,
13 userId,
14 commentId,
15 broadcastId,
16 sso
17 );
18
19 console.log(result);
20}
21

putReopenThread Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

putReopenThread пример
Copy Copy
1
2async function reopenThreadExample() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "post-9876";
5 const sso: string = "user-abc123";
6
7 const responseWithoutSso: APIEmptyResponse = await putReopenThread(tenantId, urlId);
8 const responseWithSso: APIEmptyResponse = await putReopenThread(tenantId, urlId, sso);
9}
10
11reopenThreadExample();
12

setTrustFactor Internal Link

Параметри

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

Одговор

Враћа: SetUserTrustFactorResponse

Пример

Пример setTrustFactor
Copy Copy
1
2async function demoSetTrustFactor() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-9876";
5 const trustFactor: string = "high";
6 const sso: string = "sso-token-xyz";
7
8 const fullResponse: SetUserTrustFactorResponse = await setTrustFactor(
9 tenantId,
10 userId,
11 trustFactor,
12 sso
13 );
14
15 const minimalResponse: SetUserTrustFactorResponse = await setTrustFactor(tenantId);
16}
17

createModerator Internal Link

Параметри

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

Одговор

Враћа: CreateModeratorResponse

Пример

createModerator Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const moderatorPayload: CreateModeratorBody = {
5 userId: "user_9876",
6 // опционално поље; може се изоставити ако није потребно
7 notes: "Temporary moderator for event"
8};
9
10const response: CreateModeratorResponse = await createModerator(tenantId, moderatorPayload);
11

deleteModerator Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteModerator Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const moderatorId: string = "mod_9876";
5 const notifyEmail: string = "admin@company.com";
6
7 const resultWithEmail: APIEmptyResponse = await deleteModerator(tenantId, moderatorId, notifyEmail);
8 const resultWithoutEmail: APIEmptyResponse = await deleteModerator(tenantId, moderatorId);
9})();
10

getModerator Internal Link

Параметри

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

Одговор

Враћа: GetModeratorResponse

Пример

getModerator Пример
Copy Copy
1
2async function fetchModerator() {
3 const tenantId: string = "c9f1e2b3-4d5a-6f78-90ab-cdef12345678";
4 const moderatorId: string = "mod-987654";
5 const response: GetModeratorResponse = await getModerator(tenantId, moderatorId);
6 const isActive: boolean | undefined = response.moderator?.isActive;
7 const statusCode: number | undefined = response.status?.code;
8}
9

getModerators Internal Link

Параметри

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

Одговор

Враћа: GetModeratorsResponse

Пример

Primer getModerators
Copy Copy
1
2const tenantId: string = "tenant_987654321";
3
4const moderators: GetModeratorsResponse = await getModerators(tenantId);
5
6const skip: number = 20;
7const moreModerators: GetModeratorsResponse = await getModerators(tenantId, skip);
8

sendInvite Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

sendInvite Пример
Copy Copy
1
2const tenantId: string = "tenant-987654321";
3const id: string = "user-123456789";
4const fromName: string = "Alice Johnson";
5
6const result: APIEmptyResponse = await sendInvite(tenantId, id, fromName);
7console.log(result);
8

updateModerator Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateModerator пример
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3const moderatorId: string = "mod_12345";
4
5const updateBody: UpdateModeratorBody = {
6 isActive: true,
7 // role?: string је опционо и изостављено овде
8};
9
10const result: APIEmptyResponse = await updateModerator(tenantId, moderatorId, updateBody);
11

deleteNotificationCount Internal Link

Параметри

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

Одговор

Returns: APIEmptyResponse

Пример

Пример deleteNotificationCount
Copy Copy
1
2let tenantId: string = "tenant-42f9b8c1";
3let notificationId: string = "notif-7e3a9d4f";
4
5const result: APIEmptyResponse = await deleteNotificationCount(tenantId, notificationId);
6

getCachedNotificationCount Internal Link

Параметри

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

Одговор

Враћа: GetCachedNotificationCountResponse

Пример

Пример getCachedNotificationCount
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const id: string = "user_9876";
5 const response: GetCachedNotificationCountResponse = await getCachedNotificationCount(tenantId, id);
6})();
7

getNotificationCount Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Одговор

Враћа: GetNotificationCountResponse

Пример

Пример getNotificationCount
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-12345";
4const urlId: string = "https://app.example.com/dashboard";
5const fromCommentId: string = "cmt-9876";
6const viewed: boolean = false;
7const type: string = "reply";
8
9const notificationCount: GetNotificationCountResponse = await getNotificationCount(
10 tenantId,
11 userId,
12 urlId,
13 fromCommentId,
14 viewed,
15 type
16);
17

getNotifications Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Одговор

Враћа: GetNotificationsResponse

Пример

Primer getNotifications
Copy Copy
1
2async function fetchNotifications(): Promise<void> {
3 const tenantId: string = "tenant_42";
4 const userId: string = "user_1001";
5 const urlId: string = "url_2023";
6 const viewed: boolean = true;
7 const skip: number = 0;
8
9 const notifications: GetNotificationsResponse = await getNotifications(
10 tenantId,
11 userId,
12 urlId,
13 undefined,
14 viewed,
15 undefined,
16 skip
17 );
18
19 console.log(notifications);
20}
21

updateNotification Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

Пример updateNotification
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant-abc123";
4 const notificationId: string = "notif-9876";
5 const updateBody: UpdateNotificationBody = {
6 title: "System Maintenance",
7 message: "Scheduled maintenance at 02:00 UTC.",
8 enabled: true
9 };
10 const userId: string = "user-42";
11
12 const resultWithoutUser: APIEmptyResponse = await updateNotification(tenantId, notificationId, updateBody);
13 const resultWithUser: APIEmptyResponse = await updateNotification(tenantId, notificationId, updateBody, userId);
14}
15

createV1PageReact Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
titlestringNo
ssostringNo

Одговор

Returns: CreateV1PageReact

Пример

createV1PageReact Пример
Copy Copy
1
2const tenantId: string = "my-tenant-123";
3const urlId: string = "article-456";
4
5const pageTitle: string = "Understanding TypeScript Generics";
6const ssoToken: string = "user-789-token";
7
8const fullResult: CreateV1PageReact = await createV1PageReact(tenantId, urlId, pageTitle, ssoToken);
9const minimalResult: CreateV1PageReact = await createV1PageReact(tenantId, urlId);
10

createV2PageReact Internal Link

Параметри

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

Одговор

Враћа: CreateV1PageReact

Пример

createV2PageReact пример
Copy Copy
1
2async function run() {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "product-page-123";
5 const pageId: string = "page-456";
6 const pageTitle: string = "Product Overview";
7 const ssoToken: string = "jwt-token-abc123";
8
9 const pageFull: CreateV1PageReact = await createV2PageReact(tenantId, urlId, pageId, pageTitle, ssoToken);
10 const pageTitleOnly: CreateV1PageReact = await createV2PageReact(tenantId, urlId, pageId, pageTitle);
11 const pageMinimal: CreateV1PageReact = await createV2PageReact(tenantId, urlId, pageId);
12}
13run();
14

deleteV1PageReact Internal Link

Параметри

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

Одговор

Враћа: CreateV1PageReact

Пример

Пример deleteV1PageReact
Copy Copy
1
2async function runExamples() {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const urlId: string = "blog/post-2024-06-15";
5 const ssoToken: string = "sso_user_42";
6
7 const resultWithSso: CreateV1PageReact = await deleteV1PageReact(tenantId, urlId, ssoToken);
8 const resultWithoutSso: CreateV1PageReact = await deleteV1PageReact(tenantId, urlId);
9}
10

deleteV2PageReact Internal Link

Параметри

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

Одговор

Враћа: CreateV1PageReact

Пример

deleteV2PageReact Пример
Copy Copy
1
2async function runDeleteExamples() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "page_98765";
5 const commentId: string = "comment_abcde";
6
7 // Позив без опционо sso
8 const resultWithoutSso: CreateV1PageReact = await deleteV2PageReact(tenantId, urlId, commentId);
9
10 // Позив са опционо sso
11 const ssoToken: string = "sso_token_xyz";
12 const resultWithSso: CreateV1PageReact = await deleteV2PageReact(tenantId, urlId, commentId, ssoToken);
13}
14

getV1PageLikes Internal Link

Параметри

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

Одговор

Враћа: GetV1PageLikes

Пример

Пример getV1PageLikes
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "https://myblog.com/post/42";
5 const ssoToken: string = "sso_user_987";
6
7 const likesWithSSO: GetV1PageLikes = await getV1PageLikes(tenantId, urlId, ssoToken);
8 const likesWithoutSSO: GetV1PageLikes = await getV1PageLikes(tenantId, urlId);
9})();
10

getV2PageReacts Internal Link

Параметри

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

Одговор

Враћа: GetV2PageReacts

Пример

Primer getV2PageReacts
Copy Copy
1
2const tenantId: string = "tenant-42";
3const urlId: string = "article-9876";
4const ssoToken: string = "sso-abc123";
5
6const reactsWithSso: GetV2PageReacts = await getV2PageReacts(tenantId, urlId, ssoToken);
7const reactsWithoutSso: GetV2PageReacts = await getV2PageReacts(tenantId, urlId);
8

getV2PageReactUsers Internal Link

Параметри

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

Одговор

Враћа: GetV2PageReactUsersResponse

Пример

getV2PageReactUsers Пример
Copy Copy
1
2async function demoGetUsers() {
3 const tenantId: string = "d4e5f6a7-89ab-4cde-f012-3456789abcde";
4 const urlId: string = "blog/2024/06/fastcomments-typescript";
5 const userId: string = "user_123456789";
6 const ssoToken: string = "sso_token_abcdef123456";
7
8 const responseWithSso: GetV2PageReactUsersResponse = await getV2PageReactUsers(tenantId, urlId, userId, ssoToken);
9 const responseWithoutSso: GetV2PageReactUsersResponse = await getV2PageReactUsers(tenantId, urlId, userId);
10}
11

addPage Internal Link

Параметри

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

Одговор

Враћа: AddPageAPIResponse

Пример

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

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Одговор

Returns: DeletePageAPIResponse

Пример

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

Претходни коментатори на страници који НИСУ тренутно онлајн. Сортирано по displayName. Користите ово након што исцрпите /users/online да прикажете одељак “Members”. Курсорска пагинација на commenterName: сервер пролази парцијални {tenantId, urlId, commenterName} индекс од afterName напред помоћу $gt, без $skip трошка.

Параметри

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

Одговор

Враћа: PageUsersOfflineResponse

Пример

Пример getOfflineUsers
Copy Copy
1
2async function fetchOfflineUsers(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "page_9876";
5 const afterName: string = "John Doe";
6 const afterUserId: string = "user_abc123";
7
8 const offlineResponse: PageUsersOfflineResponse = await getOfflineUsers(
9 tenantId,
10 urlId,
11 afterName,
12 afterUserId
13 );
14
15 console.log(offlineResponse);
16}
17

getOnlineUsers Internal Link

Trenutno online gledatelji stranice: људи чија је websocket сесија тренутно претплаћена на страницу. Враћа anonCount + totalCount (претплатници у целој соби, укључујући анонимне гледаоце које не набрајамо).

Parametri

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

Odgovor

Враћа: PageUsersOnlineResponse

Primer

Primer getOnlineUsers
Copy Copy
1
2async function fetchOnlineUsers() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "article-9876";
5 const afterName: string | undefined = "john_doe";
6 const afterUserId: string | undefined = "user_456";
7
8 const onlineUsers: PageUsersOnlineResponse = await getOnlineUsers(
9 tenantId,
10 urlId,
11 afterName,
12 afterUserId
13 );
14
15 console.log(onlineUsers);
16}
17
18fetchOnlineUsers();
19

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

Параметри

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

Одговор

Враћа: GetPagesAPIResponse

Пример

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

Одговор

Враћа: GetPublicPagesResponse

Пример

Пример getPagesPublic
Copy Copy
1
2async function fetchPublicPages() {
3 const tenantId: string = "tenant_12345";
4 const cursor: string = "page_5";
5 const limit: number = 20;
6 const query: string = "support";
7 const hasComments: boolean = true;
8
9 const response: GetPublicPagesResponse = await getPagesPublic(
10 tenantId,
11 cursor,
12 limit,
13 query,
14 undefined,
15 hasComments
16 );
17
18 console.log(response);
19}
20

getUsersInfo Internal Link

Груписани подаци о корисницима за закупца. Дати userIds, враћају се подаци за приказ из User / SSOUser.
Користи се у виџету за коментаре да обогати кориснике који су управо појавили путем догађаја присутности.
Нема контекст странице: приватност се примењује уједначено (приватни профили су маскирани).

Параметри

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

Одговор

Враћа: PageUsersInfoResponse

Пример

Пример getUsersInfo
Copy Copy
1
2async function fetchUsersInfo(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const ids: string = "user_001,user_002";
5 const response: PageUsersInfoResponse = await getUsersInfo(tenantId, ids);
6 console.log(response);
7}
8fetchUsersInfo();
9

patchPage Internal Link

Параметри

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

Одговор

Враћа: PatchPageAPIResponse

Пример

patchPage пример
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 може бити изостављен
9 };
10
11 const response: PatchPageAPIResponse = await patchPage(tenantId, pageId, updateData);
12})();
13

deletePendingWebhookEvent Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deletePendingWebhookEvent Primer
Copy Copy
1
2async function runDeletion() {
3 const tenantId: string = "tenant-42f7b9c2";
4 const eventId: string = "webhook-event-8a7d6c5b";
5 const result: APIEmptyResponse = await deletePendingWebhookEvent(tenantId, eventId);
6 console.log(result);
7}
8

getPendingWebhookEventCount Internal Link

Параметри

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

Одговор

Враћа: GetPendingWebhookEventCountResponse

Пример

getPendingWebhookEventCount пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_42";
4 const commentId: string = "comment_1001";
5 const eventType: string = "comment.deleted";
6 const domain: string = "myblog.com";
7
8 const result: GetPendingWebhookEventCountResponse = await getPendingWebhookEventCount(
9 tenantId,
10 commentId,
11 undefined,
12 eventType,
13 undefined,
14 domain
15 );
16
17 console.log(result);
18}
19
20runExample();
21

getPendingWebhookEvents Internal Link

Параметри

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

Одговор

Враћа: GetPendingWebhookEventsResponse

Пример

Пример getPendingWebhookEvents
Copy Copy
1
2const tenantId: string = "123e4567-e89b-12d3-a456-426614174000";
3const commentId: string = "cmt_987654321";
4const externalId: string = "ext_abc123";
5const eventType: string = "comment_created";
6const type: string = "outbound";
7const domain: string = "myblog.com";
8const attemptCountGT: number = 2;
9const skip: number = 10;
10
11const pendingEvents: GetPendingWebhookEventsResponse = await getPendingWebhookEvents(
12 tenantId,
13 commentId,
14 externalId,
15 eventType,
16 type,
17 domain,
18 attemptCountGT,
19 skip
20);
21

createPollVote Internal Link

Запишите глас у анкети, или преместите постојећи глас на другу опцију. Гласач може имати највише један глас по анкети, тако да поновним позивом за истог гласача премешта се њихов глас уместо да се дода нови.

Ово поштује подешавања анкете на сајту: ако је гласање омогућено само пријављеним корисницима, глас са само anonUserId се одбија, а анонимни гласови су ограничени по брзини по IP по анкети.

Параметри

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

Одговор

Враћа: CreatePollVoteResponse

Пример

createPollVote Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant";
4
5 const vote: CreatePollVoteBody = {
6 pollId: "poll-2024-09",
7 optionId: "option-A"
8 // userId је опционо и изостављено овде
9 };
10
11 const result: CreatePollVoteResponse = await createPollVote(tenantId, vote);
12 console.log(result);
13})();
14

deletePollVote Internal Link

Повуците глас. Опција на коју је глас дат враћа свој бројач.

Параметри

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

Одговор

Враћа: DeletePollVoteResponse

Пример

Пример deletePollVote
Copy Copy
1
2async function runDeletePollVoteExample(): Promise<void> {
3 const tenantId: string = "tenant_42abc";
4 const pollId: string = "poll_7f9e2d";
5
6 const result: DeletePollVoteResponse = await deletePollVote(tenantId, pollId);
7
8 console.log(result);
9}
10

getPollVote Internal Link

Параметри

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

Одговор

Враћа: GetPollVoteResponse

Пример

getPollVote Пример
Copy Copy
1
2async function fetchPollVote(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant";
4 const pollId: string = "poll-2024-05";
5 const result: GetPollVoteResponse = await getPollVote(tenantId, pollId);
6 const status: APIStatus = result.status;
7 const vote: PublicPollVote | undefined = result.vote;
8}
9

getPollVotes Internal Link

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

Анкета припада коментару, тако да се гласови увек читају по једној анкети – потребан је commentId. То одржава сваки упит на индексима које колекција већ има.

Поштује приватност анкете: гласови анонимне анкете не могу да се читају (poll-anonymous), ни овде ни по ID-у.

Параметри

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

Одговор

Враћа: GetPollVotesResponse

Пример

Пример getPollVotes
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4const voterId: string = "user_abc";
5const optionId: string = "opt_1";
6const skip: number = 20;
7
8const pollResult: GetPollVotesResponse = await getPollVotes(
9 tenantId,
10 commentId,
11 voterId,
12 optionId,
13 skip
14);
15
16console.log(pollResult);
17

deletePoll Internal Link

Уклоните анкету из њеног коментара, заједно са свим гласовима датим за њу. Сам коментар остаје нетакнут.

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deletePoll Пример
Copy Copy
1
2async function runDeletePoll(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const commentId: string = "comment_a1b2c3d4";
5 const result: APIEmptyResponse = await deletePoll(tenantId, commentId);
6 console.log(result);
7}
8

getPoll Internal Link


Параметри

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

Одговор

Враћа: GetPollResponse

Пример

getPoll пример
Copy Copy
1
2const tenantId: string = "c9f1e2b4-8a3d-4f6a-9d2e-7b5c1a2f3e4d";
3const commentId: string = "a1b2c3d4e5f6g7h8i9j0";
4
5const pollResponse: GetPollResponse = await getPoll(tenantId, commentId);
6
7const poll: CommentPoll | undefined = pollResponse.poll;
8const privacy: PollPrivacy | undefined = poll?.privacy;
9const options: CommentPollOption[] | undefined = poll?.options;
10

patchPoll Internal Link

Уреди анкету на месту, задржавајући њене резултате: промени питање, преименуј опцију, затвори или поново отвори, или промени ко може да види гласаче. Опције се адресирају по id – за додавање, уклањање или промену редоследа, PUT пуну листу.

Параметри

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

Одговор

Враћа: SavePollResponse

Пример

patchPoll Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_9876543210";
5
6 const pollPatch: CommentPollPatch = {
7 question: "Which new feature would you like to see?",
8 options: [
9 { id: "opt-1", label: "Dark Mode" },
10 { id: "opt-2", label: "Multi-language Support" }
11 ]
12 };
13
14 const response: SavePollResponse = await patchPoll(tenantId, commentId, pollPatch);
15 console.log(response);
16})();
17

putPoll Internal Link

Прикачите анкету коментару, или поставите пун статус анкете коју већ има.

Опције се упоређују по id-у: опција послата са id-ом постојеће опције задржава своје гласове (и преузима нову ознаку и позицију), опција послата без id-а се додаје, а постојеће опције изостављене из листе се уклањају заједно са гласовима датим за њих.

Остављање без постојећих id-ова опција у анкети која има гласове брише све њих, па је потребно replaceVotes=true.

Параметри

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

Одговор

Returns: SavePollResponse

Пример

putPoll пример
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3const commentId: string = "9876543210";
4
5const optionA: CommentPollOptionInput = { text: "Dark mode" };
6const optionB: CommentPollOptionInput = { text: "Light mode" };
7
8const pollInput: CommentPollPutInput = {
9 question: "Which UI theme do you prefer?",
10 options: [optionA, optionB],
11};
12
13const replaceVotes: boolean = true;
14
15const result: SavePollResponse = await putPoll(tenantId, commentId, pollInput, replaceVotes);
16

createQuestionConfig Internal Link

Параметри

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

Одговор

Враћа: CreateQuestionConfigResponse

Пример

Пример createQuestionConfig
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "acme-corp-123";
4
5 const customOption: QuestionConfigCustomOptionsInner = {
6 key: "maxLength",
7 value: 500,
8 };
9
10 const createQuestionConfigBody: CreateQuestionConfigBody = {
11 name: "User Feedback",
12 description: "Collect user feedback after purchase",
13 enabled: true,
14 customOptions: [customOption],
15 // опционално поље
16 tags: ["feedback", "post-purchase"],
17 };
18
19 const response: CreateQuestionConfigResponse = await createQuestionConfig(
20 tenantId,
21 createQuestionConfigBody
22 );
23
24 console.log(response);
25}
26

deleteQuestionConfig Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteQuestionConfig Пример
Copy Copy
1
2async function executeDeletion() {
3 const tenantId: string = "tenant_12345";
4 const configId: string = "config_9876";
5 const result: APIEmptyResponse = await deleteQuestionConfig(tenantId, configId);
6 console.log(result);
7}
8executeDeletion();
9

getQuestionConfig Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Одговор

Враћа: GetQuestionConfigResponse

Пример

getQuestionConfig Пример
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const questionId: string = "q-987654321";
4
5const configResponse: GetQuestionConfigResponse = await getQuestionConfig(tenantId, questionId);
6
7const status: APIStatus = configResponse.status;
8const questionConfig?: QuestionConfig = configResponse.question;
9const firstOption?: QuestionConfigCustomOptionsInner = questionConfig?.customOptions?.[0];
10

getQuestionConfigs Internal Link

Параметри

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

Одговор

Враћа: GetQuestionConfigsResponse

Пример

Пример getQuestionConfigs
Copy Copy
1
2async function fetchConfigs() {
3 const tenantId: string = "tenant_12345";
4
5 const firstPage: GetQuestionConfigsResponse = await getQuestionConfigs(tenantId);
6 const secondPage: GetQuestionConfigsResponse = await getQuestionConfigs(tenantId, 20);
7}
8

updateQuestionConfig Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateQuestionConfig Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant";
4 const questionId: string = "question-42";
5
6 const updateBody: UpdateQuestionConfigBody = {
7 title: "Revised FAQ Question"
8 // isActive, customOptions, etc. су опциона и изостављена
9 };
10
11 const response: APIEmptyResponse = await updateQuestionConfig(tenantId, questionId, updateBody);
12 console.log(response);
13})();
14

createQuestionResult Internal Link

Параметри

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

Одговор

Враћа: CreateQuestionResultResponse

Пример

Пример createQuestionResult
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "q_9876",
6 answer: "Yes",
7 score: 5,
8 meta: [
9 { key: "source", value: "survey" }
10 ]
11};
12
13const result: CreateQuestionResultResponse = await createQuestionResult(tenantId, createQuestionResultBody);
14

deleteQuestionResult Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteQuestionResult Пример
Copy Copy
1
2async function runDelete() {
3 const tenantId: string = "tenant_12345";
4 const resultId: string = "qr_98765";
5
6 const response: APIEmptyResponse = await deleteQuestionResult(tenantId, resultId);
7 console.log(response);
8}
9

getQuestionResult Internal Link

Параметри

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

Одговор

Враћа: GetQuestionResultResponse

Пример

getQuestionResult Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const questionId: string = "question_98765";
4
5const response: GetQuestionResultResponse = await getQuestionResult(tenantId, questionId);
6
7const status: APIStatus | undefined = response.status;
8const firstResult: QuestionResult | undefined = response.results?.[0];
9const firstMeta: MetaItem | undefined = response.meta?.[0];
10
11console.log(response);
12

getQuestionResults Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Одговор

Враћа: GetQuestionResultsResponse

Пример

Пример getQuestionResults
Copy Copy
1
2async function fetchResults() {
3 const tenantId: string = 'c1a2b3d4-5678-90ab-cdef-1234567890ab';
4 const urlId: string = 'blog-post-789';
5 const startDate: string = '2023-01-01T00:00:00Z';
6 const questionIds: string = 'q-abc123,q-def456';
7 const response: GetQuestionResultsResponse = await getQuestionResults(
8 tenantId,
9 urlId,
10 undefined,
11 startDate,
12 undefined,
13 questionIds
14 );
15 console.log(response);
16}
17

updateQuestionResult Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateQuestionResult Пример
Copy Copy
1
2const tenantId: string = "c1f5e8b2-9a4d-4f3a-8d2e-6b7c9d0e1f2a";
3const questionId: string = "qstn_1234567890";
4
5const updateBody: UpdateQuestionResultBody = {
6 score: 85,
7 comment: "Adjusted based on new criteria",
8 meta: [
9 { key: "reviewer", value: "john.doe@example.com" },
10 { key: "timestamp", value: new Date().toISOString() }
11 ]
12};
13
14const response: APIEmptyResponse = await updateQuestionResult(tenantId, questionId, updateBody);
15

aggregateQuestionResults Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Одговор

Враћа: AggregateQuestionResultsResponse

Пример

aggregateQuestionResults Пример
Copy Copy
1
2async function runAggregation() {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const questionId: string = 'question-9f8e7d6c5b4a3';
5 const questionIds: string[] = ['question-1a2b3c', 'question-4d5e6f'];
6 const urlId: string = 'blog-post-2023-08-15';
7 const startDate: Date = new Date('2023-01-01T00:00:00Z');
8 const forceRecalculate: boolean = true;
9
10 const result: AggregateQuestionResultsResponse = await aggregateQuestionResults(
11 tenantId,
12 questionId,
13 questionIds,
14 urlId,
15 undefined,
16 startDate,
17 forceRecalculate
18 );
19}
20

bulkAggregateQuestionResults Internal Link

Параметри

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

Одговор

Враћа: BulkAggregateQuestionResultsResponse

Пример

bulkAggregateQuestionResults Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const request: BulkAggregateQuestionResultsRequest = {
5 items: [
6 {
7 questionId: "q_9876",
8 startDate: "2023-01-01T00:00:00Z",
9 endDate: "2023-01-31T23:59:59Z",
10 timeBucket: "day"
11 }
12 ]
13};
14
15const response: BulkAggregateQuestionResultsResponse = await bulkAggregateQuestionResults(tenantId, request, true);
16

combineCommentsWithQuestionResults Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Одговор

Враћа: CombineQuestionResultsWithCommentsResponse

Пример

combineCommentsWithQuestionResults Пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const questionId: string | undefined = "q_987";
5 const questionIds: string[] = ["q_001", "q_002"];
6 const urlId: string | undefined = "url_abc";
7 const startDate: Date = new Date("2023-01-01T00:00:00Z");
8 const forceRecalculate: boolean = true;
9 const minValue: number = 0;
10 const maxValue: number = 100;
11 const limit: number = 50;
12
13 const result: CombineQuestionResultsWithCommentsResponse = await combineCommentsWithQuestionResults(
14 tenantId,
15 questionId,
16 questionIds,
17 urlId,
18 startDate,
19 forceRecalculate,
20 minValue,
21 maxValue,
22 limit
23 );
24
25 console.log(result);
26}
27
28runExample();
29

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

Параметри

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

Одговор

Враћа: DeleteSSOUserAPIResponse

Пример

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

Параметри

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

| | email | string | Да | |

Одговор

Враћа: GetSSOUserByEmailAPIResponse

Пример

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

Параметриметри

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

Одговор

Враћа: GetSSOUserByIdAPIResponse

Пример

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

Параметри

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Одговор

Враћа: GetSSOUsersResponse

Пример

Primer getSSOUsers
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4
5 // Позив без опционо `skip`
6 const firstPage: GetSSOUsersResponse = await getSSOUsers(tenantId);
7
8 // Позив са опционо `skip`
9 const secondPage: GetSSOUsersResponse = await getSSOUsers(tenantId, 100);
10
11 console.log(firstPage, secondPage);
12}
13
14runExample();
15

patchSSOUser Internal Link

Параметри

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

Одговор

Враћа: PatchSSOUserAPIResponse

Пример

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

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа
updateAPISSOUserDataUpdateAPISSOUserDataДа
updateCommentsbooleanНе

Одговор

Враћа: PutSSOUserAPIResponse

Пример

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

Parameters

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

Одговор

Враћа: CreateSubscriptionAPIResponse

Пример

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

Параметри

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

Одговор

Враћа: DeleteSubscriptionAPIResponse

Пример

deleteSubscription Пример
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 // Са опционом userId
8 const responseWithUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId, userId);
9
10 // Без опционог userId
11 const responseWithoutUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId);
12})();
13

getSubscriptions Internal Link

Параметри

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

Одговор

Враћа: GetSubscriptionsAPIResponse

Пример

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

Параметри

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

Одговор

Враћа: GetTenantDailyUsagesResponse

Пример

getTenantDailyUsages Primer
Copy Copy
1
2async function demoGetTenantDailyUsages() {
3 const tenantId: string = "tenant_9876";
4 const yearNumber: number = 2024;
5 const monthNumber: number = 2;
6 const dayNumber: number = 28;
7 const skip: number = 10;
8
9 const fullResult: GetTenantDailyUsagesResponse = await getTenantDailyUsages(
10 tenantId,
11 yearNumber,
12 monthNumber,
13 dayNumber,
14 skip
15 );
16
17 const partialResult: GetTenantDailyUsagesResponse = await getTenantDailyUsages(
18 tenantId,
19 yearNumber
20 );
21}
22

createTenantPackage Internal Link

Параметри

NameTypeRequiredОпис
tenantIdstringYes
createTenantPackageBodyCreateTenantPackageBodyYes

Одговор

Враћа: CreateTenantPackageResponse

Пример

createTenantPackage Пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const createTenantPackageBody: CreateTenantPackageBody = {
5 name: "Enterprise Package",
6 priceCents: 49999,
7 // опционално поље
8 description: "Full suite of enterprise features"
9 };
10 const result: CreateTenantPackageResponse = await createTenantPackage(tenantId, createTenantPackageBody);
11 console.log(result);
12}
13runExample();
14

deleteTenantPackage Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteTenantPackage Primer
Copy Copy
1
2let tenantId: string = "tenant_12345";
3let packageId: string = "pkg_98765";
4
5const result: APIEmptyResponse = await deleteTenantPackage(tenantId, packageId);
6

getTenantPackage Internal Link

Параметри

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

Одговор

Враћа: GetTenantPackageResponse

Пример

Пример getTenantPackage
Copy Copy
1
2function fetchPackage(tenantId?: string, id?: string): Promise<GetTenantPackageResponse> {
3 const tid: string = tenantId ?? "acme-corp-001";
4 const pid: string = id ?? "premium-plan-2024";
5 return getTenantPackage(tid, pid);
6}
7
8async function runExample(): Promise<void> {
9 const response: GetTenantPackageResponse = await fetchPackage();
10 const status: APIStatus | undefined = response.status;
11 const pkg: TenantPackage | undefined = response.package;
12}
13

getTenantPackages Internal Link

Параметри

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

Одговор

Враћа: GetTenantPackagesResponse

Пример

Primer getTenantPackages
Copy Copy
1
2async function fetchPackages() {
3 const tenantId: string = "acme-corp-001";
4 const skip: number = 15;
5
6 const resultWithSkip: GetTenantPackagesResponse = await getTenantPackages(tenantId, skip);
7 const resultWithoutSkip: GetTenantPackagesResponse = await getTenantPackages(tenantId);
8}
9

replaceTenantPackage Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

replaceTenantPackage Пример
Copy Copy
1
2async function replacePackageDemo(): Promise<void> {
3 const tenantId: string = "acme-corp-001";
4 const packageId: string = "basic-plan-2023";
5 const replaceBody: ReplaceTenantPackageBody = {
6 newPackageId: "enterprise-plan-2024"
7 // опционална поља могу бити додата овде ако је потребно
8 };
9 const response: APIEmptyResponse = await replaceTenantPackage(tenantId, packageId, replaceBody);
10 console.log(response);
11}
12

updateTenantPackage Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateTenantPackage Пример
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3const packageId: string = "pkg_3a2b1c";
4
5const updateBody: UpdateTenantPackageBody = {
6 // опционална поља могу бити изостављена или укључена по потреби
7 // newPackageName?: string;
8 // renewalDate?: string;
9};
10
11const result: APIEmptyResponse = await updateTenantPackage(tenantId, packageId, updateBody);
12

createTenantUser Internal Link

Параметри

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

Одговор

Враћа: CreateTenantUserResponse

Пример

createTenantUser Пример
Copy Copy
1
2async function addTenantUser() {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const digestFreq: DigestEmailFrequency = 'daily';
5 const body: CreateTenantUserBody = {
6 email: 'jane.doe@example.com',
7 firstName: 'Jane',
8 lastName: 'Doe',
9 role: 'admin',
10 digestEmailFrequency: digestFreq,
11 phoneNumber: '+15551234567' // опционално
12 };
13 const response: CreateTenantUserResponse = await createTenantUser(tenantId, body);
14 console.log(response);
15}
16addTenantUser();
17

deleteTenantUser Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteTenantUser Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const userId: string = "u-112233";
5
6 const result1: APIEmptyResponse = await deleteTenantUser(tenantId, userId);
7 const result2: APIEmptyResponse = await deleteTenantUser(tenantId, userId, "true", "hard");
8
9 console.log(result1, result2);
10})();
11

getTenantUser Internal Link

Параметри

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

Одговор

Враћа: GetTenantUserResponse

Пример

getTenantUser Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-tenant-001";
4 const userId: string = "user-12345";
5 const response: GetTenantUserResponse = await getTenantUser(tenantId, userId);
6 console.log(response);
7})();
8

getTenantUsers Internal Link

Параметри

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

Одговор

Враћа: GetTenantUsersResponse

Пример

getTenantUsers Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const skip: number = 20;
4
5const firstPage: GetTenantUsersResponse = await getTenantUsers(tenantId);
6const secondPage: GetTenantUsersResponse = await getTenantUsers(tenantId, skip);
7

replaceTenantUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

Одговор

Враћа: APIEmptyResponse

Пример

replaceTenantUser Primer
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3const userId: string = "user-987654321";
4const replaceBody: ReplaceTenantUserBody = {
5 email: "newuser@example.com",
6 name: "New User",
7 role: "admin"
8};
9
10const response: APIEmptyResponse = await replaceTenantUser(
11 tenantId,
12 userId,
13 replaceBody,
14 "Migrated user to new tenant"
15);
16

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

Пример sendLoginLink
Copy Copy
1
2interface APIStatus {
3 // поља статуса
4}
5
6interface APIEmptyResponse {
7 status: APIStatus;
8}
9
10(async () => {
11 const tenantId: string = "acme-corp";
12 const userId: string = "user-98765";
13 const redirectURL: string = "https://app.example.com/welcome";
14
15 const responseWithRedirect: APIEmptyResponse = await sendLoginLink(tenantId, userId, redirectURL);
16 const responseWithoutRedirect: APIEmptyResponse = await sendLoginLink(tenantId, userId);
17})();
18

updateTenantUser Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateTenantUser Пример
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_987";
5 const updateBody: UpdateTenantUserBody = {
6 email: "new.email@example.com",
7 role: "admin",
8 isActive: true
9 };
10 const comment: string = "Promoted to admin role";
11
12 const result: APIEmptyResponse = await updateTenantUser(tenantId, userId, updateBody, comment);
13 console.log(result);
14}
15
16runUpdate();
17

createTenant Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
createTenantBodyCreateTenantBodyДа

Одговор

Враћа: CreateTenantResponse

Пример

createTenant Пример
Copy Copy
1
2async function run() {
3 const tenantId: string = "acme-corp-2024";
4 const createTenantBody: CreateTenantBody = {
5 name: "Acme Corp",
6 domainConfiguration: { domain: "comments.acme.com", sslEnabled: true },
7 importedSite: { siteId: "site-123", source: "wordpress" },
8 billingInfo: { plan: "enterprise", renewalDate: "2025-01-01" },
9 description: "Tenant for Acme Corp's production environment", // опционално
10 };
11 const response: CreateTenantResponse = await createTenant(tenantId, createTenantBody);
12}
13run();
14

deleteTenant Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

deleteTenant Пример
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_9876";
5
6 const resultWithoutSure: APIEmptyResponse = await deleteTenant(tenantId, userId);
7 const resultWithSure: APIEmptyResponse = await deleteTenant(tenantId, userId, "confirm");
8}
9
10main();
11

getTenant Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Одговор

Враћа: GetTenantResponse

Пример

getTenant Пример
Copy Copy
1
2async function fetchTenant(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const id: string = "tenant_12345";
5
6 const tenantResponse: GetTenantResponse = await getTenant(tenantId, id);
7
8 // Опционална поља у одговору
9 const billing: BillingInfo | undefined = tenantResponse.billingInfo;
10 const domainConfig: APIDomainConfiguration | undefined = tenantResponse.domainConfiguration;
11}
12

getTenants Internal Link

Параметри

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

Одговор

Враћа: GetTenantsResponse

Пример

getTenants Пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "c3f5e9b2-4d1a-4f2b-9a6e-1234567890ab";
4 const meta: string = "includeBilling";
5 const skip: number = 10;
6
7 const result: GetTenantsResponse = await getTenants(tenantId, meta, skip);
8 console.log(result);
9}
10runExample();
11

updateTenant Internal Link

Параметри

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

Одговор

Враћа: APIEmptyResponse

Пример

updateTenant Пример
Copy Copy
1
2async function runUpdateTenant() {
3 const tenantId: string = "tenant-abc123";
4 const id: string = "config-456def";
5
6 const updateTenantBody: UpdateTenantBody = {
7 // обавезно поље
8 name: "Acme International",
9 // опциона поља могу бити изостављена, нпр., billingInfo, domainConfiguration
10 };
11
12 const response: APIEmptyResponse = await updateTenant(tenantId, id, updateTenantBody);
13 console.log(response);
14}
15

changeTicketState Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
userIdstringYes
idstringYes
changeTicketStateBodyChangeTicketStateBodyYes

Одговор

Враћа: ChangeTicketStateResponse

Пример

changeTicketState Primer
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe";
5 const ticketId: string = "ticket-20230915-001";
6
7 const changeTicketStateBody: ChangeTicketStateBody = {
8 // пример опционог поља
9 note: "Resolved after investigation"
10 };
11
12 const response: ChangeTicketStateResponse = await changeTicketState(
13 tenantId,
14 userId,
15 ticketId,
16 changeTicketStateBody
17 );
18
19 console.log(response);
20})();
21

createTicket Internal Link

Параметри

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

Одговор

Враћа: CreateTicketResponse

Пример

createTicket Пример
Copy Copy
1
2async function submitTicket() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-9876";
5
6 const ticketBody: CreateTicketBody = {
7 subject: "Login issues after password reset",
8 description: "User reports being unable to log in despite using the new password.",
9 priority: "medium",
10 // опционално поље у CreateTicketBody
11 tags: ["login", "password-reset"]
12 };
13
14 const response: CreateTicketResponse = await createTicket(tenantId, userId, ticketBody);
15 console.log(response);
16}
17
18submitTicket();
19

getTicket Internal Link

Параметри

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

Одговор

Враћа: GetTicketResponse

Пример

getTicket Пример
Copy Copy
1
2async function fetchTickets() {
3 const tenantId: string = "acme-corp";
4 const ticketId: string = "ticket-12345";
5 const userId: string = "user-9876";
6
7 const ticketWithUser: GetTicketResponse = await getTicket(tenantId, ticketId, userId);
8 const ticketWithoutUser: GetTicketResponse = await getTicket(tenantId, ticketId);
9}
10

getTickets Internal Link

Параметри

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

Одговор

Враћа: GetTicketsResponse

Пример

getTickets Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const ticketsSimple: GetTicketsResponse = await getTickets(tenantId);
5
6 const userId: string = "user_9876";
7 const state: number = 1; // нпр., отворен
8 const skip: number = 0;
9 const limit: number = 20;
10 const ticketsFull: GetTicketsResponse = await getTickets(
11 tenantId,
12 userId,
13 state,
14 skip,
15 limit
16 );
17})();
18

getTranslations Internal Link

Параметри

ИмеТипОбавезноОпис
namespacestringYes
componentstringYes
localestringNo
useFullTranslationIdsbooleanNo

Одговор

Враћа: GetTranslationsResponse

Пример

Primer getTranslations
Copy Copy
1
2async function fetchTranslations() {
3 const adminDashboard: GetTranslationsResponse = await getTranslations('admin', 'dashboard');
4 const userProfileFr: GetTranslationsResponse = await getTranslations('user', 'profile', 'fr-FR', true);
5}
6

uploadImage Internal Link


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

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
fileBlobYes
sizePresetSizePresetNo
urlIdstringNo

Одговор

Враћа: UploadImageResponse

Пример

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

Параметри

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

Одговор

Враћа: APIGetUserBadgeProgressResponse

Пример

getUserBadgeProgressById Пример
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const badgeId: string = "badge-2024-07";
4
5const result: APIGetUserBadgeProgressResponse = await getUserBadgeProgressById(tenantId, badgeId);
6
7const progress: UserBadgeProgress | undefined = result?.progress;
8const status: APIStatus | undefined = result?.status;
9

getUserBadgeProgressByUserId Internal Link

Параметри

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

Одговор

Враћа: APIGetUserBadgeProgressResponse

Пример

Пример getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-42";
4
5const badgeProgress: APIGetUserBadgeProgressResponse = await getUserBadgeProgressByUserId(tenantId, userId);
6
7if (badgeProgress.status?.code !== undefined) {
8 const statusCode: number = badgeProgress.status.code;
9}
10
11if (badgeProgress.progress?.length) {
12 const firstProgress: UserBadgeProgress = badgeProgress.progress[0];
13}
14

getUserBadgeProgressList Internal Link

Параметри

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

Одговор

Враћа: APIGetUserBadgeProgressListResponse

Пример

getUserBadgeProgressList Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const userId: string = "user-123e4567-e89b-12d3-a456-426614174000";
5 const limit: number = 10;
6 const skip: number = 0;
7
8 const response: APIGetUserBadgeProgressListResponse = await getUserBadgeProgressList(tenantId, userId, limit, skip);
9 const status: APIStatus = response.status;
10 const badges: UserBadgeProgress[] = response.badges;
11})();
12

createUserBadge Internal Link

Параметри

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

Одговор

Враћа: APICreateUserBadgeResponse

Пример

Пример createUserBadge
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c";
4 const badgeParams: CreateUserBadgeParams = {
5 name: "Community Helper",
6 iconUrl: "https://cdn.example.com/badges/helper.png"
7 };
8 const response: APICreateUserBadgeResponse = await createUserBadge(tenantId, badgeParams);
9}
10main();
11

deleteUserBadge Internal Link

Параметри

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

Одговор

Враћа: APIEmptySuccessResponse

Пример

deleteUserBadge Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const badgeId: string = "moderator-badge";
5 const result: APIEmptySuccessResponse = await deleteUserBadge(tenantId, badgeId);
6 console.log(result);
7})();
8

getUserBadge Internal Link

Параметри

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

Одговор

Враћа: APIGetUserBadgeResponse

Пример

Primer getUserBadge
Copy Copy
1
2async function demoGetUserBadge() {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const userId: string = "user-123456";
5 const badgeResponse: APIGetUserBadgeResponse = await getUserBadge(tenantId, userId);
6}
7

getUserBadges Internal Link

Параметри

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

Одговор

Враћа: APIGetUserBadgesResponse

Пример

Primer getUserBadges
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4
5 // Сви параметри достављени
6 const fullResponse: APIGetUserBadgesResponse = await getUserBadges(
7 tenantId,
8 "user-42",
9 "badge-premium",
10 1,
11 true,
12 10,
13 0
14 );
15
16 // Само обавезни и један опциона параметар (limit)
17 const limitedResponse: APIGetUserBadgesResponse = await getUserBadges(
18 tenantId,
19 undefined,
20 undefined,
21 undefined,
22 undefined,
23 5
24 );
25
26 console.log(fullResponse, limitedResponse);
27})();
28

updateUserBadge Internal Link

Параметри

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

Одговор

Враћа: APIEmptySuccessResponse

Пример

Пример updateUserBadge
Copy Copy
1
2const tenantId: string = "tenant-9f8b7c6d";
3const id: string = "user-4a3b2c1d";
4
5const updateParams: UpdateUserBadgeParams = {
6 badgeId: "badge-premium",
7 // опционално поље
8 expiresAt: new Date("2025-12-31T23:59:59Z")
9};
10
11const result: APIEmptySuccessResponse = await updateUserBadge(tenantId, id, updateParams);
12

getUserNotificationCount Internal Link

Параметри

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

Одговор

Враћа: GetUserNotificationCountResponse

Пример

Пример getUserNotificationCount
Copy Copy
1
2async function demo(): Promise<void> {
3 const tenantId: string = "acme-corp-001";
4 const ssoToken: string = "sso-token-xyz789";
5
6 const countWithoutSso: GetUserNotificationCountResponse = await getUserNotificationCount(tenantId);
7 const countWithSso: GetUserNotificationCountResponse = await getUserNotificationCount(tenantId, ssoToken);
8}
9
10demo();
11

getUserNotifications Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
urlIdstringNo
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
includeTenantNotificationsbooleanNo
ssostringNo

Одговор

Враћа: GetMyNotificationsResponse

Пример

getUserNotifications Primer
Copy Copy
1
2async function fetchNotifications(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "article-42";
5 const pageSize: number = 20;
6 const includeContext: boolean = true;
7 const unreadOnly: boolean = true;
8
9 const notifications: GetMyNotificationsResponse = await getUserNotifications(
10 tenantId,
11 urlId,
12 pageSize,
13 undefined,
14 includeContext,
15 undefined,
16 unreadOnly
17 );
18
19 console.log(notifications);
20}
21

resetUserNotificationCount Internal Link

Параметри

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

Одговор

Враћа: ResetUserNotificationsResponse

Пример

resetUserNotificationCount Пример
Copy Copy
1
2async function demoReset() {
3 const tenantId: string = "tenant_12345";
4 const ssoToken: string = "sso_abcdef123456";
5
6 const resultWithSso: ResetUserNotificationsResponse = await resetUserNotificationCount(tenantId, ssoToken);
7 const resultWithoutSso: ResetUserNotificationsResponse = await resetUserNotificationCount(tenantId);
8}
9
10demoReset();
11

resetUserNotifications Internal Link

Параметри

ИмеТипОбавезноОпис
tenantIdstringYes
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

Одговор

Враћа: ResetUserNotificationsResponse

Пример

resetUserNotifications Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const afterId: string = "notif-2023-09-01";
5 const afterCreatedAt: number = 1693526400; // Unix timestamp
6 const unreadOnly: boolean = true;
7 const dmOnly: boolean = false;
8
9 const response: ResetUserNotificationsResponse = await resetUserNotifications(
10 tenantId,
11 afterId,
12 afterCreatedAt,
13 unreadOnly,
14 dmOnly
15 );
16
17 console.log(response);
18})();
19

updateUserNotificationCommentSubscriptionStatus Internal Link

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

Parameters

NameTypeRequiredDescription
tenantIdstringДа
notificationIdstringДа
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumДа
commentIdstringДа
ssostringНе

Response

Враћа: UpdateUserNotificationCommentSubscriptionStatusResponse

Example

Пример updateUserNotificationCommentSubscriptionStatus
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const notificationId: string = "notif_9876";
5 const commentId: string = "comment_abc123";
6 const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum =
7 UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptIn;
8 const sso: string = "sso_token_456";
9
10 const resultWithSso: UpdateUserNotificationCommentSubscriptionStatusResponse = await updateUserNotificationCommentSubscriptionStatus(
11 tenantId,
12 notificationId,
13 optedInOrOut,
14 commentId,
15 sso
16 );
17
18 const resultWithoutSso: UpdateUserNotificationCommentSubscriptionStatusResponse = await updateUserNotificationCommentSubscriptionStatus(
19 tenantId,
20 notificationId,
21 optedInOrOut,
22 commentId
23 );
24}
25

updateUserNotificationPageSubscriptionStatus Internal Link

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

Параметри

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

Одговор

Враћа: UpdateUserNotificationPageSubscriptionStatusResponse

Пример

Пример updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_9876";
5 const url: string = "https://example.com/articles/awesome-article";
6 const pageTitle: string = "Awesome Article";
7 const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum =
8 UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
9 const sso: string = "sso_token_abc";
10
11 const response: UpdateUserNotificationPageSubscriptionStatusResponse = await updateUserNotificationPageSubscriptionStatus(
12 tenantId,
13 urlId,
14 url,
15 pageTitle,
16 subscribedOrUnsubscribed,
17 sso
18 );
19
20 console.log(response);
21}
22
23runExample();
24

updateUserNotificationStatus Internal Link

Параметри

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

Одговор

Враћа: UpdateUserNotificationStatusResponse

Пример

updateUserNotificationStatus Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const notificationId: string = "notif_9876";
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.READ;
5const ssoToken: string = "sso_token_abc";
6
7const responseWithSso: UpdateUserNotificationStatusResponse = await updateUserNotificationStatus(
8 tenantId,
9 notificationId,
10 newStatus,
11 ssoToken
12);
13
14const responseWithoutSso: UpdateUserNotificationStatusResponse = await updateUserNotificationStatus(
15 tenantId,
16 notificationId,
17 newStatus
18);
19

getUserPresenceStatuses Internal Link

Параметри

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

Одговор

Враћа: GetUserPresenceStatusesResponse

Пример

Пример getUserPresenceStatuses
Copy Copy
1
2(async () => {
3 const tenantId: string = "my-tenant-42";
4 const urlIdWS: string = "post-9876";
5 const userIds: string = "alice,bob,carol";
6
7 const presence: GetUserPresenceStatusesResponse = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
8 console.log(presence);
9})();
10

searchUsers Internal Link

Параметри

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

Одговор

Враћа: SearchUsersResult

Пример

searchUsers Пример
Copy Copy
1
2async function example() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "article-9876";
5 const usernameStartsWith: string = "john";
6 const mentionGroupIds: string[] = ["group1", "group2"];
7 const sso: string = "sso_token_abc";
8 const searchSection: SearchUsersSearchSectionEnum = SearchUsersSearchSectionEnum.MENTIONS;
9
10 const result: SearchUsersResult = await searchUsers(
11 tenantId,
12 urlId,
13 usernameStartsWith,
14 mentionGroupIds,
15 sso,
16 searchSection
17 );
18
19 console.log(result);
20}
21

getUser Internal Link

Параметри

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

Одговор

Враћа: GetUserResponse

Пример

Primer getUser
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const id: string = "user_98765";
5 const response: GetUserResponse = await getUser(tenantId, id);
6 const { user }: { user?: User } = response;
7}
8main();
9

createVote Internal Link

Параметри

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

Одговор

Враћа: VoteResponse

Пример

createVote Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "comment_67890";
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.UP;
5const userId: string = "user_abcde";
6
7const voteResult: VoteResponse = await createVote(tenantId, commentId, direction, userId);
8
9const anonUserId: string = "anon_zyxwv";
10const anonVoteResult: VoteResponse = await createVote(tenantId, commentId, direction, undefined, anonUserId);
11

deleteVote Internal Link

Параметри

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

Одговор

Враћа: VoteDeleteResponse

Пример

deleteVote пример
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "comment_98765";
5 const editKey: string = "edit_abcde";
6
7 const responseWithKey: VoteDeleteResponse = await deleteVote(tenantId, commentId, editKey);
8 const responseWithoutKey: VoteDeleteResponse = await deleteVote(tenantId, commentId);
9}
10
11run();
12

getVotes Internal Link

Параметри

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

Одговор

Враћа: GetVotesResponse

Пример

Primer getVotes
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "article-67890";
4
5(async () => {
6 const votesResponse: GetVotesResponse = await getVotes(tenantId, urlId);
7 // Пример приступања опционој својини из одговора
8 const firstVote: PublicVote | undefined = votesResponse.votes?.[0];
9})();
10

getVotesForUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
userIdstringNo
anonUserIdstringNo

Одговор

Враћа: GetVotesForUserResponse

Пример

Пример getVotesForUser
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "post_9876";
5 const userId: string = "user_abcde";
6 const anonUserId: string = "anon_5678";
7
8 const responseWithUser: GetVotesForUserResponse = await getVotesForUser(tenantId, urlId, userId);
9 const responseWithAnon: GetVotesForUserResponse = await getVotesForUser(tenantId, urlId, undefined, anonUserId);
10}
11
12demo();
13

createWebhook Internal Link

Subscribes a URL to a comment event (REST hook subscribe). Subscribing the same URL to the same event and domain again returns the existing subscription. Deliveries are HMAC signed, see the webhooks guide; the legacy token header is never sent to API subscriptions.

Параметри

NameTypeRequiredDescription
tenantIdstringДа
createWebhookParamsCreateWebhookParamsДа

Одговор

Враћа: CreateWebhookResponse

Пример

Primer createWebhook
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const webhookParams: CreateWebhookParams = {
5 event: "comment.created" as WebhookEventName,
6 method: "POST" as WebhookHTTPMethod,
7 url: "https://myapp.example.com/webhook",
8 source: "comment" as WebhookSource,
9 // опциона тајна за верификацију оптерећења
10 secret: "s3cr3tK3y123",
11};
12
13const result: CreateWebhookResponse = await createWebhook(tenantId, webhookParams);
14
15const webhookId: string = result.webhook.id;
16

deleteWebhook Internal Link

Одјаве (REST hook одјава). Само претплате креиране преко овог API‑ја могу бити обрисане овде; веб‑кукови управљани преко контролне табле се уређују у контролној табли.

Параметри

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

Одговор

Returns: APIEmptyResponse

Пример

deleteWebhook Primer
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const webhookId: string = "wh_98765";
4
5const result: APIEmptyResponse = await deleteWebhook(tenantId, webhookId);
6

getWebhooks Internal Link

Наводи вебхукове конфигурисане за клијента, како редове управљане са контролне табле, тако и претплате преко API‑ја.

Параметри

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

Одговор

Returns: GetWebhooksResponse

Пример

Пример getWebhooks
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42';
4 const event: WebhookEventName = 'comment.created';
5 const domain: string = 'forum.example.org';
6 const source: WebhookSource = 'admin';
7 const skip: number = 0;
8
9 const fullResponse: GetWebhooksResponse = await getWebhooks(tenantId, event, domain, source, skip);
10 const minimalResponse: GetWebhooksResponse = await getWebhooks(tenantId);
11})();
12

getWebhookSamplePayloads Internal Link

Недави коментари у тачној структури коју користе испоруке веб‑хукова, за изградњу интеграција (на пример Zapier пример података). Сваки догађај испоручује исти објекат коментара, тако да event мора бити валидан.

Parameters

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

Response

Враћа: GetWebhookSamplePayloadsResponse

Пример

Primer getWebhookSamplePayloads
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3
4const responseAll: GetWebhookSamplePayloadsResponse = await getWebhookSamplePayloads(
5 tenantId,
6 "comment.created",
7 10
8);
9
10const responseWithEvent: GetWebhookSamplePayloadsResponse = await getWebhookSamplePayloads(
11 tenantId,
12 "comment.created"
13);
14
15const responseBasic: GetWebhookSamplePayloadsResponse = await getWebhookSamplePayloads(
16 tenantId
17);
18

Потребна помоћ?

Ако наиђете на било какве проблеме или имате питања у вези са JavaScript/TypeScript SDK-ом, молимо вас:

Допринес

Доприноси су добродошли! Молимо посетите GitHub репозиторијум за смернице за допринос.