FastComments.com

FastComments SDK dla JavaScript/TypeScript


To oficjalne SDK JavaScript/TypeScript dla FastComments.

Zarządzaj komentarzami, użytkownikami, SSO i moderacją z Node.js lub przeglądarki.

Repozytorium

Zobacz na GitHub


Instalacja Internal Link

npm

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

Identyfikatory transmisji 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 itp.).

Parametry

NameTypeRequiredDescription
tenantIdstringTak
aggregationRequestAggregationRequestTak
parentTenantIdstringNie
includeStatsbooleanNie

Odpowiedź

Zwraca: Aggregate200Response

Przykład

Przykład agregacji
Copy Copy
1
2const tenantId: string = 'tenant_78a9';
3const parentTenantId: string = 'parent_tenant_01';
4const includeStats: boolean = true;
5const aggregationRequest: AggregationRequest = {
6 operation: { type: 'COUNT' },
7 groupBy: ['pageUrl'],
8 predicate: { field: 'status', operator: 'EQUALS', value: 'approved' },
9 sort: [{ field: 'count', direction: 'DESC' }],
10 limit: 25
11};
12const result: Aggregate200Response = await aggregate(tenantId, aggregationRequest, parentTenantId, includeStats);
13

getAuditLogs Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringYes
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo

Odpowiedź

Zwraca: GetAuditLogs200Response

Przykład

Przykład getAuditLogs
Copy Copy
1
2const tenantId: string = 'tenant_5f8d7c3a';
3const limit: number = 100;
4const skip: number = 0;
5const order: SORTDIR = 'DESC' as SORTDIR;
6const after: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // tydzień temu
7const before: number = Date.now();
8const result: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, order, after, before);
9

blockFromCommentPublic Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
commentIdstringTak
publicBlockFromCommentParamsPublicBlockFromCommentParamsTak
ssostringNie

Odpowiedź

Zwraca: BlockFromCommentPublic200Response

Przykład

Przykład blockFromCommentPublic
Copy Copy
1
2const tenantId: string = 'tenant_6b3f9a2d';
3const commentId: string = 'cmt_8f4b12a9';
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: 'Repeated promotional links',
6 durationMinutes: 60 * 24 * 30, // 30 dni
7 escalateToModeration: true
8};
9const sso: string = 'sso_token_3fH7kLw';
10
11const result: BlockFromCommentPublic200Response = await blockFromCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
12

unBlockCommentPublic Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
publicBlockFromCommentParamsPublicBlockFromCommentParamsTak
ssostringNie

Odpowiedź

Zwraca: UnBlockCommentPublic200Response

Przykład

Przykład unBlockCommentPublic
Copy Copy
1
2const tenantId: string = "tenant-42-production";
3const commentId: string = "comment_7f3b2a9d";
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: "flag reviewed and determined not to violate policy",
6 restoredBy: "moderator_jane",
7 restoredAt: new Date().toISOString()
8};
9const sso: string = "sso_token_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
10const result: UnBlockCommentPublic200Response = await unBlockCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
11

checkedCommentsForBlocked Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdsstringTak
ssostringNie

Odpowiedź

Zwraca: CheckedCommentsForBlocked200Response

Przykład

Przykład checkedCommentsForBlocked
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_fa3b2c9e';
4 const commentIds: string = 'cmt_112233,cmt_445566';
5 const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI0Njc4IiwidGVuYW50IjoidGVuYW50X2ZhM2IifQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
6 const resultWithSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds, sso);
7 const resultWithoutSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds);
8 console.log(resultWithSSO, resultWithoutSSO);
9})();
10

blockUserFromComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
blockFromCommentParamsBlockFromCommentParamsTak
userIdstringNie
anonUserIdstringNie

Odpowiedź

Zwraca: BlockFromCommentPublic200Response

Przykład

Przykład użycia blockUserFromComment
Copy Copy
1
2const tenantId: string = "tenant_7f3b4c";
3const id: string = "comment_9a8b7c6d";
4const blockFromCommentParams: BlockFromCommentParams = {
5 reason: "Repeated spam links",
6 durationHours: 168,
7 notifyModerators: true
8};
9const userId: string | undefined = "user_42";
10const anonUserId: string | undefined = undefined;
11const result: BlockFromCommentPublic200Response = await blockUserFromComment(tenantId, id, blockFromCommentParams, userId, anonUserId);
12

createCommentPublic Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
broadcastIdstringTak
commentDataCommentDataTak
sessionIdstringNie
ssostringNie

Odpowiedź

Zwraca: CreateCommentPublic200Response

Przykład

Przykład createCommentPublic
Copy Copy
1
2const tenantId: string = 'tenant_9a1b2c';
3const urlId: string = 'https://www.news-site.com/article/67890';
4const broadcastId: string = 'broadcast_2026-06-15-01';
5const sessionId: string | undefined = 'sess_abc123xyz';
6const sso: string | undefined = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiam9yZGFuIiwiaWF0IjoxNjI0MDAwMDB9.signature';
7const commentData: CommentData = {
8 content: 'Insightful piece — I appreciated the data-backed points and sources cited.',
9 authorDisplayName: 'Jordan Miles'
10} as CommentData;
11const result: CreateCommentPublic200Response = await createCommentPublic(tenantId, urlId, broadcastId, commentData, sessionId, sso);
12

deleteComment Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak
contextUserIdstringNie
isLivebooleanNie

Odpowiedź

Zwraca: DeleteComment200Response

Przykład

Przykład deleteComment
Copy Copy
1
2const tenantId: string = 'tenant_84a9f2';
3const id: string = 'comment_5f3b21';
4const contextUserId: string | undefined = 'user_1122';
5const isLive: boolean | undefined = true;
6
7async function run(): Promise<void> {
8 const result: DeleteComment200Response = await deleteComment(tenantId, id, contextUserId, isLive);
9 console.log(result);
10}
11
12run();
13

deleteCommentPublic Internal Link


Parametry

NameTypeRequiredDescription
tenantIdstringTak
commentIdstringTak
broadcastIdstringTak
editKeystringNie
ssostringNie

Odpowiedź

Zwraca: DeleteCommentPublic200Response

Przykład

Przykład deleteCommentPublic
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const commentId: string = 'c0mment-9f8b7a6';
4const broadcastId: string = 'site_homepage_2026-06-15';
5const editKey: string = 'ek_3b7a1f59-4d2c-11eb-8dcd-0242ac130003';
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.fakePayload.signature';
7
8const result: DeleteCommentPublic200Response = await deleteCommentPublic(tenantId, commentId, broadcastId, editKey, sso);
9

deleteCommentVote Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
commentIdstringTak
voteIdstringTak
urlIdstringTak
broadcastIdstringTak
editKeystringNie
ssostringNie

Odpowiedź

Zwraca: DeleteCommentVote200Response

Przykład

Przykład deleteCommentVote
Copy Copy
1
2const tenantId: string = 'tenant_8f3a2b7c';
3const commentId: string = 'cmt-5a1f3d92';
4const voteId: string = 'vote-3b9c7e1a';
5const urlId: string = 'articles/2026/06/typescript-best-practices';
6const broadcastId: string = 'broadcast-77f4d2';
7const editKey: string = 'edk-9b2f4c';
8const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload.signature';
9const result: DeleteCommentVote200Response = await deleteCommentVote(tenantId, commentId, voteId, urlId, broadcastId, editKey, sso);
10

flagComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
userIdstringNie
anonUserIdstringNie

Odpowiedź

Zwraca: FlagComment200Response

Przykład

Przykład użycia flagComment
Copy Copy
1
2const tenantId: string = "tenant_4f21c9a";
3const commentId: string = "cmt_7a12b3e9";
4const userId: string = "user_82bd123";
5const result: FlagComment200Response = await flagComment(tenantId, commentId, userId);
6

getComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetComment200Response

Przykład

Przykład użycia getComment
Copy Copy
1
2const tenantId: string = 'tenant_6f1a2b';
3const commentId: string = 'cmt_4d9e8f';
4const includeReplies: boolean | undefined = true; // przykład opcjonalnego parametru (nie przekazywany do getComment)
5const result: GetComment200Response = await getComment(tenantId, commentId);
6console.log('Fetched comment for tenant:', tenantId, 'comment id:', commentId);
7console.log('API response received:', result);
8

getComments Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
pagenumberNie
limitnumberNie
skipnumberNie
asTreebooleanNie
skipChildrennumberNie
limitChildrennumberNie
maxTreeDepthnumberNie
urlIdstringNie
userIdstringNie
anonUserIdstringNie
contextUserIdstringNie
hashTagstringNie
parentIdstringNie
directionSortDirectionsNie
fromDatenumberNie
toDatenumberNie

Odpowiedź

Zwraca: GetComments200Response

Przykład

Przykład getComments
Copy Copy
1
2const tenantId: string = "tenant_9a12b3";
3const response: GetComments200Response = await getComments(tenantId, 1, 20, 0, true, 0, 3, 2, "https://mysite.com/posts/678", undefined, undefined, undefined, undefined, "parent_987", undefined, 1716873600000, 1719552000000);
4

getCommentsPublic Internal Link


req tenantId urlId

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
pagenumberNie
directionSortDirectionsNie
ssostringNie
skipnumberNie
skipChildrennumberNie
limitnumberNie
limitChildrennumberNie
countChildrenbooleanNie
fetchPageForCommentIdstringNie
includeConfigbooleanNie
countAllbooleanNie
includei10nbooleanNie
localestringNie
modulesstringNie
isCrawlerbooleanNie
includeNotificationCountbooleanNie
asTreebooleanNie
maxTreeDepthnumberNie
useFullTranslationIdsbooleanNie
parentIdstringNie
searchTextstringNie
hashTagsArrayNie
userIdstringNie
customConfigStrstringNie
afterCommentIdstringNie
beforeCommentIdstringNie

Odpowiedź

Zwraca: GetCommentsPublic200Response

Przykład

Przykład getCommentsPublic
Copy Copy
1
2const tenantId: string = 'acme-news';
3const urlId: string = '/articles/2026/fastcomments-update';
4const page: number = 1;
5const skip: number = 0;
6const limit: number = 25;
7const countChildren: boolean = true;
8const includeConfig: boolean = true;
9const result: GetCommentsPublic200Response = await getCommentsPublic(
10 tenantId,
11 urlId,
12 page,
13 undefined,
14 undefined,
15 skip,
16 undefined,
17 limit,
18 undefined,
19 countChildren,
20 undefined,
21 includeConfig
22);
23

getCommentText Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
commentIdstringTak
editKeystringNie
ssostringNie

Odpowiedź

Zwraca: GetCommentText200Response

Przykład

Przykład getCommentText
Copy Copy
1
2const tenantId: string = 'tenant_42b7e9';
3const commentId: string = 'cmt_9f3a2b';
4const editKey: string = 'edk_3f1b7c9d';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ssoPayload.signature';
6
7const result: GetCommentText200Response = await getCommentText(tenantId, commentId, editKey, sso);
8

getCommentVoteUserNames Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
dirnumberTak
ssostringNie

Odpowiedź

