FastComments.com

FastComments JavaScript/TypeScript SDK

Dit is de officiële JavaScript/TypeScript SDK voor FastComments.

Officiële JavaScript/TypeScript SDK voor de FastComments API

Repository

Bekijk op GitHub

Installatie Internal Link

npm install fastcomments-sdk

API-documentatie Internal Link


Volledige API-referentie: docs/api/README.md

Browser- vs Server-compatibiliteit Internal Link

Deze SDK gebruikt dubbele toegangspunten om optimale compatibiliteit te waarborgen en runtime-fouten te voorkomen:

  • fastcomments-sdk/browser - Browserveilige versie met native fetch
  • fastcomments-sdk/server - Volledige Node.js-versie met SSO-ondersteuning
  • fastcomments-sdk (standaard) - Alleen types, veilig om overal te importeren

Openbare vs beveiligde API's Internal Link


De SDK biedt drie hoofd-API-klassen:

  • DefaultApi - Beveiligde endpoints die uw API-sleutel vereisen voor authenticatie. Gebruik deze voor serverzijde-bewerkingen.
  • PublicApi - Publieke endpoints die kunnen worden benaderd zonder API-sleutel. Deze kunnen rechtstreeks vanuit browsers/mobiele apparaten/etc. worden aangeroepen.
  • HiddenApi - Interne/admin endpoints voor geavanceerde gebruikssituaties.

Voorbeeld: Public API gebruiken (browser-veilig)

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

const publicApi = new PublicApi();

// Haal reacties op voor een pagina (geen API-sleutel vereist)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Voorbeeld: Default API gebruiken (alleen serverzijde)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Houd dit geheim!
});
const defaultApi = new DefaultApi(config);

// Haal reacties op met volledige beheerdersrechten
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

SSO (Single Sign-On) integratie Internal Link

FastComments ondersteunt SSO om te integreren met uw bestaande gebruikersauthenticatiesysteem. SSO-functionaliteit is alleen beschikbaar in de server-export omdat het Node.js crypto-functies vereist.

Eenvoudige SSO (Alleen serverzijde)

Eenvoudige SSO moet aan de serverzijde worden gegenereerd en naar de client worden gestuurd:

// Code aan de serverzijde (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Maak eenvoudige SSO met de ingebouwde helper  
const userData = {
  username: 'john_doe',
  email: 'john@example.com',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg'
};

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

const ssoToken = sso.createToken();

// Stuur ssoToken naar uw client-side code
// Client-side code kan dit token vervolgens gebruiken met de browser SDK

Beveiligde SSO (Server-side, aanbevolen)

Beveiligde SSO moet aan de serverzijde worden geïmplementeerd en biedt betere beveiliging:

// Code aan de serverzijde (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Maak beveiligde SSO met de ingebouwde helper
const userData = {
  id: 'user-123',
  email: 'john@example.com',
  username: 'john_doe',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg',
  isAdmin: false,
  isModerator: false
};

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

const ssoConfig = sso.prepareToSend();

// Gebruik met API-aanroepen op de server
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Of stuur ssoConfig naar de client voor gebruik in de browser

SSO gebruiken vanuit de browser (met door de server gegenereerd token)

// Code aan de clientzijde (browser)
import { PublicApi } from 'fastcomments-sdk/browser';

// Haal SSO-token op van uw server-endpoint
const ssoToken = await fetch('/api/sso-token').then(r => r.json());

const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: ssoToken // Gebruik het door de server gegenereerde SSO-token
});

SSO met het aanmaken van een reactie

// Server-side: Maak SSO en reactie
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)
});

Veelvoorkomende gebruiksgevallen Internal Link

Reacties ophalen voor een pagina

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

Een reactie aanmaken

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

Stemmen op een reactie

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 voor omhoog stemmen, -1 voor omlaag stemmen
  }
});

Gebruikersbeheer (vereist API-sleutel)

// Zoeken naar gebruikers (vereist DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Live-evenementen (Realtime-updates) Internal Link

Abonneer op live-evenementen om realtime updates te ontvangen voor reacties, stemmen en andere activiteiten.

Paginaniveau-evenementen

Luister naar live-evenementen op een specifieke pagina (reacties, stemmen, enz.):

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

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

// Abonneer op live-evenementen voor een pagina
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (haal dit uit het antwoord van getComments)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Werk je UI bij met de nieuwe reactie
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Werk de stemaantallen in je UI bij
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // Geef true terug als het event is verwerkt
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Sluit de subscription wanneer klaar
subscription.close();

Abonneer op gebruikersgebeurtenissen

Luister naar gebruiker-specifieke gebeurtenissen (meldingen, vermeldingen, enz.):

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

const userConfig = {
  userIdWS: 'user-session-id', // Verkrijg dit uit het antwoord van getComments
};

