FastComments.com

FastComments JavaScript/TypeScript SDK

This is the official JavaScript/TypeScript SDK for FastComments.

Manage comments, users, SSO, and moderation from Node.js or the browser.

Repository

View on GitHub

Installation Internal Link

npm

npm install fastcomments-sdk

API Documentation Internal Link

Full API reference: docs/api/README.md

Browser vs Server Compatibility Internal Link

This SDK uses dual entry points to ensure optimal compatibility and prevent runtime errors:

  • fastcomments-sdk/browser - Browser-safe version with native fetch
  • fastcomments-sdk/server - Full Node.js version with SSO support
  • fastcomments-sdk (default) - Types only, safe to import anywhere

Public vs Secured APIs Internal Link

The SDK provides three main API classes:

  • DefaultApi - Secured endpoints that require your API key for authentication. Use these for server-side operations.
  • PublicApi - Public endpoints that can be accessed without an API key. These can be called directly from browsers/mobile devices/etc.
  • HiddenApi - Internal/admin endpoints for advanced use cases.

Example: Using Public API (browser-safe)

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

const publicApi = new PublicApi();

// Get comments for a page (no API key required)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Example: Using Default API (server-side only)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Keep this secret!
});
const defaultApi = new DefaultApi(config);

// Get comments with full admin access
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

SSO (Single Sign-On) Integration Internal Link

FastComments supports SSO to integrate with your existing user authentication system. SSO functionality is only available in the server export since it requires Node.js crypto features.

Simple SSO (Server-Side Only)

Simple SSO should be generated server-side and sent to the client:

// 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

Secure SSO should be implemented server-side and provides better security:

// 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

Using SSO from Browser (with Server-Generated 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 with Comment Creation

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

Common Use Cases Internal Link

Getting Comments for a Page

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

Creating a Comment

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

Voting on a Comment

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

User Management (Requires API Key)

// Search for users (requires DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Live Events (Real-time Updates) Internal Link

Subscribe to live events to get real-time updates for comments, votes, and other activities.

Page-Level Events

Listen for live events on a specific page (comments, votes, etc.):

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

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

// Subscribe to live events for a page
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (get this from getComments response)
  (event: LiveEvent) => {
    console.log('Live event received:', event);
    
    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Update your UI with the new comment
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Update vote counts in your UI
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }
    
    return true; // Return true if event was handled
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

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

Subscribe to User Events

Listen for user-specific events (notifications, mentions, etc.):

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

const userConfig = {
  userIdWS: 'user-session-id', // Get this from getComments response
};

// Subscribe to user's personal 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);
        // Show notification in your 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');
  }
);

// Close when done
userSubscription.close();

Getting userIdWS

The userIdWS parameter is required for live events and can be obtained from API responses:

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

// Extract userIdWS from the response
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Now you can subscribe to live events
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

Broadcast IDs Internal Link

You'll see you're supposed to pass a broadcastId in some API calls. When you receive events, you'll get this ID back, so you know to ignore the event if you plan to optimistically apply changes on the client (which you'll probably want to do since it offers the best experience). Pass a UUID here. The ID should be unique enough to not occur twice in a browser session.

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

Error Handling Internal Link

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

aggregate Internal Link

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

Parameters

NameTypeRequiredDescription
tenantIdstringYes
aggregationRequestAggregationRequestYes
parentTenantIdstringNo
includeStatsbooleanNo

Response

Returns: AggregationResponse

Example

aggregate Example
Copy Copy
1
2const tenantId: string = "acme_corp_123";
3const parentTenantId: string = "global_acme_1";
4const includeStats: boolean = true;
5
6const predicateValue: QueryPredicateValue = { stringValue: "active" };
7const predicate: QueryPredicate = { field: "status", operator: "EQ", value: predicateValue };
8const operation: AggregationOperation = { type: "COUNT", field: "id", alias: "total" };
9const sort: AggregationRequestSort = { field: "total", direction: "DESC" };
10
11const aggregationRequest: AggregationRequest = {
12 query: { predicates: [predicate] },
13 operations: [operation],
14 sort: [sort],
15 limit: 100
16};
17
18const response: AggregationResponse = await aggregate(tenantId, aggregationRequest, parentTenantId, includeStats);
19

getAuditLogs Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo

Response

Returns: GetAuditLogs200Response

Example

getAuditLogs Example
Copy Copy
1
2const tenantId: string = 'tenant_9f1b3c';
3const limit: number = 50;
4const skip: number = 0;
5const order: SORTDIR = SORTDIR.DESC;
6const after: number = Date.now() - 1000 * 60 * 60 * 24;
7const before: number = Date.now();
8const response: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, order, after, before);
9

blockFromCommentPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Response

Returns: BlockFromCommentPublic200Response

Example

blockFromCommentPublic Example
Copy Copy
1
2const tenantId: string = 'tenant_6f1a2b9c';
3const commentId: string = 'comment_b3d92f47';
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: 'abusive language',
6 durationMinutes: 1440,
7 notifyAuthor: false
8};
9const sso: string = 'sso_tok_eyJhbGciOiJIUzI1Ni';
10const result: BlockFromCommentPublic200Response = await blockFromCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
11

unBlockCommentPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Response

Returns: UnBlockCommentPublic200Response

Example

unBlockCommentPublic Example
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_001';
3const commentId: string = 'comment_20260519_334';
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: 'User appeal approved',
6 clearedBy: 'moderator.alice',
7 clearedAt: new Date().toISOString()
8} as PublicBlockFromCommentParams;
9const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso-sample-token';
10const result: UnBlockCommentPublic200Response = await unBlockCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
11

checkedCommentsForBlocked Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdsstringYes
ssostringNo

Response

Returns: CheckedCommentsForBlocked200Response

Example

checkedCommentsForBlocked Example
Copy Copy
1
2const tenantId: string = "acme-corp-00042";
3const commentIds: string = "cmt-1001,cmt-1002";
4const ssoToken: string = "sso_jwt_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
5const checkedWithSso: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds, ssoToken);
6const checkedWithoutSso: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds);
7

blockUserFromComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Response

Returns: BlockFromCommentPublic200Response

Example

blockUserFromComment Example
Copy Copy
1
2const tenantId: string = 'tenant_abc123';
3const commentId: string = 'comment_98765';
4const blockFromCommentParams: BlockFromCommentParams = { reason: 'abusive_language', durationDays: 30 };
5const userId: string = 'user_42';
6const result: BlockFromCommentPublic200Response = await blockUserFromComment(tenantId, commentId, blockFromCommentParams, userId);
7

createCommentPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
broadcastIdstringYes
commentDataCommentDataYes
sessionIdstringNo
ssostringNo

Response

Returns: CreateCommentPublic200Response

Example

createCommentPublic Example
Copy Copy
1
2const tenantId: string = 'tenant_9812';
3const urlId: string = 'prod-launch-20260520';
4const broadcastId: string = 'broadcast_20260520_01';
5const commentData: CommentData = {
6 content: 'Amazing launch — congrats to the whole team!',
7 authorName: 'Alex Morgan',
8 mentions: [] as CommentUserMentionInfo[],
9 hashtags: [] as CommentUserHashTagInfo[]
10};
11const sessionId: string | undefined = 'sess_9f7b3c';
12const sso: string | undefined = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
13const result: CreateCommentPublic200Response = await createCommentPublic(tenantId, urlId, broadcastId, commentData, sessionId, sso);
14

deleteComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
contextUserIdstringNo
isLivebooleanNo

Response

Returns: DeleteComment200Response

Example

deleteComment Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_8b3f21';
4 const id: string = 'comment_52a9c';
5 const contextUserId: string = 'user_3f1d2';
6 const isLive: boolean = true;
7 const result: DeleteComment200Response = await deleteComment(tenantId, id, contextUserId, isLive);
8 console.log(result);
9})();
10

deleteCommentPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Response

Returns: DeleteCommentPublic200Response

Example

deleteCommentPublic Example
Copy Copy
1
2const tenantId: string = 'tenant_98765';
3const commentId: string = 'cmt_4521';
4const broadcastId: string = 'broadcast_live_01';
5const editKey: string = 'edit_3a2b'; // optional
6const sso: string = 'sso_token_abcd1234'; // optional
7const result: DeleteCommentPublic200Response = await deleteCommentPublic(tenantId, commentId, broadcastId, editKey, sso);
8

deleteCommentVote Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
voteIdstringYes
urlIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Response

Returns: DeleteCommentVote200Response

Example

deleteCommentVote Example
Copy Copy
1
2const tenantId: string = 'tenant_4b2f9';
3const commentId: string = 'cmt_921f3';
4const voteId: string = 'vote_3a8b1';
5const urlId: string = 'https://news.site/articles/2026/05/20/launch';
6const broadcastId: string = 'broadcast_20260520_01';
7const editKey: string = 'editkey_7d2c';
8const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ssoPayload.signature';
9const result: DeleteCommentVote200Response = await deleteCommentVote(tenantId, commentId, voteId, urlId, broadcastId, editKey, sso);
10

flagComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Response

Returns: FlagComment200Response

Example

flagComment Example
Copy Copy
1
2const tenantId: string = 'tenant_8a3f';
3const id: string = 'cmt_b7f9e2';
4const userId: string = 'user_1024';
5const result: FlagComment200Response = await flagComment(tenantId, id, userId);
6

getComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetComment200Response

Example

getComment Example
Copy Copy
1
2const tenantId: string = 'acme-corp-42';
3const id: string = 'e7b6f3a2-4d1a-4b9e-9a2f-1c3d4e5f6a7b';
4const includeDeleted: boolean | undefined = undefined;
5const result: GetComment200Response = await getComment(tenantId, id);
6

getComments Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
pagenumberNo
limitnumberNo
skipnumberNo
asTreebooleanNo
skipChildrennumberNo
limitChildrennumberNo
maxTreeDepthnumberNo
urlIdstringNo
userIdstringNo
anonUserIdstringNo
contextUserIdstringNo
hashTagstringNo
parentIdstringNo
directionSortDirectionsNo

Response

Returns: GetComments200Response

Example

getComments Example
Copy Copy
1
2const tenantId: string = "tenant_5f2b9a";
3const page: number = 1;
4const limit: number = 20;
5const asTree: boolean = true;
6const maxTreeDepth: number = 2;
7const urlId: string = "news/2026/05/20/new-feature";
8const userId: string = "user_8d34";
9const result: GetComments200Response = await getComments(
10 tenantId,
11 page,
12 limit,
13 undefined,
14 asTree,
15 undefined,
16 undefined,
17 maxTreeDepth,
18 urlId,
19 userId
20);
21

