FastComments.com

FastComments SDK для JavaScript/TypeScript

Это официальный SDK на JavaScript/TypeScript для FastComments.

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

Репозиторий

Просмотреть на GitHub

Установка Internal Link


npm

npm install fastcomments-sdk

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


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

Совместимость браузера и сервера Internal Link


Этот SDK использует двойные точки входа, чтобы обеспечить оптимальную совместимость и предотвратить ошибки во время выполнения:

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

Публичные и защищённые API Internal Link

SDK предоставляет следующие классы API:

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

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

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

Example: Using Moderation API

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

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

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

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

Интеграция SSO (единого входа) Internal Link

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

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

Простой SSO должен генерироваться на стороне сервера и отправляться клиенту:

// Код на стороне сервера (Node.js/бэкенд)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

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

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

const ssoToken = sso.createToken();

// Отправьте ssoToken в код на стороне клиента
// Код на стороне клиента затем может использовать этот токен с браузерным SDK

Защищённый SSO (на стороне сервера, рекомендуется)

Защищённый SSO должен реализовываться на стороне сервера и обеспечивает лучшую безопасность:

// Код на стороне сервера (Node.js/бэкенд)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

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

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

const ssoConfig = sso.prepareToSend();

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

// Или отправить ssoConfig клиенту для использования в браузере

Использование SSO из браузера (с серверно-сгенерированным токеном)

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

// Получите SSO-токен с вашего серверного эндпоинта
const ssoToken = await fetch('/api/sso-token').then(r => r.json());

const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: ssoToken // Использовать сгенерированный сервером SSO-токен
});

SSO при создании комментария

// На стороне сервера: создать SSO и комментарий
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

const sso = FastCommentsSSO.createSecure('your-api-key', userData);
const ssoConfig = sso.prepareToSend();

const response = await publicApi.createCommentPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  broadcastId: 'unique-broadcast-id',
  commentData: {
    comment: 'This is my comment',
    date: Date.now(),
    commenterName: 'John Doe',
    url: 'https://example.com/page',
    urlId: 'page-url-id'
  },
  sso: JSON.stringify(ssoConfig)
});

Распространённые сценарии использования Internal Link

Получение комментариев для страницы

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

Создание комментария

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

Голосование за комментарий

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

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

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

События в реальном времени Internal Link

Подпишитесь на live-события, чтобы получать обновления в режиме реального времени о комментариях, голосах и других действиях.

События на уровне страницы

Прослушивайте live-события для конкретной страницы (комментарии, голоса и т.д.):

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

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

// Subscribe to live events for a page
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (get this from getComments response)
  (event: LiveEvent) => {
    console.log('Live event received:', event);
    
    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Update your UI with the new comment
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Update vote counts in your UI
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }
    
    return true; // Return true if event was handled
  },
  (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', // Get this from getComments response
};

