FastComments.com

FastComments JavaScript/TypeScript SDK


To oficjalne SDK JavaScript/TypeScript dla FastComments.

Oficjalne SDK JavaScript/TypeScript dla API FastComments

Repozytorium

Zobacz na GitHubie


Instalacja Internal Link

npm install fastcomments-sdk

Dokumentacja API Internal Link


Pełna dokumentacja API: docs/api/README.md

Zgodność przeglądarki i serwera Internal Link


Ten SDK korzysta z podwójnych punktów wejścia aby zapewnić optymalną kompatybilność i zapobiec błędom czasu wykonywania:

  • fastcomments-sdk/browser - Wersja bezpieczna dla przeglądarki z natywnym fetch
  • fastcomments-sdk/server - Pełna wersja Node.js z obsługą SSO
  • fastcomments-sdk (domyślnie) - Tylko typy, bezpieczne do importowania w dowolnym miejscu

API publiczne vs zabezpieczone Internal Link

SDK udostępnia trzy główne klasy API:

  • DefaultApi - Zabezpieczone endpointy, które wymagają klucza API do uwierzytelnienia. Używaj ich do operacji po stronie serwera.
  • PublicApi - Publiczne endpointy, do których można uzyskać dostęp bez klucza API. Można je wywoływać bezpośrednio z przeglądarek/urządzeń mobilnych itp.
  • HiddenApi - Wewnętrzne/adminowe endpointy do zaawansowanych zastosowań.

Example: Using Public API (browser-safe)

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

const publicApi = new PublicApi();

// Pobierz komentarze dla strony (nie wymaga klucza API)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Example: Using Default API (server-side only)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Trzymaj to w tajemnicy!
});
const defaultApi = new DefaultApi(config);

// Pobierz komentarze z pełnym dostępem administratora
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Integracja SSO (Single Sign-On) Internal Link

FastComments obsługuje SSO w celu integracji z istniejącym systemem uwierzytelniania użytkowników. Funkcjonalność SSO jest dostępna tylko w eksporcie serwera ponieważ wymaga funkcji kryptograficznych Node.js.

Proste SSO (tylko po stronie serwera)

Proste SSO powinno być generowane po stronie serwera i wysyłane do klienta:

// Kod po stronie serwera (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Utwórz proste SSO przy użyciu wbudowanego pomocnika  
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();

// Wyślij ssoToken do kodu po stronie klienta
// Kod po stronie klienta może następnie użyć tego tokena z SDK przeglądarki

Bezpieczne SSO (po stronie serwera, zalecane)

Bezpieczne SSO powinno być zaimplementowane po stronie serwera i zapewnia lepsze bezpieczeństwo:

// Kod po stronie serwera (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Utwórz bezpieczne SSO przy użyciu wbudowanego pomocnika
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();

// Użyj z wywołaniami API na serwerze
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Lub wyślij ssoConfig do klienta do użycia w przeglądarce

Użycie SSO z przeglądarki (z tokenem wygenerowanym przez serwer)

// Kod po stronie klienta (przeglądarka)
import { PublicApi } from 'fastcomments-sdk/browser';

// Pobierz token SSO z endpointu swojego serwera
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 z tworzeniem komentarza

// Po stronie serwera: utwórz SSO i komentarz
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)
});

Typowe przypadki użycia Internal Link

Pobieranie komentarzy dla strony

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

Tworzenie komentarza

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

Głosowanie na komentarz

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 oznacza głos za, -1 oznacza głos przeciw
  }
});

Zarządzanie użytkownikami (wymaga klucza API)

// Wyszukiwanie użytkowników (wymaga DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Wydarzenia na żywo (aktualizacje w czasie rzeczywistym) Internal Link

Subskrybuj zdarzenia na żywo, aby otrzymywać aktualizacje w czasie rzeczywistym dotyczące komentarzy, głosów i innych aktywności.

Zdarzenia na poziomie strony

Nasłuchuj zdarzeń na żywo dla konkretnej strony (komentarze, głosy itp.):

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

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

// Subskrybuj zdarzenia na żywo dla strony
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (pobierz to z odpowiedzi getComments)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Zaktualizuj interfejs użytkownika o nowy komentarz
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Zaktualizuj licznik głosów w interfejsie użytkownika
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // Zwróć true, jeśli zdarzenie zostało obsłużone
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Zamknij subskrypcję po zakończeniu
subscription.close();

Subskrybuj zdarzenia użytkownika

Nasłuchuj zdarzeń specyficznych dla użytkownika (powiadomienia, wzmianki itp.):

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

const userConfig = {
  userIdWS: 'user-session-id', // Pobierz to z odpowiedzi getComments
};

// Subskrybuj osobisty kanał użytkownika
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);

    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Pokaż powiadomienie w interfejsie użytkownika
        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');
  }
);

// Zamknij po zakończeniu
userSubscription.close();

Uzyskiwanie userIdWS

Parametr userIdWS jest wymagany do zdarzeń na żywo i można go uzyskać z odpowiedzi API:

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

// Wyodrębnij userIdWS z odpowiedzi
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Teraz możesz subskrybować zdarzenia na żywo
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

Broadcast IDs Internal Link

Zobaczysz, że w niektórych wywołaniach API należy przekazać broadcastId. Gdy otrzymasz zdarzenia, otrzymasz ten identyfikator z powrotem, dzięki czemu będziesz wiedzieć, że możesz zignorować zdarzenie, jeśli planujesz optimistycznie zastosować zmiany po stronie klienta (co prawdopodobnie będziesz chciał zrobić, ponieważ zapewnia najlepsze doświadczenie). Przekaż tutaj UUID. Identyfikator powinien być wystarczająco unikalny, aby nie pojawił się dwa razy w sesji przeglądarki.

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() // Unikalny identyfikator dla tej operacji
  }
});

Obsługa błędów 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


Agreguje dokumenty, grupując je (jeśli podano groupBy) i stosując wiele operacji. Obsługiwane są różne operacje (np. sum, countDistinct, avg itd.).

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
aggregationRequest AggregationRequest Tak
parentTenantId string Nie
includeStats boolean Nie

Odpowiedź

Zwraca: AggregationResponse


getAuditLogs Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
limit number Nie
skip number Nie
order SORTDIR Nie
after number Nie
before number Nie

Odpowiedź

Zwraca: GetAuditLogs200Response

Przykład

Przykład getAuditLogs
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = 'tenant_9b8f6c';
4 const limit: number = 50;
5 const skip: number = 0;
6 const order: SORTDIR = 'desc';
7 const after: number = Date.now() - 7 * 24 * 60 * 60 * 1000;
8 const response: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, order, after);
9 console.log(response);
10}
11main();
12

blockFromCommentPublic Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
publicBlockFromCommentParams PublicBlockFromCommentParams Tak
sso string Nie

Odpowiedź

Zwraca: BlockFromCommentPublic200Response

Przykład

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

unBlockCommentPublic Internal Link

Parametry

Name Type Required Description
tenantId string Tak
commentId string Tak
publicBlockFromCommentParams PublicBlockFromCommentParams Tak
sso string Nie

Odpowiedź

Zwraca: UnBlockCommentPublic200Response

Przykład

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

checkedCommentsForBlocked Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentIds string Tak
sso string Nie

Odpowiedź

Zwraca: CheckedCommentsForBlocked200Response

Przykład

Przykład checkedCommentsForBlocked
Copy Copy
1
2const tenantId: string = 'tenant_4f3b2a1e';
3const commentIds: string = 'c_1001,c_1002,c_1003';
4const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIn0.Sf4ke7nQP3mZx9v2';
5
6const resultWithoutSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds);
7const resultWithSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds, ssoToken);
8

blockUserFromComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
blockFromCommentParams BlockFromCommentParams Tak
userId string Nie
anonUserId string Nie

Odpowiedź

Zwraca: BlockFromCommentPublic200Response

Przykład

