FastComments.com

FastComments SDK за JavaScript/TypeScript

Това е официалното JavaScript/TypeScript SDK за FastComments.

Управлявайте коментари, потребители, SSO и модерация от Node.js или от браузъра.

Хранилище

Вижте в GitHub


Инсталиране Internal Link

npm

npm install fastcomments-sdk

API Documentation Internal Link


Пълна справка за API: docs/api/README.md

Browser vs Server Compatibility Internal Link


Този SDK използва двойни входни точки, за да осигури оптимална съвместимост и да предотврати грешки по време на изпълнение:

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

Public vs Secured APIs 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);

// Get comments with full admin access
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, и т.н. */ });

// Moderator-authenticated calls (session cookie, or pass `sso` for an SSO moderator).
const comments = await sdk.moderationApi.getApiComments({
  tenantId: 'your-tenant-id'
});

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

SSO (Single Sign-On) Integration Internal Link

FastComments поддържа SSO за интеграция с вашата съществуваща система за удостоверяване на потребители. Функционалността SSO е достъпна само в сървърния експорт тъй като изисква криптографски възможности на Node.js.

Прост SSO (само от страна на сървъра)

Прост SSO трябва да се генерира от страна на сървъра и да се изпрати на клиента:

// Серверен код (Node.js/backend)
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 към клиентския код
// Клиентският код може да използва този токен с browser SDK

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

Сигурният SSO трябва да се имплементира от страна на сървъра и предлага по-добра сигурност:

// Серверен код (Node.js/backend)
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 токен от вашия сървърен endpoint
const ssoToken = await fetch('/api/sso-token').then(r => r.json());

const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: ssoToken // Използвайте 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)
});

Common Use Cases 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'
});

Live Events (Real-time Updates) Internal Link

Абонирайте се за събития в реално време, за да получавате актуализации за коментари, гласове и други дейности.

Събития на ниво страница

Слушайте за събития в реално време за конкретна страница (коментари, гласове и т.н.):

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

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

// Абонирайте се за събития в реално време за страница
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (получете това от отговора на getComments)
  (event: LiveEvent) => {
    console.log('Live event received:', event);
    
    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Актуализирайте вашия интерфейс с новия коментар
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Актуализирайте броя на гласовете в потребителския интерфейс
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }
    
    return true; // Върнете 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);
        // Показване на известие в потребителския интерфейс
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }
    
    return true;
  },
  (isConnected: boolean) => {
    console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Затворете, когато приключите
userSubscription.close();

Получаване на userIdWS

Параметърът userIdWS е задължителен за събития в реално време и може да бъде получен от отговорите на API:

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

// Извлечете userIdWS от отговора
const userIdWS = response.data?.userSessionInfo?.userIdWS;

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

Broadcast IDs Internal Link

Ще видите, че трябва да подадете broadcastId в някои API извиквания. Когато получавате събития, ще получите този ID обратно, така че да знаете да игнорирате събитието, ако планирате да приложите промените оптимистично на клиента (което вероятно ще искате да направите, тъй като осигурява най-доброто потребителско изживяване). Подайте 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() // Уникален идентификатор за тази операция
  }
});

Error Handling Internal Link

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

aggregate Internal Link

Aggregates documents by grouping them (if groupBy is provided) and applying multiple operations. Different operations (e.g. sum, countDistinct, avg, etc.) are supported.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
aggregationRequestAggregationRequestYes
parentTenantIdstringNo
includeStatsbooleanNo

Response

Returns: AggregateResponse

Example

aggregate Example
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

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
limitnumberНе
skipnumberНе
orderSORTDIRНе
afternumberНе
beforenumberНе

Отговор

Връща: GetAuditLogsResponse1

Пример

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

blockFromCommentPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Отговор

Връща: BlockFromCommentPublicResponse

Пример

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

unBlockCommentPublic Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
publicBlockFromCommentParamsPublicBlockFromCommentParamsДа
ssostringНе

Отговор

Връща: UnBlockCommentPublicResponse

Пример

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

checkedCommentsForBlocked Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdsstringYes
ssostringNo

Отговор

Връща: CheckedCommentsForBlockedResponse

Пример

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

blockUserFromComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
blockFromCommentParamsBlockFromCommentParamsДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: BlockUserFromCommentResponse

Пример

blockUserFromComment Пример
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const commentId: string = 'cmt_20231101';
4
5const blockParams: BlockFromCommentParams = {
6 reason: 'spam',
7 blockDurationHours: 24,
8};
9
10const userId: string = 'user_123'; // опционален параметър
11
12const response: BlockUserFromCommentResponse = await blockUserFromComment(
13 tenantId,
14 commentId,
15 blockParams,
16 userId
17);
18

createCommentPublic Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа
broadcastIdstringДа
commentDataCommentDataДа
sessionIdstringНе
ssostringНе

Response

Връща: CreateCommentPublicResponse

Example

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

deleteComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
contextUserIdstringNo
isLivebooleanNo

Отговор

Връща: DeleteCommentResponse

Пример

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

deleteCommentPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Отговор

Връща: DeleteCommentPublicResponse

Пример

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

deleteCommentVote Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
voteIdstringДа
urlIdstringДа
broadcastIdstringДа
editKeystringНе
ssostringНе

Отговор

Връща: DeleteCommentVoteResponse

Пример

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

flagComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Отговор

Връща: FlagCommentResponse1

Пример

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

getComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetCommentResponse

Пример

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

getComments Internal Link

Parameters

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

Response

Returns: GetCommentsResponse

Example

Пример за getComments
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const page: number = 2;
4const limit: number = 50;
5const asTree: boolean = true;
6const urlId: string = "article_5678";
7const direction: SortDirections = "desc";
8const fromDate: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // преди една седмица
9const toDate: number = Date.now();
10
11const commentsResponse: GetCommentsResponse = await getComments({
12 tenantId,
13 page,
14 limit,
15 asTree,
16 urlId,
17 direction,
18 fromDate,
19 toDate,
20});
21

getCommentsPublic Internal Link

req tenantId urlId

Параметри

ИмеТипЗадължителноОписание
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Не

Отговор

Връща: GetCommentsPublicResponse

Пример

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

getCommentText Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
editKeystringNo
ssostringNo

Отговор

Връща: GetCommentTextResponse1

Пример

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

getCommentVoteUserNames Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
dirnumberYes
ssostringNo

Отговор

Връща: GetCommentVoteUserNamesResponse

Пример

getCommentVoteUserNames Пример
Copy Copy
1
2async function demoGetCommentVoteUserNames() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_5f2a1e3b";
5 const dir: number = 1; // възходящо
6
7 const votesWithoutSSO: GetCommentVoteUserNamesResponse = await getCommentVoteUserNames(
8 tenantId,
9 commentId,
10 dir
11 );
12
13 const ssoToken: string = "sso_abcdef123456";
14 const votesWithSSO: GetCommentVoteUserNamesResponse = await getCommentVoteUserNames(
15 tenantId,
16 commentId,
17 dir,
18 ssoToken
19 );
20
21 console.log(votesWithoutSSO, votesWithSSO);
22}
23

lockComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Отговор

Връща: LockCommentResponse

Пример

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

pinComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Отговор

Връща: PinCommentResponse

Пример

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

saveComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
createCommentParamsCreateCommentParamsYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Отговор

Връща: SaveCommentResponse

Пример

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

saveCommentsBulk Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Отговор

Връща: Array<SaveCommentsBulkResponse

Пример

saveCommentsBulk Пример
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const bulkComments: CreateCommentParams[] = [
5 {
6 content: "Welcome to the new forum thread!",
7 authorId: "user_42",
8 mentions: [{ userId: "user_84", username: "alice" }],
9 hashtags: [{ tag: "intro" }]
10 },
11 {
12 content: "Please review the updated guidelines.",
13 authorId: "moderator_1",
14 mentions: [],
15 hashtags: [{ tag: "guidelines" }, { tag: "update" }]
16 }
17];
18
19const results: SaveCommentsBulkResponse[] = await saveCommentsBulk(
20 tenantId,
21 bulkComments,
22 true, // isLive
23 false, // doSpamCheck
24 true, // sendEmails
25 undefined // populateNotifications (използвайки по подразбиране)
26);
27

setCommentText Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
commentTextUpdateRequestCommentTextUpdateRequestYes
editKeystringNo
ssostringNo

Отговор

Връща: SetCommentTextResponse1

Пример

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

unBlockUserFromComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
unBlockFromCommentParamsUnBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Response

Връща: UnBlockUserFromCommentResponse

Пример

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

unFlagComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Отговор

Връща: UnFlagCommentResponse

Пример

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

unLockComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Отговор

Връща: UnLockCommentResponse

Пример

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

unPinComment Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Отговор

Връща: UnPinCommentResponse

Пример

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

updateComment Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updatableCommentParamsUpdatableCommentParamsДа
contextUserIdstringНе
doSpamCheckbooleanНе
isLivebooleanНе

Response

Връща: UpdateCommentResponse

Example

Пример за updateComment
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4
5const updatableCommentParams: UpdatableCommentParams = {
6 // примерни полета; истинската структура зависи от API дефиницията
7 // напр., body: "Edited comment content",
8};
9
10const contextUserId: string = "user_abcde";
11const doSpamCheck: boolean = true;
12const isLive: boolean = false;
13
14const result: UpdateCommentResponse = await updateComment(
15 tenantId,
16 commentId,
17 updatableCommentParams,
18 contextUserId,
19 doSpamCheck,
20 isLive
21);
22

voteComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
urlIdstringYes
broadcastIdstringYes
voteBodyParamsVoteBodyParamsYes
sessionIdstringNo
ssostringNo

Response

Връща: VoteCommentResponse

Пример

voteComment Пример
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_9f8e7d6c";
4const urlId: string = "url_123456";
5const broadcastId: string = "bcast_2024_01";
6
7const voteBodyParams: VoteBodyParams = {
8 vote: "up", // напр., "up" | "down"
9 weight: 1, // опционално претегляне на гласа
10};
11
12const sessionId: string = "sess_abc123def";
13const sso: string = "sso_token_xyz";
14
15const result: VoteCommentResponse = await voteComment(
16 tenantId,
17 commentId,
18 urlId,
19 broadcastId,
20 voteBodyParams,
21 sessionId,
22 sso
23);
24

getCommentsForUser Internal Link

Параметри

ИмеТипЗадължителноОписание
userIdstringНе
directionSortDirectionsНе
repliesToUserIdstringНе
pagenumberНе
includei10nbooleanНе
localestringНе
isCrawlerbooleanНе

Отговор

Връща: GetCommentsForUserResponse1

Пример

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

addDomainConfig Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringYes
addDomainConfigParamsAddDomainConfigParamsYes

Response

Връща: AddDomainConfigResponse

Пример

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

Пример

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Отговор

Връща: PatchDomainConfigResponse

Пример

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

Отговор

Връща: CreateEmailTemplateResponse1

Пример

Пример за createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_9f8e7d6c";
3
4const emailTemplate: CreateEmailTemplateBody = {
5 name: "Account Activation",
6 subject: "Activate Your New Account",
7 htmlContent: "<p>Welcome! Please click <a href=\"\{{activationLink}}\">here</a> to activate.</p>",
8 // незадължителните полета като textContent, isActive са пропуснати, за да се демонстрират незадължителните параметри
9};
10
11const result: CreateEmailTemplateResponse1 = await createEmailTemplate(
12 tenantId,
13 emailTemplate
14);
15
16console.log(result);
17

deleteEmailTemplate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: DeleteEmailTemplateResponse

Пример

Пример за deleteEmailTemplate
Copy Copy
1
2async () => {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_abcde";
5
6 const response: DeleteEmailTemplateResponse = await deleteEmailTemplate(tenantId, templateId);
7
8 // Пример за достъп до опционално свойство от отговора
9 const statusCode: number | undefined = response.status?.code;
10}();
11

deleteEmailTemplateRenderError Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
errorIdstringДа

Отговор

Връща: DeleteEmailTemplateRenderErrorResponse

Пример

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

getEmailTemplate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetEmailTemplateResponse1

Пример

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

getEmailTemplateDefinitions Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа

Отговор

Връща: GetEmailTemplateDefinitionsResponse1

Пример

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

getEmailTemplateRenderErrors Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
skipnumberНе

Response

Връща: GetEmailTemplateRenderErrorsResponse1

Пример

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

getEmailTemplates Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipnumberНе

Отговор

Връща: GetEmailTemplatesResponse1

Пример

Пример за getEmailTemplates
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4
5 // Извикайте без незадължителния 'skip'
6 const templates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId);
7
8 // Извикайте с незадължителния параметър 'skip'
9 const pagedTemplates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId, 20);
10})();
11

renderEmailTemplate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
renderEmailTemplateBodyRenderEmailTemplateBodyYes
localestringNo

Отговор

Връща: RenderEmailTemplateResponse1

Пример

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

updateEmailTemplate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

Отговор

Връща: UpdateEmailTemplateResponse

Пример

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

getEventLog Internal Link

req tenantId urlId userIdWS

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimenumberДа
endTimenumberНе

Отговор

Връща: GetEventLogResponse1

Пример

getEventLog Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9876";
4 const urlId: string = "page_54321";
5 const userIdWS: string = "ws_user_1122";
6 const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // one week ago
7 const endTime: number = Date.now();
8
9 const log: GetEventLogResponse1 = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10 const recentLog: GetEventLogResponse1 = await getEventLog(tenantId, urlId, userIdWS, startTime);
11})();
12

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimenumberДа
endTimenumberНе

Отговор

Връща: GetGlobalEventLogResponse

Пример

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

createFeedPost Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Отговор

Връща: CreateFeedPostResponse1

Пример

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

createFeedPostPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsДа
broadcastIdstringНе
ssostringНе

Отговор

Връща: CreateFeedPostPublicResponse

Пример

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

deleteFeedPostPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
postIdstringДа
broadcastIdstringНе
ssostringНе

Отговор

Връща: DeleteFeedPostPublicResponse

Пример

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

getFeedPosts Internal Link


req tenantId afterId

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
afterIdstringНе
limitnumberНе
tagsArrayНе

Отговор

Връща: GetFeedPostsResponse1

Пример

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

getFeedPostsPublic Internal Link

req tenantId afterId

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
afterIdstringНе
limitnumberНе
tagsArrayНе
ssostringНе
isCrawlerbooleanНе
includeUserInfobooleanНе

Отговор

Връща: GetFeedPostsPublicResponse

Пример

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

getFeedPostsStats Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
postIdsArrayYes
ssostringNo

Отговор

Връща: GetFeedPostsStatsResponse

Пример

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

getUserReactsPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
postIdsArrayNo
ssostringNo

Отговор

Връща: GetUserReactsPublicResponse

Пример

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

reactFeedPostPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
postIdstringYes
reactBodyParamsReactBodyParamsYes
isUndobooleanNo
broadcastIdstringNo
ssostringNo

Отговор

Връща: ReactFeedPostPublicResponse

Пример

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

updateFeedPost Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
feedPostFeedPostДа

Отговор

Връща: UpdateFeedPostResponse

Пример

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

updateFeedPostPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
postIdstringYes
updateFeedPostParamsUpdateFeedPostParamsYes
broadcastIdstringNo
ssostringNo

Отговор

Връща: UpdateFeedPostPublicResponse

Пример

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

flagCommentPublic Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
isFlaggedbooleanДа
ssostringНе

Отговор

Връща: FlagCommentPublicResponse

Пример

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

getGifLarge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
largeInternalURLSanitizedstringYes

Отговор

Връща: GetGifLargeResponse

Пример

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

getGifsSearch Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
searchstringДа
localestringНе
ratingstringНе
pagenumberНе

Отговор

Връща: GetGifsSearchResponse

Пример

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

getGifsTrending Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringYes
localestringNo
ratingstringNo
pagenumberNo

Response

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringNo
createHashTagBodyCreateHashTagBodyNo

Отговор

Връща: AddHashTagResponse

Пример

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

addHashTagsBulk Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringНе
bulkCreateHashTagsBodyBulkCreateHashTagsBodyНе

Отговор

Връща: AddHashTagsBulkResponse

Пример

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

deleteHashTag Internal Link

Параметри

ИмеТипЗадължителноОписание
tagstringYes
tenantIdstringNo
deleteHashTagRequestBodyDeleteHashTagRequestBodyNo

Отговор

Returns: DeleteHashTagResponse

Пример

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

getHashTags Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
pagenumberНе

Отговор

Връща: GetHashTagsResponse1

Пример

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

patchHashTag Internal Link

Параметри

ИмеТипЗадължителноОписание
tagstringYes
tenantIdstringNo
updateHashTagBodyUpdateHashTagBodyNo

Отговор

Връща: PatchHashTagResponse

Пример

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

deleteModerationVote Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
voteIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: DeleteModerationVoteResponse

Пример

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

getApiComments Internal Link

Параметри

NameTypeRequiredDescription
pagenumberNo
countnumberNo
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
sortsstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Отговор

Връща: GetApiCommentsResponse

Пример

Пример getApiComments
Copy Copy
1
2async function loadComments() {
3 const fullResult: GetApiCommentsResponse = await getApiComments(
4 2, // страница
5 25, // брой
6 "feedback", // търсене на текст
7 "192.168.1.100", // IP от коментар
8 "approved", // филтри
9 "hasReplies", // филтри за търсене
10 "dateDesc", // сортиране
11 false, // демо
12 "tenant-abc123", // идентификатор на наемател
13 "sso-token-xyz" // sso
14 );
15
16 const minimalResult: GetApiCommentsResponse = await getApiComments(undefined, 5);
17}
18

getApiExportStatus Internal Link

Параметри

ИмеТипЗадължителноОписание
batchJobIdstringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: GetApiExportStatusResponse

Пример

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

getApiIds Internal Link

Параметри

ИмеТипЗадължителноОписание
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
afterIdstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Отговор

Връща: GetApiIdsResponse

Пример

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

getBanUsersFromComment Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
tenantIdstringНе
ssostringНе

Отговор

Връща: GetBanUsersFromCommentResponse

Пример

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

getCommentBanStatus Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
tenantIdstringNo
ssostringNo

Отговор

Връща: GetCommentBanStatusResponse1

Пример

Пример за getCommentBanStatus
Copy Copy
1
2async function checkCommentBanStatus() {
3 const banStatus: GetCommentBanStatusResponse1 = await getCommentBanStatus('cmt_987654321', 'tenant_42', 'sso_token_abc123');
4 const banStatusNoTenant: GetCommentBanStatusResponse1 = await getCommentBanStatus('cmt_987654322', undefined, 'sso_token_def456');
5}
6

getCommentChildren Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
tenantIdstringНе
ssostringНе

Отговор

Връща: GetCommentChildrenResponse

Пример

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

getCount Internal Link

Параметри

ИмеТипЗадължителноОписание
textSearchstringNo
byIPFromCommentstringNo
filterstringNo
searchFiltersstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Отговор

Връща: GetCountResponse

Пример

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

getCounts Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringНе
ssostringНе

Отговор

Връща: GetCountsResponse

Пример

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

getLogs Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
tenantIdstringNo
ssostringNo

Отговор

Връща: GetLogsResponse

Пример

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

getManualBadges Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringНе
ssostringНе

Отговор

Връща: GetManualBadgesResponse

Пример

getManualBadges Пример
Copy Copy
1
2async function fetchBadges() {
3 const tenantId: string = "tenant_987654321";
4 const ssoToken: string = "sso_ABCdef123456";
5
6 // Call with both optional parameters
7 const responseFull: GetManualBadgesResponse = await getManualBadges(tenantId, ssoToken);
8 console.log(responseFull);
9
10 // Call with only tenantId
11 const responseTenantOnly: GetManualBadgesResponse = await getManualBadges(tenantId);
12 console.log(responseTenantOnly);
13}
14
15fetchBadges();
16

getManualBadgesForUser Internal Link

Параметри

ИмеТипЗадължителноОписание
badgesUserIdstringНе
commentIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetManualBadgesForUserResponse

Пример

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

getModerationComment Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
includeEmailbooleanNo
includeIPbooleanNo
tenantIdstringNo
ssostringNo

Отговор

Връща: GetModerationCommentResponse

Пример

getModerationComment Пример
Copy Copy
1
2async function fetchCommentDetails() {
3 // Пълен набор от параметри
4 const commentId: string = "cmt_12345abc";
5 const includeEmail: boolean = true;
6 const includeIP: boolean = false;
7 const tenantId: string = "tenant_9876";
8 const sso: string = "sso_token_xyz";
9
10 const fullResult: GetModerationCommentResponse = await getModerationComment(
11 commentId,
12 includeEmail,
13 includeIP,
14 tenantId,
15 sso
16 );
17
18 // Минимално извикване, използвайки само задължителния аргумент
19 const minimalResult: GetModerationCommentResponse = await getModerationComment("cmt_67890def");
20
21 // Използвайте резултатите според нуждите...
22}
23

getModerationCommentText Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
tenantIdstringНе
ssostringНе

Отговор

Връща: GetModerationCommentTextResponse

Пример

getModerationCommentText Пример
Copy Copy
1
2async function exampleUsage(): Promise<void> {
3 const commentId: string = "cmt_9f8e7d6c5b4a3b2c1d0e";
4 const tenantId: string = "tenant_67890";
5 const sso: string = "sso_token_abc123";
6
7 // Извикайте само с необходимия параметър
8 const result1: GetModerationCommentTextResponse = await getModerationCommentText(commentId);
9
10 // Извикайте с незадължителни параметри
11 const result2: GetModerationCommentTextResponse = await getModerationCommentText(commentId, tenantId, sso);
12}
13

getPreBanSummary Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
includeByUserIdAndEmailbooleanНе
includeByIPbooleanНе
includeByEmailDomainbooleanНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetPreBanSummaryResponse

Пример

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

getSearchCommentsSummary Internal Link

Параметри

ИмеТипЗадължителенОписание
valuestringНе
filtersstringНе
searchFiltersstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetSearchCommentsSummaryResponse

Пример

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

getSearchPages Internal Link

Параметри

ИмеТипЗадължителноОписание
valuestringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: GetSearchPagesResponse

Пример

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

getSearchSites Internal Link

Параметри

ИмеТипЗадължителноОписание
valuestringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetSearchSitesResponse

Пример

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

getSearchSuggest Internal Link

Параметри

ИмеТипЗадължителноОписание
textSearchstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetSearchSuggestResponse

Пример

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

getSearchUsers Internal Link

Параметри

ИмеТипЗадължителноОписание
valuestringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetSearchUsersResponse

Пример

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

getTrustFactor Internal Link

Параметри

ИмеТипЗадължителноОписание
userIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetTrustFactorResponse

Пример

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

getUserBanPreference Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringNo
ssostringNo

Отговор

Връща: GetUserBanPreferenceResponse

Пример

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

getUserInternalProfile Internal Link

Параметри

ИмеТипЗадължителенОписание
commentIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: GetUserInternalProfileResponse1

Пример

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

postAdjustCommentVotes Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
adjustCommentVotesParamsAdjustCommentVotesParamsДа
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostAdjustCommentVotesResponse

Пример

postAdjustCommentVotes Пример
Copy Copy
1
2const commentId: string = "cmt_9f8b7a6d";
3
4const adjustParams: AdjustCommentVotesParams = {
5 voteDelta: 1,
6 // допълнителни полета, както е изисквано от AdjustCommentVotesParams
7};
8
9const broadcastId: string = "brd_20230915";
10const tenantId: string = "tenant_42";
11const sso: string = "sso-token-abc123";
12
13const result: PostAdjustCommentVotesResponse = await postAdjustCommentVotes(
14 commentId,
15 adjustParams,
16 broadcastId,
17 tenantId,
18 sso
19);
20

postApiExport Internal Link

Параметри

NameTypeRequiredDescription
textSearchstringНе
byIPFromCommentstringНе
filtersstringНе
searchFiltersstringНе
sortsstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostApiExportResponse

Пример

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

postBanUserFromComment Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
banEmailbooleanNo
banEmailDomainbooleanNo
banIPbooleanNo
deleteAllUsersCommentsbooleanNo
bannedUntilstringNo
isShadowBanbooleanNo
updateIdstringNo
banReasonstringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: PostBanUserFromCommentResponse

Пример

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

postBanUserUndo Internal Link

Параметри

ИмеТипЗадължителноОписание
banUserUndoParamsBanUserUndoParamsДа
tenantIdstringНе
ssostringНе

Отговор

Връща: PostBanUserUndoResponse

Пример

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

postBulkPreBanSummary Internal Link

Параметри

ИмеТипЗадължителноОписание
bulkPreBanParamsBulkPreBanParamsДа
includeByUserIdAndEmailbooleanНе
includeByIPbooleanНе
includeByEmailDomainbooleanНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostBulkPreBanSummaryResponse

Пример

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

postCommentsByIds Internal Link

Параметри

NameTypeRequiredDescription
commentsByIdsParamsCommentsByIdsParamsYes
tenantIdstringNo
ssostringNo

Отговор

Връща: PostCommentsByIdsResponse

Пример

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

postFlagComment Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostFlagCommentResponse

Пример

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

postRemoveComment Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: PostRemoveCommentResponse

Пример

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

postRestoreDeletedComment Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostRestoreDeletedCommentResponse

Пример

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

postSetCommentApprovalStatus Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
approvedbooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: PostSetCommentApprovalStatusResponse

Пример

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

postSetCommentReviewStatus Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringYes
reviewedbooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: PostSetCommentReviewStatusResponse

Пример

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

postSetCommentSpamStatus Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
spambooleanНе
permNotSpambooleanНе
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostSetCommentSpamStatusResponse

Пример

postSetCommentSpamStatus Пример
Copy Copy
1
2async function demoSpamStatus(): Promise<void> {
3 const commentId: string = "cmt_5f2a1b3c4d6e7f8g9h0i";
4
5 // Само задължителен параметър
6 const resultSimple: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(commentId, true);
7
8 // Всички незадължителни параметри са предоставени
9 const resultFull: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(
10 commentId,
11 false,
12 true,
13 "brd_1234abcd",
14 "tenant_42",
15 "sso_9876xyz"
16 );
17
18 console.log(resultSimple, resultFull);
19}
20

postSetCommentText Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
setCommentTextParamsSetCommentTextParamsДа
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostSetCommentTextResponse

Пример

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

postUnFlagComment Internal Link

Параметри

NameTypeRequiredDescription
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Отговор

Връща: PostUnFlagCommentResponse

Пример

postUnFlagComment Пример
Copy Copy
1
2async () => {
3 const response: PostUnFlagCommentResponse = await postUnFlagComment(
4 "cmt_12345", // commentId
5 "brd_67890", // broadcastId (по избор)
6 "tenant_abc", // tenantId (по избор)
7 "sso_user_token_789" // sso (по избор)
8 );
9};
10

postVote Internal Link

Параметри

ИмеТипЗадължителноОписание
commentIdstringДа
directionstringНе
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PostVoteResponse

Пример

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

putAwardBadge Internal Link

Параметри

ИмеТипЗадължителенОписание
badgeIdstringДа
userIdstringНе
commentIdstringНе
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PutAwardBadgeResponse

Пример

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

putCloseThread Internal Link

Параметри

ИмеТипЗадължителноОписание
urlIdstringДа
tenantIdstringНе
ssostringНе

Отговор

Връща: PutCloseThreadResponse

Пример

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

putRemoveBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
badgeIdstringДа
userIdstringНе
commentIdstringНе
broadcastIdstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: PutRemoveBadgeResponse

Пример

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

putReopenThread Internal Link

Параметри

ИмеТипЗадължителноОписание
urlIdstringYes
tenantIdstringNo
ssostringNo

Отговор

Връща: PutReopenThreadResponse

Пример

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

setTrustFactor Internal Link

Параметри

ИмеТипЗадължителноОписание
userIdstringНе
trustFactorstringНе
tenantIdstringНе
ssostringНе

Отговор

Връща: SetTrustFactorResponse

Пример

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

createModerator Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
createModeratorBodyCreateModeratorBodyYes

Отговор

Връща: CreateModeratorResponse1

Пример

Пример за createModerator
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9876";
4 const moderatorPayload: CreateModeratorBody = {
5 name: "Alice Johnson",
6 email: "alice.johnson@example.com"
7 // опционални полета като описание са пропуснати
8 };
9 const result: CreateModeratorResponse1 = await createModerator(tenantId, moderatorPayload);
10 console.log(result);
11}
12
13runExample();
14

deleteModerator Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
sendEmailstringNo

Отговор

Връща: DeleteModeratorResponse

Пример

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

getModerator Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: GetModeratorResponse1

Пример

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

getModerators Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
skipnumberNo

Отговор

Връща: GetModeratorsResponse1

Пример

Пример за getModerators
Copy Copy
1
2async function fetchModerators(): Promise<void> {
3 const tenantId: string = "tenant-9876";
4 const skip: number = 30; // незадължително отместване за пагинация
5 const moderators: GetModeratorsResponse1 = await getModerators(tenantId, skip);
6 // Пример без пагинация:
7 // const allModerators: GetModeratorsResponse1 = await getModerators(tenantId);
8}
9

sendInvite Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
fromNamestringДа

Response

Връща: SendInviteResponse

Example

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

updateModerator Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateModeratorBodyUpdateModeratorBodyДа

Response

Връща: UpdateModeratorResponse

Пример

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

deleteNotificationCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: DeleteNotificationCountResponse

Пример

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

getCachedNotificationCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetCachedNotificationCountResponse1

Пример

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

getNotificationCount Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Response

Returns: GetNotificationCountResponse1

Example

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

getNotifications Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе
urlIdstringНе
fromCommentIdstringНе
viewedbooleanНе
typestringНе
skipnumberНе

Response

Връща: GetNotificationsResponse1

Example

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

updateNotification Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
updateNotificationBodyUpdateNotificationBodyYes
userIdstringNo

Отговор

Връща: UpdateNotificationResponse

Пример

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

createV1PageReact Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringYes
urlIdstringYes
titlestringNo

Response

Връща: CreateV1PageReactResponse

Example

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

createV2PageReact Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
urlIdstringДа
idstringДа
titlestringНе

Отговор

Връща: CreateV2PageReactResponse

Пример

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

deleteV1PageReact Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
urlIdstringYes

Отговор

Връща: DeleteV1PageReactResponse

Пример

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

deleteV2PageReact Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
urlIdstringДа
idstringДа

Отговор

Връща: DeleteV2PageReactResponse

Пример

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

getV1PageLikes Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа

Отговор

Връща: GetV1PageLikesResponse

Пример

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

getV2PageReacts Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes

Отговор

Връща: GetV2PageReactsResponse

Пример

getV2PageReacts Пример
Copy Copy
1
2async function demoGetPageReacts(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant";
4 const urlId: string = "article-2024-06-01";
5
6 const reacts: GetV2PageReactsResponse = await getV2PageReacts(tenantId, urlId);
7
8 // пример за достъп до опционално свойство
9 const customConfig: CustomConfigParameters | undefined = reacts.customConfig;
10 console.log(reacts);
11}
12
13demoGetPageReacts();
14

getV2PageReactUsers Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
urlIdstringДа
idstringДа

Отговор

Връща: GetV2PageReactUsersResponse1

Пример

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

addPage Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
createAPIPageDataCreateAPIPageDataYes

Отговор

Връща: AddPageAPIResponse

Пример

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: DeletePageAPIResponse

Пример

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

getOfflineUsers Internal Link

Past commenters on the page who are NOT currently online. Sorted by displayName.
Use this after exhausting /users/online to render a "Members" section.
Cursor pagination on commenterName: server walks the partial {tenantId, urlId, commenterName}
index from afterName forward via $gt, no $skip cost.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
afterNamestringNo
afterUserIdstringNo

Response

Връща: GetOfflineUsersResponse

Пример

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

getOnlineUsers Internal Link

Текущи онлайн зрители на страница: хора, чието websocket сесия е абонирана за страницата в момента.
Връща anonCount + totalCount (абонати за цялата стая, включително анонимни зрители, които не изброяваме).

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа
afterNamestringНе
afterUserIdstringНе

Отговор

Връща: GetOnlineUsersResponse

Пример

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

getPageByURLId Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringYes
urlIdstringYes

Response

Връща: GetPageByURLIdAPIResponse

Example

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes

Отговор

Връща: GetPagesAPIResponse

Пример

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

List pages for a tenant. Used by the FChat desktop client to populate its room list.
Requires enableFChat to be true on the resolved custom config for each page.
Pages that require SSO are filtered against the requesting user's group access.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
cursorstringNo
limitnumberNo
qstringNo
sortByPagesSortByNo
hasCommentsbooleanNo

Response

Returns: GetPagesPublicResponse

Example

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

getUsersInfo Internal Link

Групова информация за потребител за наемател. При зададени userIds се връща информация за показване от User / SSOUser.
Използва се от уиджета за коментари за обогатяване на потребители, които току‑що се появиха чрез събитие за наличност.
Без контекст на страницата: поверителността се прилага еднообразно (частните профили се маскират).

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idsstringДа

Отговор

Връща: GetUsersInfoResponse

Пример

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

patchPage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateAPIPageDataUpdateAPIPageDataДа

Отговор

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

Отговор

Връща: DeletePendingWebhookEventResponse

Пример

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

getPendingWebhookEventCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringНе
externalIdstringНе
eventTypestringНе
typestringНе
domainstringНе
attemptCountGTnumberНе

Отговор

Връща: GetPendingWebhookEventCountResponse1

Пример

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

getPendingWebhookEvents Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

Отговор

Връща: GetPendingWebhookEventsResponse1

Пример

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

createQuestionConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createQuestionConfigBodyCreateQuestionConfigBodyДа

Отговор

Връща: CreateQuestionConfigResponse1

Пример

createQuestionConfig Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const customOption: QuestionConfigCustomOptionsInner = {
5 label: "Option A",
6 value: "a",
7};
8
9const createQuestionConfigBody: CreateQuestionConfigBody = {
10 questionText: "What is your favorite color?",
11 isActive: true,
12 // незадължителните полета могат да бъдат пропуснати
13 customOptions: [customOption],
14};
15
16const response: CreateQuestionConfigResponse1 = await createQuestionConfig(
17 tenantId,
18 createQuestionConfigBody
19);
20

deleteQuestionConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: DeleteQuestionConfigResponse

Пример

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

getQuestionConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Returns: GetQuestionConfigResponse1

Пример

Пример за getQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-42";
3const questionId: string = "question-7f9b3e";
4
5const response: GetQuestionConfigResponse1 = await getQuestionConfig(tenantId, questionId);
6

getQuestionConfigs Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipnumberНе

Отговор

Връща: GetQuestionConfigsResponse1

Пример

Пример за getQuestionConfigs
Copy Copy
1
2async function fetchQuestionConfigs() {
3 const tenantId: string = "tenant-9876";
4
5 // Извикване без незадължителния параметър 'skip'
6 const configsWithoutSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId);
7
8 // Извикване с незадължителния параметър 'skip'
9 const skip: number = 10;
10 const configsWithSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId, skip);
11
12 console.log(configsWithoutSkip, configsWithSkip);
13}
14

updateQuestionConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Отговор

Връща: UpdateQuestionConfigResponse

Пример

Пример за updateQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const questionId: string = "qstn-2023-04";
4
5const updateBody: UpdateQuestionConfigBody = {
6 // демонстрирани незадължителни полета
7 customOptions: [
8 {
9 id: "opt-001",
10 label: "Extra Details",
11 required: true,
12 },
13 ],
14 renderingType: "markdown",
15};
16
17const response: UpdateQuestionConfigResponse = await updateQuestionConfig(
18 tenantId,
19 questionId,
20 updateBody
21);
22

createQuestionResult Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createQuestionResultBodyCreateQuestionResultBodyДа

Отговор

Връща: CreateQuestionResultResponse1

Пример

createQuestionResult Пример
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3
4const metaItem: MetaItem = {
5 key: "campaign",
6 value: "spring-launch"
7};
8
9const questionResultBody: CreateQuestionResultBody = {
10 questionId: "question-42",
11 answer: "Positive",
12 metadata: [metaItem]
13 // опционалните полета, като notes, са пропуснати
14};
15
16const result: CreateQuestionResultResponse1 = await createQuestionResult(tenantId, questionResultBody);
17

deleteQuestionResult Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: DeleteQuestionResultResponse

Пример

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

getQuestionResult Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetQuestionResultResponse1

Пример

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

getQuestionResults Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringНе
userIdstringНе
startDatestringНе
questionIdstringНе
questionIdsstringНе
skipnumberНе

Отговор

Връща: GetQuestionResultsResponse1

Пример

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

updateQuestionResult Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateQuestionResultBodyUpdateQuestionResultBodyДа

Отговор

Връща: UpdateQuestionResultResponse

Пример

пример за updateQuestionResult
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "acme-corp-01";
4 const id: string = "qr-20230915-001";
5
6 const updateQuestionResultBody: UpdateQuestionResultBody = {
7 // задължителни полета
8 answer: "No",
9 // незадължителни полета
10 comment: "User clarified their response",
11 // anotherOptionalField?: value,
12 };
13
14 const result: UpdateQuestionResultResponse = await updateQuestionResult(
15 tenantId,
16 id,
17 updateQuestionResultBody
18 );
19
20 console.log(result);
21}
22
23runUpdate();
24

aggregateQuestionResults Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Отговор

Връща: AggregateQuestionResultsResponse1

Пример

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

bulkAggregateQuestionResults Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestYes
forceRecalculatebooleanNo

Отговор

Връща: BulkAggregateQuestionResultsResponse1

Пример

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

combineCommentsWithQuestionResults Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Response

Връща: CombineCommentsWithQuestionResultsResponse

Example

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

addSSOUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createAPISSOUserDataCreateAPISSOUserDataДа

Отговор

Връща: AddSSOUserAPIResponse

Пример

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

deleteSSOUser Internal Link

Параметри

NameTypeRequiredDescription
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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
emailstringYes

Отговор

Връща: GetSSOUserByEmailAPIResponse

Пример

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
skipnumberNo

Отговор

Връща: GetSSOUsersResponse

Пример

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsbooleanNo

Отговор

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

Параметри

ИмеТипЗадължителноОписание
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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataДа

Отговор

Връща: CreateSubscriptionAPIResponse

Пример

Пример за createSubscription
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 // optional field
10 };
11
12 const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, subscriptionData);
13 console.log(result);
14})();
15

deleteSubscription Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
userIdstringНе

Отговор

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataДа
userIdstringНе

Отговор

Връща: UpdateSubscriptionAPIResponse

Пример

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

getTenantDailyUsages Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Отговор

Връща: GetTenantDailyUsagesResponse1

Пример

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

createTenantPackage Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
createTenantPackageBodyCreateTenantPackageBodyДа

Response

Връща: CreateTenantPackageResponse1

Example

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

deleteTenantPackage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: DeleteTenantPackageResponse

Пример

Пример за deleteTenantPackage
Copy Copy
1
2async function removeTenantPackage(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const packageId: string = "pkg_67890";
5
6 const result: DeleteTenantPackageResponse = await deleteTenantPackage(tenantId, packageId);
7 // използвайте резултата, както е необходимо
8}
9
10removeTenantPackage();
11

getTenantPackage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetTenantPackageResponse1

Пример

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

getTenantPackages Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipnumberНе

Отговор

Връща: GetTenantPackagesResponse1

Пример

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

replaceTenantPackage Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
replaceTenantPackageBodyReplaceTenantPackageBodyДа

Отговор

Връща се: ReplaceTenantPackageResponse

Пример

replaceTenantPackage Пример
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant-01";
4 const packageId: string = "pkg-2024-annual";
5
6 const config: CustomConfigParameters = {
7 // полета за персонализирана конфигурация тук
8 };
9
10 const body: ReplaceTenantPackageBody = {
11 name: "Enterprise Package",
12 // незадължителна персонализирана конфигурация
13 customConfig: config,
14 };
15
16 const response: ReplaceTenantPackageResponse = await replaceTenantPackage(tenantId, packageId, body);
17 console.log(response);
18})();
19

updateTenantPackage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
updateTenantPackageBodyUpdateTenantPackageBodyYes

Отговор

Връща: UpdateTenantPackageResponse

Пример

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

createTenantUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

Отговор

Връща: CreateTenantUserResponse1

Пример

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

deleteTenantUser Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
idstringДа
deleteCommentsstringНе
commentDeleteModestringНе

Отговор

Връща: DeleteTenantUserResponse

Пример

Пример за deleteTenantUser
Copy Copy
1
2async function demoDeleteTenantUser() {
3 const tenantId: string = "acme-corp-tenant";
4 const userId: string = "user-9876";
5
6 // Изтрий потребителя и всичките му коментари, използвайки режим на твърдо изтриване
7 const resultWithOptions: DeleteTenantUserResponse = await deleteTenantUser(
8 tenantId,
9 userId,
10 "true",
11 "hard"
12 );
13
14 // Изтрий потребителя без премахване на коментари (поведение по подразбиране)
15 const resultBasic: DeleteTenantUserResponse = await deleteTenantUser(tenantId, userId);
16}
17

getTenantUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Отговор

Връща: GetTenantUserResponse1

Пример

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

getTenantUsers Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringДа
skipnumberНе

Response

Връща: GetTenantUsersResponse1

Example

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

replaceTenantUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

Отговор

Връща: ReplaceTenantUserResponse

Пример

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

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
redirectURLstringНе

Отговор

Връща: SendLoginLinkResponse

Пример

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

updateTenantUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
updateTenantUserBodyUpdateTenantUserBodyYes
updateCommentsstringNo

Отговор

Връща: UpdateTenantUserResponse

Пример

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

createTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

Отговор

Връща: CreateTenantResponse1

Пример

Пример за createTenant
Copy Copy
1
2async function example() {
3 const tenantId: string = 'tenant-2024-01';
4 const createTenantBody: CreateTenantBody = {
5 // задължителни полета
6 name: 'Acme International',
7 // опционални полета могат да се добавят при нужда, напр.:
8 // billingInfo: { address: '123 Main St', city: 'Metropolis' } as BillingInfo,
9 };
10 const response: CreateTenantResponse1 = await createTenant(tenantId, createTenantBody);
11 console.log(response);
12}
13

deleteTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes
surestringNo

Отговор

Връща: DeleteTenantResponse

Пример

deleteTenant Пример
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const id: string = "resource_98765";
5 const sure: string = "confirm";
6
7 // Извикване с незадължителен параметър 'sure'
8 const responseWithSure: DeleteTenantResponse = await deleteTenant(tenantId, id, sure);
9 console.log(responseWithSure);
10
11 // Извикване без незадължителен параметър 'sure'
12 const responseWithoutSure: DeleteTenantResponse = await deleteTenant(tenantId, id);
13 console.log(responseWithoutSure);
14}
15
16runExample();
17

getTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetTenantResponse1

Пример

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

getTenants Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
metastringНе
skipnumberНе

Отговор

Връща: GetTenantsResponse1

Пример

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

updateTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateTenantBodyUpdateTenantBodyДа

Отговор

Връща: UpdateTenantResponse

Пример

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

changeTicketState Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringДа
idstringДа
changeTicketStateBodyChangeTicketStateBodyДа

Отговор

Връща: ChangeTicketStateResponse1

Пример

Пример за changeTicketState
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-97123";
4const ticketId: string = "ticket-45001";
5
6const changeTicketStateBody: ChangeTicketStateBody = {
7 state: "closed",
8 // опционално поле в тялото
9 comment: "Issue resolved after code fix"
10};
11
12const response: ChangeTicketStateResponse1 = await changeTicketState(
13 tenantId,
14 userId,
15 ticketId,
16 changeTicketStateBody
17);
18

createTicket Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
userIdstringYes
createTicketBodyCreateTicketBodyYes

Отговор

Връща: CreateTicketResponse1

Пример

createTicket Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const userId: string = "user_98765";
4
5const ticketBody: CreateTicketBody = {
6 subject: "Issue with payment processing"
7 // description?: string е незадължително и е пропуснато
8};
9
10const response: CreateTicketResponse1 = await createTicket(tenantId, userId, ticketBody);
11// Пример за използване на незадължително поле от отговора
12// console.log(response.ticket?.id);
13

getTicket Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
userIdstringНе

Отговор

Returns: GetTicketResponse1

Пример

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

getTickets Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Отговор

Връща: GetTicketsResponse1

Пример

getTickets Пример
Copy Copy
1
2async function loadTickets() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe";
5 const state: number = 2; // например, затворено
6 const skip: number = 10;
7 const limit: number = 5;
8
9 const ticketsFull: GetTicketsResponse1 = await getTickets(tenantId, userId, state, skip, limit);
10 const ticketsPartial: GetTicketsResponse1 = await getTickets(tenantId);
11}
12
13loadTickets();
14

getTranslations Internal Link

Параметри

ИмеТипЗадължителноОписание
namespacestringYes
componentstringYes
localestringNo
useFullTranslationIdsbooleanNo

Отговор

Връща: GetTranslationsResponse1

Пример

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

uploadImage Internal Link


Качване и преоразмеряване на изображение

Параметри

ИмеТипЗадължителноОписание
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Да

Отговор

Връща: GetUserBadgeProgressByIdResponse

Пример

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

getUserBadgeProgressByUserId Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
userIdstringYes

Отговор

Връща: GetUserBadgeProgressByUserIdResponse

Пример

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

getUserBadgeProgressList Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
userIdstringNo
limitnumberNo
skipnumberNo

Отговор

Връща: GetUserBadgeProgressListResponse

Пример

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

createUserBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
createUserBadgeParamsCreateUserBadgeParamsYes

Отговор

Връща: CreateUserBadgeResponse

Пример

Пример за createUserBadge
Copy Copy
1
2const tenantId: string = "company-42";
3
4const badgeParams: CreateUserBadgeParams = {
5 name: "Community Champion",
6 iconUrl: "https://assets.example.com/badges/champion.png",
7 // описанието е незадължително и е пропуснато тук
8};
9
10const result: CreateUserBadgeResponse = await createUserBadge(tenantId, badgeParams);
11

deleteUserBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: DeleteUserBadgeResponse

Пример

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

getUserBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: GetUserBadgeResponse

Пример

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

getUserBadges Internal Link

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе
badgeIdstringНе
typenumberНе
displayedOnCommentsbooleanНе
limitnumberНе
skipnumberНе

Отговор

Връща: GetUserBadgesResponse

Пример

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

updateUserBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateUserBadgeParamsUpdateUserBadgeParamsДа

Отговор

Връща: UpdateUserBadgeResponse

Пример

Пример за updateUserBadge
Copy Copy
1
2async function applyBadge() {
3 const tenantId: string = "acme-corp-tenant";
4 const userId: string = "user-98765";
5
6 const params: UpdateUserBadgeParams = {
7 badgeId: "gold-contributor",
8 // пример за незадължително поле
9 expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),
10 };
11
12 const result: UpdateUserBadgeResponse = await updateUserBadge(tenantId, userId, params);
13 console.log(result);
14}
15
16applyBadge();
17

getUserNotificationCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
ssostringNo

Отговор

Връща: GetUserNotificationCountResponse1

Пример

getUserNotificationCount Пример
Copy Copy
1
2async function demoGetUserNotificationCount() {
3 const tenantId: string = "acme-corp-01";
4
5 // Извикайте с незадължителен SSO токен
6 const countWithSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
7 tenantId,
8 "sso-token-abc123"
9 );
10
11 // Извикайте без SSO токен
12 const countWithoutSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
13 tenantId
14 );
15
16 console.log(countWithSSO, countWithoutSSO);
17}
18

getUserNotifications Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringНе
pageSizenumberНе
afterIdstringНе
includeContextbooleanНе
afterCreatedAtnumberНе
unreadOnlybooleanНе
dmOnlybooleanНе
noDmbooleanНе
includeTranslationsbooleanНе
includeTenantNotificationsbooleanНе
ssostringНе

Отговор

Връща: GetUserNotificationsResponse

Пример

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

resetUserNotificationCount Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

Отговор

Връща: ResetUserNotificationCountResponse

Пример

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

resetUserNotifications Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
afterIdstringНе
afterCreatedAtnumberНе
unreadOnlybooleanНе
dmOnlybooleanНе
noDmbooleanНе
ssostringНе

Отговор

Връща: ResetUserNotificationsResponse1

Пример

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

updateUserNotificationCommentSubscriptionStatus Internal Link

Enable or disable notifications for a specific comment.

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
notificationIdstringДа
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumДа
commentIdstringДа
ssostringНе

Отговор

Връща: UpdateUserNotificationCommentSubscriptionStatusResponse

Пример

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

updateUserNotificationPageSubscriptionStatus Internal Link


Активирайте или деактивирайте известия за страница. Когато потребителите са абонирани за страница, известия се създават за нови главни коментари, и също

Parameters

ИмеТипЗадължителноОписание
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumYes
ssostringNo

Response

Връща: UpdateUserNotificationPageSubscriptionStatusResponse

Пример

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

updateUserNotificationStatus Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
notificationIdstringДа
newStatusUpdateUserNotificationStatusNewStatusEnumДа
ssostringНе

Отговор

Връща: UpdateUserNotificationStatusResponse

Пример

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

getUserPresenceStatuses Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Отговор

Връща: GetUserPresenceStatusesResponse1

Пример

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

searchUsers Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringYes
urlIdstringYes
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

Отговор

Връща: SearchUsersResponse1

Пример

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

getUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetUserResponse1

Пример

Пример за getUser
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_98765";
5 const result: GetUserResponse1 = await getUser(tenantId, userId);
6})();
7

createVote Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
commentIdstringДа
directionCreateVoteDirectionEnumДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: CreateVoteResponse

Пример

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

deleteVote Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
editKeystringНе

Отговор

Връща: DeleteVoteResponse

Пример

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

getVotes Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
urlIdstringYes

Отговор

Връща: GetVotesResponse1

Пример

getVotes Пример
Copy Copy
1
2async function fetchVotes(): Promise<void> {
3 const tenantId: string = "acme-corp-01";
4 const urlId: string = "article-2024-05-15";
5
6 const response: GetVotesResponse1 = await getVotes(tenantId, urlId);
7
8 // Пример за достъп до незадължително поле в отговора
9 const firstVoteId: string | undefined = response?.votes?.[0]?.id;
10}
11

getVotesForUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
urlIdstringYes
userIdstringNo
anonUserIdstringNo

Отговор

Връща: GetVotesForUserResponse1

Пример

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


Нужна помощ?

Ако срещнете проблеми или имате въпроси относно JavaScript/TypeScript SDK, моля:

Принос

Приносите са добре дошли! Моля посетете репозитория в GitHub за указания относно приноса.