FastComments.com

FastComments JavaScript/TypeScript SDK


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

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

Репозиторій

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


AI‑агенти кодування Internal Link

skills.sh

Надайте вашому кодовому агенту контекст FastComments, який йому потрібен — віджети, конфігурація, Secure SSO, REST API та SDK:

npx skills add fastcomments/skills

Працює з Claude Code, Codex, Cursor, Copilot, Gemini та будь‑яким іншим агентом, який підтримує skills CLI.

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

npm

npm install fastcomments-sdk

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


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

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


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

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

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

SDK надає наступні класи API:

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

Приклад: Використання Public API (browser-safe)

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 (server-side only)

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

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

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

Приклад: Використання Moderation API

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

const sdk = createFastCommentsSDK({ /* basePath, etc. */ });

// Виклики, автентифіковані модератором (cookie сесії, або передайте `sso` для модератора з SSO).
const comments = await sdk.moderationApi.getApiComments({
  tenantId: 'your-tenant-id'
});

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

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

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

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

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

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

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

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

const ssoToken = sso.createToken();

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

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

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

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

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

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

const ssoConfig = sso.prepareToSend();

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

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

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

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

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

createAgentTenant Internal Link

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

Створює новий пробний обліковий запис для AI‑агента без реєстрації людини. Для виклику цього не потрібен API‑ключ.

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

Відповідь містить ідентифікатор орендаря, API‑ключ, який одразу працює з REST API та сервером MCP, а також URL‑адресу для підтвердження. Передайте URL‑адресу підтвердження людині, для якої ви працюєте: відкриття її під час входу в FastComments прив’язує обліковий запис до неї. Непідтверджені облікові записи та їхні ключі видаляються через 72 години після створення. Поки обліковий запис не підтверджено, він має стандартні пробні обмеження.

Параметри

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

Відповідь

Повертає: CreateAgentTenantResponse

Приклад

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

aggregate Internal Link

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

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
aggregationRequestAggregationRequestYes
parentTenantIdstringNo
includeStatsbooleanNo

Відповідь

Повертає: AggregateResponse

Приклад

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

getAuditLogs Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
limitnumberНі
skipnumberНі
orderSORTDIRНі
afternumberНі
beforenumberНі
usernamestringНі
ipstringНі
crudTypestringНі
resourceNamestringНі
targetIdstringНі
targetstringНі
includeManagedTenantsbooleanНі

Відповідь

Повертає: GetAuditLogsResponse

Приклад

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

blockFromCommentPublic Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Відповідь

Повертає: BlockSuccess

Приклад

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

unBlockCommentPublic Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
commentIdstringТак
publicBlockFromCommentParamsPublicBlockFromCommentParamsТак
ssostringНі

Відповідь

Повертає: UnblockSuccess

Приклад

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

checkedCommentsForBlocked Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
commentIdsstringТак
ssostringНі

Відповідь

Повертає: CheckBlockedCommentsResponse

Приклад

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

blockUserFromComment Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Відповідь

Повертає: BlockSuccess

Приклад

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

createCommentPublic Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
urlIdstringТак
broadcastIdstringТак
commentDataCommentDataТак
sessionIdstringНі
ssostringНі

Відповідь

Повертає: SaveCommentsResponseWithPresence

Приклад

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

deleteComment Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак
contextUserIdstringНі
isLivebooleanНі

Відповідь

Повертає: DeleteCommentResult

Приклад

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

deleteCommentPublic Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
commentIdstringТак
broadcastIdstringТак
editKeystringНі
ssostringНі

Відповідь

Повертає: PublicAPIDeleteCommentResponse

Приклад

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

deleteCommentVote Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
commentIdstringYes
voteIdstringYes
urlIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Відповідь

Повертає: VoteDeleteResponse

Приклад

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

flagComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
idstringТак
userIdstringНі
anonUserIdstringНі

Відповідь

Повертає: FlagCommentResponse

Приклад

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

getComment Internal Link


Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIGetCommentResponse

Приклад

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

getComments Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
pagenumberNo
limitnumberNo
skipnumberNo
asTreebooleanNo
skipChildrennumberNo
limitChildrennumberNo
maxTreeDepthnumberNo
urlIdstringNo
userIdstringNo
anonUserIdstringNo
contextUserIdstringNo
hashTagstringNo
parentIdstringNo
directionSortDirectionsNo
fromDatenumberNo
toDatenumberNo

Відповідь

Повертає: APIGetCommentsResponse

Приклад

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

getCommentsPublic Internal Link

req tenantId urlId

Параметри

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

Відповідь

Повертає: GetCommentsResponseWithPresencePublicComment

Приклад

Приклад getCommentsPublic
Copy Copy
1
2async function loadComments(): Promise<void> {
3 const tenantId: string = "tenant-42",
4 urlId: string = "post-2023-09-15",
5 page: number = 1,
6 direction: SortDirections = "desc",
7 limit: number = 30,
8 includeConfig: boolean = true,
9 locale: string = "en-US",
10 isCrawler: boolean = false,
11 asTree: boolean = true,
12 maxTreeDepth: number = 2,
13 searchText: string = "fastcomments",
14 hashTags: string[] = ["fastcomments","typescript"],
15 userId: string = "user-123";
16
17 const result: GetCommentsResponseWithPresencePublicComment = await getCommentsPublic(
18 tenantId,
19 urlId,
20 page,
21 direction,
22 undefined,
23 undefined,
24 undefined,
25 limit,
26 undefined,
27 undefined,
28 undefined,
29 includeConfig,
30 undefined,
31 undefined,
32 locale,
33 undefined,
34 isCrawler,
35 undefined,
36 asTree,
37 maxTreeDepth,
38 undefined,
39 undefined,
40 searchText,
41 hashTags,
42 userId
43 );
44}
45

getCommentText Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
commentIdstringYes
editKeystringNo
ssostringNo

Відповідь

Повертає: PublicAPIGetCommentTextResponse