// Subscribe to user's personal feed
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);
    
    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Show notification in your UI
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }
    
    return true;
  },
  (isConnected: boolean) => {
    console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Close when done
userSubscription.close();

Получение userIdWS

The userIdWS parameter is required for live events and can be obtained from API responses:

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

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

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

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

Вы увидите, что в некоторых вызовах API требуется передать broadcastId. Когда вы получаете события, вы получите этот ID обратно, поэтому сможете игнорировать событие, если планируете оптимистично применять изменения на клиенте (а вам, вероятно, захочется так сделать, поскольку это обеспечивает лучший опыт). Передавайте здесь UUID. ID должен быть достаточно уникальным, чтобы не повторяться в рамках одной сессии браузера.

import { v4 as uuidv4 } from 'uuid';

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

Обработка ошибок Internal Link

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

Агрегация Internal Link

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

Параметры

ИмяТипОбязательноОписание
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

Получить журналы аудита Internal Link

Параметри

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

Відповідь

Повертає: GetAuditLogsResponse1

Приклад

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

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

Параметри

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Відповідь

Returns: BlockFromCommentPublicResponse

Приклад

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

Разблокировать публичный комментарий Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Ответ

Возвращает: UnBlockCommentPublicResponse

Пример

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

Проверить заблокированные комментарии Internal Link

Параметри

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

Відповідь

Повертає: CheckedCommentsForBlockedResponse

Приклад

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

Заблокировать пользователя по комментарию Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Ответ

Returns: BlockUserFromCommentResponse

Пример

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

Создать публичный комментарий Internal Link

Параметри

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

Відповідь

Повертає: CreateCommentPublicResponse

Приклад

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

Удалить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
contextUserIdstringNo
isLivebooleanNo

Ответ

Возвращает: DeleteCommentResponse

Пример

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

Удалить публичный комментарий Internal Link

Параметри

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

Відповідь

Повертає: DeleteCommentPublicResponse

Приклад

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

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

Параметри

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

Відповідь

Повертає: DeleteCommentVoteResponse

Приклад

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

Пометить комментарий Internal Link

Параметри

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

Відповідь

Повертає: FlagCommentResponse1

Приклад

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

Получить комментарий Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetCommentResponse

Пример

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

Получить комментарии Internal Link

Параметры

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

Ответ

Возвращает: GetCommentsResponse

Пример

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

Получить публичные комментарии Internal Link

req tenantId urlId

Параметри

НазваТипОбов’язковоОпис
tenantIdstringYes
urlIdstringYes
pagenumberNo
directionSortDirectionsNo
ssostringNo
skipnumberNo
skipChildrennumberNo
limitnumberNo
limitChildrennumberNo
countChildrenbooleanNo
fetchPageForCommentIdstringNo
includeConfigbooleanNo
countAllbooleanNo
includei10nbooleanNo
localestringNo
modulesstringNo
isCrawlerbooleanNo
includeNotificationCountbooleanNo
asTreebooleanNo
maxTreeDepthnumberNo
useFullTranslationIdsbooleanNo
parentIdstringNo
searchTextstringNo
hashTagsArrayNo
userIdstringNo
customConfigStrstringNo
afterCommentIdstringNo
beforeCommentIdstringNo

Відповідь

Повертає: GetCommentsPublicResponse

Приклад

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

Получить текст комментария Internal Link

Параметри

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

Відповідь

Повертає: GetCommentTextResponse1

Приклад

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

Получить имена пользователей, голосовавших за комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
dirnumberYes
ssostringNo

Ответ

Возвращает: GetCommentVoteUserNamesResponse

Пример

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

Закрыть комментарий Internal Link

Параметри

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

Відповідь

Повертає: LockCommentResponse

Приклад

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

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

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Ответ

Возвращает: PinCommentResponse

Пример

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

Сохранить комментарий Internal Link

Параметри

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

Відповідь

Повертає: SaveCommentResponse

Приклад

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

Массовое сохранение комментариев Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Ответ

Returns: Array<SaveCommentsBulkResponse

Пример

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

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

Параметри

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

Відповідь

Повертає: SetCommentTextResponse1

Приклад

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

Разблокировать пользователя по комментарию Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
unBlockFromCommentParamsUnBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Ответ

Возвращает: UnBlockUserFromCommentResponse

Пример

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

Снять пометку с комментария Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Ответ

Returns: UnFlagCommentResponse

Пример

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

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

Параметри

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

Відповідь

Повертає: UnLockCommentResponse

Приклад

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

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

Параметры

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
ssostringНет

Ответ

Возвращаемое значение: UnPinCommentResponse

Пример

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

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

Параметри

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

Відповідь

Повертає: UpdateCommentResponse

Приклад

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

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

Параметры

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

Ответ

Возвращает: VoteCommentResponse

Пример

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

Получить комментарии пользователя Internal Link

Параметры

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

Ответ

Возвращает: GetCommentsForUserResponse1

Пример

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

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

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
addDomainConfigParamsAddDomainConfigParamsYes

Ответ

Returns: 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

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

Параметри

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

Відповідь

Повертає: 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

Получить конфигурацию домена Internal Link

Параметры

NameTypeRequiredDescription
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

Получить конфигурации доменов 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

Частичное обновление конфигурации домена 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

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

Параметры

NameTypeRequiredDescription
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

Создать шаблон письма Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
createEmailTemplateBodyCreateEmailTemplateBodyYes

Відповідь

Повертає: CreateEmailTemplateResponse1

Приклад

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

Удалить шаблон письма Internal Link

Параметри

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

Відповідь

Повертає: DeleteEmailTemplateResponse

Приклад

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

Удалить ошибку рендеринга шаблона письма Internal Link

Параметри

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

Відповідь

Повертає: DeleteEmailTemplateRenderErrorResponse

Приклад

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

Получить шаблон письма Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Відповідь

Повертає: GetEmailTemplateResponse1

Приклад

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

Получить определения шаблонов писем Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа

Ответ

Возвращает: GetEmailTemplateDefinitionsResponse1

Пример

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

Получить ошибки рендеринга шаблонов писем Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
skipnumberNo

Response

Returns: GetEmailTemplateRenderErrorsResponse1

Example

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

Получить шаблоны писем Internal Link

Параметри

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

Відповідь

Повертає: GetEmailTemplatesResponse1

Приклад

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

Отрендерить шаблон письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
renderEmailTemplateBodyRenderEmailTemplateBodyДа
localestringНет

Ответ

Возвращает: RenderEmailTemplateResponse1

Пример

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

Обновить шаблон письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

Ответ

Возвращает: UpdateEmailTemplateResponse

Пример

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

Получить журнал событий Internal Link

req tenantId urlId userIdWS

Параметры

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

Ответ

Возвращает: GetEventLogResponse1

Пример

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

Получить глобальный журнал событий Internal Link

запрос
tenantId
urlId
userIdWS

Параметры

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

Ответ

Возвращает: GetGlobalEventLogResponse

Пример

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

Создать пост в ленте Internal Link

Parameters

НазваТипОбов’язковоОпис
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Response

Повертає: CreateFeedPostResponse1

Example

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

Создать публичный пост в ленте Internal Link

Параметри

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

Відповідь

Повертає: CreateFeedPostPublicResponse

Приклад

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

Удалить публичный пост в ленте Internal Link

Параметри

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

Відповідь

Повертає: DeleteFeedPostPublicResponse

Приклад

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

Получить посты ленты Internal Link

запит tenantId afterId

Parameters

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

Відповідь

Повертає: GetFeedPostsResponse1

Приклад

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

Получить публичные посты ленты Internal Link

req tenantId afterId

Параметри

NameTypeRequiredDescription
tenantIdstringТак
afterIdstringНі
limitnumberНі
tagsArrayНі
ssostringНі
isCrawlerbooleanНі
includeUserInfobooleanНі

Відповідь

Повертає: GetFeedPostsPublicResponse

Приклад

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

Получить статистику постов ленты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
postIdsArrayYes
ssostringNo

Ответ

Возвращает: GetFeedPostsStatsResponse

Пример

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

Получить реакции пользователя (публично) Internal Link

Параметри

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

Відповідь

Повертає: GetUserReactsPublicResponse

Приклад

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

Прокомментировать/поставить реакцию на пост (публично) Internal Link

Parameters

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

Відповідь

Повертає: ReactFeedPostPublicResponse

Приклад

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

Обновить пост ленты Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
feedPostFeedPostYes

Ответ

Возвращает: UpdateFeedPostResponse

Пример

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

Обновить публичный пост ленты Internal Link

Параметри

Ім'яТипОбов'язковоОпис
tenantIdstringТак
postIdstringТак
updateFeedPostParamsUpdateFeedPostParamsТак
broadcastIdstringНі
ssostringНі

Відповідь

Повертає: UpdateFeedPostPublicResponse

Приклад

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

Пометить публичный комментарий Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
isFlaggedbooleanYes
ssostringNo

Ответ

Возвращает: FlagCommentPublicResponse

Пример

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

Получить большое GIF Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
largeInternalURLSanitizedstringYes

Ответ

Возвращает: GetGifLargeResponse

Пример

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

Поиск GIF Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
searchstringДа
localestringНет
ratingstringНет
pagenumberНет

Ответ

Возвращает: GetGifsSearchResponse

Пример

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

Трендовые GIF Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
localestringNo
ratingstringNo
pagenumberNo

Ответ

Returns: 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 // Using only the required parameter
12 const trendingMinimal: GetGifsTrendingResponse = await getGifsTrending(tenantId);
13 console.log(trendingMinimal);
14}
15
16runExample();
17

