FastComments.com

FastComments JavaScript/TypeScript SDK


Dette er den officielle JavaScript/TypeScript SDK til FastComments.

Officiel JavaScript/TypeScript SDK til FastComments API

Repository

Se på GitHub


Installation Internal Link

npm install fastcomments-sdk

API-dokumentation Internal Link


Fuld API-reference: docs/api/README.md

Browser- vs. serverkompatibilitet Internal Link


Dette SDK bruger to indgangspunkter for at sikre optimal kompatibilitet og forhindre kørselstidsfejl:

  • fastcomments-sdk/browser - Browser-sikker version med indbygget fetch
  • fastcomments-sdk/server - Fuld Node.js-version med SSO-understøttelse
  • fastcomments-sdk (standard) - Kun typer, sikker at importere hvor som helst

Offentlige vs. sikrede API'er Internal Link

SDK'et leverer tre hoved-API-klasser:

  • DefaultApi - Sikrede endpoints, der kræver din API-nøgle til autentificering. Brug disse til operationer på serversiden.
  • PublicApi - Offentlige endpoints, som kan tilgås uden en API-nøgle. Disse kan kaldes direkte fra browsere/mobilenheder/osv.
  • HiddenApi - Interne/admin-endpoints til avancerede brugssituationer.

Eksempel: Brug af Public API (browser-sikkert)

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

const publicApi = new PublicApi();

// Hent kommentarer for en side (ingen API-nøgle nødvendig)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Eksempel: Brug af Default API (kun på serversiden)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Hold denne hemmelig!
});
const defaultApi = new DefaultApi(config);

// Hent kommentarer med fuld admin-adgang
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

SSO (Single Sign-On) integration Internal Link

FastComments understøtter SSO til at integrere med dit eksisterende brugerautentifikationssystem. SSO-funktionalitet er kun tilgængelig i server-udgaven da det kræver Node.js crypto-funktioner.

Simpelt SSO (Kun server-side)

Simpelt SSO bør genereres på serversiden og sendes til klienten:

// Server-side code (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Create simple SSO using the built-in helper  
const userData = {
  username: 'john_doe',
  email: 'john@example.com',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg'
};

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

const ssoToken = sso.createToken();

// Send ssoToken to your client-side code
// Client-side code can then use this token with the browser SDK

Sikkert SSO (Server-side, anbefalet)

Sikkert SSO bør implementeres på serversiden og giver bedre sikkerhed:

// Server-side code (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Create secure SSO using the built-in helper
const userData = {
  id: 'user-123',
  email: 'john@example.com',
  username: 'john_doe',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg',
  isAdmin: false,
  isModerator: false
};

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

const ssoConfig = sso.prepareToSend();

// Use with API calls on the server
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Or send ssoConfig to client for browser usage

Brug af SSO fra browseren (med servergenereret token)

// Client-side code (browser)
import { PublicApi } from 'fastcomments-sdk/browser';

// Get SSO token from your 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 // Use the server-generated SSO token
});

SSO med kommentaroprettelse

// Server-side: Create SSO and comment
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)
});

Almindelige brugstilfælde Internal Link

Hent kommentarer for en side

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

Oprettelse af en kommentar

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

Stem på en kommentar

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 for opstemning, -1 for nedstemning
  }
});

Brugeradministration (Kræver API-nøgle)

// Søg efter brugere (kræver DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Live-hændelser (opdateringer i realtid) Internal Link

Abonner på live-begivenheder for at få opdateringer i realtid om kommentarer, stemmer og andre aktiviteter.

Begivenheder på sideniveau

Lyt efter live-begivenheder på en specifik side (kommentarer, stemmer osv.):

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

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

// Abonner på live-begivenheder for en side
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (hent dette fra getComments-responsen)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Opdater din UI med den nye kommentar
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Opdater stemmetællinger i din UI
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // Returner true hvis begivenheden blev håndteret
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Luk abonnementet når det er færdigt
subscription.close();

Abonner på brugerbegivenheder

Lyt efter brugerspecifikke begivenheder (notifikationer, nævnelser osv.):

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

const userConfig = {
  userIdWS: 'user-session-id', // Hent dette fra getComments-responsen
};

// Abonner på brugerens personlige feed
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);

    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Vis notifikation i din 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');
  }
);

// Luk når du er færdig
userSubscription.close();

Sådan får du userIdWS