// Abonneer op de persoonlijke feed van de gebruiker
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);

    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Toon melding in je UI
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }

    return true;
  },
  (isConnected: boolean) => {
    console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Sluit wanneer klaar
userSubscription.close();

Het verkrijgen van userIdWS

De userIdWS-parameter is vereist voor live-evenementen en kan worden verkregen uit API-responses:

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

// Extraheer userIdWS uit het antwoord
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Nu kun je je abonneren op live-evenementen
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

Broadcast-ID's Internal Link

Je ziet dat je in sommige API-aanroepen een broadcastId moet doorgeven. Wanneer je events ontvangt, krijg je deze ID terug, zodat je het event kunt negeren als je van plan bent om wijzigingen optimistisch op de client toe te passen (wat je waarschijnlijk wilt doen omdat het de beste ervaring biedt). Geef hier een UUID door. De ID moet uniek genoeg zijn om niet twee keer in een browsersessie voor te komen.

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() // Unieke ID voor deze bewerking
  }
});

Foutafhandeling 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

Aggregeert documenten door ze te groeperen (als groupBy wordt opgegeven) en meerdere bewerkingen toe te passen. Verschillende bewerkingen (bijv. sum, countDistinct, avg, etc.) worden ondersteund.

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
aggregationRequest AggregationRequest Ja
parentTenantId string Nee
includeStats boolean Nee

Antwoord

Retourneert: AggregationResponse


getAuditLogs Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
limit number Nee
skip number Nee
order SORTDIR Nee
after number Nee
before number Nee

Antwoord

Geeft terug: GetAuditLogs200Response

Voorbeeld

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

blockFromCommentPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
publicBlockFromCommentParams PublicBlockFromCommentParams Ja
sso string Nee

Response

Geeft terug: BlockFromCommentPublic200Response

Voorbeeld

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

unBlockCommentPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
publicBlockFromCommentParams PublicBlockFromCommentParams Ja
sso string Nee

Respons

Retourneert: UnBlockCommentPublic200Response

Voorbeeld

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

checkedCommentsForBlocked Internal Link

Parameters

Name Type Vereist Beschrijving
tenantId string Ja
commentIds string Ja
sso string Nee

Respons

Retourneert: CheckedCommentsForBlocked200Response

Voorbeeld

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

blockUserFromComment Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
id string Ja
blockFromCommentParams BlockFromCommentParams Ja
userId string Nee
anonUserId string Nee

Respons

Retourneert: BlockFromCommentPublic200Response

Voorbeeld

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

createCommentPublic Internal Link

Parameters

Name Type Required Description
tenantId string Ja
urlId string Ja
broadcastId string Ja
commentData CommentData Ja
sessionId string Nee
sso string Nee

Respons

Geeft terug: CreateCommentPublic200Response

Voorbeeld

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

deleteComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
contextUserId string Nee
isLive boolean Nee

Response

Retourneert: DeleteComment200Response

Voorbeeld

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

deleteCommentPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
commentId string Yes
broadcastId string Yes
editKey string No
sso string No

Respons

Retourneert: DeleteCommentPublic200Response

Voorbeeld

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

deleteCommentVote Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
voteId string Ja
urlId string Ja
broadcastId string Ja
editKey string Nee
sso string Nee

Respons

Retourneert: DeleteCommentVote200Response

Voorbeeld

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

flagComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
userId string Nee
anonUserId string Nee

Respons

Retourneert: FlagComment200Response

Voorbeeld

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

getComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: GetComment200Response

Voorbeeld

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

getComments Internal Link

Parameters

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

Respons

Retourneert: GetComments200Response

Voorbeeld

getComments Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // pagina (page)
6 20, // limiet (limit)
7 0, // overslaan (skip)
8 true, // als boom (asTree)
9 1, // kinderen overslaan (skipChildren)
10 3, // limiet voor kinderen (limitChildren)
11 4, // maximale boomdiepte (maxTreeDepth)
12 'articles/2026/new-product-launch', // URL-id (urlId)
13 'user_7890', // gebruiker-id (userId)
14 'anon_4f3b2', // anonieme gebruiker-id (anonUserId)
15 undefined, // context gebruiker-id (contextUserId)
16 '#launch', // hashtag (hashTag)
17 undefined // ouder-id (parentId)
18);
19

getCommentsPublic Internal Link

req tenantId urlId

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
urlId string Ja
page number Nee
direction SortDirections Nee
sso string Nee
skip number Nee
skipChildren number Nee
limit number Nee
limitChildren number Nee
countChildren boolean Nee
fetchPageForCommentId string Nee
includeConfig boolean Nee
countAll boolean Nee
includei10n boolean Nee
locale string Nee
modules string Nee
isCrawler boolean Nee
includeNotificationCount boolean Nee
asTree boolean Nee
maxTreeDepth number Nee
useFullTranslationIds boolean Nee
parentId string Nee
searchText string Nee
hashTags Array Nee
userId string Nee
customConfigStr string Nee
afterCommentId string Nee
beforeCommentId string Nee

