FastComments.com

FastComments JavaScript/TypeScript SDK


Questo è lo SDK ufficiale JavaScript/TypeScript per FastComments.

SDK ufficiale JavaScript/TypeScript per l'API di FastComments

Repository

Visualizza su GitHub


Installazione Internal Link

npm install fastcomments-sdk

Documentazione API Internal Link


Riferimento completo delle API: docs/api/README.md

Compatibilità Browser e Server Internal Link


Questo SDK utilizza due punti di ingresso per garantire la massima compatibilità e prevenire errori a runtime:

  • fastcomments-sdk/browser - Versione sicura per il browser con fetch nativo
  • fastcomments-sdk/server - Versione completa per Node.js con supporto SSO
  • fastcomments-sdk (predefinito) - Solo tipi, sicuro da importare ovunque

API Pubbliche vs Protette Internal Link

L'SDK fornisce tre principali classi API:

  • DefaultApi - Endpoint protetti che richiedono la tua chiave API per l'autenticazione. Usali per operazioni lato server.
  • PublicApi - Endpoint pubblici accessibili senza una chiave API. Possono essere chiamati direttamente da browser/dispositivi mobili/etc.
  • HiddenApi - Endpoint interni/amministrativi per casi d'uso avanzati.

Esempio: Uso della Public API (sicuro per il browser)

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

const publicApi = new PublicApi();

// Ottieni i commenti per una pagina (non è richiesta la chiave API)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Esempio: Uso della Default API (solo lato server)

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

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

// Ottieni i commenti con accesso amministrativo completo
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Integrazione SSO (Single Sign-On) Internal Link

FastComments supporta SSO per integrarsi con il tuo sistema di autenticazione utenti esistente. La funzionalità SSO è disponibile solo nell'export lato server poiché richiede le funzionalità crypto di Node.js.

SSO semplice (solo lato server)

L'SSO semplice dovrebbe essere generato lato server e inviato al client:

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

// Crea SSO semplice usando l'aiuto integrato  
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();

// Invia ssoToken al codice lato client
// Il codice lato client può quindi usare questo token con lo SDK per browser

SSO sicuro (lato server, raccomandato)

L'SSO sicuro dovrebbe essere implementato lato server e offre maggiore sicurezza:

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

// Crea SSO sicuro usando l'aiuto integrato
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();

// Usalo con chiamate API sul server
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Oppure invia ssoConfig al client per l'utilizzo nel browser

Utilizzo dell'SSO dal browser (con token generato dal server)

// Codice lato client (browser)
import { PublicApi } from 'fastcomments-sdk/browser';

// Ottieni il token SSO dal tuo endpoint server
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 con creazione di commenti

// Lato server: crea SSO e commento
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)
});

Casi d'uso comuni Internal Link

Ottenere i commenti di una pagina

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

Creare un commento

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

Votare un commento

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 per voto positivo, -1 per voto negativo
  }
});

Gestione utenti (Richiede API Key)

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

Eventi Live (Aggiornamenti in tempo reale) Internal Link

Iscriviti agli eventi live per ricevere aggiornamenti in tempo reale su commenti, voti e altre attività.

Eventi a livello di pagina

Ascolta gli eventi live per una pagina specifica (commenti, voti, ecc.):

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);
        // Aggiorna la UI con il nuovo commento
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Aggiorna i conteggi dei voti nella tua UI
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // Restituisci true se l'evento è stato gestito
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

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

Iscriviti agli eventi utente

Ascolta gli eventi specifici dell'utente (notifiche, menzioni, ecc.):

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);
        // Mostra la notifica nella tua 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();

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

ID di Broadcast Internal Link

Vedrai che dovrai passare un broadcastId in alcune chiamate API. Quando riceverai eventi, ti verrà restituito questo ID, quindi saprai di ignorare l'evento se intendi applicare le modifiche in modo ottimistico sul client (cosa che probabilmente vorrai fare, dato che offre la migliore esperienza). Passa qui un UUID. L'ID dovrebbe essere sufficientemente unico da non verificarsi due volte durante la sessione del browser.

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() // ID univoco per questa operazione
  }
});