getCommentsPublic Internal Link

req tenantId urlId

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
pagenumberNo
directionSortDirectionsNo
ssostringNo
skipnumberNo
skipChildrennumberNo
limitnumberNo
limitChildrennumberNo
countChildrenbooleanNo
fetchPageForCommentIdstringNo
includeConfigbooleanNo
countAllbooleanNo
includei10nbooleanNo
localestringNo
modulesstringNo
isCrawlerbooleanNo
includeNotificationCountbooleanNo
asTreebooleanNo
maxTreeDepthnumberNo
useFullTranslationIdsbooleanNo
parentIdstringNo
searchTextstringNo
hashTagsArrayNo
userIdstringNo
customConfigStrstringNo
afterCommentIdstringNo
beforeCommentIdstringNo

Response

Returns: GetCommentsPublic200Response

Example

getCommentsPublic Example
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const urlId: string = '/news/2026/product-launch';
4const result: GetCommentsPublic200Response = await getCommentsPublic(
5 tenantId,
6 urlId,
7 1,
8 undefined,
9 'sso_jwt_123456',
10 0,
11 0,
12 25,
13 5,
14 true,
15 undefined,
16 true,
17 false,
18 true,
19 'en-US',
20 'comments,likes',
21 false,
22 true,
23 true,
24 3,
25 false,
26 undefined,
27 'great product',
28 ['product', 'launch'],
29 'user_98765',
30 undefined,
31 undefined,
32 undefined
33);
34

getCommentText Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
editKeystringNo
ssostringNo

Response

Returns: GetCommentText200Response

Example

getCommentText Example
Copy Copy
1
2const tenantId: string = 'acme-corp-01';
3const commentId: string = 'cmt_987654321';
4const editKey: string = 'edk_abc123def';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
6
7const resultWithOptional: GetCommentText200Response = await getCommentText(tenantId, commentId, editKey, sso);
8const resultRequiredOnly: GetCommentText200Response = await getCommentText(tenantId, commentId);
9

getCommentVoteUserNames Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
dirnumberYes
ssostringNo

Response

Returns: GetCommentVoteUserNames200Response

Example

getCommentVoteUserNames Example
Copy Copy
1
2const tenantId: string = 'tenant_7f4b3d2a';
3const commentId: string = 'cmt_9a8b7c6d';
4const dir: number = -1;
5const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example.signature';
6
7const resultWithSSO: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dir, ssoToken);
8const resultWithoutSSO: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dir);
9

lockComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Response

Returns: LockComment200Response

Example

lockComment Example
Copy Copy
1
2const tenantId: string = 'tenant_12345'
3const commentId: string = 'comment-9b2d'
4const broadcastId: string = 'broadcast-20260520-01'
5const sso: string = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyX2lkMTIzIn0.D4kR7ZxVb3NqZ1xY'
6const responseWithSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId, sso)
7const responseWithoutSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId)
8

pinComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Response

Returns: PinComment200Response

Example

pinComment Example
Copy Copy
1
2const tenantId: string = 'tenant_4472';
3const commentId: string = 'cmt_8a9f3b';
4const broadcastId: string = 'broadcast_2026-05-20_01';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.signature';
6const result: PinComment200Response = await pinComment(tenantId, commentId, broadcastId, sso);
7

saveComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createCommentParamsCreateCommentParamsYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Response

Returns: SaveComment200Response

Example

saveComment Example
Copy Copy
1
2const tenantId: string = "acme-tenant-17";
3const createCommentParams: CreateCommentParams = {
4 body: "Thanks — this clarified the deployment. Suggest adding a note about step 3.",
5 authorId: "user_789",
6 threadId: "article_342",
7 clientCreatedAt: new Date().toISOString()
8};
9const saveResult: SaveComment200Response = await saveComment(tenantId, createCommentParams, true, false, true, true);
10

saveCommentsBulk Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Response

Returns: Array<SaveComment200Response

Example

saveCommentsBulk Example
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const createParams: CreateCommentParams[] = [
4 {
5 content: "Finished the draft for the Q2 report, please review.",
6 authorId: "user_789",
7 mentions: [{ userId: "user_456", startIndex: 34, length: 4 } as CommentUserMentionInfo],
8 hashtags: [{ tag: "Q2", indices: [28, 30] } as CommentUserHashTagInfo]
9 } as CreateCommentParams
10];
11const saveResult: SaveComment200Response[] = await saveCommentsBulk(
12 tenantId,
13 createParams,
14 true, // isLive
15 true, // doSpamCheck
16 false, // sendEmails
17 true // populateNotifications
18);
19

setCommentText Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
commentTextUpdateRequestCommentTextUpdateRequestYes
editKeystringNo
ssostringNo

Response

Returns: SetCommentText200Response

Example

setCommentText Example
Copy Copy
1
2const tenantId: string = 'tenant-42';
3const commentId: string = 'cmt-8932';
4const broadcastId: string = 'brd-2023-07';
5const updateRequest: CommentTextUpdateRequest = {
6 text: 'Updated comment text for the product launch — congrats team!',
7 mentions: [{ userId: 'user-17', displayName: 'Ava Nguyen' }] as CommentUserMentionInfo[],
8 hashtags: [{ tag: 'ProductLaunch' }] as CommentUserHashTagInfo[]
9};
10const editKey: string = 'edtk-9f7b';
11const sso: string = 'sso-token-abc123';
12const result: SetCommentText200Response = await setCommentText(tenantId, commentId, broadcastId, updateRequest, editKey, sso);
13

unBlockUserFromComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
unBlockFromCommentParamsUnBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Response

Returns: UnBlockCommentPublic200Response

Example

unBlockUserFromComment Example
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp';
3const id: string = 'comment_9f3b2a';
4const unBlockFromCommentParams: UnBlockFromCommentParams = { reason: 'Appeal accepted after review', notifyUser: true };
5const userId: string = 'user_84b7';
6const result: UnBlockCommentPublic200Response = await unBlockUserFromComment(tenantId, id, unBlockFromCommentParams, userId);
7

unFlagComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Response

Returns: FlagComment200Response

Example

unFlagComment Example
Copy Copy
1
2const tenantId: string = 'tenant_8247';
3const id: string = 'cmt_48291';
4const userId: string = 'user_jdoe42';
5const anonUserId: string = 'anon_5f9a';
6
7const resultWithUser: FlagComment200Response = await unFlagComment(tenantId, id, userId);
8const resultWithAnon: FlagComment200Response = await unFlagComment(tenantId, id, undefined, anonUserId);
9

unLockComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Response

Returns: LockComment200Response

Example

unLockComment Example
Copy Copy
1
2const tenantId: string = "tenant_7b3f2d";
3const commentId: string = "cmt-92f4b1";
4const broadcastId: string = "brd-20260520-01";
5const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NjciLCJpYXQiOjE2ODYyMzQ1MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6const resultWithoutSSO: LockComment200Response = await unLockComment(tenantId, commentId, broadcastId);
7const resultWithSSO: LockComment200Response = await unLockComment(tenantId, commentId, broadcastId, ssoToken);
8

unPinComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Response

Returns: PinComment200Response

Example

unPinComment Example
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp';
3const commentId: string = 'comment_8f3b2a';
4const broadcastId: string = 'live_20260520_1800';
5const sso: string | undefined = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.signed.part';
6const result: PinComment200Response = await unPinComment(tenantId, commentId, broadcastId, sso);
7

updateComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updatableCommentParamsUpdatableCommentParamsYes
contextUserIdstringNo
doSpamCheckbooleanNo
isLivebooleanNo

Response

Returns: FlagCommentPublic200Response

Example

updateComment Example
Copy Copy
1
2const tenantId: string = "tenant_3f47b2a1";
3const id: string = "comment_9a12b3c4";
4const updatableCommentParams: UpdatableCommentParams = {
5 body: "Thanks for the update — I've adjusted my view accordingly."
6};
7const contextUserId: string = "user_8721";
8const doSpamCheck: boolean = true;
9const isLive: boolean = false;
10const result: FlagCommentPublic200Response = await updateComment(tenantId, id, updatableCommentParams, contextUserId, doSpamCheck, isLive);
11

voteComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
urlIdstringYes
broadcastIdstringYes
voteBodyParamsVoteBodyParamsYes
sessionIdstringNo
ssostringNo

Response

Returns: VoteComment200Response

Example

voteComment Example
Copy Copy
1
2const tenantId: string = 'tenant_acme';
3const commentId: string = 'cmt_123456789';
4const urlId: string = 'https://www.acme-news.com/articles/ai-update-2026';
5const broadcastId: string = 'broadcast_live_20260520';
6const voteBodyParams: VoteBodyParams = { value: 1, reason: 'Insightful contribution' };
7const sessionId: string = 'sess_9b8f7a6c';
8const sso: string = 'sso_token_eyJhbGciOiJIUzI1Ni';
9const result: VoteComment200Response = await voteComment(tenantId, commentId, urlId, broadcastId, voteBodyParams, sessionId, sso);
10

getCommentsForUser Internal Link

Parameters

NameTypeRequiredDescription
userIdstringNo
tenantIdstringNo
urlIdstringNo
pagenumberNo
directionSortDirectionsNo
lastGenDatenumberNo
repliesToUserIdstringNo
fetchPageForCommentIdstringNo
includei10nbooleanNo
useFullTranslationIdsbooleanNo
localestringNo
includeConfigbooleanNo
includeNotificationCountbooleanNo
countAllbooleanNo
ssostringNo

Response

Returns: GetCommentsForUserResponse

Example

getCommentsForUser Example
Copy Copy
1
2const userId: string = 'user_82f9b';
3const tenantId: string = 'tenant_22';
4const page: number = 2;
5const lastGenDate: number = Date.now();
6const includei10n: boolean = true;
7const useFullTranslationIds: boolean = false;
8const locale: string = 'en-US';
9const includeConfig: boolean = true;
10const includeNotificationCount: boolean = true;
11const countAll: boolean = false;
12const sso: string = 'sso-token-1a2b';
13const commentsResponse: GetCommentsForUserResponse = await getCommentsForUser(userId, tenantId, undefined, page, undefined, lastGenDate, undefined, undefined, includei10n, useFullTranslationIds, locale, includeConfig, includeNotificationCount, countAll, sso);
14

addDomainConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
addDomainConfigParamsAddDomainConfigParamsYes

Response

Returns: AddDomainConfig200Response

Example