Respons

Geeft terug: GetCommentsPublic200Response

Voorbeeld

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

getCommentText Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
commentId string Ja
editKey string Nee
sso string Nee

Antwoord

Retourneert: GetCommentText200Response

Voorbeeld

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

getCommentVoteUserNames Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
commentId string Yes
dir number Yes
sso string No

Respons

Retourneert: GetCommentVoteUserNames200Response

Voorbeeld

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

lockComment Internal Link

Parameters

Name Type Required Description
tenantId string Ja
commentId string Ja
broadcastId string Ja
sso string Nee

Respons

Retourneert: LockComment200Response

Voorbeeld

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

pinComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
broadcastId string Ja
sso string Nee

Respons

Retourneert: PinComment200Response

Voorbeeld

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

saveComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createCommentParams CreateCommentParams Ja
isLive boolean Nee
doSpamCheck boolean Nee
sendEmails boolean Nee
populateNotifications boolean Nee

Respons

Retourneert: SaveComment200Response

Voorbeeld

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

saveCommentsBulk Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createCommentParams Array Ja
isLive boolean Nee
doSpamCheck boolean Nee
sendEmails boolean Nee
populateNotifications boolean Nee

Respons

Retourneert: Array<SaveComment200Response

Voorbeeld

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

setCommentText Internal Link

Parameters

Naam Type Vereist Omschrijving
tenantId string Ja
commentId string Ja
broadcastId string Ja
commentTextUpdateRequest CommentTextUpdateRequest Ja
editKey string Nee
sso string Nee

Antwoord

Retourneert: SetCommentText200Response

Voorbeeld

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

unBlockUserFromComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
unBlockFromCommentParams UnBlockFromCommentParams Ja
userId string Nee
anonUserId string Nee

Response

Retourneert: UnBlockCommentPublic200Response

Voorbeeld

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

unFlagComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
userId string Nee
anonUserId string Nee

Respons

Retourneert: FlagComment200Response

Voorbeeld

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

unLockComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
broadcastId string Ja
sso string Nee

Respons

Retourneert: LockComment200Response

Voorbeeld

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

unPinComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
broadcastId string Ja
sso string Nee

Respons

Geeft terug: PinComment200Response

Voorbeeld

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

updateComment Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
updatableCommentParams UpdatableCommentParams Ja
contextUserId string Nee
doSpamCheck boolean Nee
isLive boolean Nee

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

voteComment Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
urlId string Ja
broadcastId string Ja
voteBodyParams VoteBodyParams Ja
sessionId string Nee
sso string Nee

Reactie

Retourneert: VoteComment200Response

Voorbeeld

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

addDomainConfig Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
addDomainConfigParams AddDomainConfigParams Ja

Respons

Retourneert: AddDomainConfig200Response

deleteDomainConfig Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
domain string Ja

Respons

Geeft terug: DeleteDomainConfig200Response


getDomainConfig Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
domain string Ja

Antwoord

Retourneert: GetDomainConfig200Response


getDomainConfigs Internal Link


Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja

Antwoord

Retourneert: GetDomainConfigs200Response


patchDomainConfig Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
domainToUpdate string Ja
patchDomainConfigParams PatchDomainConfigParams Ja

Respons

Retourneert: GetDomainConfig200Response


putDomainConfig Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
domainToUpdate string Ja
updateDomainConfigParams UpdateDomainConfigParams Ja

Respons

Retourneert: GetDomainConfig200Response

createEmailTemplate Internal Link

Parameters

Name Type Required Description
tenantId string Ja
createEmailTemplateBody CreateEmailTemplateBody Ja

Respons

Retourneert: CreateEmailTemplate200Response

Voorbeeld

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

deleteEmailTemplate Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Antwoord

Retourneert: FlagCommentPublic200Response

Voorbeeld

deleteEmailTemplate Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_7f4c9d1e';
3const templateId: string = 'tmpl_welcome_2024-03';
4const notifyAdmin: boolean | undefined = true; // voorbeeld van optionele parameter
5
6const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
7

deleteEmailTemplateRenderError Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
errorId string Ja

Antwoord

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getEmailTemplate Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Antwoord

Retourneert: GetEmailTemplate200Response

Voorbeeld

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

getEmailTemplateDefinitions Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja

Respons

Retourneert: GetEmailTemplateDefinitions200Response

Voorbeeld

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

getEmailTemplateRenderErrors Internal Link

Parameters

Name Type Required Beschrijving
tenantId string Yes
id string Yes
skip number No

Antwoord

Retourneert: GetEmailTemplateRenderErrors200Response

Voorbeeld

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

getEmailTemplates Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
skip number Nee

Antwoord

Retourneert: GetEmailTemplates200Response

Voorbeeld

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

