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 - Конечные точки панели модератора (модерация комментариев, баны, значки, коэффициент доверия, поиск). Аутентификация через сессию модератора; передайте параметр запроса sso для модераторов, аутентифицированных через SSO.
  • HiddenApi - Внутренние/административные конечные точки для продвинутых сценариев использования.

Пример: Использование Public API (безопасно для браузера)

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

const publicApi = new PublicApi();

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

Пример: Использование Default API (только на стороне сервера)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Держите это в секрете!
});
const defaultApi = new DefaultApi(config);

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

Пример: Использование Moderation API

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

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

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

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

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

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

Simple SSO (Server-Side Only)

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

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

// Create simple SSO using the built-in helper  
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 должен реализовываться на стороне сервера и обеспечивает лучшую безопасность:

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

// Create secure SSO using the built-in helper
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 клиенту для использования в браузере

Using SSO from Browser (with Server-Generated Token)

// Клиентский код (браузер)
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 // Use the server-generated SSO token
});

SSO with Comment Creation

// На стороне сервера: создать 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'
});

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

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

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

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

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

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

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

// Close the subscription when done
subscription.close();

Подписка на пользовательские события

Отслеживайте события, связанные с пользователем (уведомления, упоминания и т.д.):

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

const userConfig = {
  userIdWS: 'user-session-id', // Получите это из ответа getComments
};

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

// Закрыть по завершении
userSubscription.close();

Получение userIdWS

Параметр userIdWS требуется для live-событий и может быть получен из ответов API:

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

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

if (userIdWS) {
  // Теперь можно подписаться на live-события
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

ID трансляций 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() // Уникальный ID для этой операции
  }
});

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

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

aggregate Internal Link

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

Parameters

NameTypeRequiredDescription
tenantIdstringYes
aggregationRequestAggregationRequestYes
parentTenantIdstringNo
includeStatsbooleanNo

Response

Returns: AggregateResponse

Пример

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

getAuditLogs Internal Link

Параметры

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

Ответ

Возвращает: 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 days ago
8
9 const auditResponse: GetAuditLogsResponse1 = await getAuditLogs(
10 tenantId,
11 limit,
12 skip,
13 order,
14 after
15 );
16
17 console.log(auditResponse);
18})();
19

blockFromCommentPublic Internal Link

Параметры

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

Ответ

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

Пример

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

unBlockCommentPublic Internal Link

Параметры

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

checkedCommentsForBlocked Internal Link

Параметры

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

Ответ

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

Пример

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

blockUserFromComment Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Ответ

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

Пример

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

createCommentPublic Internal Link

Параметры

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

deleteComment Internal Link

Параметры

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

Ответ

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

Пример

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

deleteCommentPublic Internal Link

Параметры

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

Ответ

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

Пример

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

deleteCommentVote Internal Link

Параметры

NameTypeRequiredDescription
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

flagComment Internal Link

Параметры

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

Ответ

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

Пример

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

getComment Internal Link

Параметры

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

Ответ

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

Пример

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

getComments Internal Link

Параметры

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

getCommentsPublic Internal Link

req tenantId urlId

Параметры

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

Ответ

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

Пример

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

getCommentText Internal Link

Параметры

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

getCommentVoteUserNames Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
dirnumberYes
ssostringNo

Ответ

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

Пример

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

lockComment Internal Link

Параметры

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

Ответ

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

Пример

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

pinComment Internal Link

Параметры

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

Ответ

Returns: PinCommentResponse

Пример

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

saveComment Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringДа
createCommentParamsCreateCommentParamsДа
isLivebooleanНет
doSpamCheckbooleanНет
sendEmailsbooleanНет
populateNotificationsbooleanНет

Response

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

Example

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

saveCommentsBulk Internal Link

Параметры

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

Ответ

Возвращает: Array<SaveCommentsBulkResponse

Пример

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

setCommentText 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

unBlockUserFromComment Internal Link

Параметры

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

Ответ

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

Пример

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

unFlagComment Internal Link

Параметры

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

Ответ

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

Пример

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

unLockComment Internal Link

Параметры

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

Ответ

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

Пример

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

unPinComment Internal Link

Параметры

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

Ответ

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

Пример

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

updateComment Internal Link

Параметры

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

voteComment Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
urlIdstringYes
broadcastIdstringYes
voteBodyParamsVoteBodyParamsYes
sessionIdstringNo
ssostringNo

Ответ

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

Пример

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