Добавить хэштег Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringNo
createHashTagBodyCreateHashTagBodyNo

Ответ

Возвращает: AddHashTagResponse

Пример

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

Массово добавить хэштеги Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringНет
bulkCreateHashTagsBodyBulkCreateHashTagsBodyНет

Ответ

Возвращает: AddHashTagsBulkResponse

Пример

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

Удалить хэштег Internal Link

Параметры

ИмяТипОбязательноОписание
tagstringYes
tenantIdstringNo
deleteHashTagRequestBodyDeleteHashTagRequestBodyNo

Ответ

Возвращает: DeleteHashTagResponse

Пример

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

Получить хэштеги Internal Link

Параметри

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

Відповідь

Повертає: GetHashTagsResponse1

Приклад

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

Частичное обновление хэштега Internal Link

Параметри

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

Відповідь

Повертає: PatchHashTagResponse

Приклад

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

Удалить голос модерации Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
voteIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: DeleteModerationVoteResponse

Пример

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

Получить комментарии через API Internal Link

Параметры

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

Ответ

Возвращает: GetApiCommentsResponse

Пример

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

Получить статус экспорта API Internal Link

Параметри

НазваТипОбов'язковоОпис
batchJobIdstringNo
tenantIdstringNo
ssostringNo

Відповідь