Parameteren userIdWS er påkrævet for live-begivenheder og kan hentes fra API-responser:

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

// Udtræk userIdWS fra responsen
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Nu kan du abonnere på live-begivenheder
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

Broadcast-ID'er Internal Link

Du vil se, at du skal sende et broadcastId i nogle API-kald. Når du modtager hændelser, får du dette ID tilbage, så du ved, at du kan ignorere eventet, hvis du planlægger at anvende ændringer optimistisk på klienten (hvilket du sandsynligvis vil gøre, da det giver den bedste oplevelse). Send en UUID her. ID'et bør være tilstrækkeligt unikt til ikke at forekomme to gange i en browsersession.

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() // Unikt ID for denne operation
  }
});

Fejlhåndtering 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

Aggregerer dokumenter ved at gruppere dem (hvis groupBy er angivet) og anvende flere operationer. Forskellige operationer (f.eks. sum, countDistinct, avg osv.) understøttes.

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
aggregationRequest AggregationRequest Ja
parentTenantId string Nej
includeStats boolean Nej

Svar

Returnerer: AggregationResponse


getAuditLogs Internal Link

Parametre

Name Type Required Description
tenantId string Ja
limit number Nej
skip number Nej
order SORTDIR Nej
after number Nej
before number Nej

Svar

Returnerer: GetAuditLogs200Response

Eksempel

getAuditLogs Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
publicBlockFromCommentParams PublicBlockFromCommentParams Ja
sso string Nej

Svar

Returnerer: BlockFromCommentPublic200Response

Eksempel

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

unBlockCommentPublic Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
publicBlockFromCommentParams PublicBlockFromCommentParams Ja
sso string Nej

Svar

Returnerer: UnBlockCommentPublic200Response

Eksempel

unBlockCommentPublic Eksempel
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

Parametre

Name Type Required Description
tenantId string Ja
commentIds string Ja
sso string Nej

Svar

Returnerer: CheckedCommentsForBlocked200Response

Eksempel

checkedCommentsForBlocked Eksempel
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

Parametre

Navn Type Obligatorisk Beskrivelse
tenantId string Ja
id string Ja
blockFromCommentParams BlockFromCommentParams Ja
userId string Nej
anonUserId string Nej

Respons

Returnerer: BlockFromCommentPublic200Response

Eksempel

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

createCommentPublic Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja
broadcastId string Ja
commentData CommentData Ja
sessionId string Nej
sso string Nej

Respons

Returnerer: CreateCommentPublic200Response

Eksempel

createCommentPublic Eksempel
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

Parametre

Name Type Required Description
tenantId string Ja
id string Ja
contextUserId string Nej
isLive boolean Nej

Svar

Returnerer: DeleteComment200Response

Eksempel

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

deleteCommentPublic Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
broadcastId string Ja
editKey string Nej
sso string Nej

Svar

Returnerer: DeleteCommentPublic200Response

Eksempel

deleteCommentPublic Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
voteId string Ja
urlId string Ja
broadcastId string Ja
editKey string Nej
sso string Nej

Respons

Returnerer: DeleteCommentVote200Response

Eksempel

deleteCommentVote Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
userId string Nej
anonUserId string Nej

Svar

Returnerer: FlagComment200Response

Eksempel

flagComment Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: GetComment200Response

Eksempel

getComment-eksempel
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

Parametre

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

Respons

Returnerer: GetComments200Response

Eksempel

getComments Eksempel
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // side
6 20, // antal pr. side
7 0, // spring over
8 true, // som træstruktur
9 1, // spring børn over
10 3, // begræns antal børn
11 4, // maksimal trædybde
12 'articles/2026/new-product-launch', // url-id
13 'user_7890', // bruger-id
14 'anon_4f3b2', // anonym bruger-id
15 undefined, // kontekst-bruger-id
16 '#launch', // hashtag
17 undefined // overordnet id
18);
19

getCommentsPublic Internal Link

req tenantId urlId

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja
page number Nej
direction SortDirections Nej
sso string Nej
skip number Nej
skipChildren number Nej
limit number Nej
limitChildren number Nej
countChildren boolean Nej
fetchPageForCommentId string Nej
includeConfig boolean Nej
countAll boolean Nej
includei10n boolean Nej
locale string Nej
modules string Nej
isCrawler boolean Nej
includeNotificationCount boolean Nej
asTree boolean Nej
maxTreeDepth number Nej
useFullTranslationIds boolean Nej
parentId string Nej
searchText string Nej
hashTags Array Nej
userId string Nej
customConfigStr string Nej
afterCommentId string Nej
beforeCommentId string Nej