Gestione degli errori 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);
  }
}

Aggrega Internal Link

Aggrega i documenti raggruppandoli (se groupBy è fornito) e applicando più operazioni. Sono supportate diverse operazioni (ad es. sum, countDistinct, avg, ecc.).

Parametri

Name Type Required Description
tenantId string
aggregationRequest AggregationRequest
parentTenantId string No
includeStats boolean No

Response

Restituisce: AggregationResponse


Ottieni log di audit Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
limit number No
skip number No
order SORTDIR No
after number No
before number No

Risposta

Restituisce: GetAuditLogs200Response

Esempio

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

Blocca da commento pubblico Internal Link


Parametri

Name Type Required Description
tenantId string
commentId string
publicBlockFromCommentParams PublicBlockFromCommentParams
sso string No

Risposta

Restituisce: BlockFromCommentPublic200Response

Esempio

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

Sblocca commento pubblico Internal Link


Parametri

Nome Tipo Richiesto Descrizione
tenantId string
commentId string
publicBlockFromCommentParams PublicBlockFromCommentParams
sso string No

Risposta

Restituisce: UnBlockCommentPublic200Response

Esempio

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

Controlla commenti bloccati Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentIds string
sso string No

Risposta

Restituisce: CheckedCommentsForBlocked200Response

Esempio

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

Blocca utente da commento Internal Link

Parametri

Name Type Required Description
tenantId string
id string
blockFromCommentParams BlockFromCommentParams
userId string No
anonUserId string No

Response

Restituisce: BlockFromCommentPublic200Response

Esempio

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

Crea commento pubblico Internal Link

Parametri

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

Response

Restituisce: CreateCommentPublic200Response

Esempio

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

Elimina commento Internal Link

Parametri

Name Type Required Description
tenantId string
id string
contextUserId string No
isLive boolean No

Risposta

Restituisce: DeleteComment200Response

Esempio

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

Elimina commento pubblico Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
broadcastId string
editKey string No
sso string No

Risposta

Restituisce: DeleteCommentPublic200Response

Esempio

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

Elimina voto commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
voteId string
urlId string
broadcastId string
editKey string No
sso string No

Risposta

Restituisce: DeleteCommentVote200Response

Esempio

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

Segnala commento Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
userId string No
anonUserId string No

Risposta

Restituisce: FlagComment200Response

Esempio

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

Ottieni commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetComment200Response

Esempio

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

Ottieni commenti Internal Link

Parametri

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

Risposta

Restituisce: GetComments200Response

Esempio

Esempio di getComments
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // page (pagina)
6 20, // limit (limite)
7 0, // skip (salto)
8 true, // asTree (comeAlbero)
9 1, // skipChildren (saltaFigli)
10 3, // limitChildren (limiteFigli)
11 4, // maxTreeDepth (profonditàMassimaAlbero)
12 'articles/2026/new-product-launch', // urlId (idUrl)
13 'user_7890', // userId (idUtente)
14 'anon_4f3b2', // anonUserId (idUtenteAnonimo)
15 undefined, // contextUserId (idUtenteContesto)
16 '#launch', // hashTag (hashtag)
17 undefined // parentId (idGenitore)
18);
19

Ottieni commenti pubblici Internal Link

req tenantId urlId

Parametri

Name Type Required Description
tenantId string
urlId string
page number No
direction SortDirections No
sso string No
skip number No
skipChildren number No
limit number No
limitChildren number No
countChildren boolean No
fetchPageForCommentId string No
includeConfig boolean No
countAll boolean No
includei10n boolean No
locale string No
modules string No
isCrawler boolean No
includeNotificationCount boolean No
asTree boolean No
maxTreeDepth number No
useFullTranslationIds boolean No
parentId string No
searchText string No
hashTags Array No
userId string No
customConfigStr string No
afterCommentId string No
beforeCommentId string No

Risposta

Restituisce: GetCommentsPublic200Response

Esempio

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

Ottieni testo commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
editKey string No
sso string No

Risposta

Restituisce: GetCommentText200Response

Esempio

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

Ottieni nomi utenti voto commento Internal Link