Przykład blockUserFromComment
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const id: string = "comment_67890";
4const blockFromCommentParams: BlockFromCommentParams = {
5 reason: "Repeated abusive language",
6 blockDurationHours: 168,
7 blockReplies: true,
8 notifyAuthor: true
9};
10const userId: string = "user_abc123";
11const anonUserId: string = "anon_xyz789";
12const result: BlockFromCommentPublic200Response = await blockUserFromComment(tenantId, id, blockFromCommentParams, userId, anonUserId);
13

createCommentPublic Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
urlId string Tak
broadcastId string Tak
commentData CommentData Tak
sessionId string Nie
sso string Nie

Odpowiedź

Zwraca: CreateCommentPublic200Response

Przykład

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

deleteComment Internal Link

Parametry

Name Type Required Description
tenantId string Tak
id string Tak
contextUserId string Nie
isLive boolean Nie

Odpowiedź

Zwraca: DeleteComment200Response

Przykład

Przykład deleteComment
Copy Copy
1
2const tenantId: string = 'tenant_7b3f2a';
3const commentId: string = 'cmt_8a1f4d2b';
4const contextUserId: string = 'user_102';
5const isLive: boolean = true;
6const result: DeleteComment200Response = await deleteComment(tenantId, commentId, contextUserId, isLive);
7

deleteCommentPublic Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
broadcastId string Tak
editKey string Nie
sso string Nie

Odpowiedź

Zwraca: DeleteCommentPublic200Response

Przykład

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

deleteCommentVote Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
voteId string Tak
urlId string Tak
broadcastId string Tak
editKey string Nie
sso string Nie

Odpowiedź

Zwraca: DeleteCommentVote200Response

Przykład

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

flagComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
userId string Nie
anonUserId string Nie

Odpowiedź

Zwraca: FlagComment200Response

Przykład

Przykład flagComment
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const id: string = 'comment_7f3a2b9e';
4const userId: string = 'user_jdoe_1001';
5const anonUserId: string = 'anon_3f2b_visitor';
6const result: FlagComment200Response = await flagComment(tenantId, id, userId, anonUserId);
7

getComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetComment200Response

Przykład

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

getComments Internal Link

Parametry

Name Type Required Description
tenantId string Yes
page number No
limit number No
skip number No
asTree boolean No
skipChildren number No
limitChildren number No
maxTreeDepth number No
urlId string No
userId string No
anonUserId string No
contextUserId string No
hashTag string No
parentId string No
direction SortDirections No

Odpowiedź

Zwraca: GetComments200Response

Przykład

Przykład getComments
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // strona
6 20, // limit
7 0, // pomiń
8 true, // jako drzewo
9 1, // pomiń dzieci
10 3, // limit dzieci
11 4, // maks. głębokość drzewa
12 'articles/2026/new-product-launch', // urlId
13 'user_7890', // identyfikator użytkownika
14 'anon_4f3b2', // identyfikator anonimowego użytkownika
15 undefined, // identyfikator użytkownika kontekstu
16 '#launch', // hashtag
17 undefined // identyfikator rodzica
18);
19

getCommentsPublic Internal Link

req tenantId urlId

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
urlId string Tak
page number Nie
direction SortDirections Nie
sso string Nie
skip number Nie
skipChildren number Nie
limit number Nie
limitChildren number Nie
countChildren boolean Nie
fetchPageForCommentId string Nie
includeConfig boolean Nie
countAll boolean Nie
includei10n boolean Nie
locale string Nie
modules string Nie
isCrawler boolean Nie
includeNotificationCount boolean Nie
asTree boolean Nie
maxTreeDepth number Nie
useFullTranslationIds boolean Nie
parentId string Nie
searchText string Nie
hashTags Array Nie
userId string Nie
customConfigStr string Nie
afterCommentId string Nie
beforeCommentId string Nie

Odpowiedź

Zwraca: GetCommentsPublic200Response

Przykład

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

getCommentText Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
editKey string Nie
sso string Nie

Odpowiedź

Zwraca: GetCommentText200Response

Przykład

getCommentText Przykład
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const commentId: string = 'cmt_7890b';
4const editKey: string = 'edit_4f2d9b7c';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
6
7const result: GetCommentText200Response = await getCommentText(tenantId, commentId, editKey, sso);
8

getCommentVoteUserNames Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
dir number Tak
sso string Nie

Odpowiedź

Zwraca: GetCommentVoteUserNames200Response

Przykład

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

lockComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
broadcastId string Tak
sso string Nie

Odpowiedź

Zwraca: LockComment200Response

Przykład

Przykład lockComment
Copy Copy
1
2const tenantId: string = "tenant_prod_8f3a2b";
3const commentId: string = "cmt_5d7e9a92";
4const broadcastId: string = "broadcast_2026_03_25_1400";
5const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature";
6const resultWithSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId, ssoToken);
7const resultWithoutSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId);
8

pinComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
broadcastId string Tak
sso string Nie

Odpowiedź

Zwraca: PinComment200Response

Przykład

Przykład użycia pinComment
Copy Copy
1
2const tenantId: string = "tenant_4f2b9a";
3const commentId: string = "cmt_9f8e7d6c";
4const broadcastId: string = "brd_live_concert_2026-03-25";
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload_signature";
6
7const result: PinComment200Response = await pinComment(tenantId, commentId, broadcastId, sso);
8

saveComment Internal Link

Parametry

Name Typ Wymagane Opis
tenantId string Tak
createCommentParams CreateCommentParams Tak
isLive boolean Nie
doSpamCheck boolean Nie
sendEmails boolean Nie
populateNotifications boolean Nie

Odpowiedź

Zwraca: SaveComment200Response

Przykład

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

saveCommentsBulk Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createCommentParams Array Tak
isLive boolean Nie
doSpamCheck boolean Nie
sendEmails boolean Nie
populateNotifications boolean Nie

Odpowiedź

Zwraca: Array<SaveComment200Response

Przykład

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

setCommentText Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
broadcastId string Tak
commentTextUpdateRequest CommentTextUpdateRequest Tak
editKey string Nie
sso string Nie

Odpowiedź

Zwraca: SetCommentText200Response

Przykład

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

unBlockUserFromComment Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
id string Tak
unBlockFromCommentParams UnBlockFromCommentParams Tak
userId string Nie
anonUserId string Nie

Odpowiedź

Zwraca: UnBlockCommentPublic200Response

Przykład

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

unFlagComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
userId string Nie
anonUserId string Nie

Odpowiedź

Zwraca: FlagComment200Response

Przykład

Przykład unFlagComment
Copy Copy
1
2const tenantId: string = 'acme-tenant-001';
3const commentId: string = 'cmt_9f8e7d6c';
4const userId: string = 'user_72b4a1c9';
5const anonUserId: string = 'anon_3d2c1b0a';
6const response: FlagComment200Response = await unFlagComment(tenantId, commentId, userId, anonUserId);
7

unLockComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
broadcastId string Tak
sso string Nie

Odpowiedź

Zwraca: LockComment200Response

Przykład

Przykład unLockComment
Copy Copy
1
2const tenantId: string = 'tenant_9d4f2b';
3const commentId: string = 'cmt_8a3e1f';
4const broadcastId: string = 'broadcast_2026_03_25';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature';
6
7const result: LockComment200Response = await unLockComment(tenantId, commentId, broadcastId, sso);
8

unPinComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
broadcastId string Tak
sso string Nie

Odpowiedź

Zwraca: PinComment200Response

Przykład

Przykład unPinComment
Copy Copy
1
2const tenantId: string = 'tenant_7f9d2a3b';
3const commentId: string = 'comment_842b9c1f';
4const broadcastId: string = 'bcast_frontpage_202603';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.exampleSignature';
6
7const result: PinComment200Response = await unPinComment(tenantId, commentId, broadcastId, sso);
8

updateComment Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updatableCommentParams UpdatableCommentParams Tak
contextUserId string Nie
doSpamCheck boolean Nie
isLive boolean Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

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