Повертає: GetApiExportStatusResponse

Приклад

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

Получить идентификаторы API Internal Link

Параметри

НазваТипОбов'язковоОпис
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
afterIdstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Відповідь

Повертає: GetApiIdsResponse

Приклад

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

Получить заблокированных пользователей по комментарию Internal Link

Параметри

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

Відповідь

Повертає: GetBanUsersFromCommentResponse

Приклад

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

Получить статус бана комментария Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
tenantIdstringНет
ssostringНет

Ответ

Возвращает: GetCommentBanStatusResponse1

Пример

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

Получить дочерние комментарии Internal Link

Параметры

NameTypeRequiredDescription
commentIdstringYes
tenantIdstringNo
ssostringNo

Ответ

Возвращает: GetCommentChildrenResponse

Пример

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

Получить количество Internal Link

Параметри

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

Відповідь

Повертає: GetCountResponse

Приклад

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

Получить подсчёты Internal Link

Параметри

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

Відповідь

Повертає: GetCountsResponse

Приклад

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

Получить логи Internal Link

Параметри

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

Відповідь

Повертає: GetLogsResponse

Приклад

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

Получить ручные значки Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringNo
ssostringNo

Response

Возвращает: GetManualBadgesResponse

Example

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

Получить ручные значки для пользователя Internal Link

Параметри

NameTypeRequiredDescription
badgesUserIdstringNo
commentIdstringNo
tenantIdstringNo
ssostringNo

Відповідь

Повертає: GetManualBadgesForUserResponse

Приклад

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

Получить комментарий для модерации Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
includeEmailbooleanNo
includeIPbooleanNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: GetModerationCommentResponse

Пример

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

Получить текст комментария для модерации Internal Link

Параметри

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

Відповідь

Повертає: GetModerationCommentTextResponse

Приклад

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

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

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: GetPreBanSummaryResponse

Пример

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

Получить сводку поиска комментариев Internal Link

Параметри

НазваТипОбов'язковоОпис
valuestringNo
filtersstringNo
searchFiltersstringNo
tenantIdstringNo
ssostringNo

Відповідь

Повертає: GetSearchCommentsSummaryResponse

Приклад

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

Получить страницы поиска Internal Link


Параметри

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

Відповідь

Повертає: GetSearchPagesResponse

Приклад

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

Получить сайты поиска Internal Link

Параметри

НазваТипОбов'язковоОпис
valuestringNo
tenantIdstringNo
ssostringNo

Відповідь

Повертає: GetSearchSitesResponse

Приклад

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

Получить подсказки поиска Internal Link

Параметри

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

Відповідь

Повертає: GetSearchSuggestResponse

Приклад

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

Получить пользователей поиска Internal Link

Параметры

ИмяТипОбязательноОписание
valuestringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: GetSearchUsersResponse

Пример

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

Получить фактор доверия Internal Link

Параметры

ИмяТипОбязательноОписание
userIdstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: GetTrustFactorResponse

Пример

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

Получить предпочтение бана пользователя Internal Link

Параметри

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

Відповідь

Повертає: GetUserBanPreferenceResponse

Приклад

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

Получить внутренний профиль пользователя Internal Link

Параметри

NameTypeRequiredDescription
commentIdstringНі
tenantIdstringНі
ssostringНі

Відповідь

Повертає: GetUserInternalProfileResponse1

Приклад

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

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

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
adjustCommentVotesParamsAdjustCommentVotesParamsYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostAdjustCommentVotesResponse

Пример

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

Запросить экспорт через API Internal Link

Параметры

ИмяТипОбязательноОписание
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
sortsstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostApiExportResponse

Пример

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

Забанить пользователя по комментарию Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
banEmailbooleanNo
banEmailDomainbooleanNo
banIPbooleanNo
deleteAllUsersCommentsbooleanNo
bannedUntilstringNo
isShadowBanbooleanNo
updateIdstringNo
banReasonstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostBanUserFromCommentResponse

Пример

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

Отменить бан пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
banUserUndoParamsBanUserUndoParamsДа
tenantIdstringНет
ssostringНет