Respons

Returnerer: GetCommentsPublic200Response

Eksempel

getCommentsPublic Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
editKey string Nej
sso string Nej

Respons

Returnerer: GetCommentText200Response

Eksempel

getCommentText Eksempel
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

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
dir number Ja
sso string Nej

Svar

Returnerer: GetCommentVoteUserNames200Response

Eksempel

getCommentVoteUserNames Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
broadcastId string Ja
sso string Nej

Respons

Returnerer: LockComment200Response

Eksempel

lockComment-eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
broadcastId string Ja
sso string Nej

Svar

Returnerer: PinComment200Response

Eksempel

pinComment Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createCommentParams CreateCommentParams Ja
isLive boolean Nej
doSpamCheck boolean Nej
sendEmails boolean Nej
populateNotifications boolean Nej

Svar

Returnerer: SaveComment200Response

Eksempel

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

saveCommentsBulk Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createCommentParams Array Ja
isLive boolean Nej
doSpamCheck boolean Nej
sendEmails boolean Nej
populateNotifications boolean Nej

Svar

Returnerer: Array<SaveComment200Response

Eksempel

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

setCommentText Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
broadcastId string Ja
commentTextUpdateRequest CommentTextUpdateRequest Ja
editKey string Nej
sso string Nej

Svar

Returnerer: SetCommentText200Response

Eksempel

setCommentText Eksempel
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


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
unBlockFromCommentParams UnBlockFromCommentParams Ja
userId string Nej
anonUserId string Nej

Svar

Returnerer: UnBlockCommentPublic200Response

Eksempel

unBlockUserFromComment Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
userId string Nej
anonUserId string Nej

Svar

Returnerer: FlagComment200Response

Eksempel

unFlagComment Eksempel
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

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
broadcastId string Ja
sso string Nej

Svar

Returnerer: LockComment200Response

Eksempel

unLockComment Eksempel
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

Parametre

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

Svar

Returnerer: PinComment200Response

Eksempel

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

updateComment Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updatableCommentParams UpdatableCommentParams Ja
contextUserId string Nej
doSpamCheck boolean Nej
isLive boolean Nej

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

updateComment Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
urlId string Ja
broadcastId string Ja
voteBodyParams VoteBodyParams Ja
sessionId string Nej
sso string Nej

Svar

Returnerer: VoteComment200Response

Eksempel

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

addDomainConfig Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
addDomainConfigParams AddDomainConfigParams Ja

Respons

Returnerer: AddDomainConfig200Response

deleteDomainConfig Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
domain string Ja

Svar

Returnerer: DeleteDomainConfig200Response


getDomainConfig Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
domain string Ja

Svar

Returnerer: GetDomainConfig200Response


getDomainConfigs Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja

Svar

Returnerer: GetDomainConfigs200Response


patchDomainConfig Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
domainToUpdate string Ja
patchDomainConfigParams PatchDomainConfigParams Ja

Svar

Returnerer: GetDomainConfig200Response


putDomainConfig Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
domainToUpdate string Ja
updateDomainConfigParams UpdateDomainConfigParams Ja

Response

Returnerer: GetDomainConfig200Response


createEmailTemplate Internal Link

Parametre

Navn Type Krævet Beskrivelse
tenantId string Ja
createEmailTemplateBody CreateEmailTemplateBody Ja

Svar

Returnerer: CreateEmailTemplate200Response

Eksempel

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

deleteEmailTemplate Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

deleteEmailTemplate Eksempel
Copy Copy
1
2const tenantId: string = 'tenant_7f4c9d1e';
3const templateId: string = 'tmpl_welcome_2024-03';
4const notifyAdmin: boolean | undefined = true; // eksempel på valgfrit parameter
5
6const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
7

deleteEmailTemplateRenderError Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
errorId string Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

Eksempel på deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = 'tenant_7f3b4c2a';
3const templateEnvironment: string | undefined = 'production'; // valgfri miljøvælger
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: GetEmailTemplate200Response

Eksempel

getEmailTemplate Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja

Svar

Returnerer: GetEmailTemplateDefinitions200Response

Eksempel

getEmailTemplateDefinitions Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
skip number Nej