voteComment Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
commentId string Tak
urlId string Tak
broadcastId string Tak
voteBodyParams VoteBodyParams Tak
sessionId string Nie
sso string Nie

Odpowiedź

Zwraca: VoteComment200Response

Przykład

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

addDomainConfig Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
addDomainConfigParams AddDomainConfigParams Tak

Odpowiedź

Zwraca: AddDomainConfig200Response


deleteDomainConfig Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
domain string Tak

Odpowiedź

Zwraca: DeleteDomainConfig200Response


getDomainConfig Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
domain string Tak

Odpowiedź

Zwraca: GetDomainConfig200Response


getDomainConfigs Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak

Odpowiedź

Zwraca: GetDomainConfigs200Response


patchDomainConfig Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
domainToUpdate string Tak
patchDomainConfigParams PatchDomainConfigParams Tak

Odpowiedź

Zwraca: GetDomainConfig200Response


putDomainConfig Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
domainToUpdate string Tak
updateDomainConfigParams UpdateDomainConfigParams Tak

Odpowiedź

Zwraca: GetDomainConfig200Response


createEmailTemplate Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createEmailTemplateBody CreateEmailTemplateBody Tak

Odpowiedź

Zwraca: CreateEmailTemplate200Response

Przykład

Przykład createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_7a9f3c2b";
3const customConfig: CustomConfigParameters = { smtpHost: "smtp.fastmail.com", smtpPort: 587, useTLS: true };
4const createEmailTemplateBody: CreateEmailTemplateBody = {
5 name: "Account Notification",
6 subject: "Your ACME account was updated",
7 fromEmail: "no-reply@acme-corp.com",
8 replyTo: "support@acme-corp.com",
9 html: "<p>Hi {{user.firstName}}, your account settings were changed.</p>",
10 text: "Hi {{user.firstName}}, your account settings were changed.",
11 isActive: true,
12 description: "Used for transactional account update emails",
13 customConfig
14};
15const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
16

deleteEmailTemplate Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteEmailTemplate
Copy Copy
1
2const tenantId: string = 'tenant_7f4c9d1e';
3const templateId: string = 'tmpl_welcome_2024-03';
4const notifyAdmin: boolean | undefined = true; // przykład opcjonalnego parametru
5
6const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
7

deleteEmailTemplateRenderError Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
errorId string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

deleteEmailTemplateRenderError Przykład
Copy Copy
1
2const tenantId: string = 'tenant_7f3b4c2a';
3const templateEnvironment: string | undefined = 'production'; // opcjonalny selektor środowiska
4const id: string = `emailTemplates/${templateEnvironment ?? 'staging'}/welcome_v2`;
5const errorId: string = 'err_5a9d2f1c';
6const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
7console.log(result);
8

getEmailTemplate Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetEmailTemplate200Response

Przykład

Przykład getEmailTemplate
Copy Copy
1
2const tenantId: string = "acme-marketing-042";
3const templateId: string = "tpl_welcome_2026";
4const result: GetEmailTemplate200Response = await getEmailTemplate(tenantId, templateId);
5const template: CustomEmailTemplate | undefined = result.template;
6const subject: string | undefined = template?.subject;
7const customParams: CustomConfigParameters | undefined = template?.customConfigParameters;
8

getEmailTemplateDefinitions Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak

Odpowiedź

Zwraca: GetEmailTemplateDefinitions200Response

Przykład

Przykład getEmailTemplateDefinitions
Copy Copy
1
2const tenantId: string = 'tenant_acme_eu_01';
3const templates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4console.log('Email template definitions loaded for', tenantId, templates);
5

getEmailTemplateRenderErrors Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
skip number Nie

Odpowiedź

Zwraca: GetEmailTemplateRenderErrors200Response

Przykład

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

getEmailTemplates Internal Link

Parameters

Name Type Required Description
tenantId string Tak
skip number Nie

Response

Zwraca: GetEmailTemplates200Response

Przykład

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

renderEmailTemplate Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
renderEmailTemplateBody RenderEmailTemplateBody Tak
locale string Nie

Odpowiedź

Zwraca: RenderEmailTemplate200Response

Przykład

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

updateEmailTemplate Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateEmailTemplateBody UpdateEmailTemplateBody Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

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

getEventLog Internal Link

req tenantId urlId userIdWS

Parametry

Name Type Required Description
tenantId string Tak
urlId string Tak
userIdWS string Tak
startTime number Tak
endTime number Tak

Odpowiedź

Zwraca: GetEventLog200Response

Przykład

Przykład getEventLog
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-01';
3const urlId: string = 'article-2026-03-25';
4const userIdWS: string | undefined = undefined; // opcjonalna wartość pochodząca z upstream
5const startTime: number = Date.parse('2026-03-01T00:00:00Z');
6const endTime: number = Date.parse('2026-03-25T23:59:59Z');
7
8const eventLogResponse: GetEventLog200Response = await getEventLog(
9 tenantId,
10 urlId,
11 userIdWS ?? 'ws_user_8b1f',
12 startTime,
13 endTime
14);
15

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Parametry

Name Type Required Description
tenantId string Tak
urlId string Tak
userIdWS string Tak
startTime number Tak
endTime number Tak

Odpowiedź

Zwraca: GetEventLog200Response

Przykład

Przykład getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // 7 dni temu
6const endTimeOptional: number | undefined = undefined; // opcjonalny koniec zakresu czasowego
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

createFeedPost Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createFeedPostParams CreateFeedPostParams Tak
broadcastId string Nie
isLive boolean Nie
doSpamCheck boolean Nie
skipDupCheck boolean Nie

Odpowiedź

Zwraca: CreateFeedPost200Response

Przykład

Przykład użycia createFeedPost
Copy Copy
1
2const tenantId: string = "tenant_7f3b9a";
3const createFeedPostParams: CreateFeedPostParams = {
4 title: "Weekly Product Update — March 2026",
5 body: "We've shipped performance improvements and bug fixes across the web client. See the release notes for details.",
6 authorId: "user_86fa2b",
7 allowComments: true,
8 media: [
9 {
10 url: "https://cdn.example.com/images/update-march.png",
11 mimeType: "image/png",
12 caption: "Performance graph",
13 assets: [{ url: "https://cdn.example.com/images/update-march@2x.png", width: 1600, height: 900 }]
14 }
15 ],
16 links: [{ url: "https://www.example.com/release-notes/march-2026", title: "Release notes" }]
17};
18const broadcastId: string = "broadcast_prod_updates_202603";
19const isLive: boolean = false;
20const doSpamCheck: boolean = true;
21const skipDupCheck: boolean = false;
22const result: CreateFeedPost200Response = await createFeedPost(tenantId, createFeedPostParams, broadcastId, isLive, doSpamCheck, skipDupCheck);
23

createFeedPostPublic Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createFeedPostParams CreateFeedPostParams Tak
broadcastId string Nie
sso string Nie

Odpowiedź

Zwraca: CreateFeedPostPublic200Response

Przykład

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

deleteFeedPostPublic Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
postId string Tak
broadcastId string Nie
sso string Nie

Odpowiedź

Zwraca: DeleteFeedPostPublic200Response

Przykład

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

getFeedPosts Internal Link

req tenantId afterId

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
afterId string Nie
limit number Nie
tags Array Nie

Odpowiedź

Zwraca: GetFeedPosts200Response

Przykład

Przykład użycia getFeedPosts
Copy Copy
1
2const initialPage: GetFeedPosts200Response = await getFeedPosts('tenant_9f1b3d', undefined, 20, ['sports', 'local']);
3const nextPage: GetFeedPosts200Response = await getFeedPosts('tenant_9f1b3d', 'post_abc123', 20, ['sports', 'local']);
4

getFeedPostsPublic Internal Link

req tenantId afterId

Parametry

Name Type Required Description
tenantId string Tak
afterId string Nie
limit number Nie
tags Array Nie
sso string Nie
isCrawler boolean Nie
includeUserInfo boolean Nie