Parametri

Name Type Required Description
tenantId string
commentId string
dir number
sso string No

Risposta

Restituisce: GetCommentVoteUserNames200Response

Esempio

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

Blocca commento Internal Link

Parametri

Name Type Richiesto Descrizione
tenantId string
commentId string
broadcastId string
sso string No

Risposta

Restituisce: LockComment200Response

Esempio

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

Fissa commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
broadcastId string
sso string No

Risposta

Restituisce: PinComment200Response

Esempio

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

Salva commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createCommentParams CreateCommentParams
isLive boolean No
doSpamCheck boolean No
sendEmails boolean No
populateNotifications boolean No

Risposta

Restituisce: SaveComment200Response

Esempio

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

Salva commenti in blocco Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string Yes
createCommentParams Array Yes
isLive boolean No
doSpamCheck boolean No
sendEmails boolean No
populateNotifications boolean No

Response

Restituisce: Array<SaveComment200Response

Esempio

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

Imposta testo commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
broadcastId string
commentTextUpdateRequest CommentTextUpdateRequest
editKey string No
sso string No

Risposta

Restituisce: SetCommentText200Response

Esempio

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

Sblocca utente da commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
unBlockFromCommentParams UnBlockFromCommentParams
userId string No
anonUserId string No

Risposta

Restituisce: UnBlockCommentPublic200Response

Esempio

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

Rimuovi segnalazione commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
userId string No
anonUserId string No

Risposta

Restituisce: FlagComment200Response

Esempio

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

Sblocca commento Internal Link

Parametri

Name Type Required Description
tenantId string
commentId string
broadcastId string
sso string No

Risposta

Restituisce: LockComment200Response

Esempio

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

Rimuovi pin commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
broadcastId string
sso string No

Risposta

Restituisce: PinComment200Response

Esempio

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

Aggiorna commento Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
updatableCommentParams UpdatableCommentParams
contextUserId string No
doSpamCheck boolean No
isLive boolean No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Vota commento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
urlId string
broadcastId string
voteBodyParams VoteBodyParams
sessionId string No
sso string No

Risposta

Restituisce: VoteComment200Response

Esempio

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

Aggiungi configurazione dominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
addDomainConfigParams AddDomainConfigParams

Risposta

Restituisce: AddDomainConfig200Response


Elimina configurazione dominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domain string

Risposta

Restituisce: DeleteDomainConfig200Response


Ottieni configurazione dominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domain string

Risposta

Restituisce: GetDomainConfig200Response


Ottieni configurazioni dominio Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string

Risposta

Restituisce: GetDomainConfigs200Response

Aggiorna parzialmente configurazione dominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domainToUpdate string
patchDomainConfigParams PatchDomainConfigParams

Risposta

Restituisce: GetDomainConfig200Response


Sostituisci configurazione dominio Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domainToUpdate string
updateDomainConfigParams UpdateDomainConfigParams

Risposta

Restituisce: GetDomainConfig200Response

Crea modello email Internal Link

Parametri

Name Type Required Description
tenantId string
createEmailTemplateBody CreateEmailTemplateBody

Risposta

Restituisce: CreateEmailTemplate200Response

Esempio

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

Elimina modello email Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteEmailTemplate
Copy Copy
1
2const tenantId: string = 'tenant_7f4c9d1e';
3const templateId: string = 'tmpl_welcome_2024-03';
4const notifyAdmin: boolean | undefined = true; // esempio di parametro opzionale
5
6const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
7

Elimina errore di rendering modello email Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
errorId string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni modello email Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetEmailTemplate200Response

Esempio

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

Ottieni definizioni modelli email Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string

Risposta

Restituisce: GetEmailTemplateDefinitions200Response

Esempio

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

Ottieni errori di rendering modelli email Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
skip number No

Risposta

Restituisce: GetEmailTemplateRenderErrors200Response

Esempio

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

Ottieni modelli email Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetEmailTemplates200Response

Esempio

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

Esegui rendering modello email Internal Link

Parametri

Name Type Required Description
tenantId string
renderEmailTemplateBody RenderEmailTemplateBody
locale string No