Svar

Returnerer: GetEmailTemplateRenderErrors200Response

Eksempel

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

getEmailTemplates Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
skip number Nej

Svar

Returnerer: GetEmailTemplates200Response

Eksempel

getEmailTemplates Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
renderEmailTemplateBody RenderEmailTemplateBody Ja
locale string Nej

Svar

Returnerer: RenderEmailTemplate200Response

Eksempel

renderEmailTemplate Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateEmailTemplateBody UpdateEmailTemplateBody Ja

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

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

getEventLog Internal Link

req tenantId urlId userIdWS

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja
userIdWS string Ja
startTime number Ja
endTime number Ja

Svar

Returnerer: GetEventLog200Response

Eksempel

getEventLog-eksempel
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-01';
3const urlId: string = 'article-2026-03-25';
4const userIdWS: string | undefined = undefined; // valgfri upstream-værdi
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja
userIdWS string Ja
startTime number Ja
endTime number Ja

Svar

Returnerer: GetEventLog200Response

Eksempel

Eksempel på getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // 7 dage siden
6const endTimeOptional: number | undefined = undefined; // valgfri tidsramme slut
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

createFeedPost Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createFeedPostParams CreateFeedPostParams Ja
broadcastId string Nej
isLive boolean Nej
doSpamCheck boolean Nej
skipDupCheck boolean Nej

Respons

Returnerer: CreateFeedPost200Response

Eksempel

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

createFeedPostPublic Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createFeedPostParams CreateFeedPostParams Ja
broadcastId string Nej
sso string Nej

Svar

Returnerer: CreateFeedPostPublic200Response

Eksempel

createFeedPostPublic Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
postId string Ja
broadcastId string Nej
sso string Nej

Svar

Returnerer: DeleteFeedPostPublic200Response

Eksempel

deleteFeedPostPublic Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
afterId string Nej
limit number Nej
tags Array Nej

Svar

Returnerer: GetFeedPosts200Response

Eksempel

getFeedPosts Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
afterId string Nej
limit number Nej
tags Array Nej
sso string Nej
isCrawler boolean Nej
includeUserInfo boolean Nej

Svar

Returnerer: GetFeedPostsPublic200Response

Eksempel

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

getFeedPostsStats Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
postIds Array Ja
sso string Nej

Svar

Returnerer: GetFeedPostsStats200Response

Eksempel

getFeedPostsStats Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
postIds Array Nej
sso string Nej

Respons

Returnerer: GetUserReactsPublic200Response

Eksempel

getUserReactsPublic Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
postId string Ja
reactBodyParams ReactBodyParams Ja
isUndo boolean Nej
broadcastId string Nej
sso string Nej

Respons

Returnerer: ReactFeedPostPublic200Response

Eksempel

reactFeedPostPublic Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
feedPost FeedPost Ja

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

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

updateFeedPostPublic Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
postId string Ja
updateFeedPostParams UpdateFeedPostParams Ja
broadcastId string Nej
sso string Nej

Respons

Returnerer: CreateFeedPostPublic200Response

Eksempel

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

flagCommentPublic Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
isFlagged boolean Ja
sso string Nej

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

flagCommentPublic Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Nej
createHashTagBody CreateHashTagBody Nej

Respons

Returnerer: AddHashTag200Response

Eksempel

addHashTag Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Nej
bulkCreateHashTagsBody BulkCreateHashTagsBody Nej

Svar

Returnerer: AddHashTagsBulk200Response

Eksempel

addHashTagsBulk Eksempel
Copy Copy
1
2// Opret tenant-identifikator (valgfri parameter)
3const tenantId: string = "tenant_9f8c2b7a";
4
5// Forbered individuelle tag-poster
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// Krop til bulk-oprettelse (valgfri parameter)
23const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
24 tags: [tag1, tag2]
25};
26
27// Kald den globale asynkrone funktion og tildel det typede resultat
28const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
29

deleteHashTag Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tag string Ja
tenantId string Nej
deleteHashTagRequest DeleteHashTagRequest Nej

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

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

getHashTags Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
page number Nej

Svar

Returnerer: GetHashTags200Response

Eksempel

getHashTags Eksempel
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

Parametre

Name Type Required Description
tag string Ja
tenantId string Nej
updateHashTagBody UpdateHashTagBody Nej

Svar

Returnerer: PatchHashTag200Response

Eksempel