Odpowiedź

Zwraca: GetFeedPostsPublic200Response

Przykład

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

getFeedPostsStats Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
postIds Array Tak
sso string Nie

Odpowiedź

Zwraca: GetFeedPostsStats200Response

Przykład

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

getUserReactsPublic Internal Link

Parametry

Name Type Required Description
tenantId string Tak
postIds Array Nie
sso string Nie

Odpowiedź

Zwraca: GetUserReactsPublic200Response

Przykład

Przykład getUserReactsPublic
Copy Copy
1
2const tenantId: string = "acme-tenant-8a4d2c";
3const postIds: string[] = ["post-645a2f", "post-645a30"];
4const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImlhdCI6MTY2MTYwMDAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
5const result: GetUserReactsPublic200Response = await getUserReactsPublic(tenantId, postIds, sso);
6

reactFeedPostPublic Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
postId string Tak
reactBodyParams ReactBodyParams Tak
isUndo boolean Nie
broadcastId string Nie
sso string Nie

Odpowiedź

Zwraca: ReactFeedPostPublic200Response

Przykład

Przykład reactFeedPostPublic
Copy Copy
1
2const tenantId: string = 'd290f1ee-6c54-4b01-90e6-d701748f0851';
3const postId: string = 'c1a2b3d4-5678-90ab-cdef-1234567890ab';
4const reactBodyParams: ReactBodyParams = { reaction: 'like', emoji: '👍', source: 'web' };
5const isUndo: boolean = false;
6const broadcastId: string = 'broadcast-2026-03-25-001';
7const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
8const result: ReactFeedPostPublic200Response = await reactFeedPostPublic(tenantId, postId, reactBodyParams, isUndo, broadcastId, sso);
9

updateFeedPost Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
id string Tak
feedPost FeedPost Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateFeedPost
Copy Copy
1
2const tenantId: string = 'acme-global-tenant-42';
3const id: string = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
4
5const asset: FeedPostMediaItemAsset = {
6 url: 'https://cdn.acme.com/images/product-launch.jpg',
7 mimeType: 'image/jpeg',
8 width: 1200,
9 height: 630
10};
11
12const mediaItem: FeedPostMediaItem = {
13 id: 'media-001',
14 type: 'image',
15 asset
16};
17
18const link: FeedPostLink = {
19 url: 'https://acme.com/blog/product-launch',
20 title: 'Product Launch Details'
21};
22
23const feedPost: FeedPost = {
24 title: 'Introducing the Q3 Product Suite',
25 body: 'We are excited to unveil our new lineup for Q3, focusing on performance and security improvements.',
26 media: [mediaItem], // opcjonalna tablica dołączona
27 links: [link], // opcjonalne linki dołączone
28 isPublished: true // opcjonalna flaga publikacji użyta tutaj
29};
30
31const result: FlagCommentPublic200Response = await updateFeedPost(tenantId, id, feedPost);
32

updateFeedPostPublic Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
postId string Tak
updateFeedPostParams UpdateFeedPostParams Tak
broadcastId string Nie
sso string Nie

Odpowiedź

Zwraca: CreateFeedPostPublic200Response

Przykład

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

flagCommentPublic Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
isFlagged boolean Tak
sso string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład flagCommentPublic
Copy Copy
1
2const tenantId: string = "tenant_9f8b3c";
3const commentId: string = "comment_72a1d4";
4const isFlagged: boolean = true;
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI1Njc4OSJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6const result: FlagCommentPublic200Response = await flagCommentPublic(tenantId, commentId, isFlagged, sso);
7

addHashTag Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string No
createHashTagBody CreateHashTagBody No

Odpowiedź

Zwraca: AddHashTag200Response

Przykład

Przykład addHashTag
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const createHashTagBody: CreateHashTagBody = {
4 name: 'feature-request',
5 label: 'Feature Request',
6 color: '#FF5722',
7 enabled: true
8};
9const response: AddHashTag200Response = await addHashTag(tenantId, createHashTagBody);
10const responseWithoutTenant: AddHashTag200Response = await addHashTag(undefined, createHashTagBody);
11

addHashTagsBulk Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Nie
bulkCreateHashTagsBody BulkCreateHashTagsBody Nie

Odpowiedź

Zwraca: AddHashTagsBulk200Response

Przykład

Przykład addHashTagsBulk
Copy Copy
1
2// Utwórz identyfikator tenant (opcjonalny parametr)
3const tenantId: string = "tenant_9f8c2b7a";
4
5// Przygotuj pojedyncze wpisy tagów
6const tag1: BulkCreateHashTagsBodyTagsInner = {
7 name: "product-feedback",
8 label: "Product Feedback",
9 color: "#1f8a70",
10 description: "User suggestions and enhancement requests",
11 isActive: true
12};
13
14const tag2: BulkCreateHashTagsBodyTagsInner = {
15 name: "bug-report",
16 label: "Bug Report",
17 color: "#d64545",
18 description: "User-reported defects and issues",
19 isActive: true
20};
21
22// Ciało żądania tworzenia zbiorczego (opcjonalny parametr)
23const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
24 tags: [tag1, tag2]
25};
26
27// Wywołaj globalną funkcję asynchroniczną i przypisz wynik z określonym typem
28const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
29

deleteHashTag Internal Link

Parametry

Nazwa Typ Wymagane Opis
tag string Tak
tenantId string Nie
deleteHashTagRequest DeleteHashTagRequest Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteHashTag
Copy Copy
1
2const tag: string = "breaking-news";
3const tenantId: string = "tenant_12345";
4const deleteRequest: DeleteHashTagRequest = { initiatedBy: "moderator@newsorg.com", purgeAllOccurrences: true };
5const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteRequest);
6

getHashTags Internal Link

Parametry

Name Type Required Description
tenantId string Tak
page number Nie

Odpowiedź

Zwraca: GetHashTags200Response

Przykład

Przykład getHashTags
Copy Copy
1
2const tenantId: string = 'acme-tenant-42';
3const pageNumber: number = 2;
4const responseWithPage: GetHashTags200Response = await getHashTags(tenantId, pageNumber);
5const responseWithoutPage: GetHashTags200Response = await getHashTags(tenantId);
6

patchHashTag Internal Link

Parametry

Name Type Required Description
tag string Tak
tenantId string Nie
updateHashTagBody UpdateHashTagBody Nie

Odpowiedź

Zwraca: PatchHashTag200Response

Przykład

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

createModerator Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createModeratorBody CreateModeratorBody Tak

Odpowiedź

Zwraca: CreateModerator200Response

Przykład

Przykład createModerator
Copy Copy
1
2const tenantId: string = 'tenant_7d9f2b4a';
3const customConfig: CustomConfigParameters = { timezone: 'UTC', moderationQueueEnabled: true };
4const createModeratorBody: CreateModeratorBody = {
5 email: 'jane.martin@publisher.com',
6 displayName: 'Jane Martin',
7 roles: ['moderator'],
8 sendWelcomeEmail: true,
9 customConfig
10};
11const response: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
12

deleteModerator Internal Link

Parameters

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
sendEmail string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteModerator
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2d4a6c';
3const moderatorId: string = 'moderator_84a1b9c2';
4const sendEmail: string = 'true';
5const result: FlagCommentPublic200Response = await deleteModerator(tenantId, moderatorId, sendEmail);
6

getModerator Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetModerator200Response

Przykład

Przykład getModerator
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-123';
3const id: string = 'mod-987654321';
4const moderatorResponse: GetModerator200Response = await getModerator(tenantId, id);
5

getModerators Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
skip number Nie

Odpowiedź

Zwraca: GetModerators200Response

Przykład

Przykład getModerators
Copy Copy
1
2const tenantId: string = 'tenant-12345-prod';
3const moderatorsPage1: GetModerators200Response = await getModerators(tenantId);
4const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, 50);
5