Risposta

Restituisce: RenderEmailTemplate200Response

Esempio

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

Aggiorna modello email Internal Link


Parametri

Name Type Required Description
tenantId string
id string
updateEmailTemplateBody UpdateEmailTemplateBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni registro eventi Internal Link

req tenantId urlId userIdWS

Parametri

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

Risposta

Restituisce: GetEventLog200Response

Esempio

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

Ottieni registro eventi globale Internal Link

req tenantId urlId userIdWS

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlId string
userIdWS string
startTime number
endTime number

Risposta

Restituisce: GetEventLog200Response

Esempio

Esempio di getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // 7 giorni fa
6const endTimeOptional: number | undefined = undefined; // termine opzionale dell'intervallo di tempo
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

Crea post feed Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createFeedPostParams CreateFeedPostParams
broadcastId string No
isLive boolean No
doSpamCheck boolean No
skipDupCheck boolean No

Risposta

Restituisce: CreateFeedPost200Response

Esempio

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

Crea post feed pubblico Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createFeedPostParams CreateFeedPostParams
broadcastId string No
sso string No

Risposta

Restituisce: CreateFeedPostPublic200Response

Esempio

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

Elimina post feed pubblico Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
postId string
broadcastId string No
sso string No

Risposta

Restituisce: DeleteFeedPostPublic200Response

Esempio

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

Ottieni post feed Internal Link

req tenantId afterId

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
afterId string No
limit number No
tags Array No

Risposta

Restituisce: GetFeedPosts200Response

Esempio

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

Ottieni post feed pubblici Internal Link

req tenantId afterId

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
afterId string No
limit number No
tags Array No
sso string No
isCrawler boolean No
includeUserInfo boolean No

Risposta

Restituisce: GetFeedPostsPublic200Response

Esempio

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

Ottieni statistiche post feed Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
postIds Array
sso string No

Risposta

Restituisce: GetFeedPostsStats200Response

Esempio

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

Ottieni reazioni utente pubbliche Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
postIds Array No
sso string No

Risposta

Restituisce: GetUserReactsPublic200Response

Esempio

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

Reagisci a post feed pubblico Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
postId string
reactBodyParams ReactBodyParams
isUndo boolean No
broadcastId string No
sso string No

Risposta

Restituisce: ReactFeedPostPublic200Response

Esempio

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

Aggiorna post feed Internal Link

Parametri

Name Type Required Description
tenantId string
id string
feedPost FeedPost

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggiorna post feed pubblico Internal Link

Parametri

Name Type Required Description
tenantId string
postId string
updateFeedPostParams UpdateFeedPostParams
broadcastId string No
sso string No

Risposta

Restituisce: CreateFeedPostPublic200Response

Esempio

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

Segnala commento pubblico Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
isFlagged boolean
sso string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggiungi hashtag Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string No
createHashTagBody CreateHashTagBody No

Risposta

Restituisce: AddHashTag200Response

Esempio

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

Aggiungi hashtag in blocco Internal Link

Parametri

Name Type Required Description
tenantId string No
bulkCreateHashTagsBody BulkCreateHashTagsBody No

Risposta

Restituisce: AddHashTagsBulk200Response

Esempio

addHashTagsBulk Esempio
Copy Copy
1
2// Crea l'identificatore del tenant (parametro opzionale)
3const tenantId: string = "tenant_9f8c2b7a";
4
5// Prepara le singole voci dei tag
6const tag1: BulkCreateHashTagsBodyTagsInner = {
7 name: "product-feedback",
8 label: "Product Feedback",
9 color: "#1f8a70",
10 description: "User suggestions and enhancement requests",
11 isActive: true
12};
13
14const tag2: BulkCreateHashTagsBodyTagsInner = {
15 name: "bug-report",
16 label: "Bug Report",
17 color: "#d64545",
18 description: "User-reported defects and issues",
19 isActive: true
20};
21
22// Corpo per la creazione in blocco (parametro opzionale)
23const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
24 tags: [tag1, tag2]
25};
26
27// Chiama la funzione asincrona globale e assegna il risultato tipizzato
28const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
29