patchHashTag Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createModeratorBody CreateModeratorBody Ja

Svar

Returnerer: CreateModerator200Response

Eksempel

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

deleteModerator Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
sendEmail string Nej

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

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

getModerator Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: GetModerator200Response

Eksempel

getModerator Eksempel
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


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
skip number Nej

Svar

Returnerer: GetModerators200Response

Eksempel

getModerators Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
fromName string Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

sendInvite-eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateModeratorBody UpdateModeratorBody Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

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

deleteNotificationCount Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

deleteNotificationCount Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: GetCachedNotificationCount200Response

Eksempel

getCachedNotificationCount Eksempel
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'user_00012345';
4const includeUnreadOnly: boolean | undefined = true; // valgfrit parameter-flag (demonstreret)
5const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
6

getNotificationCount Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
userId string Nej
urlId string Nej
fromCommentId string Nej
viewed boolean Nej
type string Nej

Respons

Returnerer: GetNotificationCount200Response

Eksempel

getNotificationCount Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
userId string Nej
urlId string Nej
fromCommentId string Nej
viewed boolean Nej
type string Nej
skip number Nej

Svar

Returnerer: GetNotifications200Response

Eksempel

getNotifications Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateNotificationBody UpdateNotificationBody Ja
userId string Nej

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

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

addPage Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createAPIPageData CreateAPIPageData Ja

Svar

Returnerer: AddPageAPIResponse


deletePage Internal Link

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: DeletePageAPIResponse


getPageByURLId Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja

Svar

Returnerer: GetPageByURLIdAPIResponse


getPages Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja

Respons

Returnerer: GetPagesAPIResponse


patchPage Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateAPIPageData UpdateAPIPageData Ja

Svar

Returnerer: PatchPageAPIResponse


deletePendingWebhookEvent Internal Link

Parametre

Name Type Required Description
tenantId string Ja
id string Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

deletePendingWebhookEvent Eksempel
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42f7c9b1';
4 const id: string = 'pending_webhook_ev_8f3b9a2d';
5 const reason?: string = undefined; // eksempel på en valgfri parameter (ikke påkrævet af funktionen)
6 const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
7 console.log(result);
8})();
9

getPendingWebhookEventCount Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Nej
externalId string Nej
eventType string Nej
type string Nej
domain string Nej
attemptCountGT number Nej

Svar

Returnerer: GetPendingWebhookEventCount200Response

Eksempel

getPendingWebhookEventCount Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Nej
externalId string Nej
eventType string Nej
type string Nej
domain string Nej
attemptCountGT number Nej
skip number Nej

Respons

Returnerer: GetPendingWebhookEvents200Response

Eksempel

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

createQuestionConfig Internal Link

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
createQuestionConfigBody CreateQuestionConfigBody Ja

Svar

Returnerer: CreateQuestionConfig200Response

Eksempel

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

deleteQuestionConfig Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

deleteQuestionConfig Eksempel
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

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: GetQuestionConfig200Response

Eksempel

getQuestionConfig Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
skip number Nej

Svar

Returnerer: GetQuestionConfigs200Response

Eksempel

getQuestionConfigs Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateQuestionConfigBody UpdateQuestionConfigBody Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

updateQuestionConfig Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Yes
createQuestionResultBody CreateQuestionResultBody Yes

Svar

Returnerer: CreateQuestionResult200Response

Eksempel

createQuestionResult Eksempel
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, // valgfri metadata
9 note: "Follow-up requested" // valgfri parameter demonstreret
10};
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

deleteQuestionResult Internal Link

Parametre

Name Type Required Description
tenantId string Ja
id string Ja

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

deleteQuestionResult Eksempel
Copy Copy
1
2const tenantId: string = "org-82479";
3const questionId: string = "q-6a3d2e1f";
4const includeArchived?: boolean = false; // valgfri parameter, der demonstrerer alternativt målvalg
5const targetId: string = includeArchived ? "q-archived-112233" : questionId;
6const result: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, targetId);
7

getQuestionResult Internal Link

Parametre

Name Type Krævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: GetQuestionResult200Response

Eksempel

getQuestionResult-eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Yes
urlId string No
userId string No
startDate string No
questionId string No
questionIds string No
skip number No

Svar

Returnerer: GetQuestionResults200Response

Eksempel

getQuestionResults Eksempel
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

Parametre