Zwraca: GetCommentVoteUserNames200Response

Przykład

Przykład getCommentVoteUserNames
Copy Copy
1
2const tenantId: string = "tenant_67890";
3const commentId: string = "comment_abc123";
4const dir: number = 1;
5const ssoToken: string = "sso-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
6
7const responseWithoutSSO: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dir);
8const responseWithSSO: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dir, ssoToken);
9

lockComment Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
broadcastIdstringTak
ssostringNie

Odpowiedź

Zwraca: LockComment200Response

Przykład

Przykład lockComment
Copy Copy
1
2const tenantId: string = 'tenant_42f6c1';
3const commentId: string = 'cmt-9a8b7c';
4const broadcastId: string = 'brd_2026_06_15';
5const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1Njc4OSIsImlhdCI6MTY1MDAwMDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
6
7const lockedWithSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId, ssoToken);
8const lockedWithoutSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId);
9

pinComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
broadcastIdstringTak
ssostringNie

Odpowiedź

Zwraca: PinComment200Response

Przykład

Przykład pinComment
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-72";
3const commentId: string = "cmt_8f3a2b4c9d";
4const broadcastId: string = "live_2026-06-15_21z";
5const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.fake.payload.signature";
6
7const responseNoSSO: PinComment200Response = await pinComment(tenantId, commentId, broadcastId);
8const responseWithSSO: PinComment200Response = await pinComment(tenantId, commentId, broadcastId, ssoToken);
9

saveComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createCommentParamsCreateCommentParamsTak
isLivebooleanNie
doSpamCheckbooleanNie
sendEmailsbooleanNie
populateNotificationsbooleanNie

Odpowiedź

Zwraca: SaveComment200Response

Przykład

Przykład saveComment
Copy Copy
1
2const tenantId: string = "fastcomments-tenant-42";
3const createCommentParams: CreateCommentParams = {
4 threadId: "article-2026-06-0142",
5 content: "Great write-up — I followed the migration steps and everything worked as described.",
6 userId: "u_9c72b",
7 userName: "Ava R.",
8 userAvatarUrl: "https://cdn.example.com/avatars/u_9c72b.png",
9 metadata: { platform: "web", locale: "en-US" }
10};
11const isLive: boolean = true;
12const doSpamCheck: boolean = true;
13const sendEmails: boolean = false;
14const populateNotifications: boolean = true;
15const result: SaveComment200Response = await saveComment(tenantId, createCommentParams, isLive, doSpamCheck, sendEmails, populateNotifications);
16

saveCommentsBulk Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
createCommentParamsArrayTak
isLivebooleanNie
doSpamCheckbooleanNie
sendEmailsbooleanNie
populateNotificationsbooleanNie

Odpowiedź

Zwraca: Array<SaveComment200Response

Przykład

Przykład saveCommentsBulk
Copy Copy
1
2const tenantId: string = "tenant_42a1b7";
3const mentions: CommentUserMentionInfo[] = [{ userId: "user_2b9", displayName: "Alex Chen" }];
4const hashtags: CommentUserHashTagInfo[] = [{ tag: "performance" }];
5const createCommentParams: CreateCommentParams[] = [
6 {
7 content: "Thanks for the detailed article — the alternative approach worked for me.",
8 authorId: "user_8f3c2",
9 authorName: "Maya Patel",
10 authorEmail: "maya.patel@example.com",
11 url: "/articles/optimizing-ts-performance",
12 createdAt: new Date().toISOString(),
13 mentions,
14 hashtags
15 }
16];
17const isLive: boolean = true;
18const doSpamCheck: boolean = false;
19const sendEmails: boolean = true;
20const populateNotifications: boolean = true;
21const result: Array<SaveComment200Response> = await saveCommentsBulk(tenantId, createCommentParams, isLive, doSpamCheck, sendEmails, populateNotifications);
22

setCommentText Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
commentIdstringTak
broadcastIdstringTak
commentTextUpdateRequestCommentTextUpdateRequestTak
editKeystringNie
ssostringNie

Odpowiedź

Zwraca: SetCommentText200Response

Przykład

Przykład użycia setCommentText
Copy Copy
1
2const tenantId: string = 'tenant_4f9a2b'
3const commentId: string = 'cmt-8421'
4const broadcastId: string = 'brd-2026-06-15'
5const commentTextUpdateRequest: CommentTextUpdateRequest = { text: 'Updated comment text to clarify the schedule.', mentions: [], hashtags: [] }
6const editKey: string = 'editkey_9b12'
7const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso.signature'
8const result: SetCommentText200Response = await setCommentText(tenantId, commentId, broadcastId, commentTextUpdateRequest, editKey, sso)
9

unBlockUserFromComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
unBlockFromCommentParamsUnBlockFromCommentParamsTak
userIdstringNie
anonUserIdstringNie

Odpowiedź

Zwraca: UnBlockCommentPublic200Response

Przykład

Przykład unBlockUserFromComment
Copy Copy
1
2const tenantId: string = 'tenant_7b9c2a';
3const id: string = 'comment_4f8e1d';
4const unBlockFromCommentParams: UnBlockFromCommentParams = {
5 reason: 'User submitted appeal and provided additional context',
6 effectiveAt: new Date().toISOString()
7};
8const userId: string = 'user_92a3f6';
9const result: UnBlockCommentPublic200Response = await unBlockUserFromComment(tenantId, id, unBlockFromCommentParams, userId);
10

unFlagComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
userIdstringNie
anonUserIdstringNie

Odpowiedź

Zwraca: FlagComment200Response

Przykład

Przykład unFlagComment
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2a1f';
3const commentId: string = 'cmt_20250614_01';
4const userId: string = 'user_47d2b9';
5const result: FlagComment200Response = await unFlagComment(tenantId, commentId, userId);
6

unLockComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
broadcastIdstringTak
ssostringNie

Odpowiedź

Zwraca: LockComment200Response

Przykład

Przykład unLockComment
Copy Copy
1
2const tenantId: string = "tenant-8f3b2c4a";
3const commentId: string = "cmt_92a7f3e6";
4const broadcastId: string = "brd_1b4c9d20";
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6const result: LockComment200Response = await unLockComment(tenantId, commentId, broadcastId, sso);
7

unPinComment Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
broadcastIdstringTak
ssostringNie

Odpowiedź

Zwraca: PinComment200Response

Przykład

Przykład unPinComment
Copy Copy
1
2const tenantId: string = "tenant_9f3b2c1a";
3const commentId: string = "comment_4d2e8a7f";
4const broadcastId: string = "broadcast_live_2026_06_15_18";
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.invalid-signature";
6const response: PinComment200Response = await unPinComment(tenantId, commentId, broadcastId, sso);
7console.log(response);
8

updateComment Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak
updatableCommentParamsUpdatableCommentParamsTak
contextUserIdstringNie
doSpamCheckbooleanNie
isLivebooleanNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateComment
Copy Copy
1
2const tenantId: string = 'tenant_7f3c1b2a';
3const commentId: string = 'cmt_8d9f2a4b';
4const updatableCommentParams: UpdatableCommentParams = {
5 body: 'Updating this comment to clarify the feature behavior and include a timestamp.',
6 metadata: { category: 'support', editedReason: 'clarify instructions' },
7 visible: true
8};
9const contextUserId: string = 'user_42';
10const doSpamCheck: boolean = true;
11const result: FlagCommentPublic200Response = await updateComment(tenantId, commentId, updatableCommentParams, contextUserId, doSpamCheck);
12

voteComment Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
commentIdstringTak
urlIdstringTak
broadcastIdstringTak
voteBodyParamsVoteBodyParamsTak
sessionIdstringNie
ssostringNie

Odpowiedź

Zwraca: VoteComment200Response

Przykład

Przykład voteComment
Copy Copy
1
2const tenantId: string = 'tenant_7f9d2e';
3const commentId: string = '5a1d3f9b-2c4e-4a2b-bf7b-1234567890ab';
4const urlId: string = 'articles/2026/06/15/typescript-api-patterns';
5const broadcastId: string = 'broadcast-20260615-01';
6const voteBodyParams: VoteBodyParams = { vote: 'up' };
7const sessionId: string = 'sess_9d2f3b45';
8const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImlhdCI6MTY5NzE2MDAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
9
10const response: VoteComment200Response = await voteComment(
11 tenantId,
12 commentId,
13 urlId,
14 broadcastId,
15 voteBodyParams,
16 sessionId,
17 sso
18);
19

getCommentsForUser Internal Link

Parametry

NameTypWymaganeOpis
userIdstringNie
directionSortDirectionsNie
repliesToUserIdstringNie
pagenumberNie
includei10nbooleanNie
localestringNie
isCrawlerbooleanNie

Odpowiedź

Zwraca: GetCommentsForUser200Response

Przykład

Przykład użycia getCommentsForUser
Copy Copy
1
2const userId: string = "550e8400-e29b-41d4-a716-446655440000";
3const page: number = 2;
4const includei10n: boolean = true;
5const locale: string = "en-US";
6const isCrawler: boolean = false;
7
8const comments: GetCommentsForUser200Response = await getCommentsForUser(
9 userId,
10 undefined, // direction pominięto
11 undefined, // repliesToUserId pominięto
12 page,
13 includei10n,
14 locale,
15 isCrawler
16);
17
18console.log(comments);
19

addDomainConfig Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
addDomainConfigParamsAddDomainConfigParamsTak

Odpowiedź

Zwraca: AddDomainConfig200Response


deleteDomainConfig Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
domainstringTak

Odpowiedź

Zwraca: DeleteDomainConfig200Response


getDomainConfig Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
domainstringTak

Odpowiedź

Zwraca: GetDomainConfig200Response


getDomainConfigs Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak

Odpowiedź

Zwraca: GetDomainConfigs200Response


patchDomainConfig Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
domainToUpdatestringTak
patchDomainConfigParamsPatchDomainConfigParamsTak

Odpowiedź

Zwraca: GetDomainConfig200Response


putDomainConfig Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
domainToUpdatestringTak
updateDomainConfigParamsUpdateDomainConfigParamsTak

Odpowiedź

Zwraca: GetDomainConfig200Response


createEmailTemplate Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
createEmailTemplateBodyCreateEmailTemplateBodyTak

Odpowiedź

Zwraca: CreateEmailTemplate200Response

Przykład

Przykład createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_4f2b1c9e";
3const createEmailTemplateBody: CreateEmailTemplateBody = {
4 name: "New Comment Notification",
5 subject: "Someone replied to your discussion",
6 fromName: "Community Team",
7 fromAddress: "no-reply@community.example.com",
8 htmlBody: "<p>\{{comment.author}} replied: \{{comment.text}}</p>",
9 plaintextBody: "\{{comment.author}} replied: \{{comment.text}}",
10 previewText: "A new reply on a discussion you follow",
11 isDefault: false // opcjonalna flaga ilustrująca użycie opcjonalnego parametru
12};
13const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
14

deleteEmailTemplate Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_9c4f1b2a";
3const id: string = "emailtmpl_4d2b9a5e";
4const requestorNote: string | undefined = undefined; // opcjonalne metadane (nie są wymagane przez funkcję)
5const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, id);
6