addDomainConfig Example
Copy Copy
1
2const tenantId: string = "tenant_7f3b2a1c9";
3const addDomainConfigParams: AddDomainConfigParams = {
4 domain: "payments.mybusiness.com",
5 primary: true,
6 validateDns: true
7};
8const result: AddDomainConfig200Response = await addDomainConfig(tenantId, addDomainConfigParams);
9

deleteDomainConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
domainstringYes

Response

Returns: DeleteDomainConfig200Response

Example

deleteDomainConfig Example
Copy Copy
1
2const tenantId: string = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
3const domain: string = 'auth.acmecorp.io';
4const options: { notifyAdmin?: boolean } = { notifyAdmin: true };
5const result: DeleteDomainConfig200Response = await deleteDomainConfig(tenantId, domain);
6

getDomainConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
domainstringYes

Response

Returns: GetDomainConfig200Response

Example

getDomainConfig Example
Copy Copy
1
2const tenantId: string = 'tenant-8a3b2f';
3const subdomain: string | undefined = 'payments'; // optional segment
4const domain: string = subdomain ? `${subdomain}.acme-corp.com` : 'acme-corp.com';
5const domainConfig: GetDomainConfig200Response = await getDomainConfig(tenantId, domain);
6

getDomainConfigs Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes

Response

Returns: GetDomainConfigs200Response

Example

getDomainConfigs Example
Copy Copy
1
2(async function run(): Promise<void> {
3 const tenantId: string = 'd4f8c9e0-3b1a-4f2a-8c9d-1e2f3a4b5c6d';
4 const options: { includeInactive?: boolean } = { includeInactive: true };
5 const result: GetDomainConfigs200Response = await getDomainConfigs(tenantId, options);
6 console.log(result);
7})();
8

patchDomainConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Response

Returns: GetDomainConfig200Response

Example

patchDomainConfig Example
Copy Copy
1
2const tenantId: string = "acme-tenant-001";
3const domainToUpdate: string = "billing.acme-corp.com";
4const patchDomainConfigParams: PatchDomainConfigParams = {
5 ssl: { enabled: true, certificateId: "cert-prod-12345" }, // optional fields included
6 redirect: { from: "http://billing.acme-corp.com", to: "https://billing.acme-corp.com", permanent: true }
7};
8const updatedConfig: GetDomainConfig200Response = await patchDomainConfig(tenantId, domainToUpdate, patchDomainConfigParams);
9

putDomainConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
domainToUpdatestringYes
updateDomainConfigParamsUpdateDomainConfigParamsYes

Response

Returns: GetDomainConfig200Response

Example

putDomainConfig Example
Copy Copy
1
2const tenantId: string = 'tenant_88a2b7';
3const domainToUpdate: string = 'login.enterprise-acme.com';
4const updateDomainConfigParams: UpdateDomainConfigParams = {
5 enabled: true,
6 ttlSeconds: 3600,
7 redirectToHttps: true,
8 aliases: ['login.acme-staging.com'], // optional parameter demonstrated
9 metadata: { owner: 'platform-team', environment: 'production' }
10};
11const updatedConfig: GetDomainConfig200Response = await putDomainConfig(tenantId, domainToUpdate, updateDomainConfigParams);
12

createEmailTemplate Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createEmailTemplateBodyCreateEmailTemplateBodyYes

Response

Returns: CreateEmailTemplate200Response

Example

createEmailTemplate Example
Copy Copy
1
2const tenantId: string = "acme-corp-42";
3const createEmailTemplateBody: CreateEmailTemplateBody = {
4 templateId: "welcome_v1",
5 name: "New User Welcome",
6 subject: "Welcome to Acme Corp — next steps",
7 htmlBody: "<p>Hi \{{firstName}}, welcome to Acme Corp! Use code <strong>GETSTARTED</strong>.</p>",
8 description: "Onboarding welcome email for newly registered users", // optional parameter demonstrated
9 isActive: true,
10 previewText: "Start using your Acme account today" // another optional field
11};
12const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
13

deleteEmailTemplate Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: FlagCommentPublic200Response

Example

deleteEmailTemplate Example
Copy Copy
1
2const maybeSuffix: string | undefined = "-prod";
3const tenantId: string = `acme-corp${maybeSuffix ?? ""}`;
4const templateId: string = "6f1e2d3c-4b5a-6789-0abc-def123456789";
5const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
6

deleteEmailTemplateRenderError Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
errorIdstringYes

Response

Returns: FlagCommentPublic200Response

Example

deleteEmailTemplateRenderError Example
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_01';
3const id: string = 'welcome_email_template_2025';
4const errorId: string = 'render_error_9001';
5let note: string | undefined = 'stale renderer failure'; // optional metadata example
6const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
7

getEmailTemplate Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetEmailTemplate200Response

Example

getEmailTemplate Example
Copy Copy
1
2const tenantId: string = 'tenant-4a1c2b9f';
3const id: string = 'tmpl-7c3b21';
4const preferredLocale: string | undefined = 'en-US';
5
6const template: GetEmailTemplate200Response = await getEmailTemplate(tenantId, id);
7

getEmailTemplateDefinitions Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes

Response

Returns: GetEmailTemplateDefinitions200Response

Example

getEmailTemplateDefinitions Example
Copy Copy
1
2const tenantId: string = "acme-corp-78";
3const response: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId, undefined);
4

getEmailTemplateRenderErrors Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
skipnumberNo

Response

Returns: GetEmailTemplateRenderErrors200Response

Example

getEmailTemplateRenderErrors Example
Copy Copy
1
2const tenantId: string = "tenant_9b3f2c";
3const templateId: string = "email_tpl_42";
4const skipCount: number = 20;
5const resultNoSkip: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, templateId);
6const resultWithSkip: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, templateId, skipCount);
7

getEmailTemplates Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Response

Returns: GetEmailTemplates200Response

Example

getEmailTemplates Example
Copy Copy
1
2const tenantId: string = 'acme-tenant-782';
3const templates: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
4const templatesPaged: GetEmailTemplates200Response = await getEmailTemplates(tenantId, 20);
5

renderEmailTemplate Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
renderEmailTemplateBodyRenderEmailTemplateBodyYes
localestringNo

Response

Returns: RenderEmailTemplate200Response

Example

renderEmailTemplate Example
Copy Copy
1
2const tenantId: string = 'acme-corp-987';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'user-invite',
5 subject: "You're invited to Acme",
6 placeholders: { firstName: 'Alex' },
7 metadata: { source: 'signup-flow' }
8};
9const locale: string = 'en-US';
10const result: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
11

updateEmailTemplate Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

Response

Returns: FlagCommentPublic200Response

Example

updateEmailTemplate Example
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'emailTemplate_pwd_reset_9f3c';
4const updateEmailTemplateBody: UpdateEmailTemplateBody = {
5 name: 'Password Reset Notification',
6 subject: 'Reset your ACME password',
7 html: '<p>Click <a href="\{{reset_link}}">here</a> to reset your password.</p>'
8} as UpdateEmailTemplateBody;
9const result: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
10

getEventLog Internal Link

req tenantId urlId userIdWS

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
userIdWSstringYes
startTimenumberYes
endTimenumberYes

Response

Returns: GetEventLog200Response

Example

getEventLog Example
Copy Copy
1
2const tenantId: string = "acme-corp";
3const urlId: string = "url_4b7f";
4const userIdWS: string = "john.doe@acme.com";
5const startTime: number = Date.now() - 24 * 60 * 60 * 1000;
6const endTime: number = Date.now();
7interface OptionalParams { includeMetadata?: boolean; maxItems?: number; }
8const opts: OptionalParams = { includeMetadata: true };
9const result: GetEventLog200Response = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
userIdWSstringYes
startTimenumberYes
endTimenumberYes

Response

Returns: GetEventLog200Response

Example

getGlobalEventLog Example
Copy Copy
1
2const tenantId: string = "tenant-42";
3const urlId: string = "url-7f3b";
4const userIdWS: string = "user_jdoe";
5const startTime: number = Date.now() - 60 * 60 * 1000; // 1 hour ago
6const endTime: number = Date.now();
7const includeMetadata: boolean | undefined = undefined; // optional flag example
8const result: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

createFeedPost Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Response

Returns: CreateFeedPost200Response

Example

createFeedPost Example
Copy Copy
1
2const tenantId: string = 'tenant-7421';
3const imageAsset: FeedPostMediaItemAsset = { url: 'https://cdn.example.com/images/launch.jpg', mimeType: 'image/jpeg', width: 1200, height: 630 };
4const mediaItem: FeedPostMediaItem = { type: 'image', assets: [imageAsset], caption: 'Highlights from today’s release' };
5const link: FeedPostLink = { url: 'https://www.example.com/releases/v2', title: 'Release notes' };
6const createFeedPostParams: CreateFeedPostParams = { title: 'Version 2.0 Released', body: 'We shipped major performance improvements and new features.', media: [mediaItem], link };
7const broadcastId: string = 'broadcast-602';
8const isLive: boolean = false;
9const doSpamCheck: boolean = true;
10const result: CreateFeedPost200Response = await createFeedPost(tenantId, createFeedPostParams, broadcastId, isLive, doSpamCheck);
11

createFeedPostPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
ssostringNo

Response

Returns: CreateFeedPostPublic200Response

Example

createFeedPostPublic Example
Copy Copy
1
2const tenantId: string = 'tenant_98765';
3const createFeedPostParams: CreateFeedPostParams = {
4 title: 'Weekly Product Update',
5 body: 'Released performance improvements and bug fixes across the mobile app.',
6 media: [
7 {
8 url: 'https://cdn.example.com/images/update-2026-05-20.jpg',
9 type: 'image',
10 assets: [{ url: 'https://cdn.example.com/images/update-2026-05-20.jpg', mimeType: 'image/jpeg' }]
11 } as FeedPostMediaItem
12 ],
13 links: [{ url: 'https://example.com/release-notes/2026-05-20', title: 'Full release notes' } as FeedPostLink],
14 tags: ['release', 'mobile', 'performance']
15};
16const broadcastId: string = 'broadcast_20260520';
17const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
18const result: CreateFeedPostPublic200Response = await createFeedPostPublic(tenantId, createFeedPostParams, broadcastId, sso);
19

deleteFeedPostPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
postIdstringYes
broadcastIdstringNo
ssostringNo

Response

Returns: DeleteFeedPostPublic200Response

Example

deleteFeedPostPublic Example
Copy Copy
1
2const tenantId: string = "greenwood-enterprises";
3const postId: string = "post_84f3a2b7-9d6c-4e3a-8b2f";
4const broadcastId: string = "broadcast-20260520-01";
5const sso: string = "sso-token-7f9b3c";
6const result: DeleteFeedPostPublic200Response = await deleteFeedPostPublic(tenantId, postId, broadcastId, sso);
7