Приклад

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

getCommentVoteUserNames Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
commentIdstringТак
dirnumberТак
ssostringНі

Відповідь

Повертає: GetCommentVoteUserNamesSuccessResponse

Приклад

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

lockComment Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
commentIdstringТак
broadcastIdstringТак
ssostringНі

Відповідь

Повертає: APIEmptyResponse

Приклад

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

pinComment Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
commentIdstringТак
broadcastIdstringТак
ssostringНі

Відповідь

Повертає: ChangeCommentPinStatusResponse

Приклад

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

saveComment Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
createCommentParamsCreateCommentParamsТак
isLivebooleanНі
doSpamCheckbooleanНі
sendEmailsbooleanНі
populateNotificationsbooleanНі

Відповідь

Повертає: APISaveCommentResponse

Приклад

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

saveCommentsBulk Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
createCommentParamsArrayТак
isLivebooleanНі
doSpamCheckbooleanНі
sendEmailsbooleanНі
populateNotificationsbooleanНі

Відповідь

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

Приклад

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

setCommentText Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
commentIdstringТак
broadcastIdstringТак
commentTextUpdateRequestCommentTextUpdateRequestТак
editKeystringНі
ssostringНі

Відповідь

Повертає: PublicAPISetCommentTextResponse

Приклад

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

unBlockUserFromComment Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак
unBlockFromCommentParamsUnBlockFromCommentParamsТак
userIdstringНі
anonUserIdstringНі

Відповідь

Повертає: UnblockSuccess

Приклад

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

unFlagComment Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Відповідь

Повертає: FlagCommentResponse

Приклад

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

unLockComment Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
commentIdstringТак
broadcastIdstringТак
ssostringНі

Відповідь

Повертає: APIEmptyResponse

Приклад

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

unPinComment Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Відповідь

Повертає: ChangeCommentPinStatusResponse

Приклад

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

updateComment Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
updatableCommentParamsUpdatableCommentParamsYes
contextUserIdstringNo
doSpamCheckbooleanNo
isLivebooleanNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

voteComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
commentIdstringТак
urlIdstringТак
broadcastIdstringТак
voteBodyParamsVoteBodyParamsТак
sessionIdstringНі
ssostringНі

Відповідь

Повертає: VoteResponse

Приклад

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

getCommentsForUser Internal Link

Параметри

НазваТипОбов’язковоОпис
userIdstringНі
directionSortDirectionsНі
repliesToUserIdstringНі
pagenumberНі
includei10nbooleanНі
localestringНі
isCrawlerbooleanНі

Відповідь

Повертає: GetCommentsForUserResponse

Приклад

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

addDomainConfig Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
addDomainConfigParamsAddDomainConfigParamsТак

Відповідь

Повертає: AddDomainConfigResponse

Приклад

addDomainConfig Приклад
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const config: AddDomainConfigParams = {
5 domain: 'myblog.example.com',
6 enabled: true,
7 // опис є необов’язковим і пропущений тут
8 };
9 const response: AddDomainConfigResponse = await addDomainConfig(tenantId, config);
10 console.log(response);
11})();
12

deleteDomainConfig Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
domainstringYes

Відповідь

Повертає: DeleteDomainConfigResponse

Приклад

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

getDomainConfig Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
domainstringYes

Відповідь

Повертає: GetDomainConfigResponse

Приклад

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

getDomainConfigs Internal Link


Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак

Відповідь

Повертає: GetDomainConfigsResponse

Приклад

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

patchDomainConfig Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Відповідь

Повертає: PatchDomainConfigResponse

Приклад

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

putDomainConfig Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
domainToUpdatestringYes
updateDomainConfigParamsUpdateDomainConfigParamsYes

Відповідь

Повертає: PutDomainConfigResponse

Приклад

putDomainConfig Приклад
Copy Copy
1
2async function runExample() {
3 const tenantId: string = 'tenant-9f8c7b1a';
4 const domainToUpdate: string = 'comments.mywebsite.org';
5 const updateDomainConfigParams: UpdateDomainConfigParams = {
6 enableModeration: true,
7 // опційне поле опущено, наприклад, maxCommentLength?: number
8 };
9 const result: PutDomainConfigResponse = await putDomainConfig(
10 tenantId,
11 domainToUpdate,
12 updateDomainConfigParams,
13 );
14 console.log(result);
15}
16runExample();
17

createEmailTemplate Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
createEmailTemplateBodyCreateEmailTemplateBodyYes

Відповідь

Повертає: CreateEmailTemplateResponse

Приклад

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

deleteEmailTemplate Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

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

deleteEmailTemplateRenderError Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак
errorIdstringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getEmailTemplate Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: GetEmailTemplateResponse

Приклад

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

getEmailTemplateDefinitions Internal Link

Параметри

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

Відповідь

Повертає: GetEmailTemplateDefinitionsResponse

Приклад

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

getEmailTemplateRenderErrors Internal Link

Параметри

NameTypeRequiredОпис
tenantIdstringТак
idstringТак
skipnumberНі

Відповідь

Повертає: GetEmailTemplateRenderErrorsResponse

Приклад

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

getEmailTemplates Internal Link


Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
skipnumberНі

Відповідь

Повертає: GetEmailTemplatesResponse

Приклад

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

renderEmailTemplate Internal Link

Parameters

НазваТипОбов’язковийОпис
tenantIdstringТак
renderEmailTemplateBodyRenderEmailTemplateBodyТак
localestringНі

Response

Повертає: RenderEmailTemplateResponse

Приклад

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

updateEmailTemplate Internal Link


Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак
updateEmailTemplateBodyUpdateEmailTemplateBodyТак

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getEventLog Internal Link

req tenantId urlId userIdWS

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
urlIdstringТак
userIdWSstringТак
startTimenumberТак
endTimenumberНі

Відповідь

Повертає: GetEventLogResponse

Приклад

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

getGlobalEventLog Internal Link