deleteEmailTemplateRenderError Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
errorIdstringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = 'tenant-72f3b4';
3const templateId: string = 'email_template-9c3a1';
4let providedErrorId: string | undefined = undefined; // optional value, could be set elsewhere
5const errorId: string = providedErrorId ?? 'render_err-5d2f7';
6const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, templateId, errorId);
7

getEmailTemplate Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetEmailTemplate200Response

Przykład

Przykład getEmailTemplate
Copy Copy
1
2const tenantId: string = 'tenant_7f3b2c';
3const templateId: string = 'welcome-email-2024';
4const includeDrafts: boolean | undefined = undefined;
5const emailTemplate: GetEmailTemplate200Response = await getEmailTemplate(tenantId, templateId);
6

getEmailTemplateDefinitions Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak

Odpowiedź

Zwraca: GetEmailTemplateDefinitions200Response

Przykład

Przykład użycia getEmailTemplateDefinitions
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_001';
4 const options: { includeDrafts?: boolean } = { includeDrafts: true }; // pokazuje użycie opcjonalnego parametru
5 const templates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId, options);
6 console.log(templates);
7})();
8

getEmailTemplateRenderErrors Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
skipnumberNie

Odpowiedź

Zwraca: GetEmailTemplateRenderErrors200Response

Przykład

Przykład getEmailTemplateRenderErrors
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const id: string = 'tmpl_7f9a2b4c';
4const skip: number = 20;
5
6const errorsWithSkip: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id, skip);
7const errorsFirstPage: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id);
8

getEmailTemplates Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
skipnumberNie

Odpowiedź

Zwraca: GetEmailTemplates200Response

Przykład

Przykład getEmailTemplates
Copy Copy
1
2async function run(): Promise<void> {
3 const tenantId: string = "acme-marketing-tenant-001";
4 const templatesDefault: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
5 const templatesPaged: GetEmailTemplates200Response = await getEmailTemplates(tenantId, 25);
6 console.log(templatesDefault, templatesPaged);
7}
8run();
9

renderEmailTemplate Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
renderEmailTemplateBodyRenderEmailTemplateBodyTak
localestringNie

Odpowiedź

Zwraca: RenderEmailTemplate200Response

Przykład

Przykład renderEmailTemplate
Copy Copy
1
2const tenantId: string = '7f7e2b90-3a2b-4d9b-9df1-5f0b6b2e8a1c';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'welcome_email',
5 recipient: { email: 'jordan.smith@acme.co', name: 'Jordan Smith' },
6 variables: { siteName: 'Acme Forum', verificationUrl: 'https://acme.forum/verify?code=abc123' }
7};
8const locale: string = 'en-US';
9const result: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
10

updateEmailTemplate Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
updateEmailTemplateBodyUpdateEmailTemplateBodyTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateEmailTemplate
Copy Copy
1
2const tenantId: string = 'acme-corp-123';
3const id: string = 'template-789';
4const locale: string | undefined = 'en-US';
5const updateEmailTemplateBody: UpdateEmailTemplateBody = {
6 subject: 'Welcome to Acme — Get started',
7 bodyHtml: '<p>Hi \{{firstName}}, welcome to Acme. Start by visiting your dashboard.</p>',
8 fromName: 'Acme Support',
9 fromEmail: 'support@acme.com',
10 enabled: true,
11 ...(locale ? { locale } : {})
12};
13const result: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
14

getEventLog Internal Link

req tenantId urlId userIdWS

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
userIdWSstringTak
startTimenumberTak
endTimenumberNie

Odpowiedź

Zwraca: GetEventLog200Response

Przykład

Przykład użycia getEventLog
Copy Copy
1
2const tenantId: string = 'tenant_9f3a2b';
3const urlId: string = 'news/2026/06/fastcomments-release';
4const userIdWS: string = 'ws_user_48291';
5const startTime: number = Date.now() - 86_400_000;
6const endTime: number = Date.now();
7const result: GetEventLog200Response = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
8

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
userIdWSstringTak
startTimenumberTak
endTimenumberNie

Odpowiedź

Zwraca: GetEventLog200Response

Przykład

Przykład getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant_639b7f12";
3const urlId: string = "https://www.news-site.com/articles/2026/06/15/important-update-987";
4const userIdWS: string = "user_ws_42b7";
5const startTime: number = new Date("2026-06-14T00:00:00Z").getTime();
6const endTime: number = Date.now();
7
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

createFeedPost Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
createFeedPostParamsCreateFeedPostParamsTak
broadcastIdstringNie
isLivebooleanNie
doSpamCheckbooleanNie
skipDupCheckbooleanNie

Odpowiedź

Zwraca: CreateFeedPost200Response

Przykład

Przykład createFeedPost
Copy Copy
1
2const tenantId: string = 'tenant_4f2b1c';
3const createFeedPostParams: CreateFeedPostParams = {
4 content: 'Launching our summer collection today — check it out!',
5 authorId: 'user_879',
6 media: [
7 {
8 type: 'image',
9 assets: [
10 { url: 'https://cdn.myshop.com/uploads/summer-look.jpg', width: 1200, height: 800 } as FeedPostMediaItemAsset
11 ]
12 } as FeedPostMediaItem
13 ],
14 links: [
15 { url: 'https://myshop.com/new-arrival', title: 'Summer Collection' } as FeedPostLink
16 ],
17 allowComments: true
18};
19const broadcastId: string = 'broadcast-2026-06-15-001';
20const isLive: boolean = false;
21const doSpamCheck: boolean = true;
22const skipDupCheck: boolean = false;
23const response: CreateFeedPost200Response = await createFeedPost(tenantId, createFeedPostParams, broadcastId, isLive, doSpamCheck, skipDupCheck);
24

createFeedPostPublic Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createFeedPostParamsCreateFeedPostParamsTak
broadcastIdstringNie
ssostringNie

Odpowiedź

Zwraca: CreateFeedPostPublic200Response

Przykład

Przykład createFeedPostPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9f8b7c";
4 const media: FeedPostMediaItem[] = [{ type: "image", assets: [{ url: "https://cdn.example.com/roadmap.jpg", mimeType: "image/jpeg" }] }];
5 const links: FeedPostLink[] = [{ url: "https://company.example.com/roadmap", title: "Full roadmap" }];
6 const createFeedPostParams: CreateFeedPostParams = {
7 title: "Weekly Product Roadmap Update",
8 body: "This week we shipped enhancements to search relevance and fixed top customer bugs.",
9 authorId: "user_8321",
10 media,
11 links,
12 visibility: "public"
13 };
14 const broadcastId: string = "broadcast_2026_06_15";
15 const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload";
16 const response: CreateFeedPostPublic200Response = await createFeedPostPublic(tenantId, createFeedPostParams, broadcastId, sso);
17 console.log(response);
18})();
19

deleteFeedPostPublic Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
postIdstringTak
broadcastIdstringNie
ssostringNie

Odpowiedź

Zwraca: DeleteFeedPostPublic200Response

Przykład

Przykład deleteFeedPostPublic
Copy Copy
1
2const tenantId: string = 'acme-tenant-42';
3const postId: string = 'post_8f3d2a7c';
4const broadcastId: string = 'broadcast_2026-06-15_01';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ssoPayload.signature';
6const response: DeleteFeedPostPublic200Response = await deleteFeedPostPublic(tenantId, postId, broadcastId, sso);
7

getFeedPosts Internal Link

req tenantId afterId

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
afterIdstringNie
limitnumberNie
tagsArrayNie

Odpowiedź

Zwraca: GetFeedPosts200Response

Przykład

Przykład getFeedPosts
Copy Copy
1
2const tenantId: string = "tenant_74321";
3const afterId: string = "post_20250610_9b2f3";
4const limit: number = 25;
5const tags: Array<string> = ["product-updates", "announcements"];
6
7const response: GetFeedPosts200Response = await getFeedPosts(tenantId, afterId, limit, tags);
8

getFeedPostsPublic Internal Link

req tenantId afterId

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
afterIdstringNie
limitnumberNie
tagsArrayNie
ssostringNie
isCrawlerbooleanNie
includeUserInfobooleanNie

Odpowiedź

Zwraca: GetFeedPostsPublic200Response

Przykład

Przykład getFeedPostsPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_01';
4 const afterId: string = 'post_20250610_842';
5 const limit: number = 25;
6 const tags: string[] = ['news', 'technology'];
7 const sso: string = 'sso_jwt_eyJhbGciOiJIUzI1Ni';
8 const isCrawler: boolean = false;
9 const includeUserInfo: boolean = true;
10
11 const response: GetFeedPostsPublic200Response = await getFeedPostsPublic(
12 tenantId,
13 afterId,
14 limit,
15 tags,
16 sso,
17 isCrawler,
18 includeUserInfo
19 );
20
21 console.log(response);
22})();
23

getFeedPostsStats Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
postIdsArrayTak
ssostringNie

Odpowiedź

Zwraca: GetFeedPostsStats200Response

Przykład

Przykład getFeedPostsStats
Copy Copy
1
2const tenantId: string = "tenant_98765";
3const postIds: string[] = ["post_a1b2c3", "post_d4e5f6"];
4const ssoToken: string = "sso_jwt_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
5
6const statsWithoutSSO: GetFeedPostsStats200Response = await getFeedPostsStats(tenantId, postIds);
7const statsWithSSO: GetFeedPostsStats200Response = await getFeedPostsStats(tenantId, postIds, ssoToken);
8

getUserReactsPublic Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
postIdsArrayNie
ssostringNie

Odpowiedź

Zwraca: GetUserReactsPublic200Response

Przykład

Przykład użycia getUserReactsPublic
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-4f2b9c';
3const postIds: Array<string> = ['post_7a1f9e', 'post_2b3c88'];
4const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1Njc4OSIsImlhdCI6MTYwOTQ0MDAwMH0.signature';
5
6const response: GetUserReactsPublic200Response = await getUserReactsPublic(tenantId, postIds, sso);
7

reactFeedPostPublic Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
postIdstringTak
reactBodyParamsReactBodyParamsTak
isUndobooleanNie
broadcastIdstringNie
ssostringNie

Odpowiedź

Zwraca: ReactFeedPostPublic200Response

Przykład

Przykład reactFeedPostPublic
Copy Copy
1
2const tenantId: string = 'acme-tenant-001';
3const postId: string = 'feedpost_78901';
4const reactBodyParams: ReactBodyParams = { reaction: 'like', emoji: '👍' };
5const isUndo: boolean = false;
6const broadcastId: string = 'broadcast_2026_06_15_01';
7const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.signature';
8
9const response: ReactFeedPostPublic200Response = await reactFeedPostPublic(
10 tenantId,
11 postId,
12 reactBodyParams,
13 isUndo,
14 broadcastId,
15 sso
16);
17