sendInvite Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
fromName string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład sendInvite
Copy Copy
1
2const tenantId: string = 'tenant_acme-42';
3const id: string = 'comment_8f3b21a7';
4const fromName: string = 'Elena Morales';
5const replyToEmail: string | undefined = undefined;
6
7const result: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName, replyToEmail);
8

updateModerator Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateModeratorBody UpdateModeratorBody Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateModerator
Copy Copy
1
2const tenantId: string = "acme-enterprises-42";
3const id: string = "moderator_517";
4const updateModeratorBody: UpdateModeratorBody = {
5 displayName: "Sofia Martinez",
6 email: "sofia.martinez@acme.com",
7 permissions: ["approve_comments", "flag_spam", "suspend_users"],
8 active: true,
9 avatarUrl: "https://cdn.acme.com/avatars/sofia.jpg" // pole opcjonalne (przykład)
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBody);
12

deleteNotificationCount Internal Link

Parametry

Name Type Required Description
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteNotificationCount
Copy Copy
1
2const tenantSuffix: string | undefined = undefined;
3const tenantId: string = tenantSuffix ? `tenant-${tenantSuffix}` : 'tenant-9142a7';
4const id: string = '3f9b2a44-1c2e-4d3b-9f6a-8e7c6d5b2a1f';
5const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
6console.log(result);
7

getCachedNotificationCount Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetCachedNotificationCount200Response

Przykład

Przykład getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'user_00012345';
4const includeUnreadOnly: boolean | undefined = true; // opcjonalna flaga parametru (zademonstrowana)
5const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
6

getNotificationCount Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Nie
urlId string Nie
fromCommentId string Nie
viewed boolean Nie
type string Nie

Odpowiedź

Zwraca: GetNotificationCount200Response

Przykład

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

getNotifications Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Nie
urlId string Nie
fromCommentId string Nie
viewed boolean Nie
type string Nie
skip number Nie

Odpowiedź

Zwraca: GetNotifications200Response

Przykład

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

updateNotification Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateNotificationBody UpdateNotificationBody Tak
userId string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateNotification
Copy Copy
1
2const tenantId: string = 'tenant_prod_8f4b2c';
3const id: string = 'notification_61a2e9';
4const userId: string = 'moderator_107';
5const updateNotificationBody: UpdateNotificationBody = {
6 name: 'Flagged Comment Notification',
7 enabled: true,
8 channels: ['email', 'inbox'],
9 templateId: 'tmpl_mod_alerts_01',
10 severity: 'high'
11};
12const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
13

addPage Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createAPIPageData CreateAPIPageData Tak

Odpowiedź

Zwraca: AddPageAPIResponse


deletePage Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: DeletePageAPIResponse


getPageByURLId Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
urlId string Tak

Odpowiedź

Zwraca: GetPageByURLIdAPIResponse


getPages Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak

Odpowiedź

Zwraca: GetPagesAPIResponse


patchPage Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateAPIPageData UpdateAPIPageData Tak

Odpowiedź

Zwraca: PatchPageAPIResponse


deletePendingWebhookEvent Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deletePendingWebhookEvent
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42f7c9b1';
4 const id: string = 'pending_webhook_ev_8f3b9a2d';
5 const reason?: string = undefined; // przykład opcjonalnego parametru (nie wymagany przez funkcję)
6 const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
7 console.log(result);
8})();
9

getPendingWebhookEventCount Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Nie
externalId string Nie
eventType string Nie
type string Nie
domain string Nie
attemptCountGT number Nie

Odpowiedź

Zwraca: GetPendingWebhookEventCount200Response

Przykład

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

getPendingWebhookEvents Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Nie
externalId string Nie
eventType string Nie
type string Nie
domain string Nie
attemptCountGT number Nie
skip number Nie

Odpowiedź

Zwraca: GetPendingWebhookEvents200Response

Przykład

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

createQuestionConfig Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createQuestionConfigBody CreateQuestionConfigBody Tak

Odpowiedź

Zwraca: CreateQuestionConfig200Response

Przykład

Przykład createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_9f8b2c";
3const option: QuestionConfigCustomOptionsInner = { id: "opt_yes", label: "Yes, helpful", value: "yes" };
4const createQuestionConfigBody: CreateQuestionConfigBody = {
5 title: "Article usefulness",
6 prompt: "Was this article helpful?",
7 type: "singleChoice",
8 required: false, // przykład opcjonalnego parametru
9 options: [option],
10 saveBehavior: "immediate"
11};
12const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
13

deleteQuestionConfig Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład użycia deleteQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-enterprises-01";
3const idOptional: string | undefined = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
4const id: string = idOptional ?? "11111111-1111-1111-1111-111111111111";
5const response: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
6

getQuestionConfig Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetQuestionConfig200Response

Przykład

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

getQuestionConfigs Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
skip number Nie

Odpowiedź

Zwraca: GetQuestionConfigs200Response

Przykład

Przykład użycia getQuestionConfigs
Copy Copy
1
2const tenantId: string = "tenant_acme_9876";
3const configsWithoutSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const configsWithSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, 20);
5

updateQuestionConfig Internal Link

Parametry

Name Type Required Description
tenantId string Tak
id string Tak
updateQuestionConfigBody UpdateQuestionConfigBody Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

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

createQuestionResult Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createQuestionResultBody CreateQuestionResultBody Tak

Odpowiedź

Zwraca: CreateQuestionResult200Response

Przykład

Przykład createQuestionResult
Copy Copy
1
2const tenantId: string = "tenant-72b1f4";
3const meta: MetaItem[] = [{ key: "platform", value: "web" }];
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "question-83472",
6 commenterId: "user-5521",
7 answers: [{ subQuestionId: "sq-1", value: "Yes" }],
8 meta, // opcjonalne metadane
9 note: "Follow-up requested" // pokazany opcjonalny parametr
10};
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

deleteQuestionResult Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteQuestionResult
Copy Copy
1
2const tenantId: string = "org-82479";
3const questionId: string = "q-6a3d2e1f";
4const includeArchived?: boolean = false; // opcjonalny parametr demonstrujący alternatywny wybór celu
5const targetId: string = includeArchived ? "q-archived-112233" : questionId;
6const result: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, targetId);
7

getQuestionResult Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetQuestionResult200Response

Przykład

Przykład getQuestionResult
Copy Copy
1
2const post: { title: string; questionId?: string } = { title: 'Product feedback' };
3const tenantId: string = 'acme-corp-tenant-01';
4const id: string = post.questionId ?? 'q-8f3a7b2c4d9e';
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, id);
6

getQuestionResults Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
urlId string Nie
userId string Nie
startDate string Nie
questionId string Nie
questionIds string Nie
skip number Nie

Odpowiedź

Zwraca: GetQuestionResults200Response

Przykład

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

updateQuestionResult Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateQuestionResultBody UpdateQuestionResultBody Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_7f8b3c';
3const id: string = 'questionResult_4621';
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 questionId: 'q_1024',
6 result: 'flagged',
7 score: 0.92,
8 notes: 'Automated moderation flagged for review',
9 meta: [{ key: 'source', value: 'ai-moderator' }] as MetaItem[], // opcjonalne metadane
10 status: { code: 'review_pending' } as APIStatus
11} as UpdateQuestionResultBody;
12const result: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
13

aggregateQuestionResults Internal Link

Parametry

Name Typ Wymagane Opis
tenantId string Tak
questionId string Nie
questionIds Array Nie
urlId string Nie
timeBucket AggregateTimeBucket Nie
startDate Date Nie
forceRecalculate boolean Nie

Response

Zwraca: AggregateQuestionResults200Response

Przykład

Przykład aggregateQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_acme_98765';
3const questionIds: Array<string> = ['q-102', 'q-103'];
4const urlId: string = 'url_55b3';
5const timeBucket: AggregateTimeBucket = { unit: 'day', size: 7 };
6const startDate: Date = new Date('2026-01-01T00:00:00Z');
7const forceRecalculate: boolean = true;
8
9const result: AggregateQuestionResults200Response = await aggregateQuestionResults(
10 tenantId,
11 undefined, // questionId pominięte, zamiast niego używane questionIds
12 questionIds,
13 urlId,
14 timeBucket,
15 startDate,
16 forceRecalculate
17);
18