запит
tenantId
urlId
userIdWS

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
urlIdstringТак
userIdWSstringТак
startTimenumberТак
endTimenumberНі

Відповідь

Повертає: GetEventLogResponse

Приклад

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

createFeedPost Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
createFeedPostParamsCreateFeedPostParamsТак
broadcastIdstringНі
isLivebooleanНі
doSpamCheckbooleanНі
skipDupCheckbooleanНі

Відповідь

Повертає: CreateFeedPostsResponse

Приклад

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

createFeedPostPublic Internal Link

Parameters

НазваТипОбов'язковоОпис
tenantIdstringТак
createFeedPostParamsCreateFeedPostParamsТак
broadcastIdstringНі
ssostringНі

Response

Повертає: CreateFeedPostResponse

Example

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

deleteFeedPostPublic Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
postIdstringYes
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: DeleteFeedPostPublicResponse

Приклад

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

getFeedPosts Internal Link

req tenantId afterId

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
afterIdstringНі
limitnumberНі
tagsArrayНі

Відповідь

Повертає: GetFeedPostsResponse

Приклад

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

getFeedPostsPublic Internal Link

req tenantId afterId

Параметри

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
limitnumberNo
tagsArrayNo
ssostringNo
isCrawlerbooleanNo
includeUserInfobooleanNo

Відповідь

Повертає: PublicFeedPostsResponse

Приклад

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

getFeedPostsStats Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
postIdsArrayYes
ssostringNo

Відповідь

Повертає: FeedPostsStatsResponse

Приклад

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

getUserReactsPublic Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
postIdsArrayNo
ssostringNo

Відповідь

Повертає: UserReactsResponse

Приклад

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

reactFeedPostPublic Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
postIdstringYes
reactBodyParamsReactBodyParamsYes
isUndobooleanNo
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: ReactFeedPostResponse

Приклад

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

updateFeedPost Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
idstringYes
feedPostFeedPostYes

Відповідь

Повертає: APIEmptyResponse

Приклад

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

updateFeedPostPublic Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
postIdstringТак
updateFeedPostParamsUpdateFeedPostParamsТак
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: CreateFeedPostResponse

Приклад

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

flagCommentPublic Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
commentIdstringYes
isFlaggedbooleanYes
ssostringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getGifLarge Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
largeInternalURLSanitizedstringYes

Відповідь

Повертає: GifGetLargeResponse

Приклад

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

getGifsSearch Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
searchstringYes
localestringNo
ratingstringNo
pagenumberNo

Відповідь

Повертає: GetGifsSearchResponse

Приклад

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

getGifsTrending Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
localestringNo
ratingstringNo
pagenumberNo

Відповідь

Повертає: GetGifsTrendingResponse

Приклад

Приклад getGifsTrending
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const locale: string = "en-US";
5 const rating: string = "PG-13";
6 const page: number = 1;
7
8 const trendingAll: GetGifsTrendingResponse = await getGifsTrending(tenantId, locale, rating, page);
9 console.log(trendingAll);
10
11 // Використовуючи лише необхідний параметр
12 const trendingMinimal: GetGifsTrendingResponse = await getGifsTrending(tenantId);
13 console.log(trendingMinimal);
14}
15
16runExample();
17

addHashTag Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
createHashTagBodyCreateHashTagBodyNo

Відповідь

Повертає: CreateHashTagResponse

Приклад

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

addHashTagsBulk Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

Відповідь

Повертає: BulkCreateHashTagsResponse

Приклад

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

deleteHashTag Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
tagstringYes
deleteHashTagRequestBodyDeleteHashTagRequestBodyNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getHashTags Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
pagenumberНі

Відповідь

Повертає: GetHashTagsResponse

Приклад

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

patchHashTag Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
tagstringТак
updateHashTagBodyUpdateHashTagBodyНі

Відповідь

Повертає: UpdateHashTagResponse

Приклад

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

getMe Internal Link


Визначає облікові дані, що використовуються: орендар, до якого вони належать, і, для токенів OAuth, користувач, який їх уповноважив.
Інтеграції використовують це для тестування з’єднання та позначення його.

Параметри

NameTypeRequiredDescription
tenantIdstringТак

Відповідь

Повертає: GetMeResponse

Приклад

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

deleteModerationVote Internal Link


Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
commentIdstringТак
voteIdstringТак
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: VoteDeleteResponse

Приклад

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

getApiComments Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
pagenumberНі
countnumberНі
textSearchstringНі
byIPFromCommentstringНі
filtersstringНі
searchFiltersstringНі
sortsstringНі
demobooleanНі
ssostringНі

Відповідь

Повертає: ModerationAPIGetCommentsResponse

Приклад

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

getApiExportStatus Internal Link


Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
batchJobIdstringНі
ssostringНі

Відповідь

Повертає: ModerationExportStatusResponse

Приклад

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

getApiIds Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
textSearchstringНі
byIPFromCommentstringНі
filtersstringНі
searchFiltersstringНі
afterIdstringНі
demobooleanНі
ssostringНі

Відповідь

Повертає: ModerationAPIGetCommentIdsResponse

Приклад

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

getBanUsersFromComment Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
commentIdstringYes
ssostringNo

Відповідь

Повертає: GetBannedUsersFromCommentResponse

Приклад

Приклад getBanUsersFromComment
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c";
3const commentId: string = "comment_a1b2c3";
4const ssoToken: string = "sso_abc123";
5
6const bannedUsers: GetBannedUsersFromCommentResponse = await getBanUsersFromComment(tenantId, commentId, ssoToken);
7const bannedUsersNoSso: GetBannedUsersFromCommentResponse = await getBanUsersFromComment(tenantId, commentId);
8

getCommentBanStatus Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
commentIdstringТак
ssostringНі

Відповідь

Повертає: GetCommentBanStatusResponse

Приклад

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

getCommentChildren Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
commentIdstringТак
ssostringНі

Відповідь

Повертає: ModerationAPIChildCommentsResponse