updateFeedPost Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
feedPostFeedPostTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateFeedPost
Copy Copy
1
2const tenantId: string = "tenant_72f3b4c9";
3const id: string = "post_ba4f6e18-2d3c-4b7a-91f2-8c0e3a6b5d4f";
4
5const feedPost: FeedPost = {
6 title: "June feature rollout",
7 body: "Announcing performance improvements and moderation updates available to all sites.",
8 authorName: "Platform Team",
9 mediaItems: [
10 {
11 type: "image",
12 caption: "Release banner",
13 asset: { url: "https://cdn.fastcomments.com/assets/june-banner.jpg", mimeType: "image/jpeg", width: 1200, height: 600 }
14 }
15 ],
16 links: [{ title: "Release notes", url: "https://docs.fastcomments.com/releases/june-2026" }]
17} as FeedPost;
18
19const result: FlagCommentPublic200Response = await updateFeedPost(tenantId, id, feedPost);
20

updateFeedPostPublic Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
postIdstringTak
updateFeedPostParamsUpdateFeedPostParamsTak
broadcastIdstringNie
ssostringNie

Odpowiedź

Zwraca: CreateFeedPostPublic200Response

Przykład

Przykład updateFeedPostPublic
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const postId: string = 'post_20260615_001';
4const updateFeedPostParams: UpdateFeedPostParams = {
5 title: 'Weekly Update: Product Launch',
6 content: 'We shipped the 2.0 release today — highlights and links below.',
7 media: [{ url: 'https://cdn.acme.com/releases/launch.jpg', type: 'image' }],
8 tags: ['release', 'product'],
9 isPublic: true
10};
11const broadcastId: string = 'broadcast_live_42';
12const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
13const result: CreateFeedPostPublic200Response = await updateFeedPostPublic(tenantId, postId, updateFeedPostParams, broadcastId, sso);
14

flagCommentPublic Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
isFlaggedbooleanTak
ssostringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

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

getGifLarge Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
largeInternalURLSanitizedstringTak

Odpowiedź

Zwraca: GetGifLarge200Response

Przykład

Przykład użycia getGifLarge
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c";
3const largeInternalURLSanitized: string = "https://cdn.fastcomments.com/gifs/07d3f6_large.gif";
4const preferWebP: boolean | undefined = true; // opcjonalna preferencja
5const urlToUse: string = preferWebP ? largeInternalURLSanitized.replace(".gif", ".webp") : largeInternalURLSanitized;
6const response: GetGifLarge200Response = await getGifLarge(tenantId, urlToUse);
7

getGifsSearch Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
searchstringTak
localestringNie
ratingstringNie
pagenumberNie

Odpowiedź

Zwraca: GetGifsSearch200Response

Przykład

Przykład getGifsSearch
Copy Copy
1
2const tenantId: string = "tenant_acme_9876";
3const search: string = "cat playing piano";
4const locale: string = "en-US";
5const rating: string = "pg";
6const page: number = 1;
7const result: GetGifsSearch200Response = await getGifsSearch(tenantId, search, locale, rating, page);
8

getGifsTrending Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
localestringNie
ratingstringNie
pagenumberNie

Odpowiedź

Zwraca: GetGifsTrending200Response

Przykład

Przykład getGifsTrending
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = 'tenant_8b3f2c';
4 const locale: string = 'en-US';
5 const rating: string = 'pg';
6 const page: number = 1;
7 const result: GetGifsTrending200Response = await getGifsTrending(tenantId, locale, rating, page);
8 console.log(result);
9}
10main();
11

addHashTag Internal Link

Parametry

NameTypeRequiredOpis
tenantIdstringNie
createHashTagBodyCreateHashTagBodyNie

Odpowiedź

Zwraca: AddHashTag200Response

Przykład

Przykład addHashTag
Copy Copy
1
2const tenantId: string | undefined = "tenant_3c9f7b";
3const createHashTagBody: CreateHashTagBody = {
4 name: "support",
5 title: "Support",
6 description: "Questions about product usage, bugs, and account issues",
7 color: "#0066CC",
8 isActive: true,
9 aliases: ["help", "customer-service"]
10};
11const result: AddHashTag200Response = await addHashTag(tenantId, createHashTagBody);
12

addHashTagsBulk Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringNie
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNie

Odpowiedź

Zwraca: AddHashTagsBulk200Response

Przykład

Przykład addHashTagsBulk
Copy Copy
1
2const tenantId: string = "tenant_acme_corp_987";
3const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
4 tags: [
5 { name: "product-update", description: "Announcements about new product releases", visible: true },
6 { name: "customer-support", description: "Customer support related discussions", visible: false }
7 ],
8 createdBy: "moderator_jane"
9};
10const resultWithTenant: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
11const resultWithoutTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBody);
12

deleteHashTag Internal Link


Parametry

NazwaTypWymaganeOpis
tagstringTak
tenantIdstringNie
deleteHashTagRequestDeleteHashTagRequestNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteHashTag
Copy Copy
1
2const tag: string = "breaking-news";
3const tenantId: string = "tenant_72a1";
4const deleteHashTagRequest: DeleteHashTagRequest = {
5 reason: "consolidate-duplicates",
6 requestedBy: "moderator@dailypress.com",
7 forceDelete: true
8};
9const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteHashTagRequest);
10

getHashTags Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
pagenumberNie

Odpowiedź

Zwraca: GetHashTags200Response

Przykład

Przykład getHashTags
Copy Copy
1
2const tenantId: string = 'tenant_7f4b2c3a';
3const tagsFirstPage: GetHashTags200Response = await getHashTags(tenantId);
4const tagsSecondPage: GetHashTags200Response = await getHashTags(tenantId, 2);
5console.log(tagsFirstPage, tagsSecondPage);
6

patchHashTag Internal Link

Parametry

NazwaTypWymaganeOpis
tagstringTak
tenantIdstringNie
updateHashTagBodyUpdateHashTagBodyNie

Odpowiedź

Zwraca: PatchHashTag200Response

Przykład

Przykład patchHashTag
Copy Copy
1
2const tag: string = "feature-request";
3const tenantId: string = "tenant_8f7a3b2c";
4const updateHashTagBody: UpdateHashTagBody = {
5 displayName: "Feature Request",
6 description: "Use this tag for requests to add new features to the product",
7 enabled: true
8};
9const result: PatchHashTag200Response = await patchHashTag(tag, tenantId, updateHashTagBody);
10

createModerator Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createModeratorBodyCreateModeratorBodyTak

Odpowiedź

Zwraca: CreateModerator200Response

Przykład

Przykład createModerator
Copy Copy
1
2const tenantId: string = 'tenant_9f3b21';
3const createModeratorBody: CreateModeratorBody = {
4 moderator: {
5 name: 'Alex Rivera',
6 email: 'alex.rivera@fastcomments.io',
7 role: 'global_moderator',
8 enabled: true,
9 },
10 // przykładowe opcjonalne parametry:
11 notifyUser: true,
12 permissions: ['delete_comment', 'edit_comment', 'ban_user'],
13 customConfig: { dashboardTheme: 'dark' } as unknown as CustomConfigParameters
14};
15const result: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
16

deleteModerator Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
idstringTak
sendEmailstringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteModerator
Copy Copy
1
2const tenantId: string = 'tenant_4f3b2c9a';
3const id: string = 'mod_9c2d1f7b';
4const sendEmail: string = 'true';
5const response: FlagCommentPublic200Response = await deleteModerator(tenantId, id, sendEmail);
6console.log(response);
7

getModerator Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetModerator200Response

Przykład

Przykład getModerator
Copy Copy
1
2const tenantId: string = 'acme-media-58';
3const id: string = 'mod-82f3b9c1';
4const moderatorResponse: GetModerator200Response = await getModerator(tenantId, id);
5

getModerators Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
skipnumberNie

Odpowiedź

Zwraca: GetModerators200Response

Przykład

Przykład getModerators
Copy Copy
1
2const tenantId: string = 'tenant_0a1b2c3d';
3const moderators: GetModerators200Response = await getModerators(tenantId);
4const skip: number = 20;
5const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, skip);
6

sendInvite Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak
fromNamestringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład użycia sendInvite
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_acme_42";
4 const id: string = "cmt_8f3b21";
5 const fromName: string = "Ava Thompson";
6 const inviteResult: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName);
7 console.log(inviteResult);
8})();
9

updateModerator Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
idstringTak
updateModeratorBodyUpdateModeratorBodyTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład użycia updateModerator
Copy Copy
1
2const tenantId: string = 'acme-tenant-81';
3const id: string = 'mod_7f3a2b';
4const updateModeratorBody: UpdateModeratorBody = {
5 email: 'j.reyes@acme-corp.com',
6 displayName: 'Jordan Reyes',
7 roles: ['moderator', 'content_reviewer'],
8 active: true,
9 notes: 'Promoted to senior moderator; monitor flagged content weekly'
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBody);
12

deleteNotificationCount Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_5f3d2e1b';
3const id: string = 'notification_9a4b1c2';
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
5

getCachedNotificationCount Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetCachedNotificationCount200Response

Przykład

Przykład użycia getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-23';
3const id: string = 'user_987654';
4const cachedCount: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
5
6const maybeId: string | undefined = Math.random() > 0.5 ? 'user_123456' : undefined;
7if (maybeId) {
8 const optionalCachedCount: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, maybeId);
9}
10

getNotificationCount Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
userIdstringNie
urlIdstringNie
fromCommentIdstringNie
viewedbooleanNie
typestringNie

Odpowiedź

Zwraca: GetNotificationCount200Response

Przykład

Przykład getNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_82a3b9f';
3const userId: string = 'user_43721';
4const urlId: string = 'https://news.example.com/articles/2026/06/15/coverage-123';
5const fromCommentId: string = 'comment_98765';
6const viewed: boolean = false;
7const notificationType: string = 'mention';
8
9const result: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, fromCommentId, viewed, notificationType);
10

getNotifications Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
userIdstringNie
urlIdstringNie
fromCommentIdstringNie
viewedbooleanNie
typestringNie
skipnumberNie

Odpowiedź

Zwraca: GetNotifications200Response

Przykład

Przykład getNotifications
Copy Copy
1
2const tenantId: string = 'tenant_9f8b7c6a';
3const userId: string = 'user_5a4b3c2d';
4const urlId: string = 'post_84f2a1b9';
5const fromCommentId: string = 'cmt_0a1b2c3d';
6const viewed: boolean = false;
7const type: string = 'reply';
8const skip: number = 0;
9
10const notifications: GetNotifications200Response = await getNotifications(
11 tenantId,
12 userId,
13 urlId,
14 fromCommentId,
15 viewed,
16 type,
17 skip
18);
19

updateNotification Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
updateNotificationBodyUpdateNotificationBodyTak
userIdstringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateNotification
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2c';
3const id: string = 'notification_4a1d2e';
4const updateNotificationBody: UpdateNotificationBody = {
5 enabled: true,
6 channels: ['email', 'push'],
7 frequency: 'immediate',
8 templateId: 'tmpl_77aa'
9} as UpdateNotificationBody;
10const userId: string = 'user_2468';
11const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
12

createV1PageReact Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
urlIdstringTak
titlestringNie

Odpowiedź

Zwraca: CreateV1PageReact200Response

Przykład