bulkAggregateQuestionResults Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest Tak
forceRecalculate boolean Nie

Odpowiedź

Zwraca: BulkAggregateQuestionResults200Response

Przykład

Przykład bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_live_7c9d";
3const bulkAggregateQuestionResultsRequest: BulkAggregateQuestionResultsRequest = {
4 items: [
5 { questionId: "q_feedback_rating", includeSubQuestions: false, filters: { locale: "en-US" } }
6 ],
7 timeBuckets: [
8 { granularity: "day", startUtc: "2026-03-01T00:00:00Z", endUtc: "2026-03-15T00:00:00Z" }
9 ]
10};
11const forceRecalculate: boolean = true;
12const result: BulkAggregateQuestionResults200Response = await bulkAggregateQuestionResults(tenantId, bulkAggregateQuestionResultsRequest, forceRecalculate);
13

combineCommentsWithQuestionResults Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
questionId string Nie
questionIds Array Nie
urlId string Nie
startDate Date Nie
forceRecalculate boolean Nie
minValue number Nie
maxValue number Nie
limit number Nie

Odpowiedź

Zwraca: CombineCommentsWithQuestionResults200Response

Przykład

Przykład combineCommentsWithQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_9f3a2';
3const questionIds: string[] = ['question-42', 'question-43'];
4const urlId: string = 'url_5d7b';
5const startDate: Date = new Date('2026-02-01T00:00:00Z');
6const forceRecalculate: boolean = true;
7const minValue: number = 1;
8const maxValue: number = 5;
9const limit: number = 50;
10const result: CombineCommentsWithQuestionResults200Response = await combineCommentsWithQuestionResults(
11 tenantId,
12 undefined,
13 questionIds,
14 urlId,
15 startDate,
16 forceRecalculate,
17 minValue,
18 maxValue,
19 limit
20);
21

addSSOUser Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createAPISSOUserData CreateAPISSOUserData Tak

Odpowiedź

Zwraca: AddSSOUserAPIResponse


deleteSSOUser Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
deleteComments boolean Nie
commentDeleteMode string Nie

Odpowiedź

Zwraca: DeleteSSOUserAPIResponse

getSSOUserByEmail Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
email string Tak

Odpowiedź

Zwraca: GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
skip number Nie

Odpowiedź

Zwraca: GetSSOUsers200Response


patchSSOUser Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateAPISSOUserData UpdateAPISSOUserData Tak
updateComments boolean Nie

Odpowiedź

Zwraca: PatchSSOUserAPIResponse


putSSOUser Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateAPISSOUserData UpdateAPISSOUserData Tak
updateComments boolean Nie

Odpowiedź

Zwraca: PutSSOUserAPIResponse


createSubscription Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createAPIUserSubscriptionData CreateAPIUserSubscriptionData Tak

Odpowiedź

Zwraca: CreateSubscriptionAPIResponse

Przykład

Przykład createSubscription
Copy Copy
1
2const tenantId: string = "acme-corp-123";
3const createAPIUserSubscriptionData: CreateAPIUserSubscriptionData = {
4 userId: "u_987654",
5 planId: "pro_monthly",
6 startDate: new Date().toISOString(),
7 trialDays: 14, // opcjonalny parametr (przykład)
8 metadata: { source: "marketing-email" } // opcjonalny parametr (przykład)
9};
10const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
11const subscription: APIUserSubscription = result.subscription;
12

deleteSubscription Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
userId string Nie

Odpowiedź

Zwraca: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Nie

Odpowiedź

Zwraca: GetSubscriptionsAPIResponse

Przykład

Przykład getSubscriptions
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_01';
3const userId: string = 'user_76a3b9f2';
4const subscriptionsForUser: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId, userId);
5const subscriptionsForTenant: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId);
6

updateSubscription Internal Link

Parametry

Name Type Required Description
tenantId string Yes
id string Yes
updateAPIUserSubscriptionData UpdateAPIUserSubscriptionData Yes
userId string No

Odpowiedź

Zwraca: UpdateSubscriptionAPIResponse

Przykład

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

getTenantDailyUsages Internal Link

Parameters

Nazwa Typ Wymagane Opis
tenantId string Tak
yearNumber number Nie
monthNumber number Nie
dayNumber number Nie
skip number Nie

Odpowiedź

Zwraca: GetTenantDailyUsages200Response

Przykład

Przykład getTenantDailyUsages
Copy Copy
1
2const tenantId: string = 'tenant_5f4a3b2c-1d6e-4f9a-b9d8-123456789abc';
3const yearNumber: number = 2026;
4const monthNumber: number = 3;
5const dayNumber: number = 24;
6const skip: number = 0;
7
8const result: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, dayNumber, skip);
9

createTenantPackage Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createTenantPackageBody CreateTenantPackageBody Tak

Odpowiedź

Zwraca: CreateTenantPackage200Response

Przykład

Przykład createTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: 'Standard Moderation',
5 description: 'Suitable for small-to-medium sites: basic moderation, spam rules, and analytics',
6 maxCommentsPerMinute: 50,
7 allowAnonymousComments: false, // opcjonalny parametr
8 // pominięto pola opcjonalne, np. zaawansowane reguły moderacji, niestandardowy CSS
9 customConfigParameters: {
10 enableProfanityFilter: true,
11 imageContentProfanityLevel: 'medium' // wartość ilustrująca; używa struktury CustomConfigParameters
12 }
13};
14const response: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
15console.log(response);
16

deleteTenantPackage Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_987';
3const packageId: string = 'pkg_pro_2026_01';
4type DeleteOptions = { force?: boolean; notify?: boolean };
5const options: DeleteOptions = { force: true }; // pokazano opcjonalne parametry
6const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
7

getTenantPackage Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
id string Tak

Response

Zwraca: GetTenantPackage200Response

Przykład

Przykład getTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_7f3b2c8';
3const packageId: string = 'pkg_standard_2026';
4const requestOptions: { includeConfig?: boolean } = { includeConfig: true };
5const packageResponse: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
6

getTenantPackages Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
skip number Nie

Odpowiedź

Zwraca: GetTenantPackages200Response

Przykład

Przykład użycia getTenantPackages
Copy Copy
1
2const tenantId: string = "tenant_7f8e3b4c";
3const skip: number = 20;
4const packagesDefault: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const packagesWithSkip: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

replaceTenantPackage Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
replaceTenantPackageBody ReplaceTenantPackageBody Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

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

updateTenantPackage Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateTenantPackageBody UpdateTenantPackageBody Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_3b7f9d-prod";
3const id: string = "pkg_enterprise_2026";
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: "Enterprise Plus",
6 isActive: true,
7 // pola opcjonalne pominięte celowo (np. description, limits)
8} as UpdateTenantPackageBody;
9const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
10

createTenantUser Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createTenantUserBody CreateTenantUserBody Tak

Odpowiedź

Zwraca: CreateTenantUser200Response

Przykład

Przykład createTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_6f4b2c';
3const createTenantUserBody: CreateTenantUserBody = {
4 email: 'sara.kim@example.com',
5 displayName: 'Sara Kim',
6 role: 'moderator',
7 notifyOnMentions: true
8};
9const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
10

deleteTenantUser Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
deleteComments string Nie
commentDeleteMode string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteTenantUser
Copy Copy
1
2const tenantId: string = '4f3a9b2e-1c6a-4f7b-9e2a-0b8d6f1c2a3e';
3const userId: string = '9d2f7b3a-5c4e-48a2-b1f0-6c7d8e9f0a12';
4const deleteComments: string = 'true';
5const commentDeleteMode: string = 'permanent';
6const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, userId, deleteComments, commentDeleteMode);
7

getTenantUser Internal Link

Parametry