getFeedPosts Internal Link

req tenantId afterId

Parameters

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
limitnumberNo
tagsArrayNo

Response

Returns: GetFeedPosts200Response

Example

getFeedPosts Example
Copy Copy
1
2const tenantId: string = 'tenant_8b7f2c';
3const limit: number = 20;
4const tags: Array<string> = ['product-updates', 'community'];
5const firstPage: GetFeedPosts200Response = await getFeedPosts(tenantId, undefined, limit, tags);
6const afterId: string = 'post_9c3d2e';
7const secondPage: GetFeedPosts200Response = await getFeedPosts(tenantId, afterId, limit);
8

getFeedPostsPublic Internal Link

req tenantId afterId

Parameters

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
limitnumberNo
tagsArrayNo
ssostringNo
isCrawlerbooleanNo
includeUserInfobooleanNo

Response

Returns: GetFeedPostsPublic200Response

Example

getFeedPostsPublic Example
Copy Copy
1
2const response: GetFeedPostsPublic200Response = await getFeedPostsPublic({
3 tenantId: 'tenant_acme_corp',
4 afterId: 'f8e7c6d5',
5 limit: 25,
6 tags: ['product', 'release'],
7 sso: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTYifQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c',
8 isCrawler: false,
9 includeUserInfo: true
10});
11

getFeedPostsStats Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
postIdsArrayYes
ssostringNo

Response

Returns: GetFeedPostsStats200Response

Example

getFeedPostsStats Example
Copy Copy
1
2async function fetchStats(): Promise<void> {
3 const tenantId: string = 'tenant-4c2b1a';
4 const postIds: string[] = ['post_7f1e3a', 'post_9b2c6d'];
5 const sso: string | undefined = 'sso_tok_9XyZ123';
6 const result: GetFeedPostsStats200Response = await getFeedPostsStats(tenantId, postIds, sso);
7 console.log(result);
8}
9fetchStats();
10

getUserReactsPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
postIdsArrayNo
ssostringNo

Response

Returns: GetUserReactsPublic200Response

Example

getUserReactsPublic Example
Copy Copy
1
2const tenantId: string = 'acme-corp-01';
3const postIds: string[] = ['6f1e2d3c-4b5a-6789-0abc-def123456789', '9a8b7c6d-5e4f-3210-0fed-cba987654321'];
4const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload.signature';
5
6const responseMinimal: GetUserReactsPublic200Response = await getUserReactsPublic(tenantId);
7const responseWithOptions: GetUserReactsPublic200Response = await getUserReactsPublic(tenantId, postIds, sso);
8

reactFeedPostPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
postIdstringYes
reactBodyParamsReactBodyParamsYes
isUndobooleanNo
broadcastIdstringNo
urlIdstringNo
ssostringNo

Response

Returns: ReactFeedPostPublic200Response

Example

reactFeedPostPublic Example
Copy Copy
1
2const tenantId: string = "global-markets";
3const postId: string = "8e2c3f9a-4b6d-4f1a-9c2d-e8a1b2c3d4e5";
4const reactBodyParams: ReactBodyParams = { reactionType: "like", clientApp: "web-ui", timestamp: new Date().toISOString() };
5const isUndo: boolean = false;
6const broadcastId: string = "broadcast-2026-05-20";
7const urlId: string = "feed-post-8e2c";
8const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.fake.payload";
9
10const result: ReactFeedPostPublic200Response = await reactFeedPostPublic(tenantId, postId, reactBodyParams, isUndo, broadcastId, urlId, sso);
11

updateFeedPost Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
feedPostFeedPostYes

Response

Returns: FlagCommentPublic200Response

Example

updateFeedPost Example
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const id: string = 'feedpost-2026-0001';
4const mediaAsset: FeedPostMediaItemAsset = { assetId: 'asset-9876', url: 'https://cdn.acme.com/assets/asset-9876.jpg' } as FeedPostMediaItemAsset;
5const mediaItem: FeedPostMediaItem = { id: 'media-1', type: 'image', asset: mediaAsset } as FeedPostMediaItem;
6const feedPost: FeedPost = { title: 'Product Launch', body: 'We launched the new product today.', media: [mediaItem], isPinned: true } as FeedPost;
7const result: FlagCommentPublic200Response = await updateFeedPost(tenantId, id, feedPost);
8

updateFeedPostPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
postIdstringYes
updateFeedPostParamsUpdateFeedPostParamsYes
broadcastIdstringNo
ssostringNo

Response

Returns: CreateFeedPostPublic200Response

Example

updateFeedPostPublic Example
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const postId: string = 'post_9f2b4a';
4const updateFeedPostParams: UpdateFeedPostParams = {
5 title: 'Q2 Release Notes',
6 body: 'We rolled out feature X, fixed critical bugs, and improved load times.',
7 mediaItems: [
8 {
9 id: 'media_123',
10 type: 'image',
11 assets: [{ url: 'https://cdn.acme.com/images/release.png', mimeType: 'image/png' }]
12 }
13 ],
14 links: [{ url: 'https://acme.com/releases/q2', title: 'Full release notes' }],
15 isPublished: true
16};
17const broadcastId: string = 'broadcast_20260520';
18const sso: string = 'sso_token_ab12cd34';
19const result: CreateFeedPostPublic200Response = await updateFeedPostPublic(tenantId, postId, updateFeedPostParams, broadcastId, sso);
20

flagCommentPublic Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
isFlaggedbooleanYes
ssostringNo

Response

Returns: FlagCommentPublic200Response

Example

flagCommentPublic Example
Copy Copy
1
2const tenantId: string = "acme-corp-42";
3const commentId: string = "comment_7b3a2f";
4const isFlagged: boolean = true;
5const sso: string | undefined = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyLTI0NSIsImlhdCI6MTY5MzAwMDAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6const result: FlagCommentPublic200Response = await flagCommentPublic(tenantId, commentId, isFlagged, sso);
7

getGifLarge Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
largeInternalURLSanitizedstringYes

Response

Returns: GifGetLargeResponse

Example

getGifLarge Example
Copy Copy
1
2const tenantId: string = 'tenant_8a92f4';
3const largeInternalURLSanitized: string = 'https://cdn.streamingco.com/gifs/product-demo-large.gif';
4let maybeStatus: APIStatus | undefined = undefined; // optional metadata when available
5const response: GifGetLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6

getGifsSearch Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
searchstringYes
localestringNo
ratingstringNo
pagenumberNo

Response

Returns: GifSearchResponse

Example

getGifsSearch Example
Copy Copy
1
2(async () => {
3 const tenantId: string = "global-media";
4 const search: string = "laughing baby";
5 const locale: string = "en-US";
6 const rating: string = "pg";
7 const page: number = 2;
8 const result: GifSearchResponse = await getGifsSearch(tenantId, search, locale, rating, page);
9 console.log(result);
10})();
11

getGifsTrending Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
localestringNo
ratingstringNo
pagenumberNo

Response

Returns: GifSearchResponse

Example

getGifsTrending Example
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const locale: string = 'en-US';
4const rating: string = 'PG';
5const page: number = 1;
6const result: GifSearchResponse = await getGifsTrending(tenantId, locale, rating, page);
7

addHashTag Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringNo
createHashTagBodyCreateHashTagBodyNo

Response

Returns: AddHashTag200Response

Example

addHashTag Example
Copy Copy
1
2const tenantId: string = 'tenant_9f3b21';
3const createHashTagBody: CreateHashTagBody = { name: '#product-launch', description: 'Tags for the Q3 product launch campaign', isPublic: true };
4const response: AddHashTag200Response = await addHashTag(tenantId, createHashTagBody);
5
6const createHashTagBodyOnly: CreateHashTagBody = { name: '#user-feedback', description: 'Aggregated user feedback', isPublic: false };
7const responseWithoutTenant: AddHashTag200Response = await addHashTag(undefined, createHashTagBodyOnly);
8

addHashTagsBulk Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringNo
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

Response

Returns: AddHashTagsBulk200Response

Example

addHashTagsBulk Example
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2c';
3const customConfig: CustomConfigParameters = { importance: 'low', notifyOnChange: false };
4const tag: BulkCreateHashTagsBodyTagsInner = {
5 name: 'feature-ui',
6 description: 'Marks UI-related feature work',
7 color: '#1E90FF',
8 customConfig
9};
10const bulkCreateHashTagsBody: BulkCreateHashTagsBody = { tags: [tag] };
11const resultWithTenant: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
12const resultWithoutTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBody);
13

deleteHashTag Internal Link

Parameters

NameTypeRequiredDescription
tagstringYes
tenantIdstringNo
deleteHashTagRequestDeleteHashTagRequestNo

Response

Returns: FlagCommentPublic200Response

Example

deleteHashTag Example
Copy Copy
1
2const tag: string = "outdated-policy";
3const tenantId: string = "acme_corp_42";
4const deleteHashTagRequest: DeleteHashTagRequest = {};
5const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteHashTagRequest);
6

getHashTags Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
pagenumberNo

Response

Returns: GetHashTags200Response

Example

getHashTags Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_78b2a9f4';
4 const firstPageResult: GetHashTags200Response = await getHashTags(tenantId);
5 const secondPageResult: GetHashTags200Response = await getHashTags(tenantId, 2);
6 console.log(firstPageResult, secondPageResult);
7})();
8

patchHashTag Internal Link

Parameters

NameTypeRequiredDescription
tagstringYes
tenantIdstringNo
updateHashTagBodyUpdateHashTagBodyNo

Response

Returns: PatchHashTag200Response

Example

patchHashTag Example
Copy Copy
1
2const tag: string = "release-2026";
3const tenantId: string = "tenant_7b3f";
4const updateHashTagBody: UpdateHashTagBody = {
5 label: "Release 2026",
6 description: "Tag used to group issues and features for the 2026 product launch",
7 isActive: true
8};
9const result: PatchHashTag200Response = await patchHashTag(tag, tenantId, updateHashTagBody);
10

createModerator Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createModeratorBodyCreateModeratorBodyYes

Response

Returns: CreateModerator200Response

Example

createModerator Example
Copy Copy
1
2const tenantId: string = 'tenant_acmecorp_001';
3const createModeratorBody: CreateModeratorBody = {
4 userId: 'mod-982',
5 displayName: 'Ava Johnson',
6 email: 'ava.johnson@acme.com',
7 roles: ['global_moderator'],
8 customConfig: { enableNotifications: true, maxDailyActions: 500 } as CustomConfigParameters
9};
10const result: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
11