renderEmailTemplate Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
renderEmailTemplateBody RenderEmailTemplateBody Ja
locale string Nee

Respons

Retourneert: RenderEmailTemplate200Response

Voorbeeld

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

updateEmailTemplate Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
updateEmailTemplateBody UpdateEmailTemplateBody Ja

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getEventLog Internal Link

vereist tenantId urlId userIdWS

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
urlId string Ja
userIdWS string Ja
startTime number Ja
endTime number Ja

Antwoord

Retourneert: GetEventLog200Response

Voorbeeld

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

getGlobalEventLog Internal Link


req tenantId urlId userIdWS

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
urlId string Ja
userIdWS string Ja
startTime number Ja
endTime number Ja

Respons

Geeft terug: GetEventLog200Response

Voorbeeld

getGlobalEventLog Voorbeeld
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // 7 dagen geleden
6const endTimeOptional: number | undefined = undefined; // optioneel einde van tijdsbestek
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

createFeedPost Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createFeedPostParams CreateFeedPostParams Ja
broadcastId string Nee
isLive boolean Nee
doSpamCheck boolean Nee
skipDupCheck boolean Nee

Respons

Retourneert: CreateFeedPost200Response

Voorbeeld

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

createFeedPostPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createFeedPostParams CreateFeedPostParams Ja
broadcastId string Nee
sso string Nee

Antwoord

Retourneert: CreateFeedPostPublic200Response

Voorbeeld

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

deleteFeedPostPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
postId string Ja
broadcastId string Nee
sso string Nee

Respons

Retourneert: DeleteFeedPostPublic200Response

Voorbeeld

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

getFeedPosts Internal Link

req tenantId afterId

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
afterId string Nee
limit number Nee
tags Array Nee

Antwoord

Retourneert: GetFeedPosts200Response

Voorbeeld

getFeedPosts Voorbeeld
Copy Copy
1
2const initialPage: GetFeedPosts200Response = await getFeedPosts('tenant_9f1b3d', undefined, 20, ['sports', 'local']);
3const nextPage: GetFeedPosts200Response = await getFeedPosts('tenant_9f1b3d', 'post_abc123', 20, ['sports', 'local']);
4

getFeedPostsPublic Internal Link

req tenantId afterId

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
afterId string Nee
limit number Nee
tags Array Nee
sso string Nee
isCrawler boolean Nee
includeUserInfo boolean Nee

Antwoord

Retourneert: GetFeedPostsPublic200Response

Voorbeeld

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

getFeedPostsStats Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
postIds Array Ja
sso string Nee

Respons

Retourneert: GetFeedPostsStats200Response

Voorbeeld

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

getUserReactsPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
postIds Array Nee
sso string Nee

Respons

Retourneert: GetUserReactsPublic200Response

Voorbeeld

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

reactFeedPostPublic Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
postId string Ja
reactBodyParams ReactBodyParams Ja
isUndo boolean Nee
broadcastId string Nee
sso string Nee

Respons

Retourneert: ReactFeedPostPublic200Response

Voorbeeld

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

updateFeedPost Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
feedPost FeedPost Ja

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

updateFeedPostPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
postId string Ja
updateFeedPostParams UpdateFeedPostParams Ja
broadcastId string Nee
sso string Nee

Respons

Retourneert: CreateFeedPostPublic200Response

Voorbeeld

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

flagCommentPublic Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
isFlagged boolean Ja
sso string Nee

Respons

Geeft terug: FlagCommentPublic200Response

Voorbeeld

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

addHashTag Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Nee
createHashTagBody CreateHashTagBody Nee

Respons

Retourneert: AddHashTag200Response

Voorbeeld

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

addHashTagsBulk Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Nee
bulkCreateHashTagsBody BulkCreateHashTagsBody Nee

Antwoord

Retourneert: AddHashTagsBulk200Response

Voorbeeld

addHashTagsBulk Voorbeeld
Copy Copy
1
2// Maak tenant-identificator aan (optionele parameter)
3const tenantId: string = "tenant_9f8c2b7a";
4
5// Bereid individuele tagitems voor
6const tag1: BulkCreateHashTagsBodyTagsInner = {
7 name: "product-feedback",
8 label: "Product Feedback",
9 color: "#1f8a70",
10 description: "User suggestions and enhancement requests",
11 isActive: true
12};
13
14const tag2: BulkCreateHashTagsBodyTagsInner = {
15 name: "bug-report",
16 label: "Bug Report",
17 color: "#d64545",
18 description: "User-reported defects and issues",
19 isActive: true
20};
21
22// Body voor bulkcreatie (optionele parameter)
23const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
24 tags: [tag1, tag2]
25};
26
27// Roep de globale async-functie aan en wijs het getypeerde resultaat toe
28const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
29

deleteHashTag Internal Link

Parameters