Elimina hashtag Internal Link

Parametri

Name Type Obbligatorio Descrizione
tag string
tenantId string No
deleteHashTagRequest DeleteHashTagRequest No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni hashtag Internal Link

Parameters

Nome Tipo Obbligatorio Descrizione
tenantId string
page number No

Risposta

Restituisce: GetHashTags200Response

Esempio

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

Aggiorna parzialmente hashtag Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tag string Yes
tenantId string No
updateHashTagBody UpdateHashTagBody No

Risposta

Restituisce: PatchHashTag200Response

Esempio

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

Crea moderatore Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createModeratorBody CreateModeratorBody

Risposta

Restituisce: CreateModerator200Response

Esempio

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

Elimina moderatore Internal Link

Parametri

Name Type Required Description
tenantId string
id string
sendEmail string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni moderatore Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string

Risposta

Restituisce: GetModerator200Response

Esempio

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

Ottieni moderatori Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetModerators200Response

Esempio

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

Invia invito Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
fromName string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggiorna moderatore Internal Link

Parametri

Name Type Required Description
tenantId string
id string
updateModeratorBody UpdateModeratorBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Elimina conteggio notifiche Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni conteggio notifiche in cache Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetCachedNotificationCount200Response

Esempio

Esempio di getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'user_00012345';
4const includeUnreadOnly: boolean | undefined = true; // flag del parametro opzionale (dimostrato)
5const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
6

Ottieni conteggio notifiche Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string No
urlId string No
fromCommentId string No
viewed boolean No
type string No

Risposta

Restituisce: GetNotificationCount200Response

Esempio

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

Ottieni notifiche Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string No
urlId string No
fromCommentId string No
viewed boolean No
type string No
skip number No

Risposta

Restituisce: GetNotifications200Response

Esempio

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

Aggiorna notifica Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateNotificationBody UpdateNotificationBody
userId string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggiungi pagina Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createAPIPageData CreateAPIPageData

Risposta

Restituisce: AddPageAPIResponse

Elimina pagina Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: DeletePageAPIResponse


Ottieni pagina per URL ID Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlId string

Risposta

Restituisce: GetPageByURLIdAPIResponse


Ottieni pagine Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string

Risposta

Restituisce: GetPagesAPIResponse


Aggiorna parzialmente pagina Internal Link


Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
updateAPIPageData UpdateAPIPageData

Risposta

Restituisce: PatchPageAPIResponse


Elimina evento webhook in sospeso Internal Link

Parametri

Name Type Richiesto Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deletePendingWebhookEvent
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42f7c9b1';
4 const id: string = 'pending_webhook_ev_8f3b9a2d';
5 const reason?: string = undefined; // esempio di parametro opzionale (non richiesto dalla funzione)
6 const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
7 console.log(result);
8})();
9

Ottieni conteggio eventi webhook in sospeso Internal Link

Parametri

Name Tipo Obbligatorio Descrizione
tenantId string
commentId string No
externalId string No
eventType string No
type string No
domain string No
attemptCountGT number No

Risposta

Restituisce: GetPendingWebhookEventCount200Response

Esempio

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

Ottieni eventi webhook in sospeso Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string No
externalId string No
eventType string No
type string No
domain string No
attemptCountGT number No
skip number No

Risposta

Restituisce: GetPendingWebhookEvents200Response

Esempio

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

Crea configurazione domanda Internal Link


Parametri

Name Type Required Description
tenantId string
createQuestionConfigBody CreateQuestionConfigBody

Risposta

Restituisce: CreateQuestionConfig200Response

Esempio

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

Elimina configurazione domanda Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni configurazione domanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetQuestionConfig200Response

Esempio

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

Ottieni configurazioni domande Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetQuestionConfigs200Response

Esempio

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

Aggiorna configurazione domanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateQuestionConfigBody UpdateQuestionConfigBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Crea risultato domanda Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createQuestionResultBody CreateQuestionResultBody

Risposta

Restituisce: CreateQuestionResult200Response

Esempio

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