Name Type Required Description
tenantId string Yes
id string Yes
updateQuestionResultBody UpdateQuestionResultBody Yes

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

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

aggregateQuestionResults Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Yes
questionId string No
questionIds Array No
urlId string No
timeBucket AggregateTimeBucket No
startDate Date No
forceRecalculate boolean No

Respons

Returnerer: AggregateQuestionResults200Response

Eksempel

aggregateQuestionResults Eksempel
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 udeladt, bruger questionIds i stedet
12 questionIds,
13 urlId,
14 timeBucket,
15 startDate,
16 forceRecalculate
17);
18

bulkAggregateQuestionResults Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest Ja
forceRecalculate boolean Nej

Svar

Returnerer: BulkAggregateQuestionResults200Response

Eksempel

bulkAggregateQuestionResults Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Yes
questionId string No
questionIds Array No
urlId string No
startDate Date No
forceRecalculate boolean No
minValue number No
maxValue number No
limit number No

Svar

Returnerer: CombineCommentsWithQuestionResults200Response

Eksempel

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

addSSOUser Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createAPISSOUserData CreateAPISSOUserData Ja

Svar

Returnerer: AddSSOUserAPIResponse


deleteSSOUser Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
deleteComments boolean Nej
commentDeleteMode string Nej

Svar

Returnerer: DeleteSSOUserAPIResponse


getSSOUserByEmail Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
email string Ja

Svar

Returnerer: GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
skip number Nej

Svar

Returnerer: GetSSOUsers200Response


patchSSOUser Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateAPISSOUserData UpdateAPISSOUserData Ja
updateComments boolean Nej

Svar

Returnerer: PatchSSOUserAPIResponse

putSSOUser Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateAPISSOUserData UpdateAPISSOUserData Ja
updateComments boolean Nej

Svar

Returnerer: PutSSOUserAPIResponse


createSubscription Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createAPIUserSubscriptionData CreateAPIUserSubscriptionData Ja

Svar

Returnerer: CreateSubscriptionAPIResponse

Eksempel

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

deleteSubscription Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
userId string Nej

Svar

Returnerer: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parametre

Navn Type Obligatorisk Beskrivelse
tenantId string Ja
userId string Nej

Svar

Returnerer: GetSubscriptionsAPIResponse

Eksempel

getSubscriptions-eksempel
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

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateAPIUserSubscriptionData UpdateAPIUserSubscriptionData Ja
userId string Nej

Svar

Returnerer: UpdateSubscriptionAPIResponse

Eksempel

updateSubscription-eksempel
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

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
yearNumber number Nej
monthNumber number Nej
dayNumber number Nej
skip number Nej

Svar

Returnerer: GetTenantDailyUsages200Response

Eksempel

getTenantDailyUsages Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createTenantPackageBody CreateTenantPackageBody Ja

Respons

Returnerer: CreateTenantPackage200Response

Eksempel

createTenantPackage Eksempel
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, // valgfrit parameter angivet
8 // valgfri felter udeladt: f.eks. avancerede moderatorregler, brugerdefineret CSS
9 customConfigParameters: {
10 enableProfanityFilter: true,
11 imageContentProfanityLevel: 'medium' // illustrativ værdi; bruger CustomConfigParameters-struktur
12 }
13};
14const response: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
15console.log(response);
16

deleteTenantPackage Internal Link

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

deleteTenantPackage Eksempel
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 }; // valgfrie parametre demonstreret
6const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
7

getTenantPackage Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: GetTenantPackage200Response

Eksempel

getTenantPackage Eksempel
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

Parametre

Navn Type Obligatorisk Beskrivelse
tenantId string Ja
skip number Nej

Respons

Returnerer: GetTenantPackages200Response

Eksempel

getTenantPackages Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
replaceTenantPackageBody ReplaceTenantPackageBody Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

replaceTenantPackage Eksempel
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

Parametre

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

Svar

Returnerer: FlagCommentPublic200Response

Example

Eksempel på updateTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_3b7f9d-prod";
3const id: string = "pkg_enterprise_2026";
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: "Enterprise Plus",
6 isActive: true,
7 // valgfrie felter udeladt med vilje (f.eks. beskrivelse, grænser)
8} as UpdateTenantPackageBody;
9const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
10

createTenantUser Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
createTenantUserBody CreateTenantUserBody Ja

Svar

Returnerer: CreateTenantUser200Response

Eksempel

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