Приклад

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

getCount Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
textSearchstringНі
byIPFromCommentstringНі
filterstringНі
searchFiltersstringНі
demobooleanНі
ssostringНі

Відповідь

Повертає: ModerationAPICountCommentsResponse

Приклад

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

getCounts Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
ssostringNo

Відповідь

Повертає: GetBannedUsersCountResponse

Приклад

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

getLogs Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
ssostringNo

Відповідь

Повертає: ModerationAPIGetLogsResponse

Приклад

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

getManualBadges Internal Link


Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
ssostringNo

Відповідь

Повертає: GetTenantManualBadgesResponse

Приклад

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

getManualBadgesForUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
badgesUserIdstringNo
commentIdstringNo
ssostringNo

Відповідь

Повертає: GetUserManualBadgesResponse

Приклад

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

getModerationComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
commentIdstringТак
includeEmailbooleanНі
includeIPbooleanНі
ssostringНі

Відповідь

Повертає: ModerationAPICommentResponse

Приклад

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

getModerationCommentText Internal Link


Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
commentIdstringТак
ssostringНі

Відповідь

Повертає: GetCommentTextResponse

Приклад

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

getPreBanSummary Internal Link


Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
commentIdstringТак
includeByUserIdAndEmailbooleanНі
includeByIPbooleanНі
includeByEmailDomainbooleanНі
ssostringНі

Відповідь

Повертає: PreBanSummary

Приклад

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

getSearchCommentsSummary Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
valuestringНі
filtersstringНі
searchFiltersstringНі
ssostringНі

Відповідь

Повертає: ModerationCommentSearchResponse

Приклад

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

getSearchPages Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
valuestringNo
ssostringNo

Відповідь

Повертає: ModerationPageSearchResponse

Приклад

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

getSearchSites Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
valuestringНі
ssostringНі

Відповідь

Повертає: ModerationSiteSearchResponse

Приклад

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

getSearchSuggest Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
textSearchstringNo
ssostringNo

Відповідь

Повертає: ModerationSuggestResponse

Приклад

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

getSearchUsers Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
valuestringНі
ssostringНі

Відповідь

Повертає: ModerationUserSearchResponse

Приклад

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

getTrustFactor Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
userIdstringNo
ssostringNo

Відповідь

Повертає: GetUserTrustFactorResponse

Приклад

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

getUserBanPreference Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
ssostringНі

Відповідь

Повертає: APIModerateGetUserBanPreferencesResponse

Приклад

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

getUserInternalProfile Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
commentIdstringНі
ssostringНі

Відповідь

Повертає: GetUserInternalProfileResponse

Приклад

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

postAdjustCommentVotes Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
commentIdstringТак
adjustCommentVotesParamsAdjustCommentVotesParamsТак
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: AdjustVotesResponse

Приклад

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

postApiExport Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
sortsstringNo
ssostringNo

Відповідь

Повертає: ModerationExportResponse

Приклад

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

postBanUserFromComment Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
commentIdstringТак
banEmailbooleanНі
banEmailDomainbooleanНі
banIPbooleanНі
deleteAllUsersCommentsbooleanНі
bannedUntilstringНі
isShadowBanbooleanНі
updateIdstringНі
banReasonstringНі
ssostringНі

Відповідь

Повертає: BanUserFromCommentResult

Приклад

postBanUserFromComment Приклад
Copy Copy
1
2async function banUserExample(): Promise<void> {
3 const result: BanUserFromCommentResult = await postBanUserFromComment(
4 "tenant_42",
5 "comment_1001",
6 true, // banEmail
7 undefined, // banEmailDomain (пропущено)
8 true, // banIP
9 false, // deleteAllUsersComments
10 "2025-01-01T00:00:00Z", // bannedUntil
11 true, // isShadowBan
12 undefined, // updateId (пропущено)
13 "Harassment", // banReason
14 undefined // sso (пропущено)
15 );
16
17 console.log(result);
18}
19

postBanUserUndo Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
banUserUndoParamsBanUserUndoParamsYes
ssostringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

postBanUserUndo Приклад
Copy Copy
1
2const tenantId: string = "tenant_9876";
3
4const undoParams: BanUserUndoParams = {
5 userId: "user_12345",
6 // additional required fields can be added here
7};
8
9const resultWithoutSSO: APIEmptyResponse = await postBanUserUndo(tenantId, undoParams);
10
11const ssoToken: string = "sso_abcdef123456";
12
13const resultWithSSO: APIEmptyResponse = await postBanUserUndo(tenantId, undoParams, ssoToken);
14

postBulkPreBanSummary Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
bulkPreBanParamsBulkPreBanParamsТак
includeByUserIdAndEmailbooleanНі
includeByIPbooleanНі
includeByEmailDomainbooleanНі
ssostringНі

Відповідь

Повертає: BulkPreBanSummary

Приклад

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

postCommentsByIds Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
commentsByIdsParamsCommentsByIdsParamsYes
ssostringNo

Відповідь

Повертає: ModerationAPIChildCommentsResponse

Приклад

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

postFlagComment Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
commentIdstringТак
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: APIEmptyResponse

Приклад

postFlagComment Приклад
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5
6 // Тільки обов’язкові параметри
7 const result1: APIEmptyResponse = await postFlagComment(tenantId, commentId);
8
9 // Включаючи необов’язкові параметри
10 const broadcastId: string = "brd_54321";
11 const sso: string = "user@example.com";
12 const result2: APIEmptyResponse = await postFlagComment(tenantId, commentId, broadcastId, sso);
13
14 console.log(result1, result2);
15}
16runExample();
17

postRemoveComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: PostRemoveCommentApiResponse

Приклад

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

postRestoreDeletedComment Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
commentIdstringYes
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

postSetCommentApprovalStatus Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
approvedbooleanNo
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: SetCommentApprovedResponse

Приклад

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

postSetCommentReviewStatus Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
commentIdstringТак
reviewedbooleanНі
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: APIEmptyResponse