deleteModerator Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
sendEmailstringNo

Response

Returns: FlagCommentPublic200Response

Example

deleteModerator Example
Copy Copy
1
2const tenantId: string = 'acme-corp-42';
3const moderatorId: string = 'mod_9374';
4const sendEmail: string | undefined = 'notifications@acme-corp.com';
5const result: FlagCommentPublic200Response = await deleteModerator(tenantId, moderatorId, sendEmail);
6
7

getModerator Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetModerator200Response

Example

getModerator Example
Copy Copy
1
2(async function run(): Promise<void> {
3 const tenantId: string = 'tenant_company_82';
4 const id: string = 'moderator_4932';
5 const response: GetModerator200Response = await getModerator(tenantId, id);
6 const moderatorName: string | undefined = response.moderator?.name;
7 console.log(moderatorName);
8})();
9

getModerators Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Response

Returns: GetModerators200Response

Example

getModerators Example
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_acme_42";
4 const moderatorsDefault: GetModerators200Response = await getModerators(tenantId);
5 const moderatorsWithSkip: GetModerators200Response = await getModerators(tenantId, 25);
6 console.log(moderatorsDefault, moderatorsWithSkip);
7})();
8

sendInvite Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
fromNamestringYes

Response

Returns: FlagCommentPublic200Response

Example

sendInvite Example
Copy Copy
1
2const tenantId: string = 'acme-corp-128';
3const id: string = 'comment-8421f';
4const fromName: string = 'Marcus Lindström';
5const note: string | undefined = undefined; // optional parameter example
6const response: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName);
7

updateModerator Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateModeratorBodyUpdateModeratorBodyYes

Response

Returns: FlagCommentPublic200Response

Example

updateModerator Example
Copy Copy
1
2const tenantId: string = "acme_corp_tenant_42";
3const id: string = "moderator_9f3b";
4const updateModeratorBody: UpdateModeratorBody = { role: "lead_moderator" } as UpdateModeratorBody;
5const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBody);
6

deleteNotificationCount Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: FlagCommentPublic200Response

Example

deleteNotificationCount Example
Copy Copy
1
2(async function() {
3 const tenantId: string = 'tenant_0a1b2c3d';
4 const id: string = 'notification-9f8e7d6c';
5 const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
6 console.log(result);
7})();
8

getCachedNotificationCount Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetCachedNotificationCount200Response

Example

getCachedNotificationCount Example
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-1024";
4const tenantOverride: string | undefined = undefined; // optional override
5const effectiveTenantId: string = tenantOverride ?? tenantId;
6const notificationCount: GetCachedNotificationCount200Response = await getCachedNotificationCount(effectiveTenantId, userId);
7

getNotificationCount Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Response

Returns: GetNotificationCount200Response

Example

getNotificationCount Example
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const userId: string | undefined = 'user_7';
4const urlId: string | undefined = undefined;
5const fromCommentId: string | undefined = undefined;
6const viewed: boolean | undefined = true;
7const type: string | undefined = 'mention';
8const notificationCount: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, fromCommentId, viewed, type);
9

getNotifications Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Response

Returns: GetNotifications200Response

Example

getNotifications Example
Copy Copy
1
2const tenantId: string = "tenant_4f7a9c";
3const userId: string | undefined = "user_83a2";
4const urlId: string | undefined = "https://app.example.com/posts/123";
5const fromCommentId: string | undefined = "cmt_1024";
6const viewed: boolean | undefined = false;
7const type: string | undefined = "mention";
8const skip: number | undefined = 25;
9const notifications: GetNotifications200Response = await getNotifications(tenantId, userId, urlId, fromCommentId, viewed, type, skip);
10

updateNotification Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateNotificationBodyUpdateNotificationBodyYes
userIdstringNo

Response

Returns: FlagCommentPublic200Response

Example

updateNotification Example
Copy Copy
1
2const tenantId: string = 'acme-inc';
3const id: string = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
4const updateNotificationBody: UpdateNotificationBody = { resolved: true, reason: 'Offensive language detected', notes: 'Marked by moderator' };
5const userId: string = 'user_1024';
6const resultWithUser: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
7const resultWithoutUser: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody);
8

addPage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createAPIPageDataCreateAPIPageDataYes

Response

Returns: AddPageAPIResponse

Example

addPage Example
Copy Copy
1
2const tenantId: string = 'tenant_9b3f2c1a';
3const createData: CreateAPIPageData = {
4 title: 'Q3 Product Roadmap',
5 slug: 'q3-product-roadmap',
6 content: '<h1>Goals</h1><p>Focus on performance and reliability improvements.</p>',
7 authorId: 'user_84c2',
8 published: false, // optional flag demonstrated
9 tags: ['product', 'roadmap'] // optional metadata demonstrated
10};
11const result: AddPageAPIResponse = await addPage(tenantId, createData);
12

deletePage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: DeletePageAPIResponse

Example

deletePage Example
Copy Copy
1
2async function run(deleteImmediately?: boolean): Promise<void> {
3 const tenantId: string = 'acme_corp_tenant_01';
4 const id: string = 'page_5f8b3a9e';
5 const result: DeletePageAPIResponse = await deletePage(tenantId, id);
6 const logAction: boolean = deleteImmediately ?? false;
7 if (logAction) console.log('Deleted page', id, result);
8}
9run();
10

getPageByURLId Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes

Response

Returns: GetPageByURLIdAPIResponse

Example

getPageByURLId Example
Copy Copy
1
2interface APIPage { id: string; title: string; content?: string; published: boolean }
3interface GetPageByURLIdAPIResponse { page: APIPage; retrievedAt?: string }
4
5const tenantId: string = 'acme-enterprises';
6const urlId: string = '6f1e2d3c-4b5a-6789-abcd-1234567890ef';
7
8const result: GetPageByURLIdAPIResponse = await getPageByURLId(tenantId, urlId);
9
10const pageTitle: string = result.page.title;
11const contentPreview: string | undefined = result.page.content?.slice(0, 120);
12

getPages Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes

Response

Returns: GetPagesAPIResponse

Example

getPages Example
Copy Copy
1
2const tenantId: string = "tenant_3f8d9b2a";
3const options: { page?: number; pageSize?: number } = { page: 1, pageSize: 25 };
4const pagesResponse: GetPagesAPIResponse = await getPages(tenantId, options);
5

patchPage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateAPIPageDataUpdateAPIPageDataYes

Response

Returns: PatchPageAPIResponse

Example

patchPage Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-enterprises';
4 const id: string = '9f8b7c6d-4a2e-11ec-8d3d-0242ac130003';
5 const updateData: UpdateAPIPageData = { title: 'Q2 Financial Summary' }; // other fields optional
6 const result: PatchPageAPIResponse = await patchPage(tenantId, id, updateData);
7 console.log(result);
8})();
9

deletePendingWebhookEvent Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: FlagCommentPublic200Response

Example

deletePendingWebhookEvent Example
Copy Copy
1
2async function fetchDeletedEventOptional(tenantId: string, id: string, includeRelated?: boolean): Promise<FlagCommentPublic200Response> {
3 const res: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
4 if (includeRelated) { /* optionally process related data */ }
5 return res;
6}
7
8const tenantId: string = 'acme-corp-tenant-42';
9const webhookId: string = 'wh_evt_20260520_9f2b7';
10const deletedEvent: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, webhookId);
11

getPendingWebhookEventCount Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo

Response

Returns: GetPendingWebhookEventCount200Response

Example

getPendingWebhookEventCount Example
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const commentId: string | undefined = 'cmt-98765';
4const externalId: string | undefined = 'order-5643';
5const eventType: string | undefined = 'comment.created';
6const typeParam: string | undefined = 'webhook';
7const domain: string | undefined = 'app.mycompany.com';
8const attemptCountGT: number | undefined = 2;
9
10const result: GetPendingWebhookEventCount200Response = await getPendingWebhookEventCount(
11 tenantId,
12 commentId,
13 externalId,
14 eventType,
15 typeParam,
16 domain,
17 attemptCountGT
18);
19

getPendingWebhookEvents Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

Response

Returns: GetPendingWebhookEvents200Response

Example

getPendingWebhookEvents Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'd6e8f3a2-4b9f-4c3b-8123-1f2e3d4c5b6a';
4 const commentId: string = 'cmt_987654321';
5 const eventType: string = 'COMMENT_CREATED';
6 const domain: string = 'comments.prod.example.com';
7 const attemptCountGT: number = 1;
8 const skip: number = 0;
9
10 const result: GetPendingWebhookEvents200Response = await getPendingWebhookEvents(
11 tenantId,
12 commentId,
13 undefined,
14 eventType,
15 undefined,
16 domain,
17 attemptCountGT,
18 skip
19 );
20
21 console.log(result);
22})();
23

createQuestionConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createQuestionConfigBodyCreateQuestionConfigBodyYes

Response

Returns: CreateQuestionConfig200Response

Example

createQuestionConfig Example
Copy Copy
1
2const tenantId: string = "acme-enterprises";
3const createQuestionConfigBody: CreateQuestionConfigBody = {
4 title: "Product Satisfaction",
5 description: "Quarterly feedback on overall product experience",
6 isActive: true,
7 customOptions: [
8 { label: "Very satisfied", value: "5" },
9 { label: "Somewhat satisfied", value: "4" }
10 ] // optional fields like description are shown; others omitted
11};
12const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
13

deleteQuestionConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: FlagCommentPublic200Response

Example

deleteQuestionConfig Example
Copy Copy
1
2const tenantId: string = 'acme-enterprises';
3const id: string = 'question-config_7a1b2c';
4const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5

getQuestionConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetQuestionConfig200Response

Example

getQuestionConfig Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-enterprises';
4 const id: string = 'question-987654321';
5 const config: GetQuestionConfig200Response = await getQuestionConfig(tenantId, id);
6 console.log(config);
7})();
8

getQuestionConfigs Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Response

Returns: GetQuestionConfigs200Response

Example

getQuestionConfigs Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant-8f4b2c';
4 const skip: number = 40;
5 const responseWithoutSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
6 const responseWithSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, skip);
7 console.log(responseWithoutSkip, responseWithSkip);
8})();
9

updateQuestionConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Response

Returns: FlagCommentPublic200Response

Example