Naam Type Vereist Beschrijving
tag string Ja
tenantId string Nee
deleteHashTagRequest DeleteHashTagRequest Nee

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getHashTags Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
page number Nee

Respons

Retourneert: GetHashTags200Response

Voorbeeld

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

patchHashTag Internal Link

Parameters

Naam Type Verplicht Beschrijving
tag string Ja
tenantId string Nee
updateHashTagBody UpdateHashTagBody Nee

Response

Retourneert: PatchHashTag200Response

Voorbeeld

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

createModerator Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createModeratorBody CreateModeratorBody Ja

Respons

Geeft terug: CreateModerator200Response

Voorbeeld

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

deleteModerator Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
id string Ja
sendEmail string Nee

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getModerator Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Antwoord

Retourneert: GetModerator200Response

Voorbeeld

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

getModerators Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
skip number Nee

Respons

Retourneert: GetModerators200Response

Voorbeeld

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

sendInvite Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
fromName string Ja

Antwoord

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

updateModerator Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
updateModeratorBody UpdateModeratorBody Ja

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

deleteNotificationCount Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
id string Yes

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getCachedNotificationCount Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Antwoord

Retourneert: GetCachedNotificationCount200Response

Voorbeeld

getCachedNotificationCount Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'user_00012345';
4const includeUnreadOnly: boolean | undefined = true; // optionele parametervlag (gedemonstreerd)
5const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
6

getNotificationCount Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
userId string Nee
urlId string Nee
fromCommentId string Nee
viewed boolean Nee
type string Nee

Respons

Retourneert: GetNotificationCount200Response

Voorbeeld

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

getNotifications Internal Link

Parameters

Name Type Verplicht Beschrijving
tenantId string Ja
userId string Nee
urlId string Nee
fromCommentId string Nee
viewed boolean Nee
type string Nee
skip number Nee

Respons

Retourneert: GetNotifications200Response

Voorbeeld

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

updateNotification Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
updateNotificationBody UpdateNotificationBody Ja
userId string Nee

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

addPage Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
createAPIPageData CreateAPIPageData Ja

Antwoord

Retourneert: AddPageAPIResponse


deletePage Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Antwoord

Retourneert: DeletePageAPIResponse


getPageByURLId Internal Link


Parameters

Name Type Required Description
tenantId string Ja
urlId string Ja

Respons

Retourneert: GetPageByURLIdAPIResponse


getPages Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja

Response

Retourneert: GetPagesAPIResponse


patchPage Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
updateAPIPageData UpdateAPIPageData Ja

Antwoord

Retourneert: PatchPageAPIResponse


deletePendingWebhookEvent Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
id string Ja

Reactie

Retourneert: FlagCommentPublic200Response

Voorbeeld

deletePendingWebhookEvent Voorbeeld
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42f7c9b1';
4 const id: string = 'pending_webhook_ev_8f3b9a2d';
5 const reason?: string = undefined; // voorbeeld van een optionele parameter (niet vereist door de functie)
6 const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
7 console.log(result);
8})();
9

getPendingWebhookEventCount Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Nee
externalId string Nee
eventType string Nee
type string Nee
domain string Nee
attemptCountGT number Nee

Response

Retourneert: GetPendingWebhookEventCount200Response

Voorbeeld

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

getPendingWebhookEvents Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Nee
externalId string Nee
eventType string Nee
type string Nee
domain string Nee
attemptCountGT number Nee
skip number Nee

Respons

Retourneert: GetPendingWebhookEvents200Response

Voorbeeld

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

createQuestionConfig Internal Link

Parameters

Name Type Required Description
tenantId string Ja
createQuestionConfigBody CreateQuestionConfigBody Ja

Response

Retourneert: CreateQuestionConfig200Response

Voorbeeld

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

deleteQuestionConfig Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getQuestionConfig Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: GetQuestionConfig200Response

Voorbeeld

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

getQuestionConfigs Internal Link

Parameters

Name Type Required Description
tenantId string Ja
skip number Nee

Respons

Retourneert: GetQuestionConfigs200Response

Voorbeeld

getQuestionConfigs Voorbeeld
Copy Copy
1
2const tenantId: string = "tenant_acme_9876";
3const configsWithoutSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const configsWithSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, 20);
5

updateQuestionConfig Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
id string Yes
updateQuestionConfigBody UpdateQuestionConfigBody Yes

Response

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

createQuestionResult Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
createQuestionResultBody CreateQuestionResultBody Ja

Respons

Retourneert: CreateQuestionResult200Response

Voorbeeld

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

deleteQuestionResult Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

Voorbeeld deleteQuestionResult
Copy Copy
1
2const tenantId: string = "org-82479";
3const questionId: string = "q-6a3d2e1f";
4const includeArchived?: boolean = false; // optionele parameter die een alternatieve doelkeuze demonstreert
5const targetId: string = includeArchived ? "q-archived-112233" : questionId;
6const result: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, targetId);
7