Elimina risultato domanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteQuestionResult
Copy Copy
1
2const tenantId: string = "org-82479";
3const questionId: string = "q-6a3d2e1f";
4const includeArchived?: boolean = false; // parametro opzionale che dimostra la selezione alternativa del target
5const targetId: string = includeArchived ? "q-archived-112233" : questionId;
6const result: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, targetId);
7

Ottieni risultato domanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetQuestionResult200Response

Esempio

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

Ottieni risultati domande Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlId string No
userId string No
startDate string No
questionId string No
questionIds string No
skip number No

Risposta

Restituisce: GetQuestionResults200Response

Esempio

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

Aggiorna risultato domanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateQuestionResultBody UpdateQuestionResultBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggrega risultati domande Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
questionId string No
questionIds Array No
urlId string No
timeBucket AggregateTimeBucket No
startDate Date No
forceRecalculate boolean No

Risposta

Restituisce: AggregateQuestionResults200Response

Esempio

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

Aggrega risultati domande in blocco Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest
forceRecalculate boolean No

Risposta

Restituisce: BulkAggregateQuestionResults200Response

Esempio

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

Combina commenti con risultati domande Internal Link

Parametri

Nome Type Obbligatorio Descrizione
tenantId string
questionId string No
questionIds Array No
urlId string No
startDate Date No
forceRecalculate boolean No
minValue number No
maxValue number No
limit number No

Risposta

Restituisce: CombineCommentsWithQuestionResults200Response

Esempio

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

Aggiungi utente SSO Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createAPISSOUserData CreateAPISSOUserData

Risposta

Restituisce: AddSSOUserAPIResponse


Elimina utente SSO Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
deleteComments boolean No
commentDeleteMode string No

Risposta

Restituisce: DeleteSSOUserAPIResponse


Ottieni utente SSO per email Internal Link


Parametri

Nome Type Obbligatorio Descrizione
tenantId string
email string

Risposta

Restituisce: GetSSOUserByEmailAPIResponse


Ottieni utente SSO per ID Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetSSOUserByIdAPIResponse


Ottieni utenti SSO Internal Link

Parametri

Nome Type Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetSSOUsers200Response


Aggiorna parzialmente utente SSO Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateAPISSOUserData UpdateAPISSOUserData
updateComments boolean No

Risposta

Restituisce: PatchSSOUserAPIResponse


Sostituisci utente SSO Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateAPISSOUserData UpdateAPISSOUserData
updateComments boolean No

Risposta

Restituisce: PutSSOUserAPIResponse


Crea sottoscrizione Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createAPIUserSubscriptionData CreateAPIUserSubscriptionData

Risposta

Restituisce: CreateSubscriptionAPIResponse

Esempio

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

Elimina sottoscrizione Internal Link

Parameters

Name Type Required Description
tenantId string
id string
userId string No

Risposta

Restituisce: DeleteSubscriptionAPIResponse


Ottieni sottoscrizioni Internal Link

Parametri

Name Type Required Description
tenantId string
userId string No

Risposta

Restituisce: GetSubscriptionsAPIResponse

Esempio

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

Aggiorna sottoscrizione Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
updateAPIUserSubscriptionData UpdateAPIUserSubscriptionData
userId string No

Risposta

Restituisce: UpdateSubscriptionAPIResponse

Esempio

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

Ottieni utilizzi giornalieri tenant Internal Link

Parametri

Name Type Required Description
tenantId string
yearNumber number No
monthNumber number No
dayNumber number No
skip number No

Risposta

Restituisce: GetTenantDailyUsages200Response

Esempio

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

Crea pacchetto tenant Internal Link

Parametri

Name Type Required Description
tenantId string
createTenantPackageBody CreateTenantPackageBody

Risposta

Restituisce: CreateTenantPackage200Response

Esempio

Esempio di createTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: 'Standard Moderation',
5 description: 'Suitable for small-to-medium sites: basic moderation, spam rules, and analytics',
6 maxCommentsPerMinute: 50,
7 allowAnonymousComments: false, // parametro opzionale fornito
8 // campi opzionali omessi: p.es., regole di moderazione avanzate, CSS personalizzati
9 customConfigParameters: {
10 enableProfanityFilter: true,
11 imageContentProfanityLevel: 'medium' // valore illustrativo; usa la struttura CustomConfigParameters
12 }
13};
14const response: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
15console.log(response);
16