updateQuestionConfig Example
Copy Copy
1
2const tenantId: string = 'acme-corp-927';
3const id: string = 'questionCfg-4f1d';
4const customOption: QuestionConfigCustomOptionsInner = { label: 'Mobile app', value: 'mobile_users' } as QuestionConfigCustomOptionsInner;
5const updateQuestionConfigBody: UpdateQuestionConfigBody = {
6 title: 'Post-purchase satisfaction',
7 enabled: true,
8 customOptions: [customOption],
9 description: 'Collect quick feedback after checkout'
10} as UpdateQuestionConfigBody;
11const result: FlagCommentPublic200Response = await updateQuestionConfig(tenantId, id, updateQuestionConfigBody);
12

createQuestionResult Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createQuestionResultBodyCreateQuestionResultBodyYes

Response

Returns: CreateQuestionResult200Response

Example

createQuestionResult Example
Copy Copy
1
2const tenantId: string = 'tenant_7f3a2b';
3const createQuestionResultBody: CreateQuestionResultBody = {
4 questionId: 'q_92a1',
5 respondentId: 'user_71c',
6 answers: [{ subQuestionId: 'sq1', value: 'Yes' }],
7 meta: [{ key: 'source', value: 'web' }] // optional metadata
8};
9const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
10

deleteQuestionResult Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: FlagCommentPublic200Response

Example

deleteQuestionResult Example
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_01';
3const id: string = 'questionResult_87b4f2a9';
4const result: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, id);
5

getQuestionResult Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetQuestionResult200Response

Example

getQuestionResult Example
Copy Copy
1
2const tenantId: string = 'acme-corp-42';
3const id: string = 'question-9f8b7c';
4const includeComments: boolean | undefined = true; // optional parameter example
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, id);
6console.log(result);
7

getQuestionResults Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Response

Returns: GetQuestionResults200Response

Example

getQuestionResults Example
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9b3f";
4 const urlId: string = "survey-2026-spring";
5 const userId: string = "user_00123";
6 const startDate: string = "2026-04-01T00:00:00Z";
7 const questionIds: string = "q_42,q_43";
8 const skip: number = 0;
9 const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, undefined, questionIds, skip);
10 console.log(result);
11})();
12

updateQuestionResult Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateQuestionResultBodyUpdateQuestionResultBodyYes

Response

Returns: FlagCommentPublic200Response

Example

updateQuestionResult Example
Copy Copy
1
2const tenantId: string = "acme-marketing";
3const id: string = "7f3a2c1e-4b6d-4c9f-8a2e-0d9b6f1c2e3a";
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 verdict: "correct",
6 note: "Peer-reviewed and confirmed",
7 meta: [] as MetaItem[] // optional metadata omitted/empty
8} as UpdateQuestionResultBody;
9const result: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
10
11

aggregateQuestionResults Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Response

Returns: AggregateQuestionResults200Response

Example

aggregateQuestionResults Example
Copy Copy
1
2const tenantId: string = 'tenant_6f8a2b';
3const questionIds: string[] = ['Q-1001', 'Q-1002'];
4const startDate: Date = new Date('2026-01-01T00:00:00Z');
5const forceRecalculate: boolean = true;
6const result: AggregateQuestionResults200Response = await aggregateQuestionResults(tenantId, undefined, questionIds, undefined, undefined, startDate, forceRecalculate);
7

bulkAggregateQuestionResults Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestYes
forceRecalculatebooleanNo

Response

Returns: BulkAggregateQuestionResults200Response

Example

bulkAggregateQuestionResults Example
Copy Copy
1
2const tenantId: string = 'tenant_8b3d72';
3const request: BulkAggregateQuestionResultsRequest = {
4 items: [
5 {
6 questionId: 'q-00123',
7 includeSubQuestions: true,
8 timeRange: { start: '2025-01-01T00:00:00Z', end: '2025-01-31T23:59:59Z' }
9 }
10 ],
11 bucket: { interval: 'day' }
12} as BulkAggregateQuestionResultsRequest;
13const result: BulkAggregateQuestionResults200Response = await bulkAggregateQuestionResults(tenantId, request, true);
14

combineCommentsWithQuestionResults Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Response

Returns: CombineCommentsWithQuestionResults200Response

Example

combineCommentsWithQuestionResults Example
Copy Copy
1
2const tenantId: string = 'tenant_12345';
3const questionIds: string[] = ['q-101', 'q-102'];
4const urlId: string = 'url_789';
5const startDate: Date = new Date('2026-01-01T00:00:00Z');
6const forceRecalculate: boolean = true;
7const minValue: number = 1;
8const maxValue: number = 5;
9const limit: number = 100;
10const combined: CombineCommentsWithQuestionResults200Response = await combineCommentsWithQuestionResults({
11 tenantId,
12 questionIds,
13 urlId,
14 startDate,
15 forceRecalculate,
16 minValue,
17 maxValue,
18 limit
19});
20

addSSOUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

Response

Returns: AddSSOUserAPIResponse

Example

addSSOUser Example
Copy Copy
1
2const tenantId: string = 'acme-organization-92';
3const createAPISSOUserData: CreateAPISSOUserData = {
4 email: 'sarah.connor@skynetpartners.com',
5 firstName: 'Sarah',
6 lastName: 'Connor',
7 externalId: 'okta|678901234',
8 roles: ['admin', 'developer'], // optional field demonstrated
9 displayName: 'Sarah Connor' // optional field demonstrated
10};
11const addUserResult: AddSSOUserAPIResponse = await addSSOUser(tenantId, createAPISSOUserData);
12

deleteSSOUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
deleteCommentsbooleanNo
commentDeleteModestringNo

Response

Returns: DeleteSSOUserAPIResponse

Example

deleteSSOUser Example
Copy Copy
1
2const tenantId: string = 'enterprise-acme-123';
3const id: string = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
4const deleteComments: boolean = true;
5const commentDeleteMode: string = 'hard';
6const result: DeleteSSOUserAPIResponse = await deleteSSOUser(tenantId, id, deleteComments, commentDeleteMode);
7

getSSOUserByEmail Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
emailstringYes

Response

Returns: GetSSOUserByEmailAPIResponse

Example

getSSOUserByEmail Example
Copy Copy
1
2const tenantId: string = 'acme-enterprises-7';
3const email: string = 'jane.doe@acme.com';
4const response: GetSSOUserByEmailAPIResponse = await getSSOUserByEmail(tenantId, email);
5const getUserIfEmailProvided: (tenant: string, mail?: string) => Promise<GetSSOUserByEmailAPIResponse | undefined> =
6 async (tenant: string, mail?: string): Promise<GetSSOUserByEmailAPIResponse | undefined> =>
7 mail ? await getSSOUserByEmail(tenant, mail) : undefined;
8

getSSOUserById Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetSSOUserByIdAPIResponse

Example

getSSOUserById Example
Copy Copy
1
2const tenantId: string = 'acme-inc-042';
3const id: string = 'user-00098765';
4const result: GetSSOUserByIdAPIResponse = await getSSOUserById(tenantId, id);
5

getSSOUsers Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Response

Returns: GetSSOUsers200Response

Example

getSSOUsers Example
Copy Copy
1
2const tenantId: string = 'acme-corp-001';
3const skip: number = 25;
4const response: GetSSOUsers200Response = await getSSOUsers(tenantId);
5const responseWithSkip: GetSSOUsers200Response = await getSSOUsers(tenantId, skip);
6

patchSSOUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsbooleanNo

Response

Returns: PatchSSOUserAPIResponse

Example

patchSSOUser Example
Copy Copy
1
2const tenantId: string = "tenant_8f3a4b2c";
3const id: string = "sso_user_72b9a1";
4const updateAPISSOUserData: UpdateAPISSOUserData = {
5 email: "jane.doe@acme-corp.com",
6 displayName: "Jane Doe",
7 department: "Product",
8 roles: ["user", "editor"]
9};
10const updateComments: boolean = true;
11const result: PatchSSOUserAPIResponse = await patchSSOUser(tenantId, id, updateAPISSOUserData, updateComments)
12

putSSOUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsbooleanNo

Response

Returns: PutSSOUserAPIResponse

Example

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

createSubscription Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataYes

Response

Returns: CreateSubscriptionAPIResponse

Example

createSubscription Example
Copy Copy
1
2const tenantId: string = "acme-enterprises-987";
3const createData: CreateAPIUserSubscriptionData = {
4 apiUserId: "user_72f4a1",
5 planId: "enterprise_annual",
6 startDate: "2026-06-01T00:00:00Z",
7 autoRenew: true,
8 trialPeriodDays: 30
9};
10const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createData);
11

deleteSubscription Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
userIdstringNo

Response

Returns: DeleteSubscriptionAPIResponse

Example

deleteSubscription Example
Copy Copy
1
2const tenantId: string = "acme-corp-84";
3const id: string = "sub_92f1b3a7";
4const responseWithoutUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, id);
5
6const userId: string = "user-2983";
7const responseWithUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, id, userId);
8

getSubscriptions Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo

Response

Returns: GetSubscriptionsAPIResponse

Example

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

updateSubscription Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataYes
userIdstringNo

Response

Returns: UpdateSubscriptionAPIResponse

Example

updateSubscription Example
Copy Copy
1
2const tenantId: string = 'a3f9d6b2-7c4e-4b1a-9f2d-0e6c8a1b2d3f';
3const id: string = 'sub_6f4b2a9e-3c1d-4e8f-9b2a-7d5c3e1f0a8b';
4const userId: string = 'user_58b2d4f1-6a7c-4e9b-8d1f-2c3a5b6e7f9d';
5const updateData: UpdateAPIUserSubscriptionData = {
6 planId: 'business_annual',
7 seats: 25,
8 autoRenew: false,
9 nextBillingDate: '2026-08-01'
10};
11const result: UpdateSubscriptionAPIResponse = await updateSubscription(tenantId, id, updateData, userId);
12

getTenantDailyUsages Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Response

Returns: GetTenantDailyUsages200Response

Example

getTenantDailyUsages Example
Copy Copy
1
2const tenantId: string = 'acme-corp-7';
3const yearNumber: number = 2026;
4const monthNumber: number = 4;
5const skip: number = 10;
6const result: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, undefined, skip);
7

createTenantPackage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createTenantPackageBodyCreateTenantPackageBodyYes

Response

Returns: CreateTenantPackage200Response

Example

createTenantPackage Example
Copy Copy
1
2const tenantId: string = "tenant_acme_corp_001";
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: "Acme Moderation Pack",
5 version: "1.2.0",
6 description: "Moderation settings tailored for Acme forums",
7 allowGuestPosting: false,
8 customConfig: {
9 profanityLevel: "medium",
10 imageMaxMb: 8
11 }
12} as CreateTenantPackageBody;
13const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
14

deleteTenantPackage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: FlagCommentPublic200Response

Example