Приклад

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

postSetCommentSpamStatus Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
commentIdstringYes
spambooleanNo
permNotSpambooleanNo
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

postSetCommentText Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
setCommentTextParamsSetCommentTextParamsYes
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: SetCommentTextResponse

Приклад

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

postUnFlagComment Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
commentIdstringYes
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

postVote Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
commentIdstringYes
directionstringNo
broadcastIdstringNo
ssostringNo

Відповідь

Повертає: VoteResponse

Приклад

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

putAwardBadge Internal Link


Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
badgeIdstringТак
userIdstringНі
commentIdstringНі
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: AwardUserBadgeResponse

Приклад

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

putCloseThread Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
urlIdstringYes
ssostringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

putRemoveBadge Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
badgeIdstringТак
userIdstringНі
commentIdstringНі
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: RemoveUserBadgeResponse

Приклад

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

putReopenThread Internal Link

Параметри

Ім'яТипОбов'язковийОпис
tenantIdstringYes
urlIdstringYes
ssostringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

setTrustFactor Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
userIdstringНі
trustFactorstringНі
ssostringНі

Відповідь

Повертає: SetUserTrustFactorResponse

Приклад

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

createModerator Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringТак
createModeratorBodyCreateModeratorBodyТак

Response

Повертає: CreateModeratorResponse

Example

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

deleteModerator Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
idstringТак
sendEmailstringНі

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getModerator Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: GetModeratorResponse

Приклад

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

getModerators Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
skipnumberНі

Відповідь

Повертає: GetModeratorsResponse

Приклад

Приклад getModerators
Copy Copy
1
2const tenantId: string = "tenant_987654321";
3
4const moderators: GetModeratorsResponse = await getModerators(tenantId);
5
6const skip: number = 20;
7const moreModerators: GetModeratorsResponse = await getModerators(tenantId, skip);
8

sendInvite Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак
fromNamestringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

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

updateModerator Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
updateModeratorBodyUpdateModeratorBodyYes

Відповідь

Повертає: APIEmptyResponse

Приклад

updateModerator Приклад
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3const moderatorId: string = "mod_12345";
4
5const updateBody: UpdateModeratorBody = {
6 isActive: true,
7 // role?: string є необов’язковим і тут пропущено
8};
9
10const result: APIEmptyResponse = await updateModerator(tenantId, moderatorId, updateBody);
11

deleteNotificationCount Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getCachedNotificationCount Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: GetCachedNotificationCountResponse

Приклад

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

getNotificationCount Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Відповідь

Повертає: GetNotificationCountResponse

Приклад

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

getNotifications Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Відповідь

Повертає: GetNotificationsResponse

Приклад

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

updateNotification Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateNotificationBodyUpdateNotificationBodyYes
userIdstringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

createV1PageReact Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
urlIdstringYes
titlestringNo
ssostringNo

Відповідь

Повертає: CreateV1PageReact

Приклад

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

createV2PageReact Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringТак
urlIdstringТак
idstringТак
titlestringНі
ssostringНі

Response

Повертає: CreateV1PageReact

Приклад

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

deleteV1PageReact Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
urlIdstringТак
ssostringНі

Відповідь

Повертає: CreateV1PageReact

Приклад

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

deleteV2PageReact Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
urlIdstringYes
idstringYes
ssostringNo

Відповідь

Повертає: CreateV1PageReact

Приклад

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

getV1PageLikes Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
urlIdstringYes
ssostringNo

Відповідь

Повертає: GetV1PageLikes

Приклад

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

getV2PageReacts Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
ssostringNo

Відповідь

Returns: GetV2PageReacts

Приклад

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

getV2PageReactUsers Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
idstringYes
ssostringNo

Відповідь

Повертає: GetV2PageReactUsersResponse

Приклад

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

addPage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createAPIPageDataCreateAPIPageDataYes

Response

Повертає: AddPageAPIResponse

Приклад

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

deletePage Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: DeletePageAPIResponse

Приклад

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

getOfflineUsers Internal Link

Past commenters on the page who are NOT currently online. Sorted by displayName.
Попередні коментатори на сторінці, які НЕ перебувають онлайн. Відсортовано за displayName.

Use this after exhausting /users/online to render a "Members" section.
Використовуйте це після завершення запитів /users/online, щоб відобразити розділ "Members".

Cursor pagination on commenterName: server walks the partial {tenantId, urlId, commenterName} index from afterName forward via $gt, no $skip cost.
Курсорна пагінація за commenterName: сервер проходить частковий індекс {tenantId, urlId, commenterName} від afterName вперед за допомогою $gt, без витрат на $skip.

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
urlIdstringТак
afterNamestringНі
afterUserIdstringНі

Відповідь

Повертає: PageUsersOfflineResponse

Приклад

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

getOnlineUsers Internal Link

Currently-online viewers of a page: people whose websocket session is subscribed to the page right now. Повертає anonCount + totalCount (room-wide subscribers, including anon viewers we don't enumerate).

Parameters

NameTypeRequiredDescription
tenantIdstringТак
urlIdstringТак
afterNamestringНі
afterUserIdstringНі

Response

Повертає: PageUsersOnlineResponse

Приклад

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

getPageByURLId Internal Link

Параметри

Ім'яТипОбов'язковоОпис
tenantIdstringТак
urlIdstringТак

Відповідь

Повертає: GetPageByURLIdAPIResponse

Приклад

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

getPages Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак

Відповідь

Повертає: GetPagesAPIResponse

Приклад

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

getPagesPublic Internal Link


Отримати список сторінок для орендаря. Використовується настільним клієнтом FChat для заповнення списку кімнат.
Потрібно, щоб enableFChat було встановлено в true у розв'язаній кастомній конфігурації для кожної сторінки.
Сторінки, які вимагають SSO, фільтруються за груповим доступом запитуючого користувача.

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
cursorstringНі
limitnumberНі
qstringНі
sortByPagesSortByНі
hasCommentsbooleanНі

Відповідь

Повертає: GetPublicPagesResponse

Приклад

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

getUsersInfo Internal Link

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

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idsstringТак

Відповідь

Повертає: PageUsersInfoResponse

Приклад

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

patchPage Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
idstringYes
updateAPIPageDataUpdateAPIPageDataYes

Відповідь

Повертає: PatchPageAPIResponse

Приклад

patchPage Приклад
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const pageId: string = "page_98765";
5
6 const updateData: UpdateAPIPageData = {
7 title: "Updated FAQ Page"
8 // description?: string можна пропустити
9 };
10
11 const response: PatchPageAPIResponse = await patchPage(tenantId, pageId, updateData);
12})();
13