Elimina pacchetto tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni pacchetto tenant Internal Link

Parametri

Name Type Required Description
tenantId string
id string

Risposta

Restituisce: GetTenantPackage200Response

Esempio

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

Ottieni pacchetti tenant Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string Yes
skip number No

Risposta

Restituisce: GetTenantPackages200Response

Esempio

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

Sostituisci pacchetto tenant Internal Link

Parametri

Name Type Required Description
tenantId string
id string
replaceTenantPackageBody ReplaceTenantPackageBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggiorna pacchetto tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateTenantPackageBody UpdateTenantPackageBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_3b7f9d-prod";
3const id: string = "pkg_enterprise_2026";
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: "Enterprise Plus",
6 isActive: true,
7 // campi opzionali omessi intenzionalmente (es., description, limits)
8} as UpdateTenantPackageBody;
9const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
10

Crea utente tenant Internal Link

Parametri

Name Type Required Description
tenantId string
createTenantUserBody CreateTenantUserBody

Risposta

Restituisce: CreateTenantUser200Response

Esempio

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

Elimina utente tenant Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
deleteComments string No
commentDeleteMode string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni utente tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetTenantUser200Response

Esempio

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

Ottieni utenti tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetTenantUsers200Response

Esempio

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

Sostituisci utente tenant Internal Link

Parametri

Name Type Obbligatorio Descrizione
tenantId string
id string
replaceTenantUserBody ReplaceTenantUserBody
updateComments string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Parametri

Name Type Required Description
tenantId string
id string
redirectURL string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggiorna utente tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateTenantUserBody UpdateTenantUserBody
updateComments string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Crea tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createTenantBody CreateTenantBody

Risposta

Restituisce: CreateTenant200Response

Esempio

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

Elimina tenant Internal Link

Parametri

Name Type Required Description
tenantId string
id string
sure string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Ottieni tenant Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string

Risposta

Restituisce: GetTenant200Response

Esempio

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

Ottieni tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
meta string No
skip number No

Risposta

Restituisce: GetTenants200Response

Esempio

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

Aggiorna tenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateTenantBody UpdateTenantBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateTenant
Copy Copy
1
2const tenantId: string = "tenant_4821";
3const id: string = "flag_7b9e";
4const billingInfo: BillingInfo | undefined = undefined; // opzionale, omettere per mantenere la fatturazione corrente
5const updateTenantBody: UpdateTenantBody = {
6 name: "Acme News Comments",
7 defaultDomain: "comments.acme.com",
8 ...(billingInfo ? { billingInfo } : {})
9};
10const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
11

Cambia stato ticket Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string
id string
changeTicketStateBody ChangeTicketStateBody

Risposta

Restituisce: ChangeTicketState200Response

Esempio

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

Crea ticket Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string
createTicketBody CreateTicketBody

Risposta

Restituisce: CreateTicket200Response

Esempio

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

Ottieni ticket Internal Link

Parametri

Name Type Obbligatorio Descrizione
tenantId string
id string
userId string No

Risposta

Restituisce: GetTicket200Response

Esempio

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

Ottieni ticket Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string No
state number No
skip number No
limit number No

Risposta

Restituisce: GetTickets200Response

Esempio

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

Carica immagine Internal Link


Carica e ridimensiona un'immagine

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
file Blob
sizePreset SizePreset No
urlId string No

Risposta

Restituisce: UploadImageResponse


Ottieni progresso badge utente per ID Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string

Risposta

Restituisce: GetUserBadgeProgressById200Response

Esempio

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

Ottieni progresso badge utente per ID utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string

Risposta

Restituisce: GetUserBadgeProgressById200Response

Esempio

Esempio di getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = 'tenant_7f9c2d3b';
3const maybeUserId: string | undefined = 'user_4b8e1f9a'; // sorgente opzionale (potrebbe essere undefined)
4const userId: string = maybeUserId ?? 'user_fallback0001';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
6console.log(result);
7