getCommentsForUser Internal Link

Параметры

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

addDomainConfig Internal Link

Параметры

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

Ответ

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

Пример

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

deleteDomainConfig Internal Link

Параметры

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

Ответ

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

Пример

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

getDomainConfig Internal Link

Параметры

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

Ответ

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

Пример

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

getDomainConfigs Internal Link

Параметры

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

Ответ

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

Пример

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

patchDomainConfig Internal Link

Параметры

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

Ответ

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

Пример

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

putDomainConfig Internal Link

Параметры

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

Ответ

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

Пример

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

createEmailTemplate Internal Link

Параметры

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

Ответ

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

Пример

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

deleteEmailTemplate Internal Link

Параметры

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

Ответ

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

Пример

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

deleteEmailTemplateRenderError Internal Link

Параметры

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

Ответ

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

Пример

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

getEmailTemplate Internal Link

Параметры

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

getEmailTemplateDefinitions 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

getEmailTemplateRenderErrors Internal Link

Параметры

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

Ответ

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

Пример

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

getEmailTemplates Internal Link

Параметры

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

Ответ

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

Пример

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

renderEmailTemplate Internal Link


Параметры

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

Ответ

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

Пример

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

updateEmailTemplate Internal Link

Параметры

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

Ответ

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

Пример

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

getEventLog Internal Link

req tenantId urlId userIdWS

Параметры

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

Ответ

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

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Параметры

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

Ответ

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

Пример

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

createFeedPost Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsДа
broadcastIdstringНет
isLivebooleanНет
doSpamCheckbooleanНет
skipDupCheckbooleanНет

Ответ

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

Пример

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

createFeedPostPublic Internal Link

Параметры

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

deleteFeedPostPublic Internal Link

Параметры

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

Ответ

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

Пример

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

getFeedPosts Internal Link

req tenantId afterId

Параметры

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

Ответ

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

Пример

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

getFeedPostsPublic Internal Link

запрос
tenantId
afterId

Параметры

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

Ответ

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

Пример

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

getFeedPostsStats Internal Link

Параметры

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

Ответ

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

Пример

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

getUserReactsPublic Internal Link

Параметры

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

Ответ

Returns: GetUserReactsPublicResponse

Пример

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

reactFeedPostPublic Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
postIdstringYes
reactBodyParamsReactBodyParamsYes
isUndobooleanNo
broadcastIdstringNo
ssostringNo

Ответ

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

Пример

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

updateFeedPost Internal Link

Параметры

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

updateFeedPostPublic Internal Link

Параметры

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

Ответ

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

Пример

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

flagCommentPublic Internal Link

Параметры

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

Ответ

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

Пример

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

getGifLarge Internal Link


Параметры

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

Ответ

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

Пример

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

getGifsSearch Internal Link

Параметры

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

Ответ

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

Пример

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

getGifsTrending Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
localestringНет
ratingstringНет
pagenumberНет

Ответ

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

Пример

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

addHashTag Internal Link

Параметры

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

Ответ

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

Пример

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

addHashTagsBulk Internal Link

Параметры

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

Ответ

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

Пример

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

deleteHashTag Internal Link

Параметры

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

Ответ

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

Пример

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

getHashTags Internal Link

Параметры

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

Ответ

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

Пример

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

patchHashTag Internal Link

Параметры

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

Ответ

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

Пример

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

deleteModerationVote Internal Link

Параметры

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

Ответ

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

Пример

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

getApiComments Internal Link

Параметры

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

Ответ

Возвращает: 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", // tenantId
13 "sso-token-xyz" // sso
14 );
15
16 const minimalResult: GetApiCommentsResponse = await getApiComments(undefined, 5);
17}
18

getApiExportStatus Internal Link

Параметры

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

Ответ

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

Пример

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

getApiIds Internal Link

Параметры

ИмяТипОбязательноОписание
textSearchstringНет
byIPFromCommentstringНет
filtersstringНет
searchFiltersstringНет
afterIdstringНет
demobooleanНет
tenantIdstringНет
ssostringНет

Ответ

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

Пример

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

getBanUsersFromComment Internal Link

Параметры

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

Ответ

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

Пример

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

getCommentBanStatus Internal Link

Параметры

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

getCommentChildren Internal Link

Параметры

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

Ответ

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

Пример

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

getCount Internal Link


Параметры

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

getCounts 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

getLogs Internal Link

Параметры

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

Ответ

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

Пример

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