Przykład użycia createV1PageReact
Copy Copy
1
2(async () => {
3 const tenantId: string = 'b12f3c4d-5678-90ab-cdef-1234567890ab';
4 const urlId: string = 'https://www.news-site.com/world/2026/election-results';
5 const title: string = 'Election results: key takeaways and analysis';
6 const responseWithTitle: CreateV1PageReact200Response = await createV1PageReact(tenantId, urlId, title);
7 const responseWithoutTitle: CreateV1PageReact200Response = await createV1PageReact(tenantId, urlId);
8 console.log(responseWithTitle, responseWithoutTitle);
9})();
10

createV2PageReact Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
idstringTak
titlestringNie

Odpowiedź

Zwraca: CreateV2PageReact200Response

Przykład

Przykład użycia createV2PageReact
Copy Copy
1
2const tenantId: string = "fastcomments-tenant-72";
3const urlId: string = "articles/2026/06/15/product-update";
4const id: string = "page-8f3b2a";
5const title: string = "Product Update: June 15, 2026";
6
7(async function run(): Promise<void> {
8 const response: CreateV2PageReact200Response = await createV2PageReact(tenantId, urlId, id, title);
9 console.log(response);
10})();
11

deleteV1PageReact Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak

Odpowiedź

Zwraca: DeleteV1PageReact200Response

Przykład

Przykład deleteV1PageReact
Copy Copy
1
2const tenantId: string = process.env.TENANT_ID ?? 'd3b07384-9f6a-4c2b-8c3e-0a1b2c3d4e5f';
3const urlId: string = 'https://acme.com/articles/2026/06/fastcomments-integration';
4const result: DeleteV1PageReact200Response = await deleteV1PageReact(tenantId, urlId);
5

deleteV2PageReact Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
idstringTak

Odpowiedź

Zwraca: DeleteV2PageReact200Response

Przykład

Przykład deleteV2PageReact
Copy Copy
1
2const tenantId: string = "tenant_79021";
3const urlId: string = "blog/my-first-post";
4const id: string = "reaction_9f8b7c";
5let includeHistory: boolean | undefined = undefined; // opcjonalna flaga, używana w niektórych wywołaniach
6
7const result: DeleteV2PageReact200Response = await deleteV2PageReact(tenantId, urlId, id);
8console.log(result);
9

getV1PageLikes Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak

Odpowiedź

Zwraca: GetV1PageLikes200Response

Przykład

Przykład getV1PageLikes
Copy Copy
1
2const tenantId: string = 'fastcomments-742';
3const urlId: string = 'sports/2026/06/15/world-cup-preview';
4const pageLikes: GetV1PageLikes200Response = await getV1PageLikes(tenantId, urlId);
5

getV2PageReacts Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak

Odpowiedź

Zwraca: GetV2PageReacts200Response

Przykład

Przykład getV2PageReacts
Copy Copy
1
2const tenantId: string = "tenant_82f4b3a9";
3const urlId: string = "https://news.site.com/articles/2026/06/15/product-launch";
4const response: GetV2PageReacts200Response = await getV2PageReacts(tenantId, urlId);
5console.log(response);
6

getV2PageReactUsers Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
idstringTak

Odpowiedź

Zwraca: GetV2PageReactUsers200Response

Przykład

Przykład getV2PageReactUsers
Copy Copy
1
2const tenantId: string = "7421";
3const urlId: string = "sports/london-marathon";
4const id: string = "reactUser-3fa85f64-5717-4562-b3fc-2c963f66afa6";
5const includeDeleted: boolean | undefined = undefined; // opcjonalna flaga (demonstracja)
6
7const result: GetV2PageReactUsers200Response = await getV2PageReactUsers(tenantId, urlId, id);
8

addPage Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createAPIPageDataCreateAPIPageDataTak

Odpowiedź

Zwraca: AddPageAPIResponse


deletePage Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: DeletePageAPIResponse


getOfflineUsers Internal Link

Byli komentujący na stronie, którzy NIE są obecnie online. Posortowane według displayName. Użyj tego po wyczerpaniu /users/online, aby wyświetlić sekcję "Członkowie". Paginacja kursorowa po commenterName: serwer przechodzi częściowy indeks {tenantId, urlId, commenterName} od afterName w przód za pomocą $gt, bez kosztu $skip.

Parameters

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
afterNamestringNie
afterUserIdstringNie

Odpowiedź

Zwraca: GetOfflineUsers200Response

Przykład

Przykład getOfflineUsers
Copy Copy
1
2const tenantId: string = 'tenant_prod_001';
3const urlId: string = 'article-2026-06-15-how-ai-impacts';
4const afterName: string = 'michael.smith';
5const afterUserId: string = 'user_72b9';
6
7const response: GetOfflineUsers200Response = await getOfflineUsers(tenantId, urlId, afterName, afterUserId);
8

getOnlineUsers Internal Link

Obecnie oglądający stronę: osoby, których sesja websocket jest subskrybowana na tę stronę w tej chwili. Zwraca anonCount + totalCount (subskrybenci całego pokoju, włącznie z anonimowymi widzami, których nie wyszczególniamy).

Parametry

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
afterNamestringNo
afterUserIdstringNo

Odpowiedź

Zwraca: GetOnlineUsers200Response

Przykład

Przykład użycia getOnlineUsers
Copy Copy
1
2const tenantId: string = 'tenant_14f9c3';
3const urlId: string = 'article_20250615';
4const afterName: string = 'marie.curie';
5const afterUserId: string = 'u_92b7';
6const result: GetOnlineUsers200Response = await getOnlineUsers(tenantId, urlId, afterName, afterUserId);
7

getPageByURLId Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak

Odpowiedź

Zwraca: GetPageByURLIdAPIResponse


getPages Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak

Odpowiedź

Zwraca: GetPagesAPIResponse


getPagesPublic Internal Link

Wyświetla listę stron dla najemcy. Używane przez klienta desktopowego FChat do wypełniania listy pokoi. Wymaga, aby enableFChat było ustawione na true w rozwiązanej konfiguracji niestandardowej dla każdej strony. Strony wymagające SSO są filtrowane na podstawie dostępu grupowego użytkownika wysyłającego żądanie.

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
cursorstringNie
limitnumberNie
qstringNie
sortByPagesSortByNie
hasCommentsbooleanNie

Odpowiedź

Zwraca: GetPagesPublic200Response

Przykład

Przykład getPagesPublic
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2c';
3const cursor: string = 'eyJwYWdlIjoiMTIwIn0';
4const limit: number = 25;
5const q: string = 'homepage hero';
6const hasComments: boolean = true;
7
8const response: GetPagesPublic200Response = await getPagesPublic(
9 tenantId,
10 cursor,
11 limit,
12 q,
13 undefined,
14 hasComments
15);
16

getUsersInfo Internal Link

Zbiorcze informacje o użytkownikach dla najemcy. Dla podanych userIds zwraca informacje wyświetlane z User / SSOUser. Używane przez widget komentarzy do wzbogacenia użytkowników, którzy właśnie pojawili się za pomocą zdarzenia obecności. Brak kontekstu strony: prywatność jest egzekwowana jednolicie (profile prywatne są zamaskowane).

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idsstringTak

Odpowiedź

Zwraca: GetUsersInfo200Response

Przykład

Przykład getUsersInfo
Copy Copy
1
2const tenantId: string = 'acme-tenant-007';
3const userIdsList: string[] = ['user_12a', 'user_34b', 'user_56c'];
4const separator: string | undefined = undefined; // opcjonalne; jeśli undefined, domyślnie przecinek
5const ids: string = userIdsList.join(separator ?? ',');
6const usersInfo: GetUsersInfo200Response = await getUsersInfo(tenantId, ids);
7

patchPage Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
updateAPIPageDataUpdateAPIPageDataTak

Odpowiedź

Zwraca: PatchPageAPIResponse


deletePendingWebhookEvent Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deletePendingWebhookEvent
Copy Copy
1
2const tenantId: string = "tenant_5f8d7a34";
3const id: string = "webhook_evt_987654321";
4const requestNote: string | undefined = undefined;
5const response: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
6

getPendingWebhookEventCount Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringNie
externalIdstringNie
eventTypestringNie
typestringNie
domainstringNie
attemptCountGTnumberNie

Odpowiedź

Zwraca: GetPendingWebhookEventCount200Response

Przykład

Przykład getPendingWebhookEventCount
Copy Copy
1
2const tenantId: string = 'tenant_9f8b3b';
3const commentId: string = 'cmt_1a2b3c';
4const eventType: string = 'comment.created';
5const domain: string = 'news-site.com';
6const attemptCountGT: number = 2;
7
8const result: GetPendingWebhookEventCount200Response = await getPendingWebhookEventCount(
9 tenantId,
10 commentId,
11 undefined, // externalId pominięty
12 eventType,
13 undefined, // type pominięty
14 domain,
15 attemptCountGT
16);
17

getPendingWebhookEvents Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringNie
externalIdstringNie
eventTypestringNie
typestringNie
domainstringNie
attemptCountGTnumberNie
skipnumberNie

Odpowiedź

Zwraca: GetPendingWebhookEvents200Response

Przykład

Przykład getPendingWebhookEvents
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a';
3const commentId: string = 'cmt_8a7d1';
4const eventType: string = 'comment.created';
5const domain: string = 'reviews.myshop.com';
6const attemptCountGT: number = 1;
7const skip: number = 0;
8
9const result: GetPendingWebhookEvents200Response = await getPendingWebhookEvents(
10 tenantId,
11 commentId,
12 undefined,
13 eventType,
14 undefined,
15 domain,
16 attemptCountGT,
17 skip
18);
19

createQuestionConfig Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
createQuestionConfigBodyCreateQuestionConfigBodyTak

Odpowiedź

Zwraca: CreateQuestionConfig200Response

Przykład

Przykład createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_9f3b1c2a";
3
4const createQuestionConfigBody: CreateQuestionConfigBody = {
5 name: "Product feedback",
6 key: "product_quality",
7 description: "Short survey question shown after posting a comment",
8 required: true,
9 renderingType: "singleChoice",
10 customOptions: [
11 { label: "Excellent", value: "5" },
12 { label: "Good", value: "4" },
13 { label: "Fair", value: "3" }
14 ] as QuestionConfigCustomOptionsInner[],
15 notifyModerators: false // parametr opcjonalny (przykład)
16};
17
18const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
19

deleteQuestionConfig Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteQuestionConfig
Copy Copy
1
2const tenantId: string = 'acme-corp-47a9';
3const id: string = 'qcfg_20260615_001';
4const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5

getQuestionConfig Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringYes
idstringYes

Odpowiedź

Zwraca: GetQuestionConfig200Response

Przykład

Przykład getQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-47";
3const questionId: string = "q-4f2b9a";
4const includeDrafts: boolean | undefined = undefined; // zastępczy parametr opcjonalny
5const result: GetQuestionConfig200Response = await getQuestionConfig(tenantId, questionId);
6console.log(result);
7

getQuestionConfigs Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
skipnumberNie

Odpowiedź

Zwraca: GetQuestionConfigs200Response

Przykład

Przykład getQuestionConfigs
Copy Copy
1
2const tenantId: string = "tenant_4c9f2b";
3const responseWithoutSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const skip: number = 50;
5const responseWithSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, skip);
6