deleteTenantUser Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
deleteComments string Nej
commentDeleteMode string Nej

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

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

getTenantUser Internal Link

Parametre

Navn Type Obligatorisk Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: GetTenantUser200Response

Eksempel

getTenantUser Eksempel
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; // får adgang til payload
6const userEmail: string | undefined = user?.email;
7console.log('Fetched user email:', userEmail);
8

getTenantUsers Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
skip number Nej

Svar

Returnerer: GetTenantUsers200Response

Eksempel

getTenantUsers Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
replaceTenantUserBody ReplaceTenantUserBody Ja
updateComments string Nej

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
redirectURL string Nej

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

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

updateTenantUser Internal Link

Parametre

Navn Type Obligatorisk Beskrivelse
tenantId string Ja
id string Ja
updateTenantUserBody UpdateTenantUserBody Ja
updateComments string Nej

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

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

createTenant Internal Link

Parametre

Name Type Required Description
tenantId string Ja
createTenantBody CreateTenantBody Ja

Svar

Returnerer: CreateTenant200Response

Eksempel

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

deleteTenant Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
sure string Nej

Respons

Returnerer: FlagCommentPublic200Response

Eksempel

deleteTenant Eksempel
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

Parametre

Name Type Required Description
tenantId string Ja
id string Ja

Respons

Returnerer: GetTenant200Response

Eksempel

getTenant-eksempel
Copy Copy
1
2const tenantId: string = "tenant_9f4b2c1a";
3const idOverride: string | undefined = undefined; // valgfri override, hvis tilgængelig
4const id: string = idOverride ?? "site_3e7a6b2f";
5const response: GetTenant200Response = await getTenant(tenantId, id);
6console.log(response);
7

getTenants Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
meta string Nej
skip number Nej

Respons

Returnerer: GetTenants200Response

Eksempel

getTenants Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
updateTenantBody UpdateTenantBody Ja

Svar

Returnerer: FlagCommentPublic200Response

Eksempel

updateTenant Eksempel
Copy Copy
1
2const tenantId: string = "tenant_4821";
3const id: string = "flag_7b9e";
4const billingInfo: BillingInfo | undefined = undefined; // valgfri, udelad for at beholde nuværende fakturering
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

Parametre

Name Type Required Description
tenantId string Ja
userId string Ja
id string Ja
changeTicketStateBody ChangeTicketStateBody Ja

Svar

Returnerer: ChangeTicketState200Response

Eksempel

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

createTicket Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
userId string Ja
createTicketBody CreateTicketBody Ja

Respons

Returnerer: CreateTicket200Response

Eksempel

createTicket Eksempel
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", // valgfrit felt demonstreret
8 contactEmail: "billing@acme-corp.com", // valgfri kontaktinfo
9 relatedUrl: "https://acme-corp.com/account/billing"
10};
11const ticketResponse: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
12

getTicket Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
userId string Nej

Svar

Returnerer: GetTicket200Response

Eksempel

getTicket Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
userId string Nej
state number Nej
skip number Nej
limit number Nej

Svar

Returnerer: GetTickets200Response

Eksempel

getTickets Eksempel
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

Upload og ændr størrelse på et billede

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
file Blob Ja
sizePreset SizePreset Nej
urlId string Nej

Svar

Returnerer: UploadImageResponse


getUserBadgeProgressById Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: GetUserBadgeProgressById200Response

Eksempel

getUserBadgeProgressById Eksempel
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

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
userId string Ja

Svar

Returnerer: GetUserBadgeProgressById200Response

Eksempel

Eksempel på getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = 'tenant_7f9c2d3b';
3const maybeUserId: string | undefined = 'user_4b8e1f9a'; // valgfri kilde (kan være undefined)
4const userId: string = maybeUserId ?? 'user_fallback0001';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
6console.log(result);
7

getUserBadgeProgressList Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
userId string Nej
limit number Nej
skip number Nej

Svar

Returnerer: GetUserBadgeProgressList200Response

Eksempel

getUserBadgeProgressList Eksempel
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

Parametre

Name Type Required Description
tenantId string Ja
createUserBadgeParams CreateUserBadgeParams Ja

Svar

Returnerer: CreateUserBadge200Response

Eksempel

createUserBadge Eksempel
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 }, // valgfri kriterier
10 displayOrder: 10,
11 metadata: { featured: true } // valgfri metadata
12};
13const result: CreateUserBadge200Response = await createUserBadge(tenantId, createUserBadgeParams);
14console.log(result);
15