Name Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetTenantUser200Response

Przykład

Przykład użycia getTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_fc5a9b2c';
3const userId: string = 'user_0a12b3';
4const result: GetTenantUser200Response = await getTenantUser(tenantId, userId);
5const user: User | undefined = (result as any).user; // accessing payload
6const userEmail: string | undefined = user?.email;
7console.log('Fetched user email:', userEmail);
8

getTenantUsers Internal Link


Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
skip number Nie

Odpowiedź

Zwraca: GetTenantUsers200Response

Przykład

Przykład użycia getTenantUsers
Copy Copy
1
2const tenantId: string = 'tenant_prod_8a3f2c';
3const skip: number = 50;
4const usersWithSkip: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
5const usersNoSkip: GetTenantUsers200Response = await getTenantUsers(tenantId);
6

replaceTenantUser Internal Link

Parametry

Name Typ Wymagane Opis
tenantId string Tak
id string Tak
replaceTenantUserBody ReplaceTenantUserBody Tak
updateComments string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

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

Parametry

Name Type Required Description
tenantId string Tak
id string Tak
redirectURL string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład sendLoginLink
Copy Copy
1
2const tenantId: string = "tenant_12a9f3b7";
3const id: string = "user_84b2c7d1";
4const redirectURL: string = "https://app.mycompany.com/welcome?ref=login_email";
5const resultWithoutRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id);
6const resultWithRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
7

updateTenantUser Internal Link

Parametry

Name Typ Wymagane Opis
tenantId string Tak
id string Tak
updateTenantUserBody UpdateTenantUserBody Tak
updateComments string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

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

createTenant Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createTenantBody CreateTenantBody Tak

Odpowiedź

Zwraca: CreateTenant200Response

Przykład

Przykład createTenant
Copy Copy
1
2const tenantId: string = "acme-corp-001";
3const createTenantBody: CreateTenantBody = {
4 name: "Acme Corporation",
5 domain: "comments.acme.com",
6 adminContact: { name: "Jane Doe", email: "jane.doe@acme.com" },
7 billingInfo: { planId: "pro-monthly", billingContactEmail: "billing@acme.com" },
8 importedSite: { siteId: "site-123", siteName: "Acme Blog" } // opcjonalna zaimportowana witryna
9};
10const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
11

deleteTenant Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
sure string Nie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteTenant
Copy Copy
1
2const tenantId: string = "tenant_7f3d2c";
3const id: string = "flag_8392b1a7";
4const sure: string = "confirmed";
5
6const responseWithoutSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id);
7const responseWithSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
8

getTenant Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetTenant200Response

Przykład

Przykład getTenant
Copy Copy
1
2const tenantId: string = "tenant_9f4b2c1a";
3const idOverride: string | undefined = undefined; // opcjonalne nadpisanie, jeśli dostępne
4const id: string = idOverride ?? "site_3e7a6b2f";
5const response: GetTenant200Response = await getTenant(tenantId, id);
6console.log(response);
7

getTenants Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
meta string Nie
skip number Nie

Odpowiedź

Zwraca: GetTenants200Response

Przykład

Przykład getTenants
Copy Copy
1
2const tenantId: string = 'tenant_8421e7';
3const meta: string = 'include=domains,billing,customConfig';
4const skip: number = 20;
5
6const tenantsBasic: GetTenants200Response = await getTenants(tenantId);
7const tenantsWithOptions: GetTenants200Response = await getTenants(tenantId, meta, skip);
8

updateTenant Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateTenantBody UpdateTenantBody Tak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateTenant
Copy Copy
1
2const tenantId: string = "tenant_4821";
3const id: string = "flag_7b9e";
4const billingInfo: BillingInfo | undefined = undefined; // opcjonalne, pomiń, aby zachować bieżące informacje rozliczeniowe
5const updateTenantBody: UpdateTenantBody = {
6 name: "Acme News Comments",
7 defaultDomain: "comments.acme.com",
8 ...(billingInfo ? { billingInfo } : {})
9};
10const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
11

changeTicketState Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Tak
id string Tak
changeTicketStateBody ChangeTicketStateBody Tak

Odpowiedź

Zwraca: ChangeTicketState200Response

Przykład

Przykład changeTicketState
Copy Copy
1
2const tenantId: string = 'tenant_82f9b3';
3const userId: string = 'user_9472';
4const id: string = 'ticket_550e8400-e29b-41d4-a716-446655440000';
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: 'resolved',
7 comment: 'Confirmed fix deployed to production; closing ticket.',
8 notifySubscribers: true
9};
10const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
11

createTicket Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Tak
createTicketBody CreateTicketBody Tak

Odpowiedź

Zwraca: CreateTicket200Response

Przykład

Przykład createTicket
Copy Copy
1
2const tenantId: string = "acme-corp-001";
3const userId: string = "user_72b9f4";
4const createTicketBody: CreateTicketBody = {
5 subject: "Subscription renewal failed for card on file",
6 description: "Customer's card was declined by the payment processor during automatic renewal. Transaction ID: txn_9a8b7c. Please review gateway logs and retry.",
7 priority: "high", // pole opcjonalne — przykład
8 contactEmail: "billing@acme-corp.com", // opcjonalne dane kontaktowe
9 relatedUrl: "https://acme-corp.com/account/billing"
10};
11const ticketResponse: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
12

getTicket Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
userId string Nie

Odpowiedź

Zwraca: GetTicket200Response

Przykład

Przykład getTicket
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const ticketId: string = 'tkt-20260325-42';
4const userId: string = 'user-8452';
5
6const ticketResponseWithUser: GetTicket200Response = await getTicket(tenantId, ticketId, userId);
7const ticketResponseWithoutUser: GetTicket200Response = await getTicket(tenantId, ticketId);
8

getTickets Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Nie
state number Nie
skip number Nie
limit number Nie

Odpowiedź

Zwraca: GetTickets200Response

Przykład

Przykład getTickets
Copy Copy
1
2const tenantId: string = "tenant_92f3b4c1";
3const userId: string = "user_742a9f3e";
4const state: number = 1;
5const skip: number = 0;
6const limit: number = 25;
7const ticketsFull: GetTickets200Response = await getTickets(tenantId, userId, state, skip, limit);
8const ticketsMinimal: GetTickets200Response = await getTickets("tenant_92f3b4c1");
9

uploadImage Internal Link

Prześlij i zmień rozmiar obrazu

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
file Blob Tak
sizePreset SizePreset Nie
urlId string Nie

Odpowiedź

Zwraca: UploadImageResponse


getUserBadgeProgressById Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetUserBadgeProgressById200Response

Przykład

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

getUserBadgeProgressByUserId Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Tak

Odpowiedź

Zwraca: GetUserBadgeProgressById200Response

Przykład

Przykład getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = 'tenant_7f9c2d3b';
3const maybeUserId: string | undefined = 'user_4b8e1f9a'; // opcjonalne źródło (może być undefined)
4const userId: string = maybeUserId ?? 'user_fallback0001';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
6console.log(result);
7

getUserBadgeProgressList Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
userId string Nie
limit number Nie
skip number Nie

Odpowiedź

Zwraca: GetUserBadgeProgressList200Response

Przykład

Przykład użycia getUserBadgeProgressList
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_4f8c2b9d';
4 const userId: string = 'user_9a7e215c';
5 const limit: number = 25;
6 const skip: number = 0;
7 const resultMinimal: GetUserBadgeProgressList200Response = await getUserBadgeProgressList(tenantId);
8 const resultFull: GetUserBadgeProgressList200Response = await getUserBadgeProgressList(tenantId, userId, limit, skip);
9 console.log(resultMinimal, resultFull);
10})();
11

createUserBadge Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
createUserBadgeParams CreateUserBadgeParams Tak

Odpowiedź

Zwraca: CreateUserBadge200Response

Przykład