Ответ

Возвращает: PostBanUserUndoResponse

Пример

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

Массовая сводка перед баном Internal Link

Параметры

ИмяТипОбязательноОписание
bulkPreBanParamsBulkPreBanParamsYes
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostBulkPreBanSummaryResponse

Пример

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

Получить комментарии по идентификаторам Internal Link

Параметри

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

Відповідь

Повертає: PostCommentsByIdsResponse

Приклад

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

Пометить комментарий (модерация) Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostFlagCommentResponse

Пример

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

Удалить комментарий (модерация) Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostRemoveCommentResponse

Пример

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

Восстановить удалённый комментарий Internal Link

Параметри

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

Відповідь

Повертає: PostRestoreDeletedCommentResponse

Приклад

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

Установить статус одобрения комментария Internal Link

Параметри

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

Відповідь

Повертає: PostSetCommentApprovalStatusResponse

Приклад

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

Установить статус проверки комментария Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
reviewedbooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostSetCommentReviewStatusResponse

Пример

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

Установить статус спама комментария Internal Link

Параметри

НазваТипОбов'язковийОпис
commentIdstringYes
spambooleanNo
permNotSpambooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Відповідь

Повертає: PostSetCommentSpamStatusResponse

Приклад

postSetCommentSpamStatus Приклад
Copy Copy
1
2async function demoSpamStatus(): Promise<void> {
3 const commentId: string = "cmt_5f2a1b3c4d6e7f8g9h0i";
4
5 // Тільки необхідний параметр
6 const resultSimple: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(commentId, true);
7
8 // All optional parameters provided
9 const resultFull: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(
10 commentId,
11 false,
12 true,
13 "brd_1234abcd",
14 "tenant_42",
15 "sso_9876xyz"
16 );
17
18 console.log(resultSimple, resultFull);
19}
20

Установить текст комментария (модерация) Internal Link

Параметри

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

Відповідь

Повертає: PostSetCommentTextResponse

Приклад

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

Снять пометку с комментария (модерация) Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
broadcastIdstringНет
tenantIdstringНет
ssostringНет

Ответ

Возвращает: PostUnFlagCommentResponse

Пример

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

Отдать голос Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringYes
directionstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PostVoteResponse

Пример

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

Выдать значок Internal Link

Параметри

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

Відповідь

Повертає: PutAwardBadgeResponse

Приклад

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

Закрыть тему Internal Link

Параметри

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

Відповідь

Returns: PutCloseThreadResponse

Приклад

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

Удалить значок Internal Link


Параметры

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

Ответ

Возвращает: PutRemoveBadgeResponse

Пример

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

Переоткрыть тему Internal Link

Параметры

ИмяТипОбязательноОписание
urlIdstringYes
tenantIdstringNo
ssostringNo

Ответ

Возвращает: PutReopenThreadResponse

Пример

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

Установить фактор доверия Internal Link


Параметри

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

Відповідь

Повертає: SetTrustFactorResponse

Приклад

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

Создать модератора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createModeratorBodyCreateModeratorBodyДа

Ответ

Возвращает: CreateModeratorResponse1

Пример

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

Удалить модератора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
sendEmailstringNo

Ответ

Возвращает: DeleteModeratorResponse

Пример

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

Получить модератора Internal Link

Параметри

Ім’яТипОбов’язковоОпис
tenantIdstringYes
idstringYes

Відповідь

Повертає: GetModeratorResponse1

Приклад

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

Получить модераторов Internal Link

Параметри

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

Відповідь

Повертає: GetModeratorsResponse1

Приклад

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

Отправить приглашение Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
fromNamestringYes

Ответ

Возвращает: SendInviteResponse

Пример

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

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

Параметри

Ім'яТипОбов'язковоОпис
tenantIdstringYes
idstringYes
updateModeratorBodyUpdateModeratorBodyYes

Відповідь

Повертає: UpdateModeratorResponse

Приклад

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

Удалить счётчик уведомлений Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Відповідь

Повертає: DeleteNotificationCountResponse

Приклад

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

Получить кешированный счётчик уведомлений Internal Link

Параметри

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

Відповідь

Повертає: GetCachedNotificationCountResponse1

Приклад

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

Получить количество уведомлений Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Ответ

Возвращает: GetNotificationCountResponse1

Пример

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

Получить уведомления Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Відповідь

Returns: GetNotificationsResponse1

Приклад

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

Обновить уведомление Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateNotificationBodyUpdateNotificationBodyYes
userIdstringNo