deletePendingWebhookEvent Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getPendingWebhookEventCount Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
commentIdstringНі
externalIdstringНі
eventTypestringНі
typestringНі
domainstringНі
attemptCountGTnumberНі

Відповідь

Повертає: GetPendingWebhookEventCountResponse

Приклад

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

getPendingWebhookEvents Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

Відповідь

Returns: GetPendingWebhookEventsResponse

Приклад

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

createPollVote Internal Link

Record a vote on a poll, or move an existing one to a different option. A voter has at most one vote per poll, so calling this again for the same voter moves their vote rather than adding one.

This obeys the site's poll settings: if voting is set to logged-in users only, a vote with just an anonUserId is rejected, and anonymous votes are rate limited per IP per poll.

Parameters

НазваТипОбов'язковоОпис
tenantIdstringYes
createPollVoteBodyCreatePollVoteBodyYes

Response

Повертає: CreatePollVoteResponse

Example

createPollVote Приклад
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant";
4
5 const vote: CreatePollVoteBody = {
6 pollId: "poll-2024-09",
7 optionId: "option-A"
8 // userId is optional and omitted here
9 };
10
11 const result: CreatePollVoteResponse = await createPollVote(tenantId, vote);
12 console.log(result);
13})();
14

deletePollVote Internal Link

Retract a vote. The option it was cast on gives its tally back.

Parameters

НазваТипОбов'язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: DeletePollVoteResponse

Приклад

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

getPollVote Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: GetPollVoteResponse

Приклад

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

getPollVotes Internal Link

The individual votes behind one poll's tallies, oldest first.

A poll belongs to a comment, so votes are always read one poll at a time - commentId is required. That keeps every query on the indexes the collection already has.

Obeys the poll's privacy: an anonymous poll's votes cannot be read (poll-anonymous), here or by id.

Parameters

НазваТипОбов’язковоОпис
tenantIdstringYes
commentIdstringYes
voterIdstringNo
optionIdstringNo
skipnumberNo

Response

Returns: GetPollVotesResponse

Example

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

deletePoll Internal Link

Видалити опитування з його коментаря разом із усіма голосами, які були віддані. Сам коментар залишається без змін.

Parameters

НазваТипОбов’язковийОпис
tenantIdstringТак
commentIdstringТак

Response

Повертає: APIEmptyResponse

Example

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

getPoll Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
commentIdstringYes

Відповідь

Повертає: GetPollResponse

Приклад

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

patchPoll Internal Link

Редагуйте опитування на місці, зберігаючи підрахунки: змініть питання, перейменуйте варіант, закрийте або відкрийте його, або змініть, хто може бачити голосувальників. Варіанти ідентифікуються за id — щоб додати, видалити або змінити їх порядок, PUT повний список.

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
commentIdstringТак
commentPollPatchCommentPollPatchТак

Відповідь

Повертає: SavePollResponse

Приклад

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

putPoll Internal Link

Прикріпити опитування до коментаря, або встановити повний стан вже існуючого опитування.

Опції збігаються за id: опція, надіслана з id існуючої опції, зберігає свої голоси (і отримує нову мітку та позицію), опція, надіслана без id, додається, а існуючі опції, які не включені у список, видаляються разом з голосами, відданими за них.

Якщо не залишати жодного існуючого id опції в опитуванні, яке має голоси, всі вони будуть видалені, тому потрібно встановити replaceVotes=true.

Parameters

НазваТипОбов'язковоОпис
tenantIdstringYes
commentIdstringYes
commentPollPutInputCommentPollPutInputYes
replaceVotesbooleanNo

Response

Returns: SavePollResponse

Example

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

createQuestionConfig Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
createQuestionConfigBodyCreateQuestionConfigBodyТак

Відповідь

Повертає: CreateQuestionConfigResponse

Приклад

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

deleteQuestionConfig Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getQuestionConfig Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
idstringТак

Відповідь

Повертає: GetQuestionConfigResponse

Приклад

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

getQuestionConfigs Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
skipnumberNo

Відповідь

Повертає: GetQuestionConfigsResponse

Приклад

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

updateQuestionConfig Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Відповідь

Повертає: APIEmptyResponse

Приклад

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

createQuestionResult Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
createQuestionResultBodyCreateQuestionResultBodyYes

Відповідь

Повертає: CreateQuestionResultResponse

Приклад

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

deleteQuestionResult Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getQuestionResult Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: GetQuestionResultResponse

Приклад

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

getQuestionResults Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Відповідь

Повертає: GetQuestionResultsResponse

Приклад

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

updateQuestionResult Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
updateQuestionResultBodyUpdateQuestionResultBodyYes

Відповідь

Повертає: APIEmptyResponse

Приклад

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

aggregateQuestionResults Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
questionIdstringНі
questionIdsArrayНі
urlIdstringНі
timeBucketAggregateTimeBucketНі
startDateDateНі
forceRecalculatebooleanНі

Відповідь

Повертає: AggregateQuestionResultsResponse

Приклад

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

bulkAggregateQuestionResults Internal Link


Параметри

NameTypeRequiredDescription
tenantIdstringYes
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestYes
forceRecalculatebooleanNo

Відповідь