updateQuestionConfig Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak
updateQuestionConfigBodyUpdateQuestionConfigBodyTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_9f3b8a2e-4c6d-4b4f-a1b2-9e8f7d6c5b3a";
3const id: string = "q_7c2e1b4a-5d6f-4a8b-9c3d-2e1f0b9a4c5d";
4const options: QuestionConfigCustomOptionsInner[] = [
5 { value: "1", label: "Very dissatisfied" },
6 { value: "2", label: "Dissatisfied" },
7 { value: "3", label: "Neutral" },
8 { value: "4", label: "Satisfied" },
9 { value: "5", label: "Very satisfied" }
10];
11const updateQuestionConfigBody: UpdateQuestionConfigBody = {
12 label: "How satisfied are you with the article?",
13 enabled: true,
14 required: false, // opcjonalny parametr (przykład)
15 options
16};
17const result: FlagCommentPublic200Response = await updateQuestionConfig(tenantId, id, updateQuestionConfigBody);
18

createQuestionResult Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
createQuestionResultBodyCreateQuestionResultBodyTak

Odpowiedź

Zwraca: CreateQuestionResult200Response

Przykład

Przykład createQuestionResult
Copy Copy
1
2const tenantId: string = 'fc-tenant-512';
3const meta: MetaItem[] = [{ key: 'source', value: 'article' }];
4const body: CreateQuestionResultBody = {
5 questionId: 'q-94',
6 userId: 'user_332',
7 answers: [{ optionId: 'opt_a', score: 1 }],
8 meta, // opcjonalne metadane
9} as CreateQuestionResultBody;
10const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, body);
11

deleteQuestionResult Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteQuestionResult
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-01";
3const id: string = "qres_9f8b7c3a";
4const response: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, id);
5const optionalResponse: FlagCommentPublic200Response | undefined = response;
6

getQuestionResult Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetQuestionResult200Response

Przykład

Przykład getQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a7c9';
3const questionId: string = 'q_8d4f1b2c3a';
4const options: { includeMeta?: boolean } = { includeMeta: true }; // demonstracja opcjonalnego parametru
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, questionId);
6const apiStatus: APIStatus | undefined = (result as unknown as { apiStatus?: APIStatus }).apiStatus;
7const question: QuestionResult | undefined = (result as unknown as { question?: QuestionResult }).question;
8

getQuestionResults Internal Link


Parametry

NameTypeWymaganeOpis
tenantIdstringTak
urlIdstringNie
userIdstringNie
startDatestringNie
questionIdstringNie
questionIdsstringNie
skipnumberNie

Odpowiedź

Zwraca: GetQuestionResults200Response

Przykład

Przykład getQuestionResults
Copy Copy
1
2const tenantId: string = 'fc-tenant-7a9c';
3const urlId: string = 'news/article-2026-06-15';
4const userId: string = 'user-8421';
5const startDate: string = '2026-05-01T00:00:00Z';
6const questionId: string = 'q-13';
7const questionIds: string = 'q-13,q-14';
8const skip: number = 20;
9const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, questionId, questionIds, skip);
10

updateQuestionResult Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
updateQuestionResultBodyUpdateQuestionResultBodyTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład użycia updateQuestionResult
Copy Copy
1
2const tenantId: string = "tenant_prod_84b2";
3const id: string = "question_9f3a";
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 outcome: "accepted",
6 confidence: 0.88,
7 moderatorId: "moderator_17",
8 notes: "Validated by automated review" // pole opcjonalne uwzględnione
9};
10const result: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
11

aggregateQuestionResults Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
questionIdstringNie
questionIdsArrayNie
urlIdstringNie
timeBucketAggregateTimeBucketNie
startDateDateNie
forceRecalculatebooleanNie

Odpowiedź

Zwraca: AggregateQuestionResults200Response

Przykład

Przykład aggregateQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_6f2b3c';
3const questionIds: Array<string> = ['q-7a1b2c', 'q-8d3e4f'];
4const urlId: string = 'url_9f8e7d';
5const startDate: Date = new Date('2025-01-01T00:00:00Z');
6const result: AggregateQuestionResults200Response = await aggregateQuestionResults(tenantId, undefined, questionIds, urlId, undefined, startDate, true);
7

bulkAggregateQuestionResults Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestTak
forceRecalculatebooleanNie

Odpowiedź

Zwraca: BulkAggregateQuestionResults200Response

Przykład

Przykład bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_0012";
3const bulkAggregateQuestionResultsRequest: BulkAggregateQuestionResultsRequest = {
4 items: [
5 {
6 questionId: "quality_score",
7 startTime: "2026-06-01T00:00:00Z",
8 endTime: "2026-06-14T00:00:00Z",
9 timeBucket: "day",
10 dimensions: ["threadId"]
11 }
12 ],
13 includeTotals: true
14};
15const forceRecalculate: boolean = false;
16const result: BulkAggregateQuestionResults200Response = await bulkAggregateQuestionResults(tenantId, bulkAggregateQuestionResultsRequest, forceRecalculate);
17

combineCommentsWithQuestionResults Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
questionIdstringNie
questionIdsArrayNie
urlIdstringNie
startDateDateNie
forceRecalculatebooleanNie
minValuenumberNie
maxValuenumberNie
limitnumberNie

Odpowiedź

Zwraca: CombineCommentsWithQuestionResults200Response

Przykład

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

addSSOUser Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createAPISSOUserDataCreateAPISSOUserDataTak

Odpowiedź

Zwraca: AddSSOUserAPIResponse


deleteSSOUser Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
deleteCommentsbooleanNie
commentDeleteModestringNie

Odpowiedź

Zwraca: DeleteSSOUserAPIResponse

getSSOUserByEmail Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
emailstringTak

Odpowiedź

Zwraca: GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
skipnumberNie

Odpowiedź

Zwraca: GetSSOUsers200Response


patchSSOUser Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
updateAPISSOUserDataUpdateAPISSOUserDataTak
updateCommentsbooleanNie

Odpowiedź

Zwraca: PatchSSOUserAPIResponse


putSSOUser Internal Link


Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak
updateAPISSOUserDataUpdateAPISSOUserDataTak
updateCommentsbooleanNie

Odpowiedź

Zwraca: PutSSOUserAPIResponse

Przykład

Przykład użycia putSSOUser
Copy Copy
1
2const tenantId: string = 'acme-enterprises-42';
3const id: string = 'usr-73a1b2';
4const updateAPISSOUserData: UpdateAPISSOUserData = {
5 email: 'marcus.ingram@acme.com',
6 givenName: 'Marcus',
7 familyName: 'Ingram',
8 roles: ['editor', 'project_owner'],
9 enabled: true
10};
11const result: PutSSOUserAPIResponse = await putSSOUser(tenantId, id, updateAPISSOUserData, true);
12

createSubscription Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataTak

Odpowiedź

Zwraca: CreateSubscriptionAPIResponse

Przykład

Przykład createSubscription
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-123";
3const createAPIUserSubscriptionData: CreateAPIUserSubscriptionData = {
4 userId: "user_98765",
5 planId: "pro_monthly",
6 paymentMethod: { type: "card", cardId: "card_abc123" },
7 autoRenew: true,
8 trialDays: 14, // przykładowy parametr opcjonalny
9 metadata: { campaign: "spring_launch" } // przykładowy parametr opcjonalny
10};
11const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
12

deleteSubscription Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
userIdstringNie

Odpowiedź

Zwraca: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
userIdstringNie

Odpowiedź

Zwraca: GetSubscriptionsAPIResponse

Przykład

Przykład użycia getSubscriptions
Copy Copy
1
2const tenantId: string = "contoso-9a1b2c";
3const userId: string = "u-482f6";
4const subscriptions: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId);
5const userSubscriptions: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId, userId);
6

updateSubscription Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataYes
userIdstringNo

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

Parametry

NameTypeRequiredDescription
tenantIdstringTak
yearNumbernumberNie
monthNumbernumberNie
dayNumbernumberNie
skipnumberNie

Odpowiedź

Zwraca: GetTenantDailyUsages200Response

Przykład

Przykład użycia getTenantDailyUsages
Copy Copy
1
2const tenantId: string = 'tenant_7a3c2e';
3const dailyUsages: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, 2026, 6, undefined, 0);
4

createTenantPackage Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createTenantPackageBodyCreateTenantPackageBodyTak

Odpowiedź

Zwraca: CreateTenantPackage200Response

Przykład

Przykład createTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_7890";
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: "Growth Plan",
5 maxSeats: 2500,
6 features: {
7 moderation: true,
8 analytics: true,
9 sso: { enabled: true, provider: "saml" }
10 },
11 billing: { interval: "monthly", priceCents: 19900 },
12 // parametr opcjonalny: notes nie jest wymagany, ale został podany
13 notes: "Onboarding bundle with priority support"
14};
15const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
16

deleteTenantPackage Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład użycia deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const packageId: string = 'pkg-2026-06-15-001';
4const dryRun: boolean | undefined = undefined; // przykład opcjonalnej flagi (nie wymagana przez funkcję)
5const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
6

getTenantPackage Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak

Response

Zwraca: GetTenantPackage200Response

Przykład

Przykład getTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_4b8c2a9f';
3const packageId: string = 'pkg_7d3e1b5c';
4const includeMetadata: boolean | undefined = true;
5const packageResponse: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
6

getTenantPackages Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
skipnumberNie

Odpowiedź

Zwraca: GetTenantPackages200Response

Przykład

Przykład getTenantPackages
Copy Copy
1
2const tenantId: string = 'tenant_8421';
3const packagesWithSkip: GetTenantPackages200Response = await getTenantPackages(tenantId, 25);
4const packagesWithoutSkip: GetTenantPackages200Response = await getTenantPackages(tenantId);
5

replaceTenantPackage Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak
replaceTenantPackageBodyReplaceTenantPackageBodyTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład replaceTenantPackage
Copy Copy
1
2const tenantId: string = "fastcomments-tenant-114";
3const id: string = "pkg-enterprise-2026-06";
4const replaceTenantPackageBody: ReplaceTenantPackageBody = {
5 name: "EnterpriseModeration",
6 version: "2.4.7",
7 enabled: true,
8 apiStatus: { state: "active", lastUpdated: "2026-06-10T12:00:00Z" },
9 customConfigParameters: { maxCommentLength: 1200, allowImages: true }, // ustawienia opcjonalne
10 voteStyle: { style: "updown" }
11};
12const result: FlagCommentPublic200Response = await replaceTenantPackage(tenantId, id, replaceTenantPackageBody);
13

updateTenantPackage Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringYes
idstringYes
updateTenantPackageBodyUpdateTenantPackageBodyYes

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a';
3const id: string = 'pkg_pro_2026';
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: 'Pro Plan',
6 monthlyPriceUsd: 49,
7 isActive: true,
8 features: ['moderation', 'analytics', 'sso'],
9 trialDays: 14 // parametr opcjonalny (przykład)
10};
11const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
12

createTenantUser Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
createTenantUserBodyCreateTenantUserBodyTak

Odpowiedź

Zwraca: CreateTenantUser200Response

Przykład