Відповідь

Повертає: UpdateNotificationResponse

Приклад

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

Создать реакцию на странице v1 Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
titlestringNo

Відповідь

Повертає: CreateV1PageReactResponse

Приклад

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

Создать реакцию на странице v2 Internal Link

Параметри

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

Відповідь

Повертає: CreateV2PageReactResponse

Приклад

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

Удалить реакцию на странице v1 Internal Link

Параметри

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

Відповідь

Повертає: DeleteV1PageReactResponse

Приклад

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

Удалить реакцию на странице v2 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes
idstringYes

Ответ

Возвращает: DeleteV2PageReactResponse

Пример

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

Получить лайки страницы v1 Internal Link

Параметри

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

Відповідь

Повертає: GetV1PageLikesResponse

Приклад

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

Получить реакции страницы v2 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes

Ответ

Возвращает: GetV2PageReactsResponse

Пример

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

Получить пользователей, поставивших реакцию на странице v2 Internal Link


Параметри

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

Відповідь

Повертає: GetV2PageReactUsersResponse1

Приклад

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

Добавить страницу Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createAPIPageDataCreateAPIPageDataДа

Ответ

Возвращает: 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

Удалить страницу Internal Link

Параметры

NameTypeRequiredDescription
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

Получить офлайн-пользователей Internal Link

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

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes
afterNamestringNo
afterUserIdstringNo

Response

Возвращает: GetOfflineUsersResponse

Example

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

Получить онлайн-пользователей Internal Link

Поточні онлайн глядачі сторінки: люди, чиї сеанси WebSocket підписані на сторінку саме зараз.
Повертає anonCount + totalCount (підписники по всій кімнаті, включаючи анонімних глядачів, яких ми не перелічуємо).

Параметри

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

Відповідь

Повертає: GetOnlineUsersResponse

Приклад

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

Получить страницу по URL/ID 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

Получить страницы 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

Получить страницы публично Internal Link

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

Список страниц для арендатора. Используется настольным клиентом FChat для заполнения списка комнат.
Требует, чтобы enableFChat был установлен в true в разрешённой пользовательской конфигурации для каждой страницы.
Страницы, требующие SSO, фильтруются по групповому доступу запрашивающего пользователя.

Parameters

ИмяТипОбязательноОписание
tenantIdstringТак
cursorstringНі
limitnumberНі
qstringНі
sortByPagesSortByНі
hasCommentsbooleanНі

Response

Возвращает: GetPagesPublicResponse

Example

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

Получить информацию о пользователях Internal Link

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

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
idsstringYes

Response

Возвращает: GetUsersInfoResponse

Example

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

Частичное обновление страницы Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
updateAPIPageDataUpdateAPIPageDataДа

Ответ

Возвращает: PatchPageAPIResponse

Пример

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

Удалить ожидающее событие вебхука Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: DeletePendingWebhookEventResponse

Пример

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

Получить количество ожидающих событий вебхука Internal Link

Параметры

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

Ответ

Возвращает: GetPendingWebhookEventCountResponse1

Пример

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

Получить ожидающие события вебхука Internal Link

Параметри

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

Відповідь

Повертає: GetPendingWebhookEventsResponse1

Приклад

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

Создать конфигурацию вопроса Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
createQuestionConfigBodyCreateQuestionConfigBodyYes

Ответ

Возвращает: CreateQuestionConfigResponse1

Пример

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

Удалить конфигурацию вопроса Internal Link

Параметри

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

Відповідь

Повертає: DeleteQuestionConfigResponse

Приклад

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

Получить конфигурацию вопроса Internal Link

Параметри

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

Відповідь

Повертає: GetQuestionConfigResponse1

Приклад

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

Получить конфигурации вопросов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipnumberНет

Ответ

Возвращает: GetQuestionConfigsResponse1

Пример

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

Обновить конфигурацию вопроса Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Response

Returns: UpdateQuestionConfigResponse

Example

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

Создать результат вопроса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createQuestionResultBodyCreateQuestionResultBodyYes

Ответ

Возвращает: CreateQuestionResultResponse1

Пример

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

Удалить результат вопроса Internal Link

Параметри

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

Відповідь

Повертає: DeleteQuestionResultResponse

Приклад

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

Получить результат вопроса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: GetQuestionResultResponse1

Пример

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

Получить результаты вопросов Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Відповідь

Returns: GetQuestionResultsResponse1

Приклад

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

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

Параметри

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

Відповідь

Повертає: UpdateQuestionResultResponse