deleteUserBadge Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Respons

Returnerer: UpdateUserBadge200Response

Eksempel

deleteUserBadge Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: GetUserBadge200Response

Eksempel

getUserBadge Eksempel
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

Parametre

Name Type Påkrævet Beskrivelse
tenantId string Ja
userId string Nej
badgeId string Nej
type number Nej
displayedOnComments boolean Nej
limit number Nej
skip number Nej

Svar

Returnerer: GetUserBadges200Response

Eksempel

getUserBadges Eksempel
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

Parametre

Name Type Required Description
tenantId string Ja
id string Ja
updateUserBadgeParams UpdateUserBadgeParams Ja

Svar

Returnerer: UpdateUserBadge200Response

Eksempel

updateUserBadge Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
sso string Nej

Svar

Returnerer: GetUserNotificationCount200Response

Eksempel

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

getUserNotifications Internal Link

Parametre

Name Type Required Description
tenantId string Ja
pageSize number Nej
afterId string Nej
includeContext boolean Nej
afterCreatedAt number Nej
unreadOnly boolean Nej
dmOnly boolean Nej
noDm boolean Nej
includeTranslations boolean Nej
sso string Nej

Svar

Returnerer: GetUserNotifications200Response

Eksempel

getUserNotifications Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
sso string Nej

Svar

Returnerer: ResetUserNotifications200Response

Eksempel

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

resetUserNotifications Internal Link


Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
afterId string Nej
afterCreatedAt number Nej
unreadOnly boolean Nej
dmOnly boolean Nej
noDm boolean Nej
sso string Nej

Svar

Returnerer: ResetUserNotifications200Response

Eksempel

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

updateUserNotificationCommentSubscriptionStatus Internal Link

Aktiver eller deaktiver notifikationer for en bestemt kommentar.

Parameters

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

Response

Returnerer: UpdateUserNotificationStatus200Response

Example

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

updateUserNotificationPageSubscriptionStatus Internal Link

Aktivér eller deaktiver notifikationer for en side. Når brugere er tilmeldt en side, oprettes notifikationer for nye topniveau-kommentarer, og også

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja
url string Ja
pageTitle string Ja
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum Ja
sso string Nej

Svar

Returnerer: UpdateUserNotificationStatus200Response

Eksempel

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

updateUserNotificationStatus Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
notificationId string Ja
newStatus UpdateUserNotificationStatusNewStatusEnum Ja
sso string Nej

Svar

Returnerer: UpdateUserNotificationStatus200Response

Eksempel

updateUserNotificationStatus Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlIdWS string Ja
userIds string Ja

Respons

Returnerer: GetUserPresenceStatuses200Response

Eksempel

getUserPresenceStatuses Eksempel
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'; // optional source
5const userIds: string = maybeUserIds ?? 'user_123';
6const presence: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

searchUsers Internal Link

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja
usernameStartsWith string Nej
mentionGroupIds Array Nej
sso string Nej
searchSection SearchUsersSearchSectionEnum Nej

Svar

Returnerer: SearchUsers200Response

Eksempel

searchUsers Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja

Svar

Returnerer: GetUser200Response

Eksempel

getUser-eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
commentId string Ja
direction CreateVoteDirectionEnum Ja
userId string Nej
anonUserId string Nej

Svar

Returnerer: VoteComment200Response

Eksempel

createVote Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
id string Ja
editKey string Nej

Respons

Returnerer: DeleteCommentVote200Response

Eksempel

deleteVote Eksempel
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja

Svar

Returnerer: GetVotes200Response

Eksempel

getVotes-eksempel
Copy Copy
1
2const tenantId: string = 'acme-corp-8f3b';
3const refCampaign: string | undefined = 'newsletter-march2026'; // valgfri forespørgselsparameter
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

Parametre

Navn Type Påkrævet Beskrivelse
tenantId string Ja
urlId string Ja
userId string Nej
anonUserId string Nej

Svar

Returnerer: GetVotesForUser200Response

Eksempel

getVotesForUser Eksempel
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

Brug for hjælp?

Hvis du støder på problemer eller har spørgsmål om JavaScript/TypeScript SDK'en, så:

Bidrag

Bidrag er velkomne! Besøg venligst GitHub-repositoriet for retningslinjer for bidrag.