Przykład createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_7f4a2b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "jane.doe@example.com",
5 firstName: "Jane",
6 lastName: "Doe",
7 role: "commenter",
8 approved: true,
9 displayName: "Jane D." // opcjonalne: podanie przyjaznej nazwy
10};
11const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
12console.log(result);
13

deleteTenantUser Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
deleteCommentsstringNie
commentDeleteModestringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteTenantUser
Copy Copy
1
2const tenantId: string = "tenant_8f3a2b1c4d";
3const id: string = "user_62a4f9e0b7";
4const deleteComments: string = "true";
5const commentDeleteMode: string = "permanent";
6const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
7

getTenantUser Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetTenantUser200Response

Przykład

Przykład getTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_ab12c3';
3const id: string = 'user_9f8e7d';
4const response: GetTenantUser200Response = await getTenantUser(tenantId, id);
5console.log(response);
6

getTenantUsers Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
skipnumberNie

Odpowiedź

Zwraca: GetTenantUsers200Response

Przykład

Przykład użycia getTenantUsers
Copy Copy
1
2const tenantId: string = 'tenant_7b8f3a2c-9e4d-4f1a';
3const skip: number = 50;
4const usersResponseDefault: GetTenantUsers200Response = await getTenantUsers(tenantId);
5const usersResponsePaged: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
6

replaceTenantUser Internal Link


Parametry

NameTypeWymaganeOpis
tenantIdstringTak
idstringTak
replaceTenantUserBodyReplaceTenantUserBodyTak
updateCommentsstringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład replaceTenantUser
Copy Copy
1
2const tenantId: string = "f3b9a2d1-8b4e-4c6a-9f2b-1d5c4e6a7b8c";
3const id: string = "user_92f7c3b1";
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 externalId: "auth0|1234567890",
6 email: "jane.doe@company.com",
7 displayName: "Jane Doe",
8 roles: ["moderator"],
9 metadata: { department: "support" }
10};
11const updateComments: string = "reassign-comments-to-new-user";
12const response: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
13

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
redirectURLstringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład użycia sendLoginLink
Copy Copy
1
2const tenantId: string = "tenant_0a1b2c3d";
3const id: string = "user_984321";
4const redirectURL: string = "https://app.acme-corp.com/welcome";
5const responseWithRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
6const responseWithoutRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id);
7

updateTenantUser Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
idstringTak
updateTenantUserBodyUpdateTenantUserBodyTak
updateCommentsstringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład updateTenantUser
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const userId: string = 'u_72b9f4';
4const updateTenantUserBody: UpdateTenantUserBody = {
5 email: 'jane.doe@acme.com',
6 displayName: 'Jane Doe',
7 roles: ['moderator'],
8 suspended: false
9};
10const updateComments: string = 'Promoted to moderator after review of activity and community feedback';
11const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, userId, updateTenantUserBody, updateComments);
12

createTenant Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createTenantBodyCreateTenantBodyTak

Odpowiedź

Zwraca: CreateTenant200Response

Przykład

Przykład createTenant
Copy Copy
1
2const tenantId: string = 'acme-news-01';
3const createTenantBody: CreateTenantBody = {
4 name: 'Acme News',
5 domainConfiguration: { primaryDomain: 'news.acme.com', redirectHttps: true } as APIDomainConfiguration,
6 importedSites: [{ siteId: 'site-92', url: 'https://news.acme.com' }] as ImportedSiteType[],
7 billingInfo: { planId: 'business_monthly', contactEmail: 'billing@acme.com' } as BillingInfo
8};
9const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
10

deleteTenant Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
surestringNie

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład deleteTenant
Copy Copy
1
2const tenantId: string = 'tenant_742b9c';
3const flagId: string = 'flag_1a2b3c';
4const resultWithoutSure: FlagCommentPublic200Response = await deleteTenant(tenantId, flagId);
5const sureConfirmation: string = 'confirmed';
6const resultWithSure: FlagCommentPublic200Response = await deleteTenant(tenantId, flagId, sureConfirmation);
7

getTenant Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetTenant200Response

Przykład

getTenant Przykład
Copy Copy
1
2const tenantId: string = 'fc_tenant_6b3e2a';
3const id: string = 'site_42f1';
4const tenantResponse: GetTenant200Response = await getTenant(tenantId, id);
5const tenant: APITenant | undefined = tenantResponse.tenant;
6const primaryDomain: APIDomainConfiguration | undefined = tenant?.domainConfiguration?.[0];
7

getTenants Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringYes
metastringNo
skipnumberNo

Odpowiedź

Zwraca: GetTenants200Response

Przykład

Przykład getTenants
Copy Copy
1
2const tenantId: string = "fcom-tenant-8b4f2a1c";
3const meta: string = "include=domains,billing&status=active";
4const skip: number = 20;
5const response: GetTenants200Response = await getTenants(tenantId, meta, skip);
6console.log(response);
7

updateTenant Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
updateTenantBodyUpdateTenantBodyTak

Odpowiedź

Zwraca: FlagCommentPublic200Response

Przykład

Przykład użycia updateTenant
Copy Copy
1
2const tenantId: string = 'tenant_84f12';
3const id: string = 'flag_192b';
4const updateTenantBody: UpdateTenantBody = {
5 name: 'Acme Media',
6 billingInfo: { plan: 'enterprise', seats: 25, nextBillingDate: '2026-07-01' },
7 apiDomainConfiguration: { primaryDomain: 'comments.acme.com', additionalDomains: ['acme.com'] },
8 importedSites: [{ siteUrl: 'https://blog.acme.com', archived: false }], // opcjonalne
9 commentSettings: { htmlRenderingMode: 'sanitized', deletionMode: 'soft' } // opcjonalne
10} as UpdateTenantBody;
11const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
12

changeTicketState Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringYes
userIdstringYes
idstringYes
changeTicketStateBodyChangeTicketStateBodyYes

Odpowiedź

Zwraca: ChangeTicketState200Response

Przykład

Przykład changeTicketState
Copy Copy
1
2const tenantId: string = 'tenant_8a7d3f4b';
3const userId: string = 'user_5d1a9b2c';
4const id: string = 'ticket_1024';
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: 'closed',
7 notifyParticipants: true, // przykładowy parametr opcjonalny
8 comment: 'Resolved by support — follow-up not required.'
9};
10const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
11

createTicket Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
userIdstringTak
createTicketBodyCreateTicketBodyTak

Odpowiedź

Zwraca: CreateTicket200Response

Przykład

Przykład createTicket
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp';
3const userId: string = 'moderator_jane';
4const createTicketBody: CreateTicketBody = {
5 subject: 'Mass spam reports on article 789',
6 description: 'Multiple identical spam comments posted under article 789. Needs moderation and bulk removal.',
7 priority: 'high',
8 contactEmail: 'jane@acme-corp.com',
9 metadata: { articleId: '789', reportedCount: 12 } // przykładowe opcjonalne metadane
10};
11const ticket: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
12

getTicket Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
userIdstringNie

Odpowiedź

Zwraca: GetTicket200Response

Przykład

Przykład getTicket
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const ticketId: string = 'TCKT-20250615-42';
4const userId: string = 'user_84b2';
5
6const ticketWithUser: GetTicket200Response = await getTicket(tenantId, ticketId, userId);
7const ticketWithoutUser: GetTicket200Response = await getTicket(tenantId, ticketId);
8
9console.log(ticketWithUser.id, ticketWithoutUser.id);
10

getTickets Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
userIdstringNie
statenumberNie
skipnumberNie
limitnumberNie

Odpowiedź

Zwraca: GetTickets200Response

Przykład

Przykład użycia getTickets
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const userId: string = 'user_87b3';
4const state: number = 2;
5const skip: number = 0;
6const limit: number = 50;
7
8const tickets: GetTickets200Response = await getTickets(tenantId, userId, state, skip, limit);
9

getTranslations Internal Link

Parametry

NazwaTypWymaganeOpis
namespacestringTak
componentstringTak
localestringNie
useFullTranslationIdsbooleanNie

Odpowiedź

Zwraca: GetTranslations200Response

Przykład

Przykład użycia getTranslations
Copy Copy
1
2const namespaceName: string = 'site-ui';
3const componentName: string = 'comment-widget';
4const locale: string = 'fr-FR';
5const useFullTranslationIds: boolean = true;
6const translationsWithLocale: GetTranslations200Response = await getTranslations(namespaceName, componentName, locale, useFullTranslationIds);
7const translationsDefault: GetTranslations200Response = await getTranslations(namespaceName, componentName);
8

uploadImage Internal Link

Prześlij i zmień rozmiar obrazu

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
fileBlobTak
sizePresetSizePresetNie
urlIdstringNie

Odpowiedź

Zwraca: UploadImageResponse


getUserBadgeProgressById Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetUserBadgeProgressById200Response

Przykład

Przykład getUserBadgeProgressById
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-241';
3const badgeId: string = 'user-78b3d-badge-3';
4const response: GetUserBadgeProgressById200Response = await getUserBadgeProgressById(tenantId, badgeId);
5const progress: UserBadgeProgress | undefined = (response as unknown as { progress?: UserBadgeProgress }).progress;
6const percentComplete: number | undefined = progress?.percentage;
7console.log('Badge progress percent complete:', percentComplete);
8

getUserBadgeProgressByUserId Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
userIdstringTak

Odpowiedź

Zwraca: GetUserBadgeProgressById200Response

Przykład

Przykład getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = 'acme-inc-tenant-01';
3const userId: string = 'user_73c9b2';
4const progress: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
5
6async function maybeFetchProgress(tenant: string, user?: string): Promise<GetUserBadgeProgressById200Response | null> {
7 if (!user) return null;
8 return await getUserBadgeProgressByUserId(tenant, user);
9}
10
11const optionalResult: GetUserBadgeProgressById200Response | null = await maybeFetchProgress(tenantId, userId);
12

getUserBadgeProgressList Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
userIdstringNie
limitnumberNie
skipnumberNie

Odpowiedź

Zwraca: GetUserBadgeProgressList200Response

Przykład

Przykład getUserBadgeProgressList
Copy Copy
1
2const tenantId: string = 'tenant_4f3a2b9c';
3const userId: string = 'user_7721d';
4const limit: number = 20;
5const skip: number = 0;
6const result: GetUserBadgeProgressList200Response = await getUserBadgeProgressList(tenantId, userId, limit, skip);
7

createUserBadge Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
createUserBadgeParamsCreateUserBadgeParamsTak

Odpowiedź

Zwraca: CreateUserBadge200Response

Przykład

Przykład createUserBadge
Copy Copy
1
2const tenantId: string = "tenant_7f4b2a";
3const createUserBadgeParams: CreateUserBadgeParams = {
4 code: "top_contributor",
5 title: "Top Contributor",
6 description: "Awarded for 100 high-quality comments",
7 iconUrl: "https://cdn.fastcomments.com/badges/top_contributor.svg",
8 isActive: true,
9 criteria: { commentsRequired: 100 },
10 customConfig: { displayOnProfile: true } // parametr opcjonalny (przykład)
11};
12const result: CreateUserBadge200Response = await createUserBadge(tenantId, createUserBadgeParams);
13