Повертає: BulkAggregateQuestionResultsResponse

Приклад

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

combineCommentsWithQuestionResults Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
questionIdstringНі
questionIdsArrayНі
urlIdstringНі
startDateDateНі
forceRecalculatebooleanНі
minValuenumberНі
maxValuenumberНі
limitnumberНі

Відповідь

Повертає: CombineQuestionResultsWithCommentsResponse

Приклад

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

addSSOUser Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

Відповідь

Повертає: AddSSOUserAPIResponse

Приклад

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

deleteSSOUser Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
idstringYes
deleteCommentsbooleanNo
commentDeleteModestringNo

Відповідь

Повертає: DeleteSSOUserAPIResponse

Приклад

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

getSSOUserByEmail Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
emailstringYes

Відповідь

Повертає: GetSSOUserByEmailAPIResponse

Приклад

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

getSSOUserById Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: GetSSOUserByIdAPIResponse

Приклад

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

getSSOUsers Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
skipnumberНі

Відповідь

Повертає: GetSSOUsersResponse

Приклад

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

patchSSOUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsbooleanNo

Відповідь

Повертає: PatchSSOUserAPIResponse

Приклад

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

putSSOUser Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
idstringТак
updateAPISSOUserDataUpdateAPISSOUserDataТак
updateCommentsbooleanНі

Відповідь

Повертає: PutSSOUserAPIResponse

Приклад

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

createSubscription Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataТак

Відповідь

Повертає: CreateSubscriptionAPIResponse

Приклад

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

deleteSubscription Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак
userIdstringНі

Відповідь

Повертає: DeleteSubscriptionAPIResponse

Приклад

Приклад deleteSubscription
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9876";
4 const subscriptionId: string = "sub_54321";
5 const userId: string = "user_abc123";
6
7 // З необов'язковим userId
8 const responseWithUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId, userId);
9
10 // Без необов'язкового userId
11 const responseWithoutUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId);
12})();
13

getSubscriptions Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
userIdstringNo

Відповідь

Повертає: GetSubscriptionsAPIResponse

Приклад

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

updateSubscription Internal Link

Параметри

НазваТипОбовʼязковоОпис
tenantIdstringYes
idstringYes
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataYes
userIdstringNo

Відповідь

Повертає: UpdateSubscriptionAPIResponse

Приклад

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

getTenantDailyUsages Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Відповідь

Повертає: GetTenantDailyUsagesResponse

Приклад

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

createTenantPackage Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
createTenantPackageBodyCreateTenantPackageBodyYes

Відповідь

Повертає: CreateTenantPackageResponse

Приклад

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

deleteTenantPackage Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

deleteTenantPackage Приклад
Copy Copy
1
2let tenantId: string = "tenant_12345";
3let packageId: string = "pkg_98765";
4
5const result: APIEmptyResponse = await deleteTenantPackage(tenantId, packageId);
6

getTenantPackage Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: GetTenantPackageResponse

Приклад

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

getTenantPackages Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
skipnumberНі

Відповідь

Повертає: GetTenantPackagesResponse

Приклад

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

replaceTenantPackage Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
replaceTenantPackageBodyReplaceTenantPackageBodyYes

Відповідь

Повертає: APIEmptyResponse

Приклад

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

updateTenantPackage Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
updateTenantPackageBodyUpdateTenantPackageBodyYes

Відповідь

Повертає: APIEmptyResponse

Приклад

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

createTenantUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

Відповідь

Повертає: CreateTenantUserResponse

Приклад

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

deleteTenantUser Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
deleteCommentsstringNo
commentDeleteModestringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getTenantUser Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: GetTenantUserResponse

Приклад

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

getTenantUsers Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
skipnumberНі

Відповідь

Повертає: GetTenantUsersResponse

Приклад

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

replaceTenantUser Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
idstringYes
redirectURLstringNo

Відповідь

Повертає: APIEmptyResponse

Приклад

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

updateTenantUser Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
idstringТак
updateTenantUserBodyUpdateTenantUserBodyТак
updateCommentsstringНі

Відповідь

Повертає: APIEmptyResponse

Приклад

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

createTenant Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

Відповідь

Повертає: CreateTenantResponse

Приклад

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

deleteTenant Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак
surestringНі

Відповідь

Повертає: APIEmptyResponse

Приклад

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

getTenant Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: GetTenantResponse

Приклад

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

getTenants Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
metastringNo
skipnumberNo

Відповідь

Returns: GetTenantsResponse

Приклад

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

updateTenant Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Відповідь

Повертає: APIEmptyResponse

Приклад

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

changeTicketState Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
userIdstringТак
idstringТак
changeTicketStateBodyChangeTicketStateBodyТак

Відповідь

Повертає: ChangeTicketStateResponse

Приклад

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

createTicket Internal Link

Parameters

НазваТипОбов’язковоОпис
tenantIdstringYes
userIdstringYes
createTicketBodyCreateTicketBodyYes

Response

Повертає: CreateTicketResponse

Example

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

getTicket Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
idstringТак
userIdstringНі

Відповідь

Повертає: GetTicketResponse

Приклад

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

getTickets Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Відповідь

Повертає: GetTicketsResponse

Приклад

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

getTranslations Internal Link

Параметри

НазваТипОбов’язковоОпис
namespacestringТак
componentstringТак
localestringНі
useFullTranslationIdsbooleanНі

Відповідь

Повертає: GetTranslationsResponse

Приклад

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

uploadImage Internal Link

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

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
fileBlobYes
sizePresetSizePresetNo
urlIdstringNo

Відповідь

Повертає: UploadImageResponse

Приклад

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

getUserBadgeProgressById Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIGetUserBadgeProgressResponse

Приклад

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

getUserBadgeProgressByUserId Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
userIdstringYes

Відповідь

Повертає: APIGetUserBadgeProgressResponse

Приклад

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

getUserBadgeProgressList Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
limitnumberNo
skipnumberNo

Відповідь

Повертає: APIGetUserBadgeProgressListResponse