getManualBadges Internal Link

Параметры

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

Ответ

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

Пример

Пример getManualBadges
Copy Copy
1
2async function fetchBadges() {
3 const tenantId: string = "tenant_987654321";
4 const ssoToken: string = "sso_ABCdef123456";
5
6 // Вызов с обоими необязательными параметрами
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

getManualBadgesForUser Internal Link

Параметры

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

getModerationComment Internal Link

Parameters

NameTypeRequiredDescription
commentIdstringYes
includeEmailbooleanNo
includeIPbooleanNo
tenantIdstringNo
ssostringNo

Response

Returns: GetModerationCommentResponse

Example

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

getModerationCommentText Internal Link

Параметры

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

Ответ

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

Пример

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

getPreBanSummary Internal Link

Параметры

NameTypeRequiredDescription
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

getSearchCommentsSummary Internal Link

Параметры

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

Ответ

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

Пример

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

getSearchPages Internal Link

Параметры

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

getSearchSites Internal Link


Параметры

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

Ответ

Returns: GetSearchSitesResponse

Пример

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

getSearchSuggest Internal Link

Параметры

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

Ответ

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

Пример

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

getSearchUsers Internal Link

Параметры

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

Ответ

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

Пример

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

getTrustFactor Internal Link

Параметры

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

Ответ

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

Пример

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

getUserBanPreference Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringNo
ssostringNo

Ответ

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

Пример

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

getUserInternalProfile Internal Link

Параметры

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

Ответ

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

Пример

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

postAdjustCommentVotes Internal Link

Параметры

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

Ответ

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

Пример

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

postApiExport Internal Link

Параметры

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

postBanUserFromComment Internal Link

Параметры

ИмяТипОбязательноОписание
commentIdstringДа
banEmailbooleanНет
banEmailDomainbooleanНет
banIPbooleanНет
deleteAllUsersCommentsbooleanНет
bannedUntilstringНет
isShadowBanbooleanНет
updateIdstringНет
banReasonstringНет
tenantIdstringНет
ssostringНет

Ответ

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

Пример

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

postBanUserUndo Internal Link

Параметры

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

Ответ

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

Пример

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

postBulkPreBanSummary Internal Link

Параметры

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

postCommentsByIds Internal Link

Параметры

NameTypeRequiredDescription
commentsByIdsParamsCommentsByIdsParamsДа
tenantIdstringНет
ssostringНет

Ответ

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

Пример

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

postFlagComment Internal Link

Параметры

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

postRemoveComment Internal Link

Параметры

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

Ответ

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

Пример

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

postRestoreDeletedComment Internal Link

Параметры

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

Ответ

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

Пример

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

postSetCommentApprovalStatus Internal Link

Параметры

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

Ответ

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

Пример

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

postSetCommentReviewStatus Internal Link

Параметры

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

Ответ

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

Пример

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

postSetCommentSpamStatus Internal Link

Parameters

NameTypeRequiredDescription
commentIdstringYes
spambooleanNo
permNotSpambooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Response

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

Example

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

postSetCommentText Internal Link


Параметры

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

postUnFlagComment Internal Link

Параметры

NameTypeRequiredDescription
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Ответ

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

Пример

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

postVote 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

putAwardBadge Internal Link

Параметры

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

Ответ

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

Пример

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

putCloseThread Internal Link

Параметры

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

Ответ

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

Пример

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

putRemoveBadge Internal Link

Параметры

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

Ответ

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

Пример

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

putReopenThread Internal Link

Параметры

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

Ответ

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

Пример

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

setTrustFactor Internal Link

Параметры

NameTypeRequiredDescription
userIdstringНет
trustFactorstringНет
tenantIdstringНет
ssostringНет

Ответ

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

Пример

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

createModerator Internal Link

Параметры

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

Ответ

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

Пример

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

deleteModerator Internal Link

Параметры

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

Ответ

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

Пример

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

getModerator Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Ответ

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

Пример

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

getModerators Internal Link

Параметры

ИмяТипRequiredОписание
tenantIdstringYes
skipnumberNo

Ответ

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

Пример

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

sendInvite Internal Link

Параметры

NameTypeRequiredDescription
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

updateModerator 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

deleteNotificationCount Internal Link

Параметры

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

Ответ

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

Пример

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

getCachedNotificationCount Internal Link

Параметры

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

Ответ

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

Пример

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

getNotificationCount Internal Link

Параметры

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

Ответ

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

getNotifications 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

updateNotification Internal Link

Параметры

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

Ответ

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

Пример

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

createV1PageReact Internal Link

Parameters

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

Response

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

Example

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

createV2PageReact Internal Link

Параметры

NameTypeRequiredDescription
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

deleteV1PageReact 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

deleteV2PageReact 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

getV1PageLikes Internal Link

Параметры

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

Ответ

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

Пример

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

getV2PageReacts Internal Link

Параметры

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

Ответ

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

Пример

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

getV2PageReactUsers Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
idstringДа

Response

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

Пример

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

addPage Internal Link

Параметры

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

deletePage Internal Link

Параметры

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

Ответ

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

Пример

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

getOfflineUsers Internal Link

Прошлые комментаторы на странице, которые НЕ находятся в сети в данный момент. Отсортированы по displayName.
Используйте это после исчерпания /users/online, чтобы отобразить раздел "Members".
Постраничная навигация курсором по commenterName: сервер проходит частичный {tenantId, urlId, commenterName} индекс от afterName вперёд с помощью $gt, без затрат $skip.

Parameters

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

Response

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

Пример

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

getOnlineUsers Internal Link

Сейчас‑онлайн зрители страницы: люди, чья WebSocket‑сессия подписана на страницу прямо сейчас.
Возвращает anonCount + totalCount (подписчики на уровне комнаты, включая анонимных зрителей, которых мы не перечисляем).

Параметры

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

Ответ

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

Пример

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

getPageByURLId Internal Link

Параметры

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

Ответ

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

Пример

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

getPages Internal Link

Параметры

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

Ответ

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

Пример

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

getPagesPublic Internal Link

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

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
cursorstringNo
limitnumberNo
qstringNo
sortByPagesSortByNo
hasCommentsbooleanNo

Ответ

Returns: GetPagesPublicResponse

Пример

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

getUsersInfo Internal Link

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

Parameters

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

Ответ

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

Пример

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

patchPage Internal Link

Параметры

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

Ответ

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

Пример

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

deletePendingWebhookEvent Internal Link

Параметры

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

Ответ

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

Пример

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

getPendingWebhookEventCount Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringНет
externalIdstringНет
eventTypestringНет
typestringНет
domainstringНет
attemptCountGTnumberНет

Ответ

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

Пример

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

getPendingWebhookEvents Internal Link

Параметры

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

Ответ

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

Пример

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

createQuestionConfig Internal Link

Параметры

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

Ответ

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

Пример

createQuestionConfig Пример
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const customOption: QuestionConfigCustomOptionsInner = {
5 label: "Option A",
6 value: "a",
7};
8
9const createQuestionConfigBody: CreateQuestionConfigBody = {
10 questionText: "What is your favorite color?",
11 isActive: true,
12 // optional fields can be omitted
13 customOptions: [customOption],
14};
15
16const response: CreateQuestionConfigResponse1 = await createQuestionConfig(
17 tenantId,
18 createQuestionConfigBody
19);
20

deleteQuestionConfig Internal Link

Параметры

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

Ответ

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

Пример

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

getQuestionConfig Internal Link

Параметры

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

getQuestionConfigs Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
skipnumberНет

Ответ

Returns: GetQuestionConfigsResponse1

Пример

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

updateQuestionConfig Internal Link

Параметры

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

Ответ

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

Пример

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

createQuestionResult Internal Link

Параметры

ИмяТипОбязательноОписание
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 // необязательные поля, такие как notes, опущены
14};
15
16const result: CreateQuestionResultResponse1 = await createQuestionResult(tenantId, questionResultBody);
17