deleteUserBadge Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: UpdateUserBadge200Response

Przykład

Przykład deleteUserBadge
Copy Copy
1
2const tenantId: string = "tenant_8b3f2c7a";
3const badgeIdOptional: string | undefined = Math.random() > 0.5 ? "badge_4f9a21" : undefined;
4const id: string = badgeIdOptional ?? "badge_backup_01";
5const result: UpdateUserBadge200Response = await deleteUserBadge(tenantId, id);
6

getUserBadge Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetUserBadge200Response

Przykład

Przykład użycia getUserBadge
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_6b8f2a1c';
4 const id: string = 'badge_9f3d4b2a';
5 const response: GetUserBadge200Response = await getUserBadge(tenantId, id);
6 const badge: UserBadge | undefined = response.userBadge;
7 const badgeName: string | undefined = badge?.name;
8 console.log('Retrieved badge name:', badgeName);
9})();
10

getUserBadges Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
userIdstringNie
badgeIdstringNie
typenumberNie
displayedOnCommentsbooleanNie
limitnumberNie
skipnumberNie

Odpowiedź

Zwraca: GetUserBadges200Response

Przykład

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

updateUserBadge Internal Link


Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak
updateUserBadgeParamsUpdateUserBadgeParamsTak

Odpowiedź

Zwraca: UpdateUserBadge200Response

Przykład

Przykład użycia updateUserBadge
Copy Copy
1
2const tenantId: string = "tenant_9a8b7c";
3const id: string = "badge_a1b2c3";
4const updateUserBadgeParams: UpdateUserBadgeParams = {
5 title: "Community Helper",
6 description: "Awarded for providing 50 helpful answers",
7 iconUrl: "https://cdn.fastcomments.com/badges/community-helper.png",
8 isActive: true,
9 expiryDate: undefined
10};
11const result: UpdateUserBadge200Response = await updateUserBadge(tenantId, id, updateUserBadgeParams);
12

getUserNotificationCount Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
ssostringNie

Odpowiedź

Zwraca: GetUserNotificationCount200Response

Przykład

Przykład użycia getUserNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload.signature';
4const notificationCountNoSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId);
5const notificationCountWithSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId, ssoToken);
6

getUserNotifications Internal Link


Parametry

NameTypeRequiredDescription
tenantIdstringTak
urlIdstringNie
pageSizenumberNie
afterIdstringNie
includeContextbooleanNie
afterCreatedAtnumberNie
unreadOnlybooleanNie
dmOnlybooleanNie
noDmbooleanNie
includeTranslationsbooleanNie
includeTenantNotificationsbooleanNie
ssostringNie

Odpowiedź

Zwraca: GetUserNotifications200Response

Przykład

Przykład getUserNotifications
Copy Copy
1
2const tenantId: string = "tenant_8271";
3const urlId: string = "https://www.news-site.com/articles/2026/06/15/ai-updates";
4const pageSize: number = 25;
5const afterId: string = "notif_abc123";
6const includeContext: boolean = true;
7const afterCreatedAt: number = Date.now() - 86_400_000;
8const unreadOnly: boolean = true;
9const dmOnly: boolean = false;
10const noDm: boolean = false;
11const includeTranslations: boolean = true;
12const includeTenantNotifications: boolean = true;
13const sso: string = "sso_token_xyz_987";
14
15const notifications: GetUserNotifications200Response = await getUserNotifications(
16 tenantId,
17 urlId,
18 pageSize,
19 afterId,
20 includeContext,
21 afterCreatedAt,
22 unreadOnly,
23 dmOnly,
24 noDm,
25 includeTranslations,
26 includeTenantNotifications,
27 sso
28);
29

resetUserNotificationCount Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
ssostringNie

Odpowiedź

Zwraca: ResetUserNotifications200Response

Przykład

Przykład resetUserNotificationCount
Copy Copy
1
2const tenantId: string = "tenant_8a3f2b6c";
3const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyX2QxMjM0IiwiaWF0IjoxNjI1MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
4const resetResponseWithSso: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId, ssoToken);
5const resetResponseWithoutSso: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId);
6

resetUserNotifications Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
afterIdstringNie
afterCreatedAtnumberNie
unreadOnlybooleanNie
dmOnlybooleanNie
noDmbooleanNie
ssostringNie

Odpowiedź

Zwraca: ResetUserNotifications200Response

Przykład

Przykład resetUserNotifications
Copy Copy
1
2const tenantId: string = "tenant_9b1f2";
3const afterId: string = "notification_0001";
4const afterCreatedAt: number = Date.now() - 60 * 60 * 1000; // godzinę temu
5const unreadOnly: boolean = true;
6const dmOnly: boolean = false;
7const noDm: boolean = false;
8const sso: string = "sso_session_7f2d";
9const result: ResetUserNotifications200Response = await resetUserNotifications(
10 tenantId,
11 afterId,
12 afterCreatedAt,
13 unreadOnly,
14 dmOnly,
15 noDm,
16 sso
17);
18

updateUserNotificationCommentSubscriptionStatus Internal Link

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

Parametry

NameTypeRequiredDescription
tenantIdstringTak
notificationIdstringTak
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumTak
commentIdstringTak
ssostringNie

Odpowiedź

Zwraca: UpdateUserNotificationStatus200Response

Przykład

Przykład updateUserNotificationCommentSubscriptionStatus
Copy Copy
1
2const tenantId: string = 'f3a9c8b0-4d2e-4f8a-9c3b-1234567890ab';
3const notificationId: string = '62a1f4d2-8c7b-4e1a-aaa1-abcdef123456';
4const commentId: string = '7e4a2b1c-1234-5678-90ab-cdef12345678';
5const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum = UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptedIn;
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ssoPayload.signature';
7const response: UpdateUserNotificationStatus200Response = await updateUserNotificationCommentSubscriptionStatus(tenantId, notificationId, optedInOrOut, commentId, sso);
8

updateUserNotificationPageSubscriptionStatus Internal Link

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

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
urlstringTak
pageTitlestringTak
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumTak
ssostringNie

Odpowiedź

Zwraca: UpdateUserNotificationStatus200Response

Przykład

Przykład updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2const tenantId: string = 'tenant_7f3b2';
3const urlId: string = 'article_987';
4const url: string = 'https://www.news-site.com/articles/2026/pasta-guide';
5const pageTitle: string = 'The Definitive Guide to Cooking Pasta';
6const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum = UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
7const sso: string = 'sso-token-62b9f1';
8const result: UpdateUserNotificationStatus200Response = await updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscribedOrUnsubscribed, sso);
9

updateUserNotificationStatus Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
notificationIdstringTak
newStatusUpdateUserNotificationStatusNewStatusEnumTak
ssostringNie

Odpowiedź

Zwraca: UpdateUserNotificationStatus200Response

Przykład

Przykład użycia updateUserNotificationStatus
Copy Copy
1
2const tenantId: string = 'tenant_5f2a8b9c';
3const notificationId: string = 'notif_987654321';
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.Read;
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.payload.signature';
6const result: UpdateUserNotificationStatus200Response = await updateUserNotificationStatus(tenantId, notificationId, newStatus, sso);
7

getUserPresenceStatuses Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdWSstringTak
userIdsstringTak

Odpowiedź

Zwraca: GetUserPresenceStatuses200Response

Przykład

Przykład getUserPresenceStatuses
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const urlIdWS: string = 'wss://comments.fastsite.com/ws/tenant_42';
4const userIds: string = 'user_9012,user_3478';
5const includePresenceMetadata: boolean | undefined = true; // przykład opcjonalnego parametru
6const presenceStatuses: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

searchUsers Internal Link

Parametry

NameTypeWymaganeOpis
tenantIdstringTak
urlIdstringTak
usernameStartsWithstringNie
mentionGroupIdsArrayNie
ssostringNie
searchSectionSearchUsersSearchSectionEnumNie

Odpowiedź

Zwraca: SearchUsers200Response

Przykład

Przykład searchUsers
Copy Copy
1
2const tenantId: string = 'tenant_7890';
3const urlId: string = 'news/2026-06-15-world-cup-final';
4const usernameStartsWith: string = 'mar';
5const mentionGroupIds: string[] = ['staff', 'trusted-commenters'];
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI0NTY3OCJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
7const searchSection: SearchUsersSearchSectionEnum = SearchUsersSearchSectionEnum.Commenters;
8const response: SearchUsers200Response = await searchUsers(tenantId, urlId, usernameStartsWith, mentionGroupIds, sso, searchSection);
9

getUser Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
idstringTak

Odpowiedź

Zwraca: GetUser200Response

Przykład

Przykład getUser
Copy Copy
1
2const tenantId: string = 'fastcomments_corp';
3const id: string = 'user_9f8b7c6d-5e4a-3b2c-1f0e-123456789abc';
4const response: GetUser200Response = await getUser(tenantId, id);
5const userEmail: string | undefined = response.user?.email;
6const displayName: string | undefined = response.user?.displayName
7

createVote Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
commentIdstringTak
directionCreateVoteDirectionEnumTak
userIdstringNie
anonUserIdstringNie

Odpowiedź

Zwraca: VoteComment200Response

Przykład

Przykład createVote
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-001';
3const commentId: string = 'cmt_8f3b2a9d';
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Up;
5const userId: string = 'user_5021';
6const anonUserId: string = 'anon_7a9c';
7
8const voteResponse: VoteComment200Response = await createVote(tenantId, commentId, direction, userId, anonUserId);
9

deleteVote Internal Link

Parametry

NameTypeRequiredDescription
tenantIdstringTak
idstringTak
editKeystringNie

Odpowiedź

Zwraca: DeleteCommentVote200Response

Przykład

Przykład użycia deleteVote
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_8421';
4 const id: string = 'vote_3f9b7c2a';
5 const editKey: string = 'edit_7Xk9LpQ';
6 const responseWithoutEdit: DeleteCommentVote200Response = await deleteVote(tenantId, id);
7 const responseWithEdit: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
8 console.log(responseWithoutEdit, responseWithEdit);
9})();
10

getVotes Internal Link

Parametry

NazwaTypWymaganeOpis
tenantIdstringTak
urlIdstringTak

Odpowiedź

Zwraca: GetVotes200Response

Przykład

Przykład getVotes
Copy Copy
1
2const tenantId: string = 'tenant_7f8e91c2';
3const urlId: string = 'https://www.sportsdaily.com/news/2026/06/15/championship-game-recap';
4const votes: GetVotes200Response = await getVotes(tenantId, urlId);
5console.log(votes);
6

getVotesForUser Internal Link

Parametry

NameTypWymaganeOpis
tenantIdstringTak
urlIdstringTak
userIdstringNie
anonUserIdstringNie

Odpowiedź

Zwraca: GetVotesForUser200Response

Przykład

Przykład getVotesForUser
Copy Copy
1
2const tenantId: string = 'tenant_9b8f7c6d';
3const urlId: string = 'articles/product-update-2026';
4const userId: string = 'user_c12345';
5const anonUserId: string = 'anon_7f4e2a';
6const votes: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, userId, anonUserId);
7

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.