Приклад

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

createUserBadge Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
createUserBadgeParamsCreateUserBadgeParamsТак

Відповідь

Повертає: APICreateUserBadgeResponse

Приклад

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

deleteUserBadge Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: APIEmptySuccessResponse

Приклад

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

getUserBadge Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIGetUserBadgeResponse

Приклад

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

getUserBadges Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
userIdstringNo
badgeIdstringNo
typenumberNo
displayedOnCommentsbooleanNo
limitnumberNo
skipnumberNo

Відповідь

Повертає: APIGetUserBadgesResponse

Приклад

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

updateUserBadge Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Відповідь

Повертає: APIEmptySuccessResponse

Приклад

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

getUser Notification Count Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

Відповідь

Повертає: GetUserNotificationCountResponse

Приклад

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

getUserNotifications Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
urlIdstringNo
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
includeTenantNotificationsbooleanNo
ssostringNo

Відповідь

Повертає: GetMyNotificationsResponse

Приклад

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

resetUserNotificationCount Internal Link

Параметри

НазваТипОбов'язковийОпис
tenantIdstringТак
ssostringНі

Відповідь

Повертає: ResetUserNotificationsResponse

Приклад

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

resetUserNotifications Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
afterIdstringНі
afterCreatedAtnumberНі
unreadOnlybooleanНі
dmOnlybooleanНі
noDmbooleanНі
ssostringНі

Відповідь

Повертає: ResetUserNotificationsResponse

Приклад

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

updateUserNotificationCommentSubscriptionStatus Internal Link

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

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
notificationIdstringYes
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumYes
commentIdstringYes
ssostringNo

Відповідь

Повертає: UpdateUserNotificationCommentSubscriptionStatusResponse

Приклад

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

updateUserNotificationPageSubscriptionStatus Internal Link


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

Параметри

НазваТипОбов'язковоОпис
tenantIdstringТак
urlIdstringТак
urlstringТак
pageTitlestringТак
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumТак
ssostringНі

Відповідь

Повертає: UpdateUserNotificationPageSubscriptionStatusResponse

Приклад

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

updateUserNotificationStatus Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
notificationIdstringТак
newStatusUpdateUserNotificationStatusNewStatusEnumТак
ssostringНі

Відповідь

Повертає: UpdateUserNotificationStatusResponse

Приклад

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

getUserPresenceStatuses Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Відповідь

Повертає: GetUserPresenceStatusesResponse

Приклад

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

searchUsers Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
urlIdstringТак
usernameStartsWithstringНі
mentionGroupIdsArrayНі
ssostringНі
searchSectionSearchUsersSearchSectionEnumНі

Відповідь

Повертає: SearchUsersResult

Приклад

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

getUser Internal Link

Параметри

НазваТипОбов'язковоОпис
tenantIdstringYes
idstringYes

Відповідь

Returns: GetUserResponse

Приклад

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

createVote Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
commentIdstringТак
directionCreateVoteDirectionEnumТак
userIdstringНі
anonUserIdstringНі

Відповідь

Повертає: VoteResponse

Приклад

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

deleteVote Internal Link

Параметри

НазваТипОбов’язковийОпис
tenantIdstringТак
idstringТак
editKeystringНі

Відповідь

Повертає: VoteDeleteResponse

Приклад

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

getVotes Internal Link

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
urlIdstringТак

Відповідь

Повертає: GetVotesResponse

Приклад

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

getVotesForUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
userIdstringNo
anonUserIdstringNo

Відповідь

Повертає: GetVotesForUserResponse

Приклад

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

createWebhook Internal Link

Підписує URL на подію коментаря (REST hook subscribe). Підписка того самого URL на ту ж подію та домен знову повертає існуючу підписку. Доставки підписані HMAC, дивіться посібник з вебхуків; застарілий заголовок token ніколи не надсилається до підписок API.

Parameters

НазваТипОбов’язковоОпис
tenantIdstringТак
createWebhookParamsCreateWebhookParamsТак

Response

Returns: CreateWebhookResponse

Example

createWebhook Приклад
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const webhookParams: CreateWebhookParams = {
5 event: "comment.created" as WebhookEventName,
6 method: "POST" as WebhookHTTPMethod,
7 url: "https://myapp.example.com/webhook",
8 source: "comment" as WebhookSource,
9 // optional secret for payload verification
10 secret: "s3cr3tK3y123",
11};
12
13const result: CreateWebhookResponse = await createWebhook(tenantId, webhookParams);
14
15const webhookId: string = result.webhook.id;
16

deleteWebhook Internal Link


Відписки (REST hook unsubscribe). Тільки підписки, створені через цей API, можна видалити тут; вебхуки, керовані через панель, редагуються в панелі.

Параметри

НазваТипОбов’язковоОпис
tenantIdstringТак
idstringТак

Відповідь

Повертає: APIEmptyResponse

Приклад

deleteWebhook Приклад
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const webhookId: string = "wh_98765";
4
5const result: APIEmptyResponse = await deleteWebhook(tenantId, webhookId);
6

getWebhooks Internal Link

Перераховує вебхуки, налаштовані для орендаря, як рядки, керовані через панель, так і підписки API.

Parameters

НазваТипОбов’язковоОпис
tenantIdstringТак
eventWebhookEventNameНі
domainstringНі
sourceWebhookSourceНі
skipnumberНі

Response

Returns: GetWebhooksResponse

Example

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

getWebhookSamplePayloads Internal Link

Останні коментарі у точному форматі, який використовують доставки вебхуків, для створення інтеграцій (наприклад, зразкові дані Zapier). Кожна подія передає один і той самий об’єкт коментаря, тому event має бути лише дійсним.

Parameters

НазваТипОбов'язковоОпис
tenantIdstringТак
eventWebhookEventNameНі
limitnumberНі

Response

Повертає: GetWebhookSamplePayloadsResponse

Example

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


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

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

Внесок

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