deleteQuestionResult Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Ответ

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

Пример

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

getQuestionResult Internal Link

Параметры

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

Ответ

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

Пример

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

getQuestionResults Internal Link

Параметры

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

Ответ

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

Пример

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

updateQuestionResult Internal Link

Параметры

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

Ответ

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

Пример

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

aggregateQuestionResults Internal Link

Параметры

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

Ответ

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

Пример

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

bulkAggregateQuestionResults Internal Link

Параметры

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

Ответ

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

Пример

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

combineCommentsWithQuestionResults Internal Link

Параметры

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

addSSOUser Internal Link

Параметры

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

Ответ

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

Пример

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

deleteSSOUser Internal Link

Параметры

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

Ответ

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

Пример

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

getSSOUserByEmail Internal Link

Параметры

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

Ответ

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

Пример

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

getSSOUserById Internal Link

Parameters

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

Response

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

getSSOUsers Internal Link

Параметры

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

Ответ

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

Пример

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

patchSSOUser Internal Link

Параметры

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

Ответ

Returns: PatchSSOUserAPIResponse

Пример

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

putSSOUser Internal Link

Параметры

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

Ответ

Returns: PutSSOUserAPIResponse

Пример

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

createSubscription Internal Link

Параметры

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

deleteSubscription Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
userIdstringNo