Приклад

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

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

Параметры

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

Ответ

Возвращает: AggregateQuestionResultsResponse1

Пример

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

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

Параметри

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

Відповідь

Повертає: BulkAggregateQuestionResultsResponse1

Приклад

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

Объединить комментарии с результатами вопросов Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
questionIdstringНі
questionIdsArrayНі
urlIdstringНі
startDateDateНі
forceRecalculatebooleanНі
minValuenumberНі
maxValuenumberНі
limitnumberНі

Відповідь

Повертає: CombineCommentsWithQuestionResultsResponse

Приклад

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

Добавить пользователя SSO Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

Response

Возвращает: 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

Удалить пользователя SSO 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

Получить пользователя SSO по email Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
emailstringYes

Ответ

Возвращает: GetSSOUserByEmailAPIResponse

Пример

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

Получить пользователя SSO по ID Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetSSOUserByIdAPIResponse

Example

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

Получить пользователей SSO Internal Link

Параметри

Ім’яТипОбов’язковоОпис
tenantIdstringYes
skipnumberNo

Відповідь

Повертає: GetSSOUsersResponse

Приклад

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

Частичное обновление пользователя SSO Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
updateAPISSOUserDataUpdateAPISSOUserDataДа
updateCommentsbooleanНет

Ответ

Возвращает: PatchSSOUserAPIResponse

Пример

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

Заменить пользователя SSO 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

Создать подписку Internal Link

Параметри

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

Відповідь

Повертає: 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 // необов'язкове поле
10 };
11
12 const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, subscriptionData);
13 console.log(result);
14})();
15

Удалить подписку Internal Link

Параметри

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

Відповідь

Повертає: DeleteSubscriptionAPIResponse

Приклад

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

Получить подписки Internal Link

Параметры

NameTypeRequiredDescription
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

Обновить подписку 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

Получить ежедневное использование тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Ответ

Возвращает: GetTenantDailyUsagesResponse1

Пример

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

Создать пакет тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createTenantPackageBodyCreateTenantPackageBodyДа

Ответ

Возвращает: CreateTenantPackageResponse1

Пример

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

Удалить пакет тенанта Internal Link

Параметри

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

Відповідь

Повертає: DeleteTenantPackageResponse

Приклад

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

Получить пакет тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetTenantPackageResponse1

Пример

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

Получить пакеты тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipnumberНет

Ответ

Возвращает: GetTenantPackagesResponse1

Пример

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

Заменить пакет тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
replaceTenantPackageBodyReplaceTenantPackageBodyYes

Ответ

Возвращает: ReplaceTenantPackageResponse

Пример

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

Обновить пакет тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateTenantPackageBodyUpdateTenantPackageBodyYes

Ответ

Возвращает: UpdateTenantPackageResponse

Пример

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

Создать пользователя тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

Ответ

Возвращает: CreateTenantUserResponse1

Пример

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

Удалить пользователя тенанта Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
deleteCommentsstringNo
commentDeleteModestringNo

Response

Возвращает: DeleteTenantUserResponse

Example

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

Получить пользователя тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetTenantUserResponse1

Пример

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

Получить пользователей тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipnumberНет

Ответ

Возвращает: GetTenantUsersResponse1

Пример

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

Заменить пользователя тенанта Internal Link

Parameters

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

Response

Повертає: ReplaceTenantUserResponse

Example

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

Параметри

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

Відповідь

Повертає: SendLoginLinkResponse

Приклад

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

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

Параметри

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

Відповідь

Повертає: UpdateTenantUserResponse

Приклад

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

Создать тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

Ответ

Возвращает: CreateTenantResponse1

Пример

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

Удалить тенанта Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
surestringNo

Response

Returns: DeleteTenantResponse

Example

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

Получить тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: GetTenantResponse1

Пример

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

Получить тенантов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
metastringNo
skipnumberNo

Ответ

Возвращает: GetTenantsResponse1

Пример

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

Обновить тенанта Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Ответ

Возвращает: UpdateTenantResponse

Пример

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

Изменить состояние тикета Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringДа
idstringДа
changeTicketStateBodyChangeTicketStateBodyДа

Ответ

Возвращает: ChangeTicketStateResponse1

Пример

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

Создать тикет Internal Link

Параметри

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

Відповідь

Повертає: CreateTicketResponse1

Приклад

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

Получить тикет Internal Link

Параметри

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

Відповідь

Повертає: GetTicketResponse1

Приклад

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

Получить тикеты Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Ответ