getQuestionResult Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Response

Geeft terug: GetQuestionResult200Response

Voorbeeld

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

getQuestionResults Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
urlId string Nee
userId string Nee
startDate string Nee
questionId string Nee
questionIds string Nee
skip number Nee

Respons

Retourneert: GetQuestionResults200Response

Voorbeeld

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

updateQuestionResult Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
id string Yes
updateQuestionResultBody UpdateQuestionResultBody Yes

Respons

Geeft terug: FlagCommentPublic200Response

Voorbeeld

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

aggregateQuestionResults Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
questionId string Nee
questionIds Array Nee
urlId string Nee
timeBucket AggregateTimeBucket Nee
startDate Date Nee
forceRecalculate boolean Nee

Respons

Retourneert: AggregateQuestionResults200Response

Voorbeeld

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

bulkAggregateQuestionResults Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest Ja
forceRecalculate boolean Nee

Respons

Retourneert: BulkAggregateQuestionResults200Response

Voorbeeld

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

combineCommentsWithQuestionResults Internal Link

Parameters

Name Type Required Description
tenantId string Ja
questionId string Nee
questionIds Array Nee
urlId string Nee
startDate Date Nee
forceRecalculate boolean Nee
minValue number Nee
maxValue number Nee
limit number Nee

Respons

Retourneert: CombineCommentsWithQuestionResults200Response

Voorbeeld

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

addSSOUser Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createAPISSOUserData CreateAPISSOUserData Ja

Antwoord

Retourneert: AddSSOUserAPIResponse


deleteSSOUser Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
deleteComments boolean Nee
commentDeleteMode string Nee

Respons

Geeft terug: DeleteSSOUserAPIResponse


getSSOUserByEmail Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
email string Ja

Response

Retourneert: GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
skip number Nee

Respons

Retourneert: GetSSOUsers200Response

patchSSOUser Internal Link

Parameters

Name Type Required Description
tenantId string Ja
id string Ja
updateAPISSOUserData UpdateAPISSOUserData Ja
updateComments boolean Nee

Response

Retourneert: PatchSSOUserAPIResponse

putSSOUser Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
updateAPISSOUserData UpdateAPISSOUserData Ja
updateComments boolean Nee

Antwoord

Retourneert: PutSSOUserAPIResponse

createSubscription Internal Link

Parameters

Name Type Required Description
tenantId string Ja
createAPIUserSubscriptionData CreateAPIUserSubscriptionData Ja

Antwoord

Retourneert: CreateSubscriptionAPIResponse

Voorbeeld

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

deleteSubscription Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
userId string Nee

Antwoord

Retourneert: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
userId string Nee

Respons

Retourneert: GetSubscriptionsAPIResponse

Voorbeeld

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

updateSubscription Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
id string Yes
updateAPIUserSubscriptionData UpdateAPIUserSubscriptionData Yes
userId string No

Respons

Retourneert: UpdateSubscriptionAPIResponse

Voorbeeld

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

getTenantDailyUsages Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
yearNumber number Nee
monthNumber number Nee
dayNumber number Nee
skip number Nee

Respons

Retourneert: GetTenantDailyUsages200Response

Voorbeeld

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

createTenantPackage Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createTenantPackageBody CreateTenantPackageBody Ja

Respons

Geeft terug: CreateTenantPackage200Response

Voorbeeld

createTenantPackage Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: 'Standard Moderation',
5 description: 'Suitable for small-to-medium sites: basic moderation, spam rules, and analytics',
6 maxCommentsPerMinute: 50,
7 allowAnonymousComments: false, // optionele parameter opgegeven
8 // optionele velden weggelaten: bijv. geavanceerde moderatieregels, aangepaste CSS
9 customConfigParameters: {
10 enableProfanityFilter: true,
11 imageContentProfanityLevel: 'medium' // illustratieve waarde; gebruikt CustomConfigParameters-vorm
12 }
13};
14const response: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
15console.log(response);
16

deleteTenantPackage Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
id string Yes

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

deleteTenantPackage Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_987';
3const packageId: string = 'pkg_pro_2026_01';
4type DeleteOptions = { force?: boolean; notify?: boolean };
5const options: DeleteOptions = { force: true }; // optionele parameters gedemonstreerd
6const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
7

getTenantPackage Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: GetTenantPackage200Response

Voorbeeld

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

getTenantPackages Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
skip number Nee

Antwoord

Retourneert: GetTenantPackages200Response

Voorbeeld

getTenantPackages Voorbeeld
Copy Copy
1
2const tenantId: string = "tenant_7f8e3b4c";
3const skip: number = 20;
4const packagesDefault: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const packagesWithSkip: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

replaceTenantPackage Internal Link

Parameters

Name Type Required Description
tenantId string Ja
id string Ja
replaceTenantPackageBody ReplaceTenantPackageBody Ja

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