deleteTenantPackage Example
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp';
3const packageId: string = 'pkg-9b2f4c';
4const reason: string | undefined = 'Remove obsolete feature set';
5const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
6

getTenantPackage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetTenantPackage200Response

Example

getTenantPackage Example
Copy Copy
1
2const tenantId: string = 'org-6412';
3const id: string = 'pkg-7f3b1c4a-9a2d-4e3b-b8c2-1a2b3c4d5e6f';
4const includePreview: boolean | undefined = undefined; // optional parameter example
5const packageResponse: GetTenantPackage200Response = await getTenantPackage(tenantId, id);
6

getTenantPackages Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Response

Returns: GetTenantPackages200Response

Example

getTenantPackages Example
Copy Copy
1
2const tenantId: string = 'tenant-7b3c2f';
3const skipCount: number = 10;
4const packages: GetTenantPackages200Response = await getTenantPackages(tenantId, skipCount);
5const packagesFromStart: GetTenantPackages200Response = await getTenantPackages(tenantId);
6

replaceTenantPackage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
replaceTenantPackageBodyReplaceTenantPackageBodyYes

Response

Returns: FlagCommentPublic200Response

Example

replaceTenantPackage Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_8a1f';
4 const id: string = 'pkg_bronze_2026';
5 const replaceTenantPackageBody: ReplaceTenantPackageBody = {
6 name: 'Bronze Plan',
7 description: 'Entry tier with basic moderation and analytics',
8 apiStatus: { status: 'active' },
9 customConfigParameters: { maxCommentsPerUser: 100 }
10 } as ReplaceTenantPackageBody;
11 const result: FlagCommentPublic200Response = await replaceTenantPackage(tenantId, id, replaceTenantPackageBody);
12 console.log(result);
13})();
14

updateTenantPackage Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateTenantPackageBodyUpdateTenantPackageBodyYes

Response

Returns: FlagCommentPublic200Response

Example

updateTenantPackage Example
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_sf_001";
4 const id: string = "pkg-premium-v2";
5 const updateTenantPackageBody: UpdateTenantPackageBody = {
6 name: "San Francisco Premium",
7 enabled: true,
8 customConfig: { maxComments: 500 },
9 tosConfig: { required: true } // optional fields demonstrated by presence; others omitted
10 } as UpdateTenantPackageBody;
11 const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
12 console.log(result);
13})();
14

createTenantUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

Response

Returns: CreateTenantUser200Response

Example

createTenantUser Example
Copy Copy
1
2const tenantId: string = 'tenant-54b2';
3const createTenantUserBody: CreateTenantUserBody = {
4 email: 'jane.doe@acme.com',
5 displayName: 'Jane Doe',
6 role: 'editor',
7 sendInvite: true
8};
9const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
10

deleteTenantUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
deleteCommentsstringNo
commentDeleteModestringNo

Response

Returns: FlagCommentPublic200Response

Example

deleteTenantUser Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-corp-01';
4 const id: string = 'user-84f3b2';
5 const deleteComments: string = 'Permanently remove legacy flagged comments from 2020';
6 const commentDeleteMode: string = 'hard';
7 const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
8 console.log(result);
9})();
10

getTenantUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetTenantUser200Response

Example

getTenantUser Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_01';
4 const id: string = 'user_4b7f9c';
5 const result: GetTenantUser200Response = await getTenantUser(tenantId, id);
6 const primaryEmail: string | undefined = result.user?.email;
7 console.log(primaryEmail);
8})();
9

getTenantUsers Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
skipnumberNo

Response

Returns: GetTenantUsers200Response

Example

getTenantUsers Example
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-42';
3const usersFirstPage: GetTenantUsers200Response = await getTenantUsers(tenantId);
4const usersSecondPage: GetTenantUsers200Response = await getTenantUsers(tenantId, 50);
5

replaceTenantUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

Response

Returns: FlagCommentPublic200Response

Example

replaceTenantUser Example
Copy Copy
1
2const tenantId: string = "tenant_acmeCorp";
3const id: string = "user_84b2";
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 email: "alice.jenkins@acmecorp.com",
6 displayName: "Alice Jenkins",
7 roles: ["moderator", "editor"],
8 disabled: false
9} as ReplaceTenantUserBody;
10const updateComments: string = "Migrated user account and reattributed historical comments";
11
12const result: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
13

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
redirectURLstringNo

Response

Returns: FlagCommentPublic200Response

Example

sendLoginLink Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_93';
4 const id: string = 'user_72f9b';
5 const redirectURL: string = 'https://app.mycompany.com/welcome';
6 const result: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
7 console.log(result);
8})();
9

updateTenantUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateTenantUserBodyUpdateTenantUserBodyYes
updateCommentsstringNo

Response

Returns: FlagCommentPublic200Response

Example

updateTenantUser Example
Copy Copy
1
2const tenantId: string = "tenant_4b72a1";
3const id: string = "user_7f8d2c";
4const updateTenantUserBody: UpdateTenantUserBody = {
5 email: "jane.doe@acmecorp.com",
6 displayName: "Jane Doe",
7 roles: ["editor"],
8 isActive: true
9};
10const updateComments: string = "Promoted to editor after Q2 review";
11const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, id, updateTenantUserBody, updateComments);
12

createTenant Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

Response

Returns: CreateTenant200Response

Example

createTenant Example
Copy Copy
1
2const tenantId: string = "acme-enterprises-001";
3const domainConfig: APIDomainConfiguration = { primaryDomain: "acme-enterprises.com", redirectToPrimary: true };
4const billingInfo: BillingInfo = { planId: "business-monthly", billingContactEmail: "finance@acme-enterprises.com" };
5const initialSite: ImportedSiteType = { siteName: "Main Site", siteUrl: "https://acme-enterprises.com" };
6const tosConfig: TOSConfig = { required: true, url: "https://acme-enterprises.com/terms" };
7
8const createTenantBody: CreateTenantBody = {
9 name: "Acme Enterprises",
10 description: "Primary tenant for Acme Enterprises",
11 domainConfiguration: domainConfig,
12 billingInfo,
13 initialSite, // optional parameter demonstrated
14 tosConfig
15};
16
17const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
18

deleteTenant Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
surestringNo

Response

Returns: FlagCommentPublic200Response

Example

deleteTenant Example
Copy Copy
1
2const tenantId: string = 'tenant-84f2';
3const id: string = 'delete-9b3f7a';
4const resultWithoutSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id);
5const resultWithSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id, 'confirm-deletion');
6

getTenant Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetTenant200Response

Example

getTenant Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant-4f2b';
4 const id: string = 'site-91a7';
5 const tenantResponse: GetTenant200Response = await getTenant(tenantId, id);
6 const billingInfo: BillingInfo | undefined = (tenantResponse as unknown as { billing?: BillingInfo }).billing;
7})();
8

getTenants Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
metastringNo
skipnumberNo

Response

Returns: GetTenants200Response

Example

getTenants Example
Copy Copy
1
2const tenantId: string = 'org_9a12f4';
3const meta: string = 'include=domains,billing';
4const skip: number = 20;
5const tenantsResponse: GetTenants200Response = await getTenants(tenantId, meta, skip);
6

updateTenant Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Response

Returns: FlagCommentPublic200Response

Example

updateTenant Example
Copy Copy
1
2const tenantId: string = 'acme-corp-001';
3const id: string = 'tenant-42';
4const billingInfo: BillingInfo = { billingEmail: 'billing@acme.com', address: '123 Market St' } as BillingInfo;
5const updateTenantBody: UpdateTenantBody = { displayName: 'Acme Corporation', billingInfo } as UpdateTenantBody;
6const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
7

changeTicketState Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringYes
idstringYes
changeTicketStateBodyChangeTicketStateBodyYes

Response

Returns: ChangeTicketState200Response

Example

changeTicketState Example
Copy Copy
1
2const tenantId: string = "acme-corp-001";
3const userId: string = "user_8742";
4const id: string = "TCK-2026-00042";
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: "closed",
7 comment: "Fixed in backend service; verified by QA",
8 notifyFollowers: false
9} as ChangeTicketStateBody;
10const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
11

createTicket Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringYes
createTicketBodyCreateTicketBodyYes

Response

Returns: CreateTicket200Response

Example

createTicket Example
Copy Copy
1
2const tenantId: string = 'acme-company-001';
3const userId: string = 'u_78f4b2';
4const createTicketBody: CreateTicketBody = {
5 title: 'Unable to access project dashboard',
6 description: 'Receiving 403 when accessing /dashboard for project X',
7 priority: 'high',
8 tags: ['dashboard', 'access'] // optional field demonstrated
9};
10const result: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
11

getTicket Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
userIdstringNo

Response

Returns: GetTicket200Response

Example

getTicket Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_01';
4 const id: string = 'TCK-20260520-001';
5 const ticket: GetTicket200Response = await getTicket(tenantId, id);
6 const userId: string = 'user_98765';
7 const userTicket: GetTicket200Response = await getTicket(tenantId, 'TCK-20260520-002', userId);
8 console.log(ticket, userTicket);
9})();
10

getTickets Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Response

Returns: GetTickets200Response

Example

getTickets Example
Copy Copy
1
2const tenantId: string = 'acme-corp-001';
3const userId: string | undefined = 'user-42';
4const state: number | undefined = 2;
5const skip: number | undefined = 0;
6const limit: number | undefined = 50;
7const tickets: GetTickets200Response = await getTickets(tenantId, userId, state, skip, limit);
8

getTranslations Internal Link

Parameters

NameTypeRequiredDescription
namespacestringYes
componentstringYes
localestringNo
useFullTranslationIdsbooleanNo

Response

Returns: GetTranslationsResponse

Example

getTranslations Example
Copy Copy
1
2const translationsDefault: GetTranslationsResponse = await getTranslations("payments", "checkout");
3const translationsFrenchDetailed: GetTranslationsResponse = await getTranslations("payments", "checkout", "fr-FR", true);
4

uploadImage Internal Link

Upload and resize an image

Parameters

NameTypeRequiredDescription
tenantIdstringYes
fileBlobYes
sizePresetSizePresetNo
urlIdstringNo

Response

Returns: UploadImageResponse

Example

uploadImage Example
Copy Copy
1
2const tenantId: string = 'tenant-acme-42';
3const file: Blob = new Blob([Uint8Array.from([137, 80, 78, 71, 13, 10])], { type: 'image/png' });
4const sizePreset: SizePreset = { name: 'hero-lg', maxWidth: 1920, maxHeight: 1080 };
5const urlId: string = 'homepage-hero-2026';
6const result: UploadImageResponse = await uploadImage(tenantId, file, sizePreset, urlId);
7