Возвращает: GetTicketsResponse1

Пример

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

Получить переводы Internal Link

Параметры

ИмяТипОбязательноОписание
namespacestringYes
componentstringYes
localestringNo
useFullTranslationIdsbooleanNo

Ответ

Возвращает: GetTranslationsResponse1

Пример

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

Загрузить изображение Internal Link

Upload and resize an image

Parameters

NameTypeRequiredDescription
tenantIdstringYes
fileBlobYes
sizePresetSizePresetNo
urlIdstringNo

Response

Returns: UploadImageResponse

Example

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

Получить прогресс значка пользователя по ID Internal Link

Параметри

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

Відповідь

Повертає: GetUserBadgeProgressByIdResponse

Приклад

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

Получить прогресс значка пользователя по ID пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringДа

Ответ

Возвращает: GetUserBadgeProgressByUserIdResponse

Пример

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

Получить список прогресса значков пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
userIdstringNo
limitnumberNo
skipnumberNo

Ответ

Возвращает: GetUserBadgeProgressListResponse

Пример

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

Создать значок пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createUserBadgeParamsCreateUserBadgeParamsYes

Ответ

Возвращает: CreateUserBadgeResponse

Пример

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

Удалить значок пользователя Internal Link

Параметри

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

Відповідь

Повертає: DeleteUserBadgeResponse

Приклад

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

Получить значок пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetUserBadgeResponse

Пример

Пример getUserBadge
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant-001";
4 const badgeId: string = "badge-5f9d3a2b";
5
6 const badgeResponse: GetUserBadgeResponse = await getUserBadge(tenantId, badgeId);
7
8 // Access optional fields safely
9 const badgeName: string | undefined = badgeResponse.userBadge?.name;
10 console.log(`Badge ID: ${badgeId}, Name: ${badgeName ?? "Unnamed"}`);
11}
12
13runExample();
14

Получить значки пользователя Internal Link

Параметри

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

Відповідь

Повертає: GetUserBadgesResponse

Приклад

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

Обновить значок пользователя Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Response

Возвращает: UpdateUserBadgeResponse

Example

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

Получить количество уведомлений пользователя Internal Link

Параметри

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

Відповідь

Повертає: GetUserNotificationCountResponse1

Приклад

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

Получить уведомления пользователя Internal Link

Параметры

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

Ответ

Возвращает: GetUserNotificationsResponse

Пример

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

Сбросить количество уведомлений пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
ssostringНет

Ответ

Возвращает: ResetUserNotificationCountResponse

Пример

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

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

Параметры

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

Ответ

Returns: ResetUserNotificationsResponse1

Пример

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

Обновить статус подписки пользователя на комментарии Internal Link

Enable or disable notifications for a specific comment.

Parameters

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

Response

Повертає: UpdateUserNotificationCommentSubscriptionStatusResponse

Приклад

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

Обновить статус подписки пользователя на страницу Internal Link

Enable or disable notifications for a page. When users are subscribed to a page, notifications are created for new root comments, and also

Parameters

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

Response

Повертає: UpdateUserNotificationPageSubscriptionStatusResponse

Приклад

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

Обновить статус уведомления пользователя Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringТак
notificationIdstringТак
newStatusUpdateUserNotificationStatusNewStatusEnumТак
ssostringНі

Відповідь

Повертає: UpdateUserNotificationStatusResponse

Приклад

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

Получить статусы присутствия пользователей Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Ответ

Returns: GetUserPresenceStatusesResponse1

Пример

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

Поиск пользователей Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

Ответ

Returns: SearchUsersResponse1

Пример

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

Получить пользователя Internal Link

Параметри

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

Відповідь

Повертає: GetUserResponse1

Приклад

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

Создать голос Internal Link

Параметри

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

Відповідь

Повертає: CreateVoteResponse

Приклад

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

Удалить голос Internal Link

Параметри

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

Відповідь

Повертає: DeleteVoteResponse

Приклад

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

Получить голоса Internal Link

Параметри

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

Відповідь

Повертає: GetVotesResponse1

Приклад

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

Получить голоса для пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
userIdstringНет
anonUserIdstringНет

Ответ

Возвращает: GetVotesForUserResponse1

Пример

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

Нужна помощь?

Если вы столкнулись с проблемами или у вас есть вопросы по JavaScript/TypeScript SDK, пожалуйста:

Contributing

Вклад приветствуется! Пожалуйста, посетите репозиторий на GitHub для получения руководства по внесению вклада.