updateTenantPackage Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string Yes
updateTenantPackageBody UpdateTenantPackageBody Yes

Response

Retourneert: FlagCommentPublic200Response

Example

updateTenantPackage Voorbeeld
Copy Copy
1
2const tenantId: string = "tenant_3b7f9d-prod";
3const id: string = "pkg_enterprise_2026";
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: "Enterprise Plus",
6 isActive: true,
7 // optionele velden opzettelijk weggelaten (bijv. description, limits)
8} as UpdateTenantPackageBody;
9const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
10

createTenantUser Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createTenantUserBody CreateTenantUserBody Ja

Respons

Geeft terug: CreateTenantUser200Response

Voorbeeld

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

deleteTenantUser Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
deleteComments string Nee
commentDeleteMode string Nee

Antwoord

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getTenantUser Internal Link

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
id string Ja

Respons

Geeft terug: GetTenantUser200Response

Voorbeeld

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

getTenantUsers Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
skip number Nee

Response

Retourneert: GetTenantUsers200Response

Example

getTenantUsers Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_prod_8a3f2c';
3const skip: number = 50;
4const usersWithSkip: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
5const usersNoSkip: GetTenantUsers200Response = await getTenantUsers(tenantId);
6

replaceTenantUser Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
replaceTenantUserBody ReplaceTenantUserBody Ja
updateComments string Nee

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
redirectURL string Nee

Response

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

updateTenantUser Internal Link


Parameters

Name Type Required Description
tenantId string Ja
id string Ja
updateTenantUserBody UpdateTenantUserBody Ja
updateComments string Nee

Respons

Geeft terug: FlagCommentPublic200Response

Voorbeeld

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

createTenant Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createTenantBody CreateTenantBody Ja

Respons

Geeft terug: CreateTenant200Response

Voorbeeld

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

deleteTenant Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
sure string Nee

Respons

Retourneert: FlagCommentPublic200Response

Voorbeeld

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

getTenant Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: GetTenant200Response

Voorbeeld

getTenant Voorbeeld
Copy Copy
1
2const tenantId: string = "tenant_9f4b2c1a";
3const idOverride: string | undefined = undefined; // optionele override, indien beschikbaar
4const id: string = idOverride ?? "site_3e7a6b2f";
5const response: GetTenant200Response = await getTenant(tenantId, id);
6console.log(response);
7

getTenants Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
meta string Nee
skip number Nee

Respons

Retourneert: GetTenants200Response

Voorbeeld

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

updateTenant Internal Link

Parameters

Name Type Required Description
tenantId string Yes
id string Yes
updateTenantBody UpdateTenantBody Yes

Antwoord

Retourneert: FlagCommentPublic200Response

Voorbeeld

updateTenant Voorbeeld
Copy Copy
1
2const tenantId: string = "tenant_4821";
3const id: string = "flag_7b9e";
4const billingInfo: BillingInfo | undefined = undefined; // optioneel, weglaten om huidige facturering te behouden
5const updateTenantBody: UpdateTenantBody = {
6 name: "Acme News Comments",
7 defaultDomain: "comments.acme.com",
8 ...(billingInfo ? { billingInfo } : {})
9};
10const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
11

changeTicketState Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
userId string Ja
id string Ja
changeTicketStateBody ChangeTicketStateBody Ja

Respons

Retourneert: ChangeTicketState200Response

Voorbeeld

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

createTicket Internal Link

Parameters

Name Type Vereist Beschrijving
tenantId string Ja
userId string Ja
createTicketBody CreateTicketBody Ja

Respons

Geeft terug: CreateTicket200Response

Voorbeeld

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

getTicket Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
userId string Nee

Respons

Retourneert: GetTicket200Response

Voorbeeld

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

getTickets Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
userId string Nee
state number Nee
skip number Nee
limit number Nee

Antwoord

Geeft terug: GetTickets200Response

Voorbeeld

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

uploadImage Internal Link

Een afbeelding uploaden en formaat wijzigen

Parameters

Naam Type Verplicht Beschrijving
tenantId string Ja
file Blob Ja
sizePreset SizePreset Nee
urlId string Nee

Respons

Geeft terug: UploadImageResponse

getUserBadgeProgressById Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Antwoord

Retourneert: GetUserBadgeProgressById200Response

Voorbeeld

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

getUserBadgeProgressByUserId Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
userId string Ja

Respons

Retourneert: GetUserBadgeProgressById200Response

Voorbeeld

getUserBadgeProgressByUserId Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_7f9c2d3b';
3const maybeUserId: string | undefined = 'user_4b8e1f9a'; // optionele bron (kan undefined zijn)
4const userId: string = maybeUserId ?? 'user_fallback0001';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
6console.log(result);
7

getUserBadgeProgressList Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
userId string Nee
limit number Nee
skip number Nee

Antwoord

Retourneert: GetUserBadgeProgressList200Response

Voorbeeld

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