Przykład createUserBadge
Copy Copy
1
2const tenantId: string = 'tenant_84f3b2';
3const createUserBadgeParams: CreateUserBadgeParams = {
4 name: 'Top Contributor',
5 slug: 'top-contributor',
6 imageUrl: 'https://assets.fastcomments.com/badges/top-contributor.png',
7 description: 'Awarded for 100 helpful comments',
8 active: true,
9 criteria: { commentsCount: 100 }, // opcjonalne kryteria
10 displayOrder: 10,
11 metadata: { featured: true } // opcjonalne metadane
12};
13const result: CreateUserBadge200Response = await createUserBadge(tenantId, createUserBadgeParams);
14console.log(result);
15

deleteUserBadge Internal Link

Parametry

Nazwa Type Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: UpdateUserBadge200Response

Przykład

Przykład deleteUserBadge
Copy Copy
1
2type DeleteOptions = { notifyModerators?: boolean };
3
4const tenantId: string = 'tenant_8a3f21';
5const id: string = 'badge_71f2b';
6const options: DeleteOptions = { notifyModerators: true };
7
8const result: UpdateUserBadge200Response = await deleteUserBadge(tenantId, id);
9

getUserBadge Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetUserBadge200Response

Przykład

Przykład użycia getUserBadge
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const id: string = "badge_8c7d2f";
4const response: GetUserBadge200Response = await getUserBadge(tenantId, id);
5

getUserBadges Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
userId string Nie
badgeId string Nie
type number Nie
displayedOnComments boolean Nie
limit number Nie
skip number Nie

Odpowiedź

Zwraca: GetUserBadges200Response

Przykład

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

updateUserBadge Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
updateUserBadgeParams UpdateUserBadgeParams Tak

Odpowiedź

Zwraca: UpdateUserBadge200Response

Przykład

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

getUserNotificationCount Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
sso string Nie

Odpowiedź

Zwraca: GetUserNotificationCount200Response

Przykład

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

getUserNotifications Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
pageSize number Nie
afterId string Nie
includeContext boolean Nie
afterCreatedAt number Nie
unreadOnly boolean Nie
dmOnly boolean Nie
noDm boolean Nie
includeTranslations boolean Nie
sso string Nie

Odpowiedź

Zwraca: GetUserNotifications200Response

Przykład

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

resetUserNotificationCount Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
sso string Nie

Odpowiedź

Zwraca: ResetUserNotifications200Response

Przykład

Przykład resetUserNotificationCount
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9f3b2c4a";
4 const ssoToken: string | undefined = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9._sample_payload_.signature";
5 const responseWithSSO: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId, ssoToken);
6 const responseWithoutSSO: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId);
7 console.log(responseWithSSO, responseWithoutSSO);
8})();
9

resetUserNotifications Internal Link

Parametry

Name Typ Wymagane Opis
tenantId string Tak
afterId string Nie
afterCreatedAt number Nie
unreadOnly boolean Nie
dmOnly boolean Nie
noDm boolean Nie
sso string Nie

Odpowiedź

Zwraca: ResetUserNotifications200Response

Przykład

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

updateUserNotificationCommentSubscriptionStatus Internal Link

Włącz lub wyłącz powiadomienia dla konkretnego komentarza.

Parametry

Nazwa Typ Wymagane Opis
tenantId string Yes
notificationId string Yes
optedInOrOut UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum Yes
commentId string Yes
sso string No

Odpowiedź

Zwraca: UpdateUserNotificationStatus200Response

Przykład

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

updateUserNotificationPageSubscriptionStatus Internal Link

Włącz lub wyłącz powiadomienia dla strony. Kiedy użytkownicy subskrybują stronę, tworzone są powiadomienia o nowych komentarzach głównych, a także

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
urlId string Tak
url string Tak
pageTitle string Tak
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum Tak
sso string Nie

Odpowiedź

Zwraca: UpdateUserNotificationStatus200Response

Przykład

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

updateUserNotificationStatus Internal Link

Parametry

Name Type Required Description
tenantId string Tak
notificationId string Tak
newStatus UpdateUserNotificationStatusNewStatusEnum Tak
sso string Nie

Odpowiedź

Zwraca: UpdateUserNotificationStatus200Response

Przykład

Przykład updateUserNotificationStatus
Copy Copy
1
2const tenantId: string = 'tenant_84a2c3';
3const notificationId: string = 'notif_20260325_01';
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.Read;
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_signature_example';
6const result: UpdateUserNotificationStatus200Response = await updateUserNotificationStatus(tenantId, notificationId, newStatus, sso);
7

getUserPresenceStatuses Internal Link

Parametry

Name Type Required Description
tenantId string Tak
urlIdWS string Tak
userIds string Tak

Odpowiedź

Zwraca: GetUserPresenceStatuses200Response

Przykład

getUserPresenceStatuses Przykład
Copy Copy
1
2const tenantId: string = 'tenant_7f3a2b';
3const urlIdWS: string = 'articles/2026/03/25/fastcomments-integration';
4const maybeUserIds: string | undefined = 'user_123,user_456'; // opcjonalne źródło
5const userIds: string = maybeUserIds ?? 'user_123';
6const presence: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

searchUsers Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
urlId string Tak
usernameStartsWith string Nie
mentionGroupIds Array Nie
sso string Nie
searchSection SearchUsersSearchSectionEnum Nie

Odpowiedź

Zwraca: SearchUsers200Response

Przykład

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

getUser Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak

Odpowiedź

Zwraca: GetUser200Response

Przykład

Przykład getUser
Copy Copy
1
2const tenantId: string = 'tenant_7b3f42';
3const id: string = 'user_9c4d2a';
4const userResponse: GetUser200Response = await getUser(tenantId, id);
5console.log(userResponse);
6

createVote Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
commentId string Tak
direction CreateVoteDirectionEnum Tak
userId string Nie
anonUserId string Nie

Odpowiedź

Zwraca: VoteComment200Response

Przykład

Przykład createVote
Copy Copy
1
2const tenantId: string = 'tenant_9f8b6a';
3const commentId: string = 'comment_3b7d2e';
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Up;
5const anonUserId: string = 'anon_4c2a1f';
6
7const voteResult: VoteComment200Response = await createVote(tenantId, commentId, direction, undefined, anonUserId);
8

deleteVote Internal Link

Parametry

Nazwa Typ Wymagane Opis
tenantId string Tak
id string Tak
editKey string Nie

Odpowiedź

Zwraca: DeleteCommentVote200Response

Przykład

Przykład deleteVote
Copy Copy
1
2const tenantId: string = "tenant_7c3f2b4a";
3const voteId: string = "vote_4f8d9a11";
4const editKey: string = "edit_2b9f8c";
5const resultWithoutKey: DeleteCommentVote200Response = await deleteVote(tenantId, voteId);
6const resultWithKey: DeleteCommentVote200Response = await deleteVote(tenantId, voteId, editKey);
7

getVotes Internal Link

Parametry

Name Type Required Description
tenantId string Tak
urlId string Tak

Odpowiedź

Zwraca: GetVotes200Response

Przykład

Przykład getVotes
Copy Copy
1
2const tenantId: string = 'acme-corp-8f3b';
3const refCampaign: string | undefined = 'newsletter-march2026'; // opcjonalny parametr zapytania
4const urlId: string = `https://www.example.com/articles/2026/03/25/fastcomments-integration${refCampaign ? `?ref=${refCampaign}` : ''}`;
5
6const votes: GetVotes200Response = await getVotes(tenantId, urlId);
7

getVotesForUser Internal Link

Parametry

Name Type Wymagane Opis
tenantId string Tak
urlId string Tak
userId string Nie
anonUserId string Nie

Odpowiedź

Zwraca: GetVotesForUser200Response

Przykład

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

Potrzebujesz pomocy?

Jeżeli napotkasz jakiekolwiek problemy lub masz pytania dotyczące SDK JavaScript/TypeScript, prosimy:

Współtworzenie

Wkłady są mile widziane! Odwiedź repozytorium na GitHubie po wytyczne dotyczące współpracy.