FastComments.com

FastComments JavaScript/TypeScript SDK


Це офіційний SDK для JavaScript/TypeScript від FastComments.

Керуйте коментарями, користувачами, SSO та модерацією з Node.js або браузера.

Репозиторій

Переглянути на GitHub


Встановлення Internal Link

npm

npm install fastcomments-sdk

Документація API Internal Link


Повна документація API: docs/api/README.md

Сумісність браузера та сервера Internal Link


Цей SDK використовує подвійні точки входу, щоб забезпечити оптимальну сумісність і запобігти помилкам під час виконання:

  • fastcomments-sdk/browser - Безпечна для браузера версія з нативним fetch
  • fastcomments-sdk/server - Повна версія для Node.js з підтримкою SSO
  • fastcomments-sdk (за замовчуванням) - Лише типи, безпечно імпортувати будь-куди

Публічні та захищені API Internal Link


SDK надає три основні API-класи:

  • DefaultApi - Захищені кінцеві точки, які вимагають вашого API-ключа для автентифікації. Використовуйте їх для серверних операцій.
  • PublicApi - Публічні кінцеві точки, до яких можна отримати доступ без API-ключа. Їх можна викликати безпосередньо з браузерів/мобільних пристроїв тощо.
  • HiddenApi - Внутрішні/адміністративні кінцеві точки для просунутих сценаріїв використання.

Приклад: Використання Public API (безпечне для браузера)

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

const publicApi = new PublicApi();

// Отримати коментарі для сторінки (API-ключ не потрібен)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Приклад: Використання Default API (лише на сервері)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Тримайте це в секреті!
});
const defaultApi = new DefaultApi(config);

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

Інтеграція SSO (єдиний вхід) Internal Link

FastComments підтримує SSO для інтеграції з вашою існуючою системою аутентифікації користувачів. Функціональність SSO доступна лише у серверному експорті, оскільки вона вимагає можливостей Node.js crypto.

Просте SSO (тільки на сервері)

Прості SSO-токени мають генеруватися на сервері та передаватися клієнту:

// Серверний код (Node.js/бекенд)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Створити просте SSO за допомогою вбудованого помічника  
const userData = {
  username: 'john_doe',
  email: 'john@example.com',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg'
};

const sso = FastCommentsSSO.createSimple(userData, {
  loginURL: '/login',
  logoutURL: '/logout'
});

const ssoToken = sso.createToken();

// Відправте ssoToken у ваш клієнтський код
// Клієнтський код потім може використати цей токен з браузерним SDK

Безпечне SSO (серверна сторона, рекомендовано)

Безпечне SSO слід реалізовувати на сервері — воно забезпечує кращий рівень безпеки:

// Серверний код (Node.js/бекенд)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Створити безпечне SSO за допомогою вбудованого помічника
const userData = {
  id: 'user-123',
  email: 'john@example.com',
  username: 'john_doe',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg',
  isAdmin: false,
  isModerator: false
};

const sso = FastCommentsSSO.createSecure('your-api-key', userData, {
  loginURL: '/login',
  logoutURL: '/logout'
});

const ssoConfig = sso.prepareToSend();

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

// Або відправте ssoConfig клієнту для використання в браузері

Використання SSO з браузера (з токеном, згенерованим на сервері)

// Клієнтський код (браузер)
import { PublicApi } from 'fastcomments-sdk/browser';

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

Типові сценарії використання Internal Link

Отримання коментарів для сторінки

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

Створення коментаря

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

Голосування за коментар

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 — за, -1 — проти
  }
});

Управління користувачами (потребує API-ключа)

// Пошук користувачів (потребує DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Живі події (оновлення в реальному часі) Internal Link

Підписуйтеся на події в реальному часі, щоб отримувати оновлення щодо коментарів, голосів та інших дій.

Події на рівні сторінки

Слухайте події в реальному часі для конкретної сторінки (коментарі, голоси тощо):

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

// Close the subscription when done
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);
}

Ідентифікатори трансляцій Internal Link

Ви побачите, що потрібно передавати broadcastId у деяких викликах API. Коли ви отримуватимете події, ви отримаєте назад цей ID, тож знатимете, що ігнорувати подію, якщо плануєте оптимістично застосовувати зміни на клієнті (а саме так, ймовірно, і варто робити, оскільки це забезпечує найкращий досвід). Передайте сюди UUID. ID повинен бути достатньо унікальним, щоб не повторюватися двічі в одній сесії браузера.

import { v4 as uuidv4 } from 'uuid';

const response = await sdk.publicApi.createCommentPublic({
  createCommentParams: {
    tenantId: 'your-tenant-id',
    urlId: 'page-id',
    comment: 'My comment',
    broadcastId: uuidv4() // Унікальний ідентифікатор для цієї операції
  }
});

Обробка помилок Internal Link

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

Агрегувати Internal Link

Агрегує документи, групуючи їх (якщо вказано groupBy) та застосовуючи кілька операцій. Підтримуються різні операції (наприклад sum, countDistinct, avg тощо).

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
aggregationRequest AggregationRequest Так
parentTenantId string Ні
includeStats boolean Ні

Відповідь

Повертає: AggregationResponse

Отримати журнали аудиту Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
limit number Ні
skip number Ні
order SORTDIR Ні
after number Ні
before number Ні

Відповідь

Повертає: GetAuditLogs200Response

Приклад

Приклад getAuditLogs
Copy Copy
1
2const tenantId: string = 'tenant_9a8b7c';
3const limit: number = 100;
4const skip: number = 0;
5const after: number = Date.now() - 30 * 24 * 60 * 60 * 1000; // 30 днів тому
6const before: number = Date.now();
7const auditLogs: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, undefined, after, before);
8

Заблокувати з коментаря (публічно) Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
publicBlockFromCommentParams PublicBlockFromCommentParams Так
sso string Ні

Відповідь

Повертає: BlockFromCommentPublic200Response

Приклад

blockFromCommentPublic Приклад
Copy Copy
1
2const tenantId: string = "site_7f9b2e";
3const commentId: string = "comment_2026-03-25_001";
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: "Repeated harassment and targeted abuse",
6 blockDurationDays: 90,
7 includeHistory: true,
8 notifyModeratorTeam: true
9};
10const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.fakePayload.signature";
11const result: BlockFromCommentPublic200Response = await blockFromCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
12

Розблокувати коментар (публічно) Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
commentId string Так
publicBlockFromCommentParams PublicBlockFromCommentParams Так
sso string Ні

Відповідь

Повертає: UnBlockCommentPublic200Response

Приклад

unBlockCommentPublic Приклад
Copy Copy
1
2const tenantId: string = 'tenant_42e8a1';
3const commentId: string = 'cmt_9b3f2d';
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: 'abusive_language',
6 blockedByModeratorId: 'mod_17',
7 note: 'Targeted harassment; review complete',
8 unblockRequestedAt: new Date().toISOString()
9};
10const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature';
11const result: UnBlockCommentPublic200Response = await unBlockCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
12

Перевірені коментарі на блокування Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentIds string Так
sso string Ні

Відповідь

Повертає: CheckedCommentsForBlocked200Response

Приклад

Приклад checkedCommentsForBlocked
Copy Copy
1
2const tenantId: string = 'tenant_4f3b2a1e';
3const commentIds: string = 'c_1001,c_1002,c_1003';
4const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIn0.Sf4ke7nQP3mZx9v2';
5
6const resultWithoutSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds);
7const resultWithSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds, ssoToken);
8

Заблокувати користувача з коментаря Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
id string Так
blockFromCommentParams BlockFromCommentParams Так
userId string Ні
anonUserId string Ні

Відповідь

Повертає: BlockFromCommentPublic200Response

Приклад

Приклад blockUserFromComment
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const id: string = 'comment_7f3b2a9c';
4const blockFromCommentParams: BlockFromCommentParams = {
5 reason: 'Repeated abusive language and targeted harassment',
6 durationDays: 90,
7 preventReposting: true
8};
9const userId: string = 'user_12345';
10const anonUserId: string = 'anon_98765';
11
12const result: BlockFromCommentPublic200Response = await blockUserFromComment(
13 tenantId,
14 id,
15 blockFromCommentParams,
16 userId,
17 anonUserId
18);
19

Створити публічний коментар Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
urlId string Так
broadcastId string Так
commentData CommentData Так
sessionId string Ні
sso string Ні

Відповідь

Повертає: CreateCommentPublic200Response

Приклад

Приклад createCommentPublic
Copy Copy
1
2const tenantId: string = 'tenant_prod_42';
3const urlId: string = 'article-2026-03-25-tech-deep-dive';
4const broadcastId: string = 'live-broadcast-001';
5const sessionId: string = 'sess_9f8e7d6a3b';
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature';
7const commentData: CommentData = {
8 content: 'Great reporting — appreciated the depth on performance tradeoffs.',
9 authorName: 'Jordan M.',
10 language: 'en-US',
11 metadata: { client: 'web' }
12};
13const result: CreateCommentPublic200Response = await createCommentPublic(tenantId, urlId, broadcastId, commentData, sessionId, sso);
14

Видалити коментар Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
contextUserId string Ні
isLive boolean Ні

Відповідь

Повертає: DeleteComment200Response

Приклад

Приклад deleteComment
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const id: string = "comment_5f3a2b7c";
4const contextUserId: string = "user_1229";
5const isLive: boolean = true;
6const response: DeleteComment200Response = await deleteComment(tenantId, id, contextUserId, isLive);
7

Видалити публічний коментар Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Yes
commentId string Yes
broadcastId string Yes
editKey string No
sso string No

Відповідь

Повертає: DeleteCommentPublic200Response

Приклад

deleteCommentPublic Приклад
Copy Copy
1
2const tenantId: string = 'tenant_4f2c9b';
3const commentId: string = 'comment-7c3a9f2d';
4const broadcastId: string = 'article-2026-03-20';
5const editKey: string | undefined = 'ek_pub_abc12345';
6const sso: string | undefined = 'sso_eyJhbGciOiJIUzI1Ni';
7
8const result: DeleteCommentPublic200Response = await deleteCommentPublic(
9 tenantId,
10 commentId,
11 broadcastId,
12 editKey,
13 sso
14);
15

Видалити голос за коментар Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
commentId string Так
voteId string Так
urlId string Так
broadcastId string Так
editKey string Ні
sso string Ні

Відповідь

Повертає: DeleteCommentVote200Response

Приклад

Приклад deleteCommentVote
Copy Copy
1
2const tenantId: string = 'acme-tenant-87e4fd';
3const commentId: string = 'cmt-9a12b3f4';
4const voteId: string = 'vote-4f6d21b9';
5const urlId: string = 'https://www.acme.com/articles/2026/03/25/how-to-test';
6const broadcastId: string = 'broadcast-20260325-01';
7const editKey: string = 'editkey-6b7c8d9e';
8const sso: string = 'sso-jwt-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
9
10const response: DeleteCommentVote200Response = await deleteCommentVote(
11 tenantId,
12 commentId,
13 voteId,
14 urlId,
15 broadcastId,
16 editKey,
17 sso
18);
19

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

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
userId string Ні
anonUserId string Ні

Відповідь

Повертає: FlagComment200Response

Приклад

Приклад flagComment
Copy Copy
1
2const tenantId: string = 'tenant_7f3b21';
3const commentId: string = 'cmt_9a2b4';
4const userId: string = 'user_1024';
5const result: FlagComment200Response = await flagComment(tenantId, commentId, userId);
6

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

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetComment200Response