getUserBadgeProgressById Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetUserBadgeProgressById200Response

Example

getUserBadgeProgressById Example
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const id: string = 'user-6f3a2b';
4const includeHistory: boolean | undefined = true; // optional parameter example
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressById(tenantId, id);
6

getUserBadgeProgressByUserId Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringYes

Response

Returns: GetUserBadgeProgressById200Response

Example

getUserBadgeProgressByUserId Example
Copy Copy
1
2const tenantId: string = 'acme-enterprises';
3const userId: string = 'user_9f2b3c';
4const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
5console.log(result);
6

getUserBadgeProgressList Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
limitnumberNo
skipnumberNo

Response

Returns: GetUserBadgeProgressList200Response

Example

getUserBadgeProgressList Example
Copy Copy
1
2const tenantId: string = 'tenant_7f1a2b3c';
3const userId: string = 'user_9f8e7d6c';
4const limit: number = 25;
5const skip: number = 0;
6const result: GetUserBadgeProgressList200Response = await getUserBadgeProgressList(tenantId, userId, limit, skip);
7

createUserBadge Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
createUserBadgeParamsCreateUserBadgeParamsYes

Response

Returns: CreateUserBadge200Response

Example

createUserBadge Example
Copy Copy
1
2const tenantId: string = "tenant_7f9b3";
3const createUserBadgeParams: CreateUserBadgeParams = {
4 userId: "user_8421",
5 badge: {
6 id: "badge_12",
7 title: "Expert Contributor",
8 description: "Awarded for 100 helpful answers"
9 },
10 notify: true
11} as CreateUserBadgeParams;
12const result: CreateUserBadge200Response = await createUserBadge(tenantId, createUserBadgeParams);
13

deleteUserBadge Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: UpdateUserBadge200Response

Example

deleteUserBadge Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'olympus_inc';
4 const id: string = 'badge-73a9b2';
5 const includeDetails: boolean | undefined = true;
6 const response: UpdateUserBadge200Response = await deleteUserBadge(tenantId, id);
7 console.log(response);
8})();
9

getUserBadge Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetUserBadge200Response

Example

getUserBadge Example
Copy Copy
1
2const tenantId: string = 'acme-enterprises-01';
3const id: string = 'badge_8f3d2c';
4const userBadgeResponse: GetUserBadge200Response = await getUserBadge(tenantId, id);
5

getUserBadges Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
badgeIdstringNo
typenumberNo
displayedOnCommentsbooleanNo
limitnumberNo
skipnumberNo

Response

Returns: GetUserBadges200Response

Example

getUserBadges Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-tenant-01';
4 const userId: string | undefined = 'user_9876';
5 const badgeId: string | undefined = undefined;
6 const typeParam: number | undefined = 2;
7 const displayedOnComments: boolean | undefined = true;
8 const limit: number | undefined = 50;
9 const skip: number | undefined = 0;
10 const result: GetUserBadges200Response = await getUserBadges(tenantId, userId, badgeId, typeParam, displayedOnComments, limit, skip);
11 console.log(result);
12})();
13

updateUserBadge Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Response

Returns: UpdateUserBadge200Response

Example

updateUserBadge Example
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-01";
3const id: string = "user_81234";
4const updateUserBadgeParams: UpdateUserBadgeParams = {
5 badgeId: "top_contributor",
6 title: "Top Contributor",
7 description: "Awarded for sustained high-quality community contributions",
8 expiresAt: "2026-12-31T23:59:59Z" // optional parameter demonstrated
9} as UpdateUserBadgeParams;
10const result: UpdateUserBadge200Response = await updateUserBadge(tenantId, id, updateUserBadgeParams);
11

getUserNotificationCount Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

Response

Returns: GetUserNotificationCount200Response

Example

getUserNotificationCount Example
Copy Copy
1
2const tenantId: string = 'a1b2c3d4-5678-90ab-cdef-1234567890ab';
3const resultWithoutSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId);
4const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1Njc4OSIsImlhdCI6MTYwOTAwMDAwMH0.signature';
5const resultWithSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId, ssoToken);
6

getUserNotifications Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
ssostringNo

Response

Returns: GetUserNotifications200Response

Example

getUserNotifications Example
Copy Copy
1
2const response: GetUserNotifications200Response = await getUserNotifications(
3 'tenant_8f3a12',
4 25,
5 'notif_4b2d1',
6 true,
7 Date.now() - 7 * 24 * 60 * 60 * 1000,
8 true,
9 undefined,
10 undefined,
11 true,
12 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImlhdCI6MTY4MDAwMDAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
13);
14

resetUserNotificationCount Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

Response

Returns: ResetUserNotifications200Response

Example

resetUserNotificationCount Example
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-tenant-78f3';
4 const noSsoResult: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId);
5 const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
6 const withSsoResult: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId, ssoToken);
7 console.log(noSsoResult, withSsoResult);
8})();
9

resetUserNotifications Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

Response

Returns: ResetUserNotifications200Response

Example

resetUserNotifications Example
Copy Copy
1
2const params: {
3 tenantId: string;
4 afterId?: string;
5 afterCreatedAt?: number;
6 unreadOnly?: boolean;
7 dmOnly?: boolean;
8 noDm?: boolean;
9 sso?: string;
10} = {
11 tenantId: 'tenant_7f3b9c',
12 afterId: 'notif_20260520_01',
13 afterCreatedAt: Date.now() - 3_600_000,
14 unreadOnly: true,
15 sso: 'sso_session_xyz'
16};
17const result: ResetUserNotifications200Response = await resetUserNotifications(params);
18

updateUserNotificationCommentSubscriptionStatus Internal Link

Enable or disable notifications for a specific comment.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
notificationIdstringYes
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumYes
commentIdstringYes
ssostringNo

Response

Returns: UpdateUserNotificationStatus200Response

Example

updateUserNotificationCommentSubscriptionStatus Example
Copy Copy
1
2const tenantId: string = 'tenant_12345';
3const notificationId: string = 'notif_98765';
4const commentId: string = 'cmt_54321';
5const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum = UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptedIn;
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
7const result: UpdateUserNotificationStatus200Response = await updateUserNotificationCommentSubscriptionStatus(tenantId, notificationId, optedInOrOut, commentId, sso);
8

updateUserNotificationPageSubscriptionStatus Internal Link

Enable or disable notifications for a page. When users are subscribed to a page, notifications are created for new root comments, and also

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumYes
ssostringNo

Response

Returns: UpdateUserNotificationStatus200Response

Example

updateUserNotificationPageSubscriptionStatus Example
Copy Copy
1
2const tenantId: string = 'acme-tenant-001';
3const urlId: string = 'kb-article-421';
4const url: string = 'https://support.acme.com/kb/configuring-single-sign-on';
5const pageTitle: string = 'Configuring Single Sign-On for Support Portal';
6const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum =
7 UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
8const sso: string = 'saml:acme-tenant-001';
9
10const result: UpdateUserNotificationStatus200Response =
11 await updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscribedOrUnsubscribed, sso);
12

updateUserNotificationStatus Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
notificationIdstringYes
newStatusUpdateUserNotificationStatusNewStatusEnumYes
ssostringNo

Response

Returns: UpdateUserNotificationStatus200Response

Example

updateUserNotificationStatus Example
Copy Copy
1
2const tenantId: string = 'd8f4a2b0-6b3e-4c9a-9f1a-1234567890ab';
3const notificationId: string = 'notif-20260520-001';
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.Read;
5const sso: string = 'sso-token-7f3b9c';
6const result: UpdateUserNotificationStatus200Response = await updateUserNotificationStatus(tenantId, notificationId, newStatus, sso);
7

getUserPresenceStatuses Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Response

Returns: GetUserPresenceStatuses200Response

Example

getUserPresenceStatuses Example
Copy Copy
1
2const tenantId: string = "9f8b7c6d-1234-4b2a-9d8e-0a1b2c3d4e5f";
3const urlIdWS: string = "wss://presencews.prod.company.example.com/stream";
4const userIds: string = "a3e9b1f0-1111-4444-8888-1234567890ab,c2d3e4f5-2222-5555-9999-abcdefabcdef";
5const includeOffline: boolean | undefined = true;
6
7const result: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
8

searchUsers Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

Response

Returns: SearchUsers200Response

Example

searchUsers Example
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const urlId: string = 'site-2026';
4const usernameStartsWith: string = 'mar';
5const mentionGroupIds: Array<string> = ['engineering', 'product-design'];
6const sso: string = 'saml';
7const result: SearchUsers200Response = await searchUsers(tenantId, urlId, usernameStartsWith, mentionGroupIds, sso);
8

getUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetUser200Response

Example

getUser Example
Copy Copy
1
2const idSuffix: string | undefined = undefined;
3const tenantId: string = "acme-enterprises";
4const id: string = idSuffix ?? "user_98765";
5const response: GetUser200Response = await getUser({ tenantId, id });
6

createVote Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
directionCreateVoteDirectionEnumYes
userIdstringNo
anonUserIdstringNo

Response

Returns: VoteComment200Response

Example

createVote Example
Copy Copy
1
2const tenantId: string = 'tenant_6a1b2c';
3const commentId: string = 'cmt_d4e5f6';
4const direction: CreateVoteDirectionEnum = 'UP' as CreateVoteDirectionEnum;
5const userId: string = 'user_93b7a1';
6const result: VoteComment200Response = await createVote(tenantId, commentId, direction, userId);
7

deleteVote Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
editKeystringNo

Response

Returns: DeleteCommentVote200Response

Example

deleteVote Example
Copy Copy
1
2const tenantId: string = 'tenant_8b3f2a9c';
3const id: string = 'comment-4721';
4const editKey: string = 'edk_4f2a9b7c';
5const responseWithEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
6const responseWithoutEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id);
7

getVotes Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes

Response

Returns: GetVotes200Response

Example

getVotes Example
Copy Copy
1
2const tenantId: string = 'tenant-42c-eu';
3const urlId: string = 'article-7f9b';
4const includeMetadata: boolean | undefined = true;
5const votes: GetVotes200Response = await getVotes(tenantId, urlId);
6

getVotesForUser Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
userIdstringNo
anonUserIdstringNo

Response

Returns: GetVotesForUser200Response

Example

getVotesForUser Example
Copy Copy
1
2const tenantId: string = 'acme-tenant-42';
3const urlId: string = 'release-notes';
4const userId: string = 'user_10293';
5const votes: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, userId);
6

Need Help?

If you encounter any issues or have questions about the JavaScript/TypeScript SDK, please:

Contributing

Contributions are welcome! Please visit the GitHub repository for contribution guidelines.