createUserBadge Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
createUserBadgeParams CreateUserBadgeParams Ja

Respons

Retourneert: CreateUserBadge200Response

Voorbeeld

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

deleteUserBadge Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: UpdateUserBadge200Response

Voorbeeld

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

getUserBadge Internal Link

Parameters

Name Type Required Description
tenantId string Ja
id string Ja

Respons

Retourneert: GetUserBadge200Response

Voorbeeld

getUserBadge Voorbeeld
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const id: string = "badge_8c7d2f";
4const response: GetUserBadge200Response = await getUserBadge(tenantId, id);
5

getUserBadges Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
userId string Nee
badgeId string Nee
type number Nee
displayedOnComments boolean Nee
limit number Nee
skip number Nee

Antwoord

Retourneert: GetUserBadges200Response

Voorbeeld

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

updateUserBadge Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
updateUserBadgeParams UpdateUserBadgeParams Ja

Respons

Retourneert: UpdateUserBadge200Response

Voorbeeld

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

getUserNotificationCount Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
sso string Nee

Respons

Retourneert: GetUserNotificationCount200Response

Voorbeeld

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

getUserNotifications Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
pageSize number Nee
afterId string Nee
includeContext boolean Nee
afterCreatedAt number Nee
unreadOnly boolean Nee
dmOnly boolean Nee
noDm boolean Nee
includeTranslations boolean Nee
sso string Nee

Respons

Retourneert: GetUserNotifications200Response

Voorbeeld

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

resetUserNotificationCount Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
sso string Nee

Respons

Retourneert: ResetUserNotifications200Response

Voorbeeld

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

resetUserNotifications Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
afterId string Nee
afterCreatedAt number Nee
unreadOnly boolean Nee
dmOnly boolean Nee
noDm boolean Nee
sso string Nee

Respons

Retourneert: ResetUserNotifications200Response

Voorbeeld

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

updateUserNotificationCommentSubscriptionStatus Internal Link


Schakel meldingen in of uit voor een specifieke opmerking.

Parameters

Name Type Required Description
tenantId string Ja
notificationId string Ja
optedInOrOut UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum Ja
commentId string Ja
sso string Nee

Antwoord

Retourneert: UpdateUserNotificationStatus200Response

Voorbeeld

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

updateUserNotificationPageSubscriptionStatus Internal Link

Schakel meldingen voor een pagina in of uit. Wanneer gebruikers zich op een pagina hebben geabonneerd, worden meldingen aangemaakt voor nieuwe root-opmerkingen, en ook

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
urlId string Ja
url string Ja
pageTitle string Ja
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum Ja
sso string Nee

Respons

Retourneert: UpdateUserNotificationStatus200Response

Voorbeeld

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

updateUserNotificationStatus Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
notificationId string Ja
newStatus UpdateUserNotificationStatusNewStatusEnum Ja
sso string Nee

Respons

Retourneert: UpdateUserNotificationStatus200Response

Voorbeeld

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

getUserPresenceStatuses Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
urlIdWS string Ja
userIds string Ja

Respons

Retourneert: GetUserPresenceStatuses200Response

Voorbeeld

getUserPresenceStatuses Voorbeeld
Copy Copy
1
2const tenantId: string = 'tenant_7f3a2b';
3const urlIdWS: string = 'articles/2026/03/25/fastcomments-integration';
4const maybeUserIds: string | undefined = 'user_123,user_456'; // optionele bron
5const userIds: string = maybeUserIds ?? 'user_123';
6const presence: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

searchUsers Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
urlId string Ja
usernameStartsWith string Nee
mentionGroupIds Array Nee
sso string Nee
searchSection SearchUsersSearchSectionEnum Nee

Respons

Geeft terug: SearchUsers200Response

Voorbeeld

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

getUser Internal Link


Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja

Respons

Retourneert: GetUser200Response

Voorbeeld

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

createVote Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
commentId string Ja
direction CreateVoteDirectionEnum Ja
userId string Nee
anonUserId string Nee

Antwoord

Retourneert: VoteComment200Response

Voorbeeld

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

deleteVote Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Ja
id string Ja
editKey string Nee

Response

Retourneert: DeleteCommentVote200Response

Voorbeeld

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

getVotes Internal Link

Parameters

Naam Type Vereist Beschrijving
tenantId string Yes
urlId string Yes

Antwoord

Retourneert: GetVotes200Response

Voorbeeld

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

getVotesForUser Internal Link

Parameters

Name Type Required Description
tenantId string Ja
urlId string Ja
userId string Nee
anonUserId string Nee

Respons

Retourneert: GetVotesForUser200Response

Voorbeeld

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

Hulp nodig?

Als u problemen ondervindt of vragen heeft over de JavaScript/TypeScript SDK, kunt u:

Bijdragen

Bijdragen zijn welkom! Bezoek de GitHub-repository voor richtlijnen voor bijdragen.