Ответ

Returns: DeleteSubscriptionAPIResponse

Пример

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

getSubscriptions Internal Link

Параметры

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

Ответ

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

Пример

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

updateSubscription Internal Link

Параметры

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

Ответ

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

Пример

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

getTenantDailyUsages Internal Link

Параметры

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

Ответ

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

Пример

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

createTenantPackage Internal Link

Параметры

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

deleteTenantPackage Internal Link

Параметры

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

Ответ

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

Пример

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

getTenantPackage Internal Link

Параметры

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

getTenantPackages Internal Link

Параметры

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

Ответ

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

Пример

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

replaceTenantPackage Internal Link

Параметры

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

Ответ

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

Пример

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

updateTenantPackage Internal Link

Параметры

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

Ответ

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

Пример

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

createTenantUser Internal Link

Параметры

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

Ответ

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

deleteTenantUser Internal Link

Параметры

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

Ответ

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

Пример

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

getTenantUser Internal Link

Параметры

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

Ответ

Returns: GetTenantUserResponse1

Пример

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

getTenantUsers Internal Link

Параметры

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

Ответ

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

replaceTenantUser Internal Link

Параметры

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

Ответ

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

Пример

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

Параметры

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

Ответ

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

Пример

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

updateTenantUser Internal Link

Параметры

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

createTenant Internal Link

Параметры

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

Ответ

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

Пример

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

deleteTenant Internal Link

Параметры

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

Ответ

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

Пример

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

getTenant Internal Link

Параметры

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

Ответ

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

Пример

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

getTenants Internal Link

Параметры

ИмяТипТребуетсяОписание
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

updateTenant Internal Link

Параметры

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

Ответ

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

Пример

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

changeTicketState Internal Link

Параметры

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

Ответ

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

Пример

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

createTicket Internal Link

Параметры

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

Ответ

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

Пример

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

getTicket Internal Link


Параметры

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

Ответ

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

Пример

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

getTickets Internal Link

Параметры

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

Ответ

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

Пример

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

getTranslations Internal Link

Параметры

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

Ответ

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

Пример

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

uploadImage Internal Link

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

getUserBadgeProgressById Internal Link

Параметры

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

Ответ

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

Пример

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

getUserBadgeProgressByUserId Internal Link

Параметры

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

Ответ

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

Пример

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

getUserBadgeProgressList Internal Link

Параметры

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

Ответ

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

Пример

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

createUserBadge Internal Link

Параметры

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

Ответ

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

Пример

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

deleteUserBadge Internal Link

Параметры

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

Ответ

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

Пример

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

getUserBadge Internal Link

Параметры

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

Ответ

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

Пример

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

getUserBadges Internal Link

Параметры

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

updateUserBadge Internal Link

Параметры

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

Ответ

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

Пример

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

getUserNotificationCount Internal Link

Параметры

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

Ответ

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

Пример

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

getUserNotifications Internal Link

Параметры

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

resetUserNotificationCount Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

Ответ

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

Пример

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

resetUserNotifications Internal Link

Параметры

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

Ответ

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

updateUserNotificationCommentSubscriptionStatus Internal Link

Enable or disable notifications for a specific comment.

Parameters

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

Response

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

Example

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

updateUserNotificationPageSubscriptionStatus Internal Link

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

Example

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

updateUserNotificationStatus Internal Link

Параметры

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

Ответ

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

Пример

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

getUserPresenceStatuses Internal Link

Параметры

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

Ответ

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

Пример

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

searchUsers Internal Link

Параметры

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

Ответ

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

Пример

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

getUser Internal Link


Параметры

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

Ответ

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

Пример

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

createVote Internal Link

Параметры

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

Ответ

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

Пример

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

deleteVote Internal Link

Параметры

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

getVotes Internal Link

Параметры

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

Ответ

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

Пример

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

getVotesForUser Internal Link

Параметры

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

Ответ

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

Пример

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

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

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

Внесение вклада

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