Ottieni lista progresso badge utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string No
limit number No
skip number No

Risposta

Restituisce: GetUserBadgeProgressList200Response

Esempio

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

Crea badge utente Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
createUserBadgeParams CreateUserBadgeParams

Risposta

Restituisce: CreateUserBadge200Response

Esempio

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

Elimina badge utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: UpdateUserBadge200Response

Esempio

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

Ottieni badge utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetUserBadge200Response

Esempio

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

Ottieni badge utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string No
badgeId string No
type number No
displayedOnComments boolean No
limit number No
skip number No

Risposta

Restituisce: GetUserBadges200Response

Esempio

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

Aggiorna badge utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateUserBadgeParams UpdateUserBadgeParams

Risposta

Restituisce: UpdateUserBadge200Response

Esempio

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

Ottieni conteggio notifiche utente Internal Link

Parametri

Name Tipo Richiesto Descrizione
tenantId string
sso string No

Risposta

Restituisce: GetUserNotificationCount200Response

Esempio

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

Ottieni notifiche utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
pageSize number No
afterId string No
includeContext boolean No
afterCreatedAt number No
unreadOnly boolean No
dmOnly boolean No
noDm boolean No
includeTranslations boolean No
sso string No

Risposta

Restituisce: GetUserNotifications200Response

Esempio

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

Reimposta conteggio notifiche utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
sso string No

Risposta

Restituisce: ResetUserNotifications200Response

Esempio

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

Reimposta notifiche utente Internal Link

Parameters

Nome Tipo Obbligatorio Descrizione
tenantId string
afterId string No
afterCreatedAt number No
unreadOnly boolean No
dmOnly boolean No
noDm boolean No
sso string No

Risposta

Restituisce: ResetUserNotifications200Response

Esempio

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

Aggiorna stato sottoscrizione commenti notifiche utente Internal Link

Abilita o disabilita le notifiche per un commento specifico.

Parametri

Name Type Required Description
tenantId string
notificationId string
optedInOrOut UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum
commentId string
sso string No

Risposta

Restituisce: UpdateUserNotificationStatus200Response

Esempio

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

Aggiorna stato sottoscrizione pagina notifiche utente Internal Link

Abilita o disabilita le notifiche per una pagina. Quando gli utenti sono iscritti a una pagina, vengono create notifiche per i nuovi commenti principali, e anche

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
urlId string
url string
pageTitle string
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum
sso string No

Risposta

Restituisce: UpdateUserNotificationStatus200Response

Esempio

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

Aggiorna stato notifica utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
notificationId string
newStatus UpdateUserNotificationStatusNewStatusEnum
sso string No

Risposta

Restituisce: UpdateUserNotificationStatus200Response

Esempio

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

Ottieni stati presenza utente Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlIdWS string
userIds string

Risposta

Restituisce: GetUserPresenceStatuses200Response

Esempio

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

Cerca utenti Internal Link

Parametri

Name Type Required Description
tenantId string
urlId string
usernameStartsWith string No
mentionGroupIds Array No
sso string No
searchSection SearchUsersSearchSectionEnum No

Risposta

Restituisce: SearchUsers200Response

Esempio

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

Ottieni utente Internal Link

Parametri

Name Type Required Description
tenantId string Yes
id string Yes

Risposta

Restituisce: GetUser200Response

Esempio

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

Crea voto Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentId string
direction CreateVoteDirectionEnum
userId string No
anonUserId string No

Risposta

Restituisce: VoteComment200Response

Esempio

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

Elimina voto Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
editKey string No

Risposta

Restituisce: DeleteCommentVote200Response

Esempio

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

Ottieni voti Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlId string

Risposta

Restituisce: GetVotes200Response

Esempio

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

Ottieni voti per utente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlId string
userId string No
anonUserId string No

Risposta

Restituisce: GetVotesForUser200Response

Esempio

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

Hai bisogno di aiuto?

Se riscontri problemi o hai domande sullo SDK JavaScript/TypeScript, per favore:

Contribuire

I contributi sono benvenuti! Visita il repository GitHub per le linee guida sui contributi.