Приклад

Приклад getComment
Copy Copy
1
2const tenantId: string = "acme-publishing-001";
3const commentId: string = "f3b2c1d0-9a8e-4b7c-8123-6d5f0a1e2b3c";
4const result: GetComment200Response = await getComment(tenantId, commentId);
5const wrapper: GetComment200Response & { comment?: APIComment } = result;
6const comment: APIComment | undefined = wrapper.comment;
7const authorBadge: CommentUserBadgeInfo | undefined = comment?.user?.badge;
8const userHashTags: CommentUserHashTagInfo[] | undefined = comment?.user?.hashTags
9

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

Параметри

Name Type Required Description
tenantId string Так
page number Ні
limit number Ні
skip number Ні
asTree boolean Ні
skipChildren number Ні
limitChildren number Ні
maxTreeDepth number Ні
urlId string Ні
userId string Ні
anonUserId string Ні
contextUserId string Ні
hashTag string Ні
parentId string Ні
direction SortDirections Ні

Відповідь

Повертає: GetComments200Response

Приклад

Приклад getComments
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // page
6 20, // limit
7 0, // skip
8 true, // asTree
9 1, // skipChildren
10 3, // limitChildren
11 4, // maxTreeDepth
12 'articles/2026/new-product-launch', // urlId
13 'user_7890', // userId
14 'anon_4f3b2', // anonUserId
15 undefined, // contextUserId
16 '#launch', // hashTag
17 undefined // parentId
18);
19

Отримати публічні коментарі Internal Link

req tenantId urlId

Параметри

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

Відповідь

Повертає: GetCommentsPublic200Response

Приклад

Приклад getCommentsPublic
Copy Copy
1
2const tenantId: string = 'tenant_eu-west_01';
3const urlId: string = 'https://www.financialtimes.com/articles/2026/market-update-q1';
4const response: GetCommentsPublic200Response = await getCommentsPublic(
5 tenantId,
6 urlId,
7 2,
8 undefined,
9 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.tokenPayload.signature',
10 undefined,
11 0,
12 50,
13 5,
14 true,
15 undefined,
16 true,
17 false,
18 true,
19 'en-US',
20 'reactions,moderation',
21 false,
22 true,
23 true,
24 3,
25 false,
26 undefined,
27 'performance',
28 ['feature','fastcomments'],
29 'user_9876',
30 undefined,
31 undefined,
32 undefined
33);
34

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

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
editKey string Ні
sso string Ні

Відповідь

Повертає: GetCommentText200Response

Приклад

Приклад getCommentText
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const commentId: string = 'cmt_7890b';
4const editKey: string = 'edit_4f2d9b7c';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
6
7const result: GetCommentText200Response = await getCommentText(tenantId, commentId, editKey, sso);
8

Отримати імена користувачів, які голосували за коментар Internal Link

Параметри

Назва Type Обов'язково Опис
tenantId string Так
commentId string Так
dir number Так
sso string Ні

Відповідь

Повертає: GetCommentVoteUserNames200Response

Приклад

Приклад getCommentVoteUserNames
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_4f2c1e';
4 const commentId: string = 'cmt_9a7b3d';
5 const dir: number = 1;
6 const resultUpvotes: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dir);
7 const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.fakepayload.signature';
8 const dirDown: number = -1;
9 const resultDownvotes: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dirDown, sso);
10 console.log(resultUpvotes, resultDownvotes);
11})();
12

Заблокувати коментар Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
broadcastId string Так
sso string Ні

Відповідь

Повертає: LockComment200Response

Приклад

Приклад lockComment
Copy Copy
1
2const tenantId: string = "tenant_prod_8f3a2b";
3const commentId: string = "cmt_5d7e9a92";
4const broadcastId: string = "broadcast_2026_03_25_1400";
5const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature";
6const resultWithSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId, ssoToken);
7const resultWithoutSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId);
8

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

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
broadcastId string Так
sso string Ні

Відповідь

Повертає: PinComment200Response

Приклад

Приклад pinComment
Copy Copy
1
2const tenantId: string = "tenant_4f2b9a";
3const commentId: string = "cmt_9f8e7d6c";
4const broadcastId: string = "brd_live_concert_2026-03-25";
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload_signature";
6
7const result: PinComment200Response = await pinComment(tenantId, commentId, broadcastId, sso);
8

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


Параметри

Name Type Required Description
tenantId string Так
createCommentParams CreateCommentParams Так
isLive boolean Ні
doSpamCheck boolean Ні
sendEmails boolean Ні
populateNotifications boolean Ні

Відповідь

Повертає: SaveComment200Response

Приклад

Приклад saveComment
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const createCommentParams: CreateCommentParams = {
4 content: 'Great article — helped me fix a production issue in minutes.',
5 url: 'https://app.acme.com/blog/performance-tips',
6 author: { name: 'Maya Chen', email: 'maya.chen@acme.com' },
7 metadata: { locale: 'en-US', appVersion: '4.2.1' }
8} as CreateCommentParams;
9const isLive: boolean = true;
10const doSpamCheck: boolean = true;
11const sendEmails: boolean = false;
12const populateNotifications: boolean = true;
13const result: SaveComment200Response = await saveComment(tenantId, createCommentParams, isLive, doSpamCheck, sendEmails, populateNotifications);
14

Зберегти коментарі масово Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Yes
createCommentParams Array Yes
isLive boolean No
doSpamCheck boolean No
sendEmails boolean No
populateNotifications boolean No

Відповідь

Повертає: Array<SaveComment200Response

Приклад

Приклад saveCommentsBulk
Copy Copy
1
2const tenantId: string = 'acme-corp-01';
3const mentions1: CommentUserMentionInfo[] = [{ userId: 'user-123', displayName: 'Jane Doe' }];
4const hashtags1: CommentUserHashTagInfo[] = [{ tag: 'typescript' }];
5const createCommentParams: CreateCommentParams[] = [
6 {
7 content: 'Great insights on async/await patterns.',
8 authorName: 'John Smith',
9 authorEmail: 'john.smith@acme.com',
10 externalId: 'comment-001',
11 createdAt: '2026-03-25T10:15:00Z',
12 userMentions: mentions1,
13 userHashTags: hashtags1
14 },
15 {
16 content: 'I prefer using Promise.all for bulk ops.',
17 authorName: 'Emily Turner',
18 authorEmail: 'emily.turner@acme.com',
19 externalId: 'comment-002',
20 createdAt: '2026-03-25T10:20:00Z'
21 }
22];
23const result: SaveComment200Response[] = await saveCommentsBulk(tenantId, createCommentParams, true, true, false, true);
24

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

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
commentId string Так
broadcastId string Так
commentTextUpdateRequest CommentTextUpdateRequest Так
editKey string Ні
sso string Ні

Відповідь

Повертає: SetCommentText200Response

Приклад

Приклад setCommentText
Copy Copy
1
2const tenantId: string = 'tenant_6721f4';
3const commentId: string = 'cmt_9a3b2d';
4const broadcastId: string = 'live_2026_03_25';
5const editKey: string = 'edit_k_4f7b9';
6const sso: string = 'sso_tok_eyJhbGciOiJIUzI1';
7const commentTextUpdateRequest: CommentTextUpdateRequest = {
8 text: 'Updated to clarify the timeline and link the relevant docs.',
9 mentions: [{ userId: 'user_102', displayName: 'Alex Rivera' }],
10 hashtags: [{ tag: 'product-update' }]
11};
12const result: SetCommentText200Response = await setCommentText(tenantId, commentId, broadcastId, commentTextUpdateRequest, editKey, sso);
13

Розблокувати користувача з коментаря Internal Link

Параметри

Name Type Required Description
tenantId string Так
id string Так
unBlockFromCommentParams UnBlockFromCommentParams Так
userId string Ні
anonUserId string Ні

Відповідь

Повертає: UnBlockCommentPublic200Response

Приклад

Приклад unBlockUserFromComment
Copy Copy
1
2const tenantId: string = 'tenant_87f3e1';
3const id: string = 'comment_9b2a4f';
4const unBlockFromCommentParams: UnBlockFromCommentParams = {
5 reason: 'Reviewed by moderation team — reinstated',
6 moderatorId: 'mod_21',
7 unblockedAt: new Date().toISOString()
8};
9const userId: string = 'user_42';
10const anonUserId: string = 'anon_e7f9';
11const result: UnBlockCommentPublic200Response = await unBlockUserFromComment(tenantId, id, unBlockFromCommentParams, userId, anonUserId);
12

Зняти позначку з коментаря Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
id string Так
userId string Ні
anonUserId string Ні

Відповідь

Повертає: FlagComment200Response

Приклад

Приклад unFlagComment
Copy Copy
1
2const tenantId: string = 'acme-tenant-001';
3const commentId: string = 'cmt_9f8e7d6c';
4const userId: string = 'user_72b4a1c9';
5const anonUserId: string = 'anon_3d2c1b0a';
6const response: FlagComment200Response = await unFlagComment(tenantId, commentId, userId, anonUserId);
7

Розблокувати коментар Internal Link

Параметри

Name Type Required Description
tenantId string Так
commentId string Так
broadcastId string Так
sso string Ні

Відповідь

Повертає: LockComment200Response

Приклад

unLockComment Приклад
Copy Copy
1
2const tenantId: string = 'tenant_9d4f2b';
3const commentId: string = 'cmt_8a3e1f';
4const broadcastId: string = 'broadcast_2026_03_25';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature';
6
7const result: LockComment200Response = await unLockComment(tenantId, commentId, broadcastId, sso);
8

Відкріпити коментар Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
broadcastId string Так
sso string Ні

Відповідь

Повертає: PinComment200Response

Приклад

Приклад unPinComment
Copy Copy
1
2const tenantId: string = 'tenant_7f9d2a3b';
3const commentId: string = 'comment_842b9c1f';
4const broadcastId: string = 'bcast_frontpage_202603';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.exampleSignature';
6
7const result: PinComment200Response = await unPinComment(tenantId, commentId, broadcastId, sso);
8

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

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
updatableCommentParams UpdatableCommentParams Так
contextUserId string Ні
doSpamCheck boolean Ні
isLive boolean Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateComment
Copy Copy
1
2const tenantId: string = "tenant_acme_corp_01";
3const id: string = "comment_20260325_4592";
4const updatableCommentParams: UpdatableCommentParams = {
5 body: "Updated the response to include a link to the RFC and fixed a typo in the second paragraph.",
6 editedByUserId: "user_8721",
7 isVisible: true
8};
9const contextUserId: string = "user_8721";
10const doSpamCheck: boolean = true;
11const isLive: boolean = true;
12const result: FlagCommentPublic200Response = await updateComment(tenantId, id, updatableCommentParams, contextUserId, doSpamCheck, isLive);
13

Проголосувати за коментар Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
urlId string Так
broadcastId string Так
voteBodyParams VoteBodyParams Так
sessionId string Ні
sso string Ні

Відповідь

Повертає: VoteComment200Response

Приклад

Приклад voteComment
Copy Copy
1
2const tenantId: string = 'tenant_9f8b7c';
3const commentId: string = 'cmt_42f3a1';
4const urlId: string = 'articles/ai-trends-2026';
5const broadcastId: string = 'web';
6const voteBodyParams: VoteBodyParams = { vote: 1, reason: 'Insightful and on-topic' };
7const sessionId: string = 'sess_6d2b4c9e';
8const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
9const result: VoteComment200Response = await voteComment(tenantId, commentId, urlId, broadcastId, voteBodyParams, sessionId, sso);
10

Отримати коментарі користувача Internal Link

Параметри

Ім'я Тип Обов'язковий Опис
userId string Ні
tenantId string Ні
urlId string Ні
page number Ні
direction SortDirections Ні
lastGenDate number Ні
repliesToUserId string Ні
fetchPageForCommentId string Ні
includei10n boolean Ні
useFullTranslationIds boolean Ні
locale string Ні
includeConfig boolean Ні
includeNotificationCount boolean Ні
countAll boolean Ні
sso string Ні

Відповідь

Повертає: GetCommentsForUserResponse

Приклад

Приклад getCommentsForUser
Copy Copy
1
2const userId: string = "user_92b7f4";
3const tenantId: string = "news-tenant-uk";
4const urlId: string = "https://news.example.co.uk/articles/2026/05/01/local-election";
5const page: number = 1;
6const lastGenDate: number = Date.now() - 24 * 60 * 60 * 1000;
7const fetchPageForCommentId: string = "c_987654321";
8const includei10n: boolean = true;
9const locale: string = "en-GB";
10const includeConfig: boolean = true;
11const includeNotificationCount: boolean = false;
12const result: GetCommentsForUserResponse = await getCommentsForUser(
13 userId,
14 tenantId,
15 urlId,
16 page,
17 undefined,
18 lastGenDate,
19 undefined,
20 fetchPageForCommentId,
21 includei10n,
22 false,
23 locale,
24 includeConfig,
25 includeNotificationCount,
26 false,
27 undefined
28);
29

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


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
addDomainConfigParams AddDomainConfigParams Так

Відповідь

Повертає: AddDomainConfig200Response


Видалити конфігурацію домену Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
domain string Так

Відповідь

Повертає: DeleteDomainConfig200Response


Отримати конфігурацію домену Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
domain string Так

Відповідь

Повертає: GetDomainConfig200Response

Отримати конфігурації доменів Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так

Відповідь

Повертає: GetDomainConfigs200Response

Частково оновити конфігурацію домену Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
domainToUpdate string Так
patchDomainConfigParams PatchDomainConfigParams Так

Відповідь

Повертає: GetDomainConfig200Response


Замінити конфігурацію домену Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
domainToUpdate string Так
updateDomainConfigParams UpdateDomainConfigParams Так

Відповідь

Повертає: GetDomainConfig200Response


Створити шаблон електронного листа Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createEmailTemplateBody CreateEmailTemplateBody Так

Відповідь

Повертає: CreateEmailTemplate200Response

Приклад

createEmailTemplate Приклад
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9f4a2b';
4 const createEmailTemplateBody: CreateEmailTemplateBody = {
5 name: 'Weekly Digest',
6 subject: 'Your weekly discussion highlights',
7 html: '<!doctype html><body><h1>Hello {{user.name}}</h1><p>Top comments this week...</p></body>',
8 fromAddress: 'no-reply@fastcomments-example.com',
9 replyTo: 'moderation@fastcomments-example.com',
10 isDefault: false
11 };
12 const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
13 console.log(result);
14})();
15

Видалити шаблон електронного листа Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
id string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteEmailTemplate
Copy Copy
1
2const tenantId: string = "acme-corp-42";
3const idSuffix: string | undefined = "-archived";
4const templateId: string = "email_tmpl_6a1b2c" + (idSuffix ?? "");
5const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
6

Видалити помилку рендерингу шаблону електронної пошти Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
errorId string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = "tenant_7a1d2f9b";
3const id: string = "email_template_42b1";
4const errorId: string = "render_err_2026-04-24_7f3c";
5const includeStackTrace: boolean | undefined = undefined; // приклад необов'язкового прапорця
6
7const response: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
8// Якби підтримувався необов'язковий об'єкт опцій, це могло б виглядати так:
9// await deleteEmailTemplateRenderError(tenantId, id, errorId /*, { includeStackTrace } */);
10

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

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetEmailTemplate200Response

Приклад

Приклад getEmailTemplate
Copy Copy
1
2const tenantId: string = "acme-marketing-042";
3const templateId: string = "tpl_welcome_2026";
4const result: GetEmailTemplate200Response = await getEmailTemplate(tenantId, templateId);
5const template: CustomEmailTemplate | undefined = result.template;
6const subject: string | undefined = template?.subject;
7const customParams: CustomConfigParameters | undefined = template?.customConfigParameters;
8

Отримати визначення шаблонів електронної пошти Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так

Відповідь

Повертає: GetEmailTemplateDefinitions200Response

Приклад

Приклад getEmailTemplateDefinitions
Copy Copy
1
2const tenantId: string = 'tenant_acme_eu_01';
3const templates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4console.log('Email template definitions loaded for', tenantId, templates);
5

Отримати помилки рендерингу шаблонів електронної пошти Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
skip number Ні

Відповідь

Повертає: GetEmailTemplateRenderErrors200Response

Приклад

Приклад getEmailTemplateRenderErrors
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-tenant-42';
4 const id: string = 'tmpl_3fa85f64-5717-4562-b3fc-2c963f66afa6';
5 const skip: number = 20;
6 const result: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id, skip);
7 console.log(result);
8})();
9

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

Параметри

Назва Тип Обов'язковий Опис
tenantId string Yes
skip number No

Відповідь

Повертає: GetEmailTemplates200Response

Приклад

Приклад getEmailTemplates
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = 'tenant_5f3a9c2b';
4 const templates: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
5 const skip: number = 20;
6 const pagedTemplates: GetEmailTemplates200Response = await getEmailTemplates(tenantId, skip);
7 console.log(templates, pagedTemplates);
8}
9main();
10

Відрендерити шаблон електронного листа Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
renderEmailTemplateBody RenderEmailTemplateBody Так
locale string Ні

Відповідь

Повертає: RenderEmailTemplate200Response

Приклад

Приклад renderEmailTemplate
Copy Copy
1
2const tenantId: string = 'tenant_b6f3c2';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'comment-notification',
5 recipient: { name: 'Ava Thompson', email: 'ava.thompson@publisher.com' },
6 context: {
7 siteName: 'City Gazette',
8 commentText: 'Thanks for the in-depth coverage — very helpful.',
9 articleTitle: 'Downtown Redevelopment Plan Advances',
10 threadUrl: 'https://citygazette.example/articles/2026/redevelopment#comments'
11 }
12};
13const locale: string = 'en-US';
14const result: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
15

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

Параметри

Name Type Required Description
tenantId string Так
id string Так
updateEmailTemplateBody UpdateEmailTemplateBody Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_76a4b2";
3const id: string = "template_9f3c1e";
4const updateEmailTemplateBody: UpdateEmailTemplateBody = {
5 name: "Comment Flag Notification",
6 subject: "A comment was flagged on your-site.com",
7 bodyHtml: "<p>Admin,</p><p>User {{commenterName}} flagged a comment: “{{commentText}}”</p>",
8 isEnabled: true,
9 description: "Email sent to moderators when a comment is flagged (optional field included)"
10};
11const result: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
12

Отримати журнал подій Internal Link

req tenantId urlId userIdWS

Параметри

Name Type Required Description
tenantId string Так
urlId string Так
userIdWS string Так
startTime number Так
endTime number Так

Відповідь

Повертає: GetEventLog200Response

Приклад

Приклад getEventLog
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-01';
3const urlId: string = 'article-2026-03-25';
4const userIdWS: string | undefined = undefined; // необов'язкове вхідне значення
5const startTime: number = Date.parse('2026-03-01T00:00:00Z');
6const endTime: number = Date.parse('2026-03-25T23:59:59Z');
7
8const eventLogResponse: GetEventLog200Response = await getEventLog(
9 tenantId,
10 urlId,
11 userIdWS ?? 'ws_user_8b1f',
12 startTime,
13 endTime
14);
15

Отримати глобальний журнал подій Internal Link

req tenantId urlId userIdWS

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
urlId string Так
userIdWS string Так
startTime number Так
endTime number Так

Відповідь

Повертає: GetEventLog200Response

Приклад

Приклад getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // 7 днів тому
6const endTimeOptional: number | undefined = undefined; // необов'язковий кінець інтервалу
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

Створити допис у стрічці Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createFeedPostParams CreateFeedPostParams Так
broadcastId string Ні
isLive boolean Ні
doSpamCheck boolean Ні
skipDupCheck boolean Ні

Відповідь

Повертає: CreateFeedPost200Response

Приклад

Приклад createFeedPost
Copy Copy
1
2const tenantId: string = 'tenant_87f3b2';
3const mediaAsset: FeedPostMediaItemAsset = { url: 'https://cdn.example.com/images/post-123.jpg', mimeType: 'image/jpeg', width: 1200, height: 800, size: 245000 };
4const mediaItem: FeedPostMediaItem = { id: 'media_1', type: 'image', assets: [mediaAsset], altText: 'Conference keynote stage' };
5const link: FeedPostLink = { url: 'https://news.example.com/keynote-recap', title: 'Keynote recap' };
6const createFeedPostParams: CreateFeedPostParams = {
7 title: 'Product Launch Highlights',
8 content: 'Highlights from today’s product launch and roadmap updates.',
9 authorId: 'user_42',
10 mediaItems: [mediaItem],
11 links: [link],
12 tags: ['product', 'launch', 'announcement']
13};
14const broadcastId: string = 'broadcast_20260424';
15const isLive: boolean = true;
16const doSpamCheck: boolean = true;
17const skipDupCheck: boolean = false;
18const result: CreateFeedPost200Response = await createFeedPost(tenantId, createFeedPostParams, broadcastId, isLive, doSpamCheck, skipDupCheck);
19

Створити публічний допис у стрічці Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createFeedPostParams CreateFeedPostParams Так
broadcastId string Ні
sso string Ні

Відповідь

Повертає: CreateFeedPostPublic200Response

Приклад

Приклад createFeedPostPublic
Copy Copy
1
2const tenantId: string = "tenant_987654321";
3const asset: FeedPostMediaItemAsset = { url: "https://cdn.fastcomments.com/uploads/team-photo.jpg", mimeType: "image/jpeg", sizeBytes: 324512 };
4const mediaItem: FeedPostMediaItem = { type: "image", assets: [asset], caption: "Team launch day" };
5const link: FeedPostLink = { url: "https://www.example.com/blog/product-update-march-2026", title: "Product update — March 2026" };
6const createFeedPostParams: CreateFeedPostParams = {
7 title: "Product update — March 2026",
8 content: "<p>We shipped performance improvements and two new integrations.</p>",
9 media: [mediaItem],
10 link,
11 visibility: "public",
12 tags: ["product","release","march-2026"],
13 customConfig: { allowComments: true, requireTOS: false }
14};
15const broadcastId: string = "broadcast_2026_03_25_live";
16const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NSIsImlhdCI6MTY5MDI0MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
17const result: CreateFeedPostPublic200Response = await createFeedPostPublic(tenantId, createFeedPostParams, broadcastId, sso);
18

Видалити публічний допис у стрічці Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
postId string Так
broadcastId string Ні
sso string Ні

Відповідь

Повертає: DeleteFeedPostPublic200Response

Приклад

Приклад deleteFeedPostPublic
Copy Copy
1
2const tenantId: string = "tenant_5f8a9b3c";
3const postId: string = "post_a1b2c3d4";
4const broadcastId: string = "broadcast_2026-03-25T10:00:00Z";
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwiaWF0IjoxNjE5MjM5MjAwfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6
7const resultWithOptional: DeleteFeedPostPublic200Response = await deleteFeedPostPublic(tenantId, postId, broadcastId, sso);
8const resultRequiredOnly: DeleteFeedPostPublic200Response = await deleteFeedPostPublic(tenantId, postId);
9

Отримати дописи стрічки Internal Link

req tenantId afterId

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
afterId string Ні
limit number Ні
tags Array Ні

Відповідь

Повертає: GetFeedPosts200Response

Приклад

Приклад getFeedPosts
Copy Copy
1
2const initialPage: GetFeedPosts200Response = await getFeedPosts('tenant_9f1b3d', undefined, 20, ['sports', 'local']);
3const nextPage: GetFeedPosts200Response = await getFeedPosts('tenant_9f1b3d', 'post_abc123', 20, ['sports', 'local']);
4

Отримати публічні дописи стрічки Internal Link

req tenantId afterId

Параметри

Name Type Required Description
tenantId string Так
afterId string Ні
limit number Ні
tags Array Ні
sso string Ні
isCrawler boolean Ні
includeUserInfo boolean Ні

Відповідь

Повертає: GetFeedPostsPublic200Response

Приклад

Приклад getFeedPostsPublic
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const afterId: string = 'fp_20260301_042';
4const limit: number = 25;
5const tags: Array<string> = ['technology', 'announcement'];
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiamRvZSJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
7const isCrawler: boolean = false;
8const includeUserInfo: boolean = true;
9const response: GetFeedPostsPublic200Response = await getFeedPostsPublic(tenantId, afterId, limit, tags, sso, isCrawler, includeUserInfo);
10

Отримати статистику дописів стрічки Internal Link

Параметри

Name Type Required Description
tenantId string Так
postIds Array Так
sso string Ні

Відповідь

Повертає: GetFeedPostsStats200Response

Приклад

Приклад getFeedPostsStats
Copy Copy
1
2const tenantId: string = 'tenant_9b2f1c4a';
3const postIds: Array<string> = [
4 '8f14e45f-ea82-4c7a-b6b2-1a2b3c4d5e6f',
5 'd0e1f2a3-b4c5-6d7e-8f90-1234567890ab'
6];
7const sso: string = 'sso_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.signature';
8const statsWithoutSSO: GetFeedPostsStats200Response = await getFeedPostsStats(tenantId, postIds);
9const statsWithSSO: GetFeedPostsStats200Response = await getFeedPostsStats(tenantId, postIds, sso);
10

Отримати публічні реакції користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
postIds Array Ні
sso string Ні

Відповідь

Повертає: GetUserReactsPublic200Response

Приклад

Приклад getUserReactsPublic
Copy Copy
1
2const tenantId: string = "acme-tenant-8a4d2c";
3const postIds: string[] = ["post-645a2f", "post-645a30"];
4const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImlhdCI6MTY2MTYwMDAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
5const result: GetUserReactsPublic200Response = await getUserReactsPublic(tenantId, postIds, sso);
6

Реагувати на публічний допис стрічки Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
postId string Так
reactBodyParams ReactBodyParams Так
isUndo boolean Ні
broadcastId string Ні
urlId string Ні
sso string Ні

Відповідь

Повертає: ReactFeedPostPublic200Response

Приклад

Приклад reactFeedPostPublic
Copy Copy
1
2const tenantId: string = 'tenant_84f2b1';
3const postId: string = 'post_12ac9e';
4const reactBodyParams: ReactBodyParams = { emoji: 'thumbs_up', intensity: 1 };
5const isUndo: boolean = false;
6const broadcastId: string = 'broadcast_20260503_01';
7const urlId: string = 'article-4527';
8const sso: string = 'sso_token_7f3b2c';
9
10const result: ReactFeedPostPublic200Response = await reactFeedPostPublic(tenantId, postId, reactBodyParams, isUndo, broadcastId, urlId, sso);
11

Оновити допис у стрічці Internal Link


Параметри

Ім'я Тип Обов'язково Опис
tenantId string Так
id string Так
feedPost FeedPost Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateFeedPost
Copy Copy
1
2const tenantId: string = 'acme-global-tenant-42';
3const id: string = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
4
5const asset: FeedPostMediaItemAsset = {
6 url: 'https://cdn.acme.com/images/product-launch.jpg',
7 mimeType: 'image/jpeg',
8 width: 1200,
9 height: 630
10};
11
12const mediaItem: FeedPostMediaItem = {
13 id: 'media-001',
14 type: 'image',
15 asset
16};
17
18const link: FeedPostLink = {
19 url: 'https://acme.com/blog/product-launch',
20 title: 'Product Launch Details'
21};
22
23const feedPost: FeedPost = {
24 title: 'Introducing the Q3 Product Suite',
25 body: 'We are excited to unveil our new lineup for Q3, focusing on performance and security improvements.',
26 media: [mediaItem], // необов'язковий масив включено
27 links: [link], // необов'язкові посилання включені
28 isPublished: true // необов'язковий прапорець публікації, застосований тут
29};
30
31const result: FlagCommentPublic200Response = await updateFeedPost(tenantId, id, feedPost);
32

Оновити публічний допис у стрічці Internal Link

Параметри

Name Type Required Description
tenantId string Так
postId string Так
updateFeedPostParams UpdateFeedPostParams Так
broadcastId string Ні
sso string Ні

Відповідь

Повертає: CreateFeedPostPublic200Response

Приклад

Приклад updateFeedPostPublic
Copy Copy
1
2const tenantId: string = "tenant_9f4b2";
3const postId: string = "post_21a8e";
4const updateFeedPostParams: UpdateFeedPostParams = {
5 title: "Quarterly product update",
6 body: "Major performance improvements and bug fixes deployed today. See release notes and schedule.",
7 links: [{ url: "https://status.example.com/release-notes", title: "Release notes" }],
8 media: [
9 {
10 type: "image",
11 assets: [{ url: "https://cdn.example.com/updates/q2.png", mimeType: "image/png", width: 1200, height: 628 }]
12 }
13 ]
14};
15const broadcastId: string = "broadcast_live_202603";
16const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature";
17const result: CreateFeedPostPublic200Response = await updateFeedPostPublic(tenantId, postId, updateFeedPostParams, broadcastId, sso);
18

Позначити коментар (публічно) Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
isFlagged boolean Так
sso string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад flagCommentPublic
Copy Copy
1
2const tenantId: string = "tenant_9f8b3c";
3const commentId: string = "comment_72a1d4";
4const isFlagged: boolean = true;
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI1Njc4OSJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6const result: FlagCommentPublic200Response = await flagCommentPublic(tenantId, commentId, isFlagged, sso);
7

Отримати великий GIF Internal Link

Параметри

Name Type Required Description
tenantId string Yes
largeInternalURLSanitized string Yes

Відповідь

Повертає: GifGetLargeResponse

Приклад

Приклад getGifLarge
Copy Copy
1
2const tenantId: string = 'acme_marketing_tenant_7';
3const largeInternalURLSanitized: string = 'https://cdn.acmeinc.com/gifs/promo-spring-2026_large_sanitized.gif';
4const includePreview: boolean | undefined = undefined; // необов'язковий прапорець, який може використовувати викликач
5const result: GifGetLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6console.log(result, includePreview);
7

Пошук GIF Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
search string Так
locale string Ні
rating string Ні
page number Ні

Відповідь

Повертає: GifSearchResponse

Приклад

Приклад використання getGifsSearch
Copy Copy
1
2const tenantId: string = "tenant_fcm_42";
3const search: string = "funny golden retriever";
4const locale: string = "en-US";
5const rating: string = "pg";
6const page: number = 2;
7const result: GifSearchResponse = await getGifsSearch(tenantId, search, locale, rating, page);
8

Отримати трендові GIF Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Yes
locale string No
rating string No
page number No

Відповідь

Повертає: GifSearchResponse

Приклад

Приклад getGifsTrending
Copy Copy
1
2const tenantId: string = "acme-tenant-01";
3const trendingBasic: GifSearchResponse = await getGifsTrending(tenantId);
4
5const locale: string = "en-GB";
6const rating: string = "pg";
7const page: number = 1;
8const trendingWithOptions: GifSearchResponse = await getGifsTrending(tenantId, locale, rating, page);
9

Додати хештег Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Ні
createHashTagBody CreateHashTagBody Ні

Відповідь

Повертає: AddHashTag200Response

Приклад

Приклад addHashTag
Copy Copy
1
2const tenantId: string | undefined = undefined;
3const createHashTagBody: CreateHashTagBody = {
4 name: 'release-2026',
5 description: 'Feedback and bug reports for the April 2026 product release',
6 synonyms: ['v2-release', 'launch-2026'],
7 color: '#1d72b8',
8 isActive: true,
9 createdBy: 'product.manager@acme-corp.com'
10};
11const result: AddHashTag200Response = await addHashTag(tenantId, createHashTagBody);
12

Додати хештеги масово Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Ні
bulkCreateHashTagsBody BulkCreateHashTagsBody Ні

Відповідь

Повертається: AddHashTagsBulk200Response

Приклад

Приклад addHashTagsBulk
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_01';
3const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
4 tags: [
5 { name: 'feature-request', slug: 'feature-request', description: 'Requests for new capabilities', isActive: true, customConfig: { visibility: 'public' } as unknown as CustomConfigParameters }
6 ]
7};
8const addHashTagsResponse: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
9
10const bulkCreateHashTagsBodyNoTenant: BulkCreateHashTagsBody = {
11 tags: [
12 { name: 'ux-feedback', slug: 'ux-feedback', description: 'User experience suggestions', isActive: true }
13 ]
14};
15const addHashTagsResponseNoTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBodyNoTenant);
16

Видалити хештег Internal Link

Параметри

Назва Тип Обов'язкове Опис
tag string Так
tenantId string Ні
deleteHashTagRequest DeleteHashTagRequest Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteHashTag
Copy Copy
1
2const tag: string = "spring-sale-2026";
3const tenantId: string = "tenant-9876";
4const deleteHashTagRequest: DeleteHashTagRequest = {
5 requestedBy: "admin@retailco.com",
6 reason: "Campaign ended; remove associated auto-tags",
7 cascadeDelete: true
8};
9const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteHashTagRequest);
10

Отримати хештеги Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
page number Ні

Відповідь

Повертає: GetHashTags200Response

Приклад

Приклад getHashTags
Copy Copy
1
2const tenantId: string = 'acme-tenant-42';
3const pageNumber: number = 2;
4const responseWithPage: GetHashTags200Response = await getHashTags(tenantId, pageNumber);
5const responseWithoutPage: GetHashTags200Response = await getHashTags(tenantId);
6

Частково оновити хештег Internal Link

Параметри

Назва Тип Обов'язково Опис
tag string Так
tenantId string Ні
updateHashTagBody UpdateHashTagBody Ні

Відповідь

Повертає: PatchHashTag200Response

Приклад

Приклад patchHashTag
Copy Copy
1
2const tag: string = "feature-ux-refresh";
3const tenantId: string = "tenant_4f92c1";
4const updateHashTagBody: UpdateHashTagBody = {
5 label: "UX Refresh",
6 description: "Track comments related to the 2026 UX redesign",
7 isActive: true,
8 metadata: { owner: "product-design", rolloutPhase: "phase-2" }
9};
10const response: PatchHashTag200Response = await patchHashTag(tag, tenantId, updateHashTagBody);
11

Створити модератора Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
createModeratorBody CreateModeratorBody Так

Відповідь

Повертає: CreateModerator200Response

Приклад

createModerator Приклад
Copy Copy
1
2const tenantId: string = "tenant_8f3b6c";
3const optionalConfig: CustomConfigParameters = { moderationThreshold: 5, escalateOnRepeatedOffenses: true };
4const newModerator: CreateModeratorBody = {
5 email: "lina.gomez@dailynews.com",
6 fullName: "Lina Gomez",
7 role: "senior_moderator",
8 enabled: true,
9 notifyByEmail: true,
10 customConfig: optionalConfig
11};
12const response: CreateModerator200Response = await createModerator(tenantId, newModerator);
13

Видалити модератора Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
sendEmail string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteModerator
Copy Copy
1
2const tenantId: string = 'tenant_9f8b7c6d';
3const id: string = 'mod_4a3e11ec9d1f0242ac120003';
4const sendEmail: string = 'true';
5const result: FlagCommentPublic200Response = await deleteModerator(tenantId, id, sendEmail);
6

Отримати модератора Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetModerator200Response

Приклад

Приклад getModerator
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-123';
3const id: string = 'mod-987654321';
4const moderatorResponse: GetModerator200Response = await getModerator(tenantId, id);
5

Отримати модераторів Internal Link

Параметри

Name Type Required Description
tenantId string Так
skip number Ні

Відповідь

Повертає: GetModerators200Response

Приклад

Приклад getModerators
Copy Copy
1
2const tenantId: string = 'tenant-12345-prod';
3const moderatorsPage1: GetModerators200Response = await getModerators(tenantId);
4const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, 50);
5

Надіслати запрошення Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
fromName string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад sendInvite
Copy Copy
1
2const tenantId: string = 'tenant_acme-42';
3const id: string = 'comment_8f3b21a7';
4const fromName: string = 'Elena Morales';
5const replyToEmail: string | undefined = undefined;
6
7const result: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName, replyToEmail);
8

Оновити модератора Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
id string Так
updateModeratorBody UpdateModeratorBody Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateModerator
Copy Copy
1
2const tenantId: string = "acme-enterprises-42";
3const id: string = "moderator_517";
4const updateModeratorBody: UpdateModeratorBody = {
5 displayName: "Sofia Martinez",
6 email: "sofia.martinez@acme.com",
7 permissions: ["approve_comments", "flag_spam", "suspend_users"],
8 active: true,
9 avatarUrl: "https://cdn.acme.com/avatars/sofia.jpg" // необов'язкове поле (показано)
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBody);
12

Видалити лічильник сповіщень Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteNotificationCount
Copy Copy
1
2const tenantId: string = "org-72a8f1b9";
3const id: string = "notif-8f9c2e4a";
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
5console.log(result);
6

Отримати кешований лічильник сповіщень Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetCachedNotificationCount200Response

Приклад

Приклад getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'user_00012345';
4const includeUnreadOnly: boolean | undefined = true; // необов'язковий прапорець параметра (показано)
5const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
6

Отримати лічильник сповіщень Internal Link

Параметри

Name Type Required Description
tenantId string Так
userId string Ні
urlId string Ні
fromCommentId string Ні
viewed boolean Ні
type string Ні

Відповідь

Повертає: GetNotificationCount200Response

Приклад

Приклад getNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_abc123';
3const userId: string = 'user_987654321';
4const urlId: string = 'https://example.com/news/2026/new-features';
5const viewed: boolean = false;
6const type: string = 'reply';
7const notificationCountResponse: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, undefined, viewed, type);
8

Отримати сповіщення Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
userId string Ні
urlId string Ні
fromCommentId string Ні
viewed boolean Ні
type string Ні
skip number Ні

Відповідь

Повертає: GetNotifications200Response

Приклад

Приклад getNotifications
Copy Copy
1
2const tenantId: string = "tenant_84b3f2";
3const userId: string = "user_1279";
4const urlId: string = "https://www.example.com/articles/2026/03/25/new-feature";
5const fromCommentId: string = "cmt_5421";
6const viewed: boolean = false;
7const type: string = "mention";
8const skip: number = 0;
9const notifications: GetNotifications200Response = await getNotifications(tenantId, userId, urlId, fromCommentId, viewed, type, skip);
10

Оновити сповіщення Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
updateNotificationBody UpdateNotificationBody Так
userId string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад використання updateNotification
Copy Copy
1
2const tenantId: string = 'tenant_prod_8f4b2c';
3const id: string = 'notification_61a2e9';
4const userId: string = 'moderator_107';
5const updateNotificationBody: UpdateNotificationBody = {
6 name: 'Flagged Comment Notification',
7 enabled: true,
8 channels: ['email', 'inbox'],
9 templateId: 'tmpl_mod_alerts_01',
10 severity: 'high'
11};
12const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
13

Додати сторінку Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createAPIPageData CreateAPIPageData Так

Відповідь

Повертає: AddPageAPIResponse


Видалити сторінку Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: DeletePageAPIResponse


Отримати сторінку за URL-ідентифікатором Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
urlId string Так

Відповідь

Повертає: GetPageByURLIdAPIResponse


Отримати сторінки Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так

Відповідь

Повертає: GetPagesAPIResponse

Частково оновити сторінку Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
updateAPIPageData UpdateAPIPageData Так

Відповідь

Повертає: PatchPageAPIResponse


Видалити очікувану подію вебхука Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deletePendingWebhookEvent
Copy Copy
1
2const tenantId: string = "tenant_7f3b2a";
3const webhookEventId: string = "wh_evt_9a8c7d1234";
4const dryRun: boolean | undefined = undefined; // приклад необов'язкового прапорця (не потрібен для цього виклику)
5const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, webhookEventId);
6

Отримати кількість очікуваних подій вебхука Internal Link

Параметри

Name Type Required Description
tenantId string Yes
commentId string No
externalId string No
eventType string No
type string No
domain string No
attemptCountGT number No

Відповідь

Повертає: GetPendingWebhookEventCount200Response

Приклад

Приклад getPendingWebhookEventCount
Copy Copy
1
2const tenantId: string = "tenant_8d3b7a2f";
3const commentId: string | undefined = "comment_79a2b";
4const eventType: string | undefined = "comment.created";
5const domain: string | undefined = "forum.acme-corp.com";
6const attemptCountGT: number | undefined = 1;
7const result: GetPendingWebhookEventCount200Response = await getPendingWebhookEventCount(
8 tenantId,
9 commentId,
10 undefined,
11 eventType,
12 undefined,
13 domain,
14 attemptCountGT
15);
16

Отримати очікувані події вебхука Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Ні
externalId string Ні
eventType string Ні
type string Ні
domain string Ні
attemptCountGT number Ні
skip number Ні

Відповідь

Повертає: GetPendingWebhookEvents200Response

Приклад

Приклад getPendingWebhookEvents
Copy Copy
1
2const tenantId: string = 'tenant_9b3f7c';
3const commentId: string | undefined = undefined;
4const externalId: string | undefined = 'external-572a';
5const eventType: string | undefined = 'comment.updated';
6const type: string | undefined = 'outbound';
7const domain: string | undefined = 'reviews.example.com';
8const attemptCountGT: number | undefined = 1;
9const skip: number | undefined = 20;
10
11const result: GetPendingWebhookEvents200Response = await getPendingWebhookEvents(
12 tenantId,
13 commentId,
14 externalId,
15 eventType,
16 type,
17 domain,
18 attemptCountGT,
19 skip
20);
21

Створити конфігурацію запитання Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createQuestionConfigBody CreateQuestionConfigBody Так

Відповідь

Повертає: CreateQuestionConfig200Response

Приклад

Приклад createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const createQuestionConfigBody: CreateQuestionConfigBody = {
4 title: "Post-purchase feedback",
5 description: "Quick survey about your recent order",
6 required: true,
7 renderingType: "single_choice",
8 options: [
9 { label: "Very dissatisfied", value: "1" },
10 { label: "Dissatisfied", value: "2" },
11 { label: "Neutral", value: "3" },
12 { label: "Satisfied", value: "4" },
13 { label: "Very satisfied", value: "5" }
14 ] as QuestionConfigCustomOptionsInner[]
15} as CreateQuestionConfigBody;
16const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
17

Видалити конфігурацію запитання Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_42fa9b7c";
3const id: string = "qcfg-0f8fad5b-d9cb-469f-a165-70867728950e";
4const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5

Отримати конфігурацію запитання Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetQuestionConfig200Response

Приклад

Приклад getQuestionConfig
Copy Copy
1
2const tenantId: string = 'acme-tenant-92';
3const id: string = 'question-2026-07-42';
4const response: GetQuestionConfig200Response = await getQuestionConfig(tenantId, id);
5
6function summarize(cfg: GetQuestionConfig200Response, includeDetails?: boolean): string {
7 return includeDetails ? 'Question config (detailed)' : 'Question config (summary)';
8}
9
10const summary: string = summarize(response);
11

Отримати конфігурації запитань Internal Link


Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
skip number Ні

Відповідь

Повертає: GetQuestionConfigs200Response

Приклад

Приклад getQuestionConfigs
Copy Copy
1
2const tenantId: string = "tenant_acme_9876";
3const configsWithoutSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const configsWithSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, 20);
5

Оновити конфігурацію запитання Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Yes
id string Yes
updateQuestionConfigBody UpdateQuestionConfigBody Yes

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateQuestionConfig
Copy Copy
1
2const tenantId: string = 'tenant_42e8b';
3const id: string = 'question_9f4a2';
4const updateQuestionConfigBody: UpdateQuestionConfigBody = {
5 questionText: 'How helpful was this article?',
6 description: 'Shown to users below the question (optional)',
7 required: true,
8 renderingType: 'Likert' as QuestionRenderingType,
9 customOptions: [
10 { label: 'Very helpful', value: '5' } as QuestionConfigCustomOptionsInner,
11 { label: 'Somewhat helpful', value: '3' } as QuestionConfigCustomOptionsInner,
12 { label: 'Not helpful', value: '1' } as QuestionConfigCustomOptionsInner
13 ],
14 whenSave: 'notify' as QuestionWhenSave
15};
16const result: FlagCommentPublic200Response = await updateQuestionConfig(tenantId, id, updateQuestionConfigBody);
17

Створити результат запитання Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createQuestionResultBody CreateQuestionResultBody Так

Відповідь

Повертає: CreateQuestionResult200Response

Приклад

Приклад createQuestionResult
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-01';
3const createQuestionResultBody: CreateQuestionResultBody = {
4 questionId: 'q-34567',
5 respondentId: 'user-8923',
6 answers: [{ optionId: 'opt_A', text: 'Agree', count: 1 }],
7 score: 5,
8 meta: [{ key: 'platform', value: 'web' }],
9 notifyModerators: false // необов'язковий параметр
10} as CreateQuestionResultBody;
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

Видалити результат запитання Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteQuestionResult
Copy Copy
1
2const tenantIdEnv: string | undefined = process.env.FASTCOMMENTS_TENANT_ID;
3const tenantId: string = tenantIdEnv ?? 'tenant_78b3f2';
4const id: string = 'qres-9f2a3b1c';
5const response: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, id);
6

Отримати результат запитання Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetQuestionResult200Response

Приклад

Приклад getQuestionResult
Copy Copy
1
2const post: { title: string; questionId?: string } = { title: 'Product feedback' };
3const tenantId: string = 'acme-corp-tenant-01';
4const id: string = post.questionId ?? 'q-8f3a7b2c4d9e';
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, id);
6

Отримати результати запитань Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
urlId string Ні
userId string Ні
startDate string Ні
questionId string Ні
questionIds string Ні
skip number Ні

Відповідь

Повертає: GetQuestionResults200Response

Приклад

Приклад getQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_acme_001";
3const urlId: string = "articles/product-launch-2026";
4const userId: string = "user_2048";
5const startDate: string = "2026-03-01T00:00:00Z";
6const questionId: string | undefined = undefined;
7const questionIds: string | undefined = "q_101,q_102";
8const skip: number | undefined = 0;
9
10const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, questionId, questionIds, skip);
11

Оновити результат запитання Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
updateQuestionResultBody UpdateQuestionResultBody Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_7f8b3c';
3const id: string = 'questionResult_4621';
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 questionId: 'q_1024',
6 result: 'flagged',
7 score: 0.92,
8 notes: 'Automated moderation flagged for review',
9 meta: [{ key: 'source', value: 'ai-moderator' }] as MetaItem[], // необов'язкові метадані
10 status: { code: 'review_pending' } as APIStatus
11} as UpdateQuestionResultBody;
12const result: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
13

Агрегувати результати запитань Internal Link


Параметри

Назва Тип Обов'язково Опис
tenantId string Так
questionId string Ні
questionIds Array Ні
urlId string Ні
timeBucket AggregateTimeBucket Ні
startDate Date Ні
forceRecalculate boolean Ні

Відповідь

Повертає: AggregateQuestionResults200Response

Приклад

Приклад aggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_acme_001";
3const questionIds: string[] = ["q-2026-sales", "q-2026-support"];
4const urlId: string = "url_7f2c";
5const timeBucket: AggregateTimeBucket = { unit: "week", size: 1 };
6const startDate: Date = new Date("2026-01-01T00:00:00Z");
7const forceRecalculate: boolean = true;
8
9const result: AggregateQuestionResults200Response = await aggregateQuestionResults(
10 tenantId,
11 undefined,
12 questionIds,
13 urlId,
14 timeBucket,
15 startDate,
16 forceRecalculate
17);
18

Масово агрегувати результати запитань Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest Так
forceRecalculate boolean Ні

Відповідь

Повертає: BulkAggregateQuestionResults200Response

Приклад

Приклад bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_acme_42";
3const bulkAggregateQuestionResultsRequest: BulkAggregateQuestionResultsRequest = {
4 questions: [
5 { questionId: "q-001", threadId: "thread-1001", questionType: "rating" },
6 { questionId: "q-002", threadId: "thread-1002", questionType: "yes_no" }
7 ],
8 timeRange: { from: "2026-03-01T00:00:00Z", to: "2026-04-01T00:00:00Z" },
9 groupBy: ["questionId", "threadId"]
10};
11const forceRecalculate: boolean = true;
12const result: BulkAggregateQuestionResults200Response = await bulkAggregateQuestionResults(tenantId, bulkAggregateQuestionResultsRequest, forceRecalculate);
13

Поєднати коментарі з результатами запитань Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
questionId string Ні
questionIds Array Ні
urlId string Ні
startDate Date Ні
forceRecalculate boolean Ні
minValue number Ні
maxValue number Ні
limit number Ні

Відповідь

Повертає: CombineCommentsWithQuestionResults200Response

Приклад

Приклад combineCommentsWithQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant-acme-001';
3const questionId: string | undefined = 'q-analytics-42';
4const questionIds: string[] | undefined = ['q-analytics-42', 'q-feedback-17'];
5const urlId: string | undefined = 'url-987654';
6const startDate: Date | undefined = new Date('2026-01-01T00:00:00Z');
7const forceRecalculate: boolean | undefined = true;
8const minValue: number | undefined = 1;
9const maxValue: number | undefined = 5;
10const limit: number | undefined = 250;
11const result: CombineCommentsWithQuestionResults200Response = await combineCommentsWithQuestionResults(
12 tenantId,
13 questionId,
14 questionIds,
15 urlId,
16 startDate,
17 forceRecalculate,
18 minValue,
19 maxValue,
20 limit
21);
22

Додати SSO-користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createAPISSOUserData CreateAPISSOUserData Так

Відповідь

Повертає: AddSSOUserAPIResponse


Видалити SSO-користувача Internal Link

Параметри

Назва Type Обов'язково Опис
tenantId string Так
id string Так
deleteComments boolean Ні
commentDeleteMode string Ні

Відповідь

Повертає: DeleteSSOUserAPIResponse


Отримати SSO-користувача за електронною поштою Internal Link


Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
email string Так

Відповідь

Повертає: GetSSOUserByEmailAPIResponse


Отримати SSO-користувача за ідентифікатором Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetSSOUserByIdAPIResponse

Отримати SSO-користувачів Internal Link


Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
skip number Ні

Відповідь

Повертає: GetSSOUsers200Response


Частково оновити SSO-користувача Internal Link

Параметри

Name Type Required Description
tenantId string Так
id string Так
updateAPISSOUserData UpdateAPISSOUserData Так
updateComments boolean Ні

Відповідь

Повертає: PatchSSOUserAPIResponse


Замінити SSO-користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
updateAPISSOUserData UpdateAPISSOUserData Так
updateComments boolean Ні

Відповідь

Повертає: PutSSOUserAPIResponse


Створити підписку Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createAPIUserSubscriptionData CreateAPIUserSubscriptionData Так

Відповідь

Повертає: CreateSubscriptionAPIResponse

Приклад

Приклад createSubscription
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-123";
3const createAPIUserSubscriptionData: CreateAPIUserSubscriptionData = {
4 userId: "user_98765",
5 planId: "pro_monthly",
6 paymentMethod: { type: "card", cardId: "card_abc123" },
7 autoRenew: true,
8 trialDays: 14, // необов'язковий параметр (демонстрація)
9 metadata: { campaign: "spring_launch" } // необов'язковий параметр (демонстрація)
10};
11const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
12

Видалити підписку Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
id string Так
userId string Ні

Відповідь

Повертає: DeleteSubscriptionAPIResponse


Отримати підписки Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
userId string Ні

Відповідь

Повертає: GetSubscriptionsAPIResponse

Приклад

Приклад getSubscriptions
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_01';
3const userId: string = 'user_76a3b9f2';
4const subscriptionsForUser: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId, userId);
5const subscriptionsForTenant: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId);
6

Оновити підписку Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
updateAPIUserSubscriptionData UpdateAPIUserSubscriptionData Так
userId string Ні

Відповідь

Повертає: UpdateSubscriptionAPIResponse

Приклад

Приклад updateSubscription
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2c';
3const subscriptionId: string = 'sub_7641a2b3';
4const updateData: UpdateAPIUserSubscriptionData = {
5 status: 'active',
6 planId: 'pro_annual',
7 autoRenew: true,
8 renewalDate: '2026-04-15T00:00:00Z',
9 metadata: { upgradedBy: 'billing-team' }
10};
11const userId: string = 'user_215';
12const result: UpdateSubscriptionAPIResponse = await updateSubscription(tenantId, subscriptionId, updateData, userId);
13

Отримати щоденне використання орендаря Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
yearNumber number Ні
monthNumber number Ні
dayNumber number Ні
skip number Ні

Відповідь

Повертає: GetTenantDailyUsages200Response

Приклад

Приклад getTenantDailyUsages
Copy Copy
1
2const tenantId: string = 'tenant_5f4a3b2c-1d6e-4f9a-b9d8-123456789abc';
3const yearNumber: number = 2026;
4const monthNumber: number = 3;
5const dayNumber: number = 24;
6const skip: number = 0;
7
8const result: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, dayNumber, skip);
9

Створити пакет орендаря Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
createTenantPackageBody CreateTenantPackageBody Так

Відповідь

Повертає: CreateTenantPackage200Response

Приклад

Приклад createTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_acme-corp_001";
3const createTenantPackageBody: CreateTenantPackageBody = {
4 name: "Acme Standard Package",
5 description: "Default package for Acme Corp comments with moderation and SSO enabled",
6 enabled: true,
7 maxCommentsPerThread: 500,
8 voteStyle: "thumbs",
9 gifRating: "PG-13",
10 tosConfig: { enabled: true, url: "https://acme.example.com/terms" } // демонстрація необов'язкового параметра
11};
12const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
13

Видалити пакет орендаря Internal Link

Параметри

Ім'я Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад deleteTenantPackage
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_8f3a2b4c9d01";
4 const packageId: string = "pkg_2026-04-security-patch";
5 const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
6 console.log(result);
7})();
8

Отримати пакет орендаря Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetTenantPackage200Response

Приклад

Приклад getTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_7f3b2c8';
3const packageId: string = 'pkg_standard_2026';
4const requestOptions: { includeConfig?: boolean } = { includeConfig: true };
5const packageResponse: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
6

Отримати пакети орендаря Internal Link

Параметри

Name Type Required Description
tenantId string Так
skip number Ні

Відповідь

Повертає: GetTenantPackages200Response

Приклад

Приклад getTenantPackages
Copy Copy
1
2const tenantId: string = "tenant_7f8e3b4c";
3const skip: number = 20;
4const packagesDefault: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const packagesWithSkip: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

Замінити пакет орендаря Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
replaceTenantPackageBody ReplaceTenantPackageBody Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад replaceTenantPackage
Copy Copy
1
2const tenantId: string = "tenant-9f3c2a";
3const id: string = "pkg_4f8b21";
4const replaceTenantPackageBody: ReplaceTenantPackageBody = {
5 packageName: "Premium Moderation Pack",
6 enabled: true,
7 apiStatus: { mode: "active" } as APIStatus,
8 customConfigParameters: { maxFlagsBeforeReview: 5 } as CustomConfigParameters,
9 voteStyle: "thumbs" as VoteStyle,
10 tosConfig: { requireAcceptance: true } as TOSConfig
11};
12const result: FlagCommentPublic200Response = await replaceTenantPackage(tenantId, id, replaceTenantPackageBody);
13

Оновити пакет орендаря Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
id string Так
updateTenantPackageBody UpdateTenantPackageBody Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_3b7f9d-prod";
3const id: string = "pkg_enterprise_2026";
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: "Enterprise Plus",
6 isActive: true,
7 // необов'язкові поля навмисно опущено (наприклад, description, limits)
8} as UpdateTenantPackageBody;
9const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
10

Створити користувача орендаря Internal Link

Параметри

Name Type Required Description
tenantId string Yes
createTenantUserBody CreateTenantUserBody Yes

Відповідь

Повертає: CreateTenantUser200Response

Приклад

Приклад createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_74b3a9f4b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "jane.doe@acmecorp.com",
5 displayName: "Jane Doe",
6 role: "moderator",
7 sendWelcomeEmail: true, // продемонстровано необов'язковий параметр
8 metadata: { department: "Customer Support" }
9};
10const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
11

Видалити користувача орендаря Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
id string Так
deleteComments string Ні
commentDeleteMode string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

deleteTenantUser Приклад
Copy Copy
1
2async function run(): Promise<void> {
3 const tenantId: string = "acme_corp_tenant_9f1a2b";
4 const id: string = "user_4d2a1b6c";
5 const deleteComments: string = "true"; // також видалити коментарі користувача
6 const commentDeleteMode: string = "permanent"; // "permanent" або "soft"
7 const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
8 console.log(result);
9}
10run();
11

Отримати користувача орендаря Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetTenantUser200Response

Приклад

Приклад getTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_fc5a9b2c';
3const userId: string = 'user_0a12b3';
4const result: GetTenantUser200Response = await getTenantUser(tenantId, userId);
5const user: User | undefined = (result as any).user; // accessing payload
6const userEmail: string | undefined = user?.email;
7console.log('Fetched user email:', userEmail);
8

Отримати користувачів орендаря Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
skip number Ні

Відповідь

Повертає: GetTenantUsers200Response

Приклад

getTenantUsers Приклад
Copy Copy
1
2const tenantId: string = 'tenant_prod_8a3f2c';
3const skip: number = 50;
4const usersWithSkip: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
5const usersNoSkip: GetTenantUsers200Response = await getTenantUsers(tenantId);
6

Замінити користувача орендаря Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
replaceTenantUserBody ReplaceTenantUserBody Так
updateComments string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад replaceTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_9d8f4b2c';
3const id: string = 'user_f47ac10b';
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 externalId: 'ext-5234',
6 email: 'jane.doe@acme.com',
7 displayName: 'Jane Doe',
8 roles: ['moderator'],
9 metadata: { department: 'product', region: 'us-east-1' }
10};
11const updateComments: string = 'propagate-display-name-to-comments';
12
13const result: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
14

Параметри

Name Type Required Description
tenantId string Так
id string Так
redirectURL string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад sendLoginLink
Copy Copy
1
2const tenantId: string = "tenant_12a9f3b7";
3const id: string = "user_84b2c7d1";
4const redirectURL: string = "https://app.mycompany.com/welcome?ref=login_email";
5const resultWithoutRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id);
6const resultWithRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
7

Оновити користувача орендаря Internal Link

Параметри

Name Type Required Description
tenantId string Так
id string Так
updateTenantUserBody UpdateTenantUserBody Так
updateComments string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

updateTenantUser Приклад
Copy Copy
1
2const tenantId: string = "tenant_8f3b2a9d";
3const id: string = "user_52c9f1ab";
4const updateTenantUserBody: UpdateTenantUserBody = {
5 email: "jane.doe@example.com",
6 displayName: "Jane Doe",
7 roles: ["moderator"],
8 isActive: true,
9 metadata: { signupSource: "sso", locale: "en-US" }
10};
11const updateComments: string = "Promoted to moderator and updated display name";
12const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, id, updateTenantUserBody, updateComments);
13

Створити орендаря Internal Link

Параметри

Name Type Required Description
tenantId string Так
createTenantBody CreateTenantBody Так

Відповідь

Повертає: CreateTenant200Response

Приклад

Приклад createTenant
Copy Copy
1
2const tenantId: string = 'acme-corp-001';
3const createTenantBody: CreateTenantBody = {
4 name: 'Acme Corporation',
5 domainConfiguration: { primaryDomain: 'comments.acme.com', enforceHttps: true } as APIDomainConfiguration,
6 billingInfo: { planId: 'enterprise', contactEmail: 'billing@acme.com' } as BillingInfo
7 // необов'язкові поля, такі як ssoConfig або customConfig, умисно опущені
8} as CreateTenantBody;
9
10const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
11

Видалити орендаря Internal Link

Параметри

Name Type Обов'язково Опис
tenantId string Так
id string Так
sure string Ні

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад використання deleteTenant
Copy Copy
1
2const tenantId: string = 'tenant_42c9f1';
3const id: string = 'flag_9a7b3c';
4const sure: string = 'confirm-delete';
5const result: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
6

Отримати орендаря Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetTenant200Response

Приклад

Приклад getTenant
Copy Copy
1
2const tenantId: string = "tenant_9f4b2c1a";
3const idOverride: string | undefined = undefined; // необов'язкове перевизначення, якщо доступне
4const id: string = idOverride ?? "site_3e7a6b2f";
5const response: GetTenant200Response = await getTenant(tenantId, id);
6console.log(response);
7

Отримати орендарів Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
meta string Ні
skip number Ні

Відповідь

Повертає: GetTenants200Response

Приклад

Приклад getTenants
Copy Copy
1
2const tenantId: string = 'tenant_8421e7';
3const meta: string = 'include=domains,billing,customConfig';
4const skip: number = 20;
5
6const tenantsBasic: GetTenants200Response = await getTenants(tenantId);
7const tenantsWithOptions: GetTenants200Response = await getTenants(tenantId, meta, skip);
8

Оновити орендаря Internal Link

Параметри

Name Type Required Description
tenantId string Так
id string Так
updateTenantBody UpdateTenantBody Так

Відповідь

Повертає: FlagCommentPublic200Response

Приклад

Приклад updateTenant
Copy Copy
1
2const tenantId: string = "tenant_4821";
3const id: string = "flag_7b9e";
4const billingInfo: BillingInfo | undefined = undefined; // необов'язково, пропустіть, щоб зберегти поточну платіжну інформацію
5const updateTenantBody: UpdateTenantBody = {
6 name: "Acme News Comments",
7 defaultDomain: "comments.acme.com",
8 ...(billingInfo ? { billingInfo } : {})
9};
10const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
11

Змінити стан тікета Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
userId string Так
id string Так
changeTicketStateBody ChangeTicketStateBody Так

Відповідь

Повертає: ChangeTicketState200Response

Приклад

Приклад changeTicketState
Copy Copy
1
2const tenantId: string = "tenant_7f3b2c9a";
3const userId: string = "user_5a1d9fb2";
4const id: string = "ticket_3e8a1b6f";
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: "closed",
7 reason: "Fixed in backend release 2.4.1",
8 notifyUsers: true,
9 metadata: { resolutionOwner: "agent_12", priority: "high" } // необов'язкові поля, продемонстровано
10};
11const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
12

Створити тікет Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
userId string Так
createTicketBody CreateTicketBody Так

Відповідь

Повертає: CreateTicket200Response

Приклад

Приклад createTicket
Copy Copy
1
2const tenantId: string = '7f3e9b1a-1c2d-4a5b-b6c7-d8e9f0123456';
3const userId: string = 'd290f1ee-6c54-4b01-90e6-d701748f0851';
4const createTicketBody: CreateTicketBody = {
5 subject: 'Unable to post comments on product update',
6 message: 'Submitting a comment returns a 504 timeout after ~10s. Reproducible in Chrome and Firefox.',
7 priority: 'high', // необов'язкове поле, включено
8 contactEmail: 'jane.doe@acme-corp.com',
9 ccEmails: ['eng-oncall@acme-corp.com'], // необов'язкове поле, включено
10 metadata: { page: '/blog/product-update', browser: 'Chrome 112' } // необов'язкове
11};
12const response: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
13

Отримати тікет Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
userId string Ні

Відповідь

Повертає: GetTicket200Response

Приклад

Приклад getTicket
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const ticketId: string = 'tkt-20260325-42';
4const userId: string = 'user-8452';
5
6const ticketResponseWithUser: GetTicket200Response = await getTicket(tenantId, ticketId, userId);
7const ticketResponseWithoutUser: GetTicket200Response = await getTicket(tenantId, ticketId);
8

Отримати тікети Internal Link

Параметри

Назва Type Обов'язково Опис
tenantId string Так
userId string Ні
state number Ні
skip number Ні
limit number Ні

Відповідь

Повертає: GetTickets200Response

Приклад

Приклад getTickets
Copy Copy
1
2const tenantId: string = "tenant_92f3b4c1";
3const userId: string = "user_742a9f3e";
4const state: number = 1;
5const skip: number = 0;
6const limit: number = 25;
7const ticketsFull: GetTickets200Response = await getTickets(tenantId, userId, state, skip, limit);
8const ticketsMinimal: GetTickets200Response = await getTickets("tenant_92f3b4c1");
9

Отримати переклади Internal Link

Параметри

Назва Тип Обов'язково Опис
namespace string Так
component string Так
locale string Ні
useFullTranslationIds boolean Ні

Відповідь

Повертає: GetTranslationsResponse

Приклад

Приклад getTranslations
Copy Copy
1
2const translationsBase: GetTranslationsResponse = await getTranslations("acme-site-482", "commentThread");
3const translationsSpanishFullIds: GetTranslationsResponse = await getTranslations("acme-site-482", "commentThread", "es-ES", true);
4

Завантажити зображення Internal Link


Завантажити та змінити розмір зображення

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
file Blob Так
sizePreset SizePreset Ні
urlId string Ні

Відповідь

Повертає: UploadImageResponse


Отримати прогрес значка користувача за ідентифікатором Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetUserBadgeProgressById200Response

Приклад

Приклад getUserBadgeProgressById
Copy Copy
1
2const optionalTenantSuffix: string | undefined = undefined;
3const tenantId: string = `5f8d0d55-1234-4ab1-9e2a-3f2b5c6d7e8f${optionalTenantSuffix ?? ''}`;
4const id: string = '3a2b1c4d-5678-4ef0-9abc-def123456789';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressById(tenantId, id);
6

Отримати прогрес значка користувача за ID користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
userId string Так

Відповідь

Повертає: GetUserBadgeProgressById200Response

Приклад

getUserBadgeProgressByUserId Приклад
Copy Copy
1
2const tenantId: string = 'tenant_7f9c2d3b';
3const maybeUserId: string | undefined = 'user_4b8e1f9a'; // необов'язкове джерело (може бути undefined)
4const userId: string = maybeUserId ?? 'user_fallback0001';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
6console.log(result);
7

Отримати список прогресу значків користувача Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
userId string Ні
limit number Ні
skip number Ні

Відповідь

Повертає: GetUserBadgeProgressList200Response

Приклад

Приклад getUserBadgeProgressList
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_4f8c2b9d';
4 const userId: string = 'user_9a7e215c';
5 const limit: number = 25;
6 const skip: number = 0;
7 const resultMinimal: GetUserBadgeProgressList200Response = await getUserBadgeProgressList(tenantId);
8 const resultFull: GetUserBadgeProgressList200Response = await getUserBadgeProgressList(tenantId, userId, limit, skip);
9 console.log(resultMinimal, resultFull);
10})();
11

Створити значок користувача Internal Link

Параметри

Name Type Required Description
tenantId string Так
createUserBadgeParams CreateUserBadgeParams Так

Відповідь

Повертає: CreateUserBadge200Response

Приклад

Приклад createUserBadge
Copy Copy
1
2const tenantId: string = "tenant_9a8b7c";
3const params: CreateUserBadgeParams = {
4 name: "Top Contributor",
5 slug: "top-contributor",
6 description: "Awarded for 100 approved comments",
7 iconUrl: "https://cdn.fastcomments.com/badges/top-contributor.png",
8 active: true,
9 criteria: { approvedComments: 100 },
10 customConfig: { showOnProfile: true } // необов'язковий параметр
11};
12const result: CreateUserBadge200Response = await createUserBadge(tenantId, params);
13

Видалити значок користувача Internal Link

Параметри

Name Type Required Description
tenantId string Так
id string Так

Відповідь

Повертає: UpdateUserBadge200Response

Приклад

Приклад deleteUserBadge
Copy Copy
1
2type DeleteOptions = { notifyModerators?: boolean };
3
4const tenantId: string = 'tenant_8a3f21';
5const id: string = 'badge_71f2b';
6const options: DeleteOptions = { notifyModerators: true };
7
8const result: UpdateUserBadge200Response = await deleteUserBadge(tenantId, id);
9

Отримати значок користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetUserBadge200Response

Приклад

Приклад getUserBadge
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const id: string = "badge_8c7d2f";
4const response: GetUserBadge200Response = await getUserBadge(tenantId, id);
5

Отримати значки користувача Internal Link

Параметри

Name Type Required Description
tenantId string Так
userId string Ні
badgeId string Ні
type number Ні
displayedOnComments boolean Ні
limit number Ні
skip number Ні

Відповідь

Повертає: GetUserBadges200Response

Приклад

Приклад getUserBadges
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const userId: string = 'user_5f4d3c2a';
4const badgeId: string = 'badge_top_contributor';
5const type: number = 1;
6const displayedOnComments: boolean = true;
7const limit: number = 50;
8const skip: number = 0;
9
10const result: GetUserBadges200Response = await getUserBadges(tenantId, userId, badgeId, type, displayedOnComments, limit, skip);
11

Оновити значок користувача Internal Link

Параметри

Ім'я Тип Обов'язково Опис
tenantId string Так
id string Так
updateUserBadgeParams UpdateUserBadgeParams Так

Відповідь

Повертає: UpdateUserBadge200Response

Приклад

Приклад updateUserBadge
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_987';
4 const id: string = 'badge_top_contributor_42';
5 const updateUserBadgeParams: UpdateUserBadgeParams = {
6 title: 'Top Contributor',
7 description: 'Awarded for reaching 100 high-quality comments',
8 color: '#FFD700',
9 iconUrl: 'https://cdn.acme.com/badges/top-contributor.svg',
10 active: true,
11 notifyUsers: true
12 } as UpdateUserBadgeParams;
13 const result: UpdateUserBadge200Response = await updateUserBadge(tenantId, id, updateUserBadgeParams);
14 console.log(result);
15})();
16

Отримати кількість сповіщень користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
sso string Ні

Відповідь

Повертає: GetUserNotificationCount200Response

Приклад

getUserNotificationCount Приклад
Copy Copy
1
2(async () => {
3 const tenantId: string = '9f1e2d3c-4b5a-6d7e-8f90-123456789abc';
4 const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MjMifQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
5 const resultWithSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId, ssoToken);
6 const resultWithoutSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId);
7 console.log(resultWithSSO, resultWithoutSSO);
8})();
9

Отримати сповіщення користувача Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
pageSize number Ні
afterId string Ні
includeContext boolean Ні
afterCreatedAt number Ні
unreadOnly boolean Ні
dmOnly boolean Ні
noDm boolean Ні
includeTranslations boolean Ні
sso string Ні

Відповідь

Повертає: GetUserNotifications200Response

Приклад

Приклад getUserNotifications
Copy Copy
1
2const tenantId: string = 'tenant_7f3b1c';
3const pageSize: number = 25;
4const afterId: string = 'notif_b2f9e4';
5const includeContext: boolean = true;
6const afterCreatedAt: number = Date.now() - 24 * 60 * 60 * 1000;
7const unreadOnly: boolean = true;
8const dmOnly: boolean = false;
9const noDm: boolean = false;
10const includeTranslations: boolean = true;
11const sso: string = 'sso_tok_user_9f8d7c';
12const response: GetUserNotifications200Response = await getUserNotifications(
13 tenantId,
14 pageSize,
15 afterId,
16 includeContext,
17 afterCreatedAt,
18 unreadOnly,
19 dmOnly,
20 noDm,
21 includeTranslations,
22 sso
23);
24

Скинути лічильник сповіщень користувача Internal Link

Параметри

Назва Тип Обов'язковий Опис
tenantId string Так
sso string Ні

Відповідь

Повертає: ResetUserNotifications200Response

Приклад

resetUserNotificationCount Приклад
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9f3b2c4a";
4 const ssoToken: string | undefined = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9._sample_payload_.signature";
5 const responseWithSSO: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId, ssoToken);
6 const responseWithoutSSO: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId);
7 console.log(responseWithSSO, responseWithoutSSO);
8})();
9

Скинути сповіщення користувача Internal Link

Параметри

Name Type Required Description
tenantId string Так
afterId string Ні
afterCreatedAt number Ні
unreadOnly boolean Ні
dmOnly boolean Ні
noDm boolean Ні
sso string Ні

Відповідь

Повертає: ResetUserNotifications200Response

Приклад

Приклад resetUserNotifications
Copy Copy
1
2const tenantId: string = "tenant_prod_4a9f12";
3const afterId: string = "notification_87213";
4const afterCreatedAt: number = Math.floor(Date.now() / 1000) - 3600;
5const unreadOnly: boolean = true;
6const dmOnly: boolean = false;
7const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.payload";
8const result: ResetUserNotifications200Response = await resetUserNotifications(tenantId, afterId, afterCreatedAt, unreadOnly, dmOnly, undefined, sso);
9

Оновити статус підписки користувача на сповіщення про коментарі Internal Link


Увімкнути або вимкнути сповіщення для конкретного коментаря.

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
notificationId string Так
optedInOrOut UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum Так
commentId string Так
sso string Ні

Відповідь

Повертає: UpdateUserNotificationStatus200Response

Приклад

updateUserNotificationCommentSubscriptionStatus Приклад
Copy Copy
1
2const tenantId: string = 'acme-tenant-001';
3const notificationId: string = 'notif-2026-03-25-01';
4const commentId: string = 'cmt-8f3a2b';
5const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum = UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptIn;
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso-payload.signature';
7const result: UpdateUserNotificationStatus200Response = await updateUserNotificationCommentSubscriptionStatus(tenantId, notificationId, optedInOrOut, commentId, sso);
8

Оновити статус підписки користувача на сповіщення про сторінку Internal Link

Увімкнути або вимкнути сповіщення для сторінки. Коли користувачі підписані на сторінку, створюються сповіщення для нових кореневих коментарів, а також

Параметри

Ім'я Тип Обов'язково Опис
tenantId string Так
urlId string Так
url string Так
pageTitle string Так
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum Так
sso string Ні

Відповідь

Повертає: UpdateUserNotificationStatus200Response

Приклад

Приклад updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2const tenantId: string = 'acme-tenant-42';
3const urlId: string = 'blog-launch-2026';
4const url: string = 'https://acme.example.com/blog/launch-march-2026';
5const pageTitle: string = 'Acme Product Launch — March 2026';
6const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum = UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
7const sso: string = 'sso_jwt_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
8const response: UpdateUserNotificationStatus200Response = await updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscribedOrUnsubscribed, sso);
9

Оновити статус сповіщень користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
notificationId string Так
newStatus UpdateUserNotificationStatusNewStatusEnum Так
sso string Ні

Відповідь

Повертає: UpdateUserNotificationStatus200Response

Приклад

Приклад updateUserNotificationStatus
Copy Copy
1
2const tenantId: string = 'tenant_84a2c3';
3const notificationId: string = 'notif_20260325_01';
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.Read;
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_signature_example';
6const result: UpdateUserNotificationStatus200Response = await updateUserNotificationStatus(tenantId, notificationId, newStatus, sso);
7

Отримати статуси присутності користувачів Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
urlIdWS string Так
userIds string Так

Відповідь

Повертає: GetUserPresenceStatuses200Response

Приклад

Приклад getUserPresenceStatuses
Copy Copy
1
2const tenantId: string = 'tenant_7f3a2b';
3const urlIdWS: string = 'articles/2026/03/25/fastcomments-integration';
4const maybeUserIds: string | undefined = 'user_123,user_456'; // optional source
5const userIds: string = maybeUserIds ?? 'user_123';
6const presence: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

Пошук користувачів Internal Link

Параметри

Назва Тип Обов'язкове Опис
tenantId string Так
urlId string Так
usernameStartsWith string Ні
mentionGroupIds Array Ні
sso string Ні
searchSection SearchUsersSearchSectionEnum Ні

Відповідь

Повертає: SearchUsers200Response

Приклад

Приклад searchUsers
Copy Copy
1
2const tenantId: string = 'tenant_8392';
3const urlId: string = 'articles/2026/03/25/fastcomments-release';
4const usernameStartsWith: string = 'jo';
5const mentionGroupIds: Array<string> = ['editors', 'senior-writers'];
6const sso: string = 'sso_jwt_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
7const searchSection: SearchUsersSearchSectionEnum = SearchUsersSearchSectionEnum.ALL;
8const result: SearchUsers200Response = await searchUsers(tenantId, urlId, usernameStartsWith, mentionGroupIds, sso, searchSection);
9

Отримати користувача Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так

Відповідь

Повертає: GetUser200Response

Приклад

Приклад getUser
Copy Copy
1
2const tenantId: string = 'tenant_7b3f42';
3const id: string = 'user_9c4d2a';
4const userResponse: GetUser200Response = await getUser(tenantId, id);
5console.log(userResponse);
6

Створити голос Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
commentId string Так
direction CreateVoteDirectionEnum Так
userId string Ні
anonUserId string Ні

Відповідь

Повертає: VoteComment200Response

Приклад

Приклад createVote
Copy Copy
1
2const tenantId: string = 'tenant_5f2a9b';
3const commentId: string = 'cmt_3b7e21';
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Up;
5const anonUserId: string = 'anon_9x7k2p';
6const voteResult: VoteComment200Response = await createVote(tenantId, commentId, direction, undefined, anonUserId);
7

Видалити голос Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
id string Так
editKey string Ні

Відповідь

Повертає: DeleteCommentVote200Response

Приклад

Приклад deleteVote
Copy Copy
1
2const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
3const id: string = 'vote-7a1b2c3d-9f8e-4b6a-8123-abcdef012345';
4const editKey: string = 'editKey_4f3e2d1c';
5
6const resultWithEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
7const resultWithoutEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id);
8

Отримати голоси Internal Link

Параметри

Назва Тип Обов'язково Опис
tenantId string Так
urlId string Так

Відповідь

Повертає: GetVotes200Response

Приклад

Приклад getVotes
Copy Copy
1
2const tenantId: string = 'acme-corp-8f3b';
3const refCampaign: string | undefined = 'newsletter-march2026'; // необов'язковий параметр запиту
4const urlId: string = `https://www.example.com/articles/2026/03/25/fastcomments-integration${refCampaign ? `?ref=${refCampaign}` : ''}`;
5
6const votes: GetVotes200Response = await getVotes(tenantId, urlId);
7

Отримати голоси користувача Internal Link

Параметри

Name Type Required Description
tenantId string Так
urlId string Так
userId string Ні
anonUserId string Ні

Відповідь

Повертає: GetVotesForUser200Response

Приклад

Приклад getVotesForUser
Copy Copy
1
2(async (): Promise<void> => {
3 const tenantId: string = "local-news-ny";
4 const urlId: string = "articles/2026-03-25/ev-infrastructure-update";
5 const userId: string = "user_78b6f3d9";
6 const anonUserId: string = "anon_9c3f7a1b";
7 const result: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, userId, anonUserId);
8 console.log(result);
9})();
10


Потрібна допомога?

Якщо ви стикнулися з будь-якими проблемами або маєте питання щодо JavaScript/TypeScript SDK, будь ласка:

Внесок

Внески вітаються! Будь ласка, відвідайте репозиторій на GitHub для отримання інструкцій щодо внесків.