FastComments.com

SDK FastComments per JavaScript/TypeScript

Questo è l'SDK ufficiale JavaScript/TypeScript per FastComments.

Gestisci commenti, utenti, SSO e moderazione da Node.js o dal browser.

Repository

Visualizza su GitHub


Installazione Internal Link

npm

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

Aggregazione Internal Link

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

Parametri

NameTypeRequiredDescription
tenantIdstring
aggregationRequestAggregationRequest
parentTenantIdstringNo
includeStatsbooleanNo

Response

Restituisce: AggregationResponse


Recupera log di audit Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo

Risposta

Restituisce: GetAuditLogs200Response

Esempio

Esempio di getAuditLogs
Copy Copy
1
2const tenantId: string = 'tenant_9a8b7c';
3const limit: number = 100;
4const skip: number = 0;
5const after: number = Date.now() - 30 * 24 * 60 * 60 * 1000; // 30 giorni fa
6const before: number = Date.now();
7const auditLogs: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, undefined, after, before);
8

Blocca dal commento (pubblico) Internal Link


Parametri

NameTypeRequiredDescription
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostringNo

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

NomeTipoRichiestoDescrizione
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostringNo

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

Verifica commenti bloccati Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdsstring
ssostringNo

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 dal commento Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
blockFromCommentParamsBlockFromCommentParams
userIdstringNo
anonUserIdstringNo

Risposta

Restituisce: BlockFromCommentPublic200Response

Esempio

Esempio di blockUserFromComment
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const id: string = 'comment_7f3b2a9c';
4const blockFromCommentParams: BlockFromCommentParams = {
5 reason: 'Repeated abusive language and targeted harassment',
6 durationDays: 90,
7 preventReposting: true
8};
9const userId: string = 'user_12345';
10const anonUserId: string = 'anon_98765';
11
12const result: BlockFromCommentPublic200Response = await blockUserFromComment(
13 tenantId,
14 id,
15 blockFromCommentParams,
16 userId,
17 anonUserId
18);
19

Crea commento pubblico Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
urlIdstring
broadcastIdstring
commentDataCommentData
sessionIdstringNo
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
contextUserIdstringNo
isLivebooleanNo

Risposta

Restituisce: DeleteComment200Response

Esempio

Esempio di deleteComment
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const id: string = "comment_5f3a2b7c";
4const contextUserId: string = "user_1229";
5const isLive: boolean = true;
6const response: DeleteComment200Response = await deleteComment(tenantId, id, contextUserId, isLive);
7

Elimina commento pubblico Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
broadcastIdstring
editKeystringNo
ssostringNo

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

Rimuovi voto commento Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
voteIdstring
urlIdstring
broadcastIdstring
editKeystringNo
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
userIdstringNo
anonUserIdstringNo

Risposta

Restituisce: FlagComment200Response

Esempio

Esempio flagComment
Copy Copy
1
2const tenantId: string = 'tenant_7f3b21';
3const commentId: string = 'cmt_9a2b4';
4const userId: string = 'user_1024';
5const result: FlagComment200Response = await flagComment(tenantId, commentId, userId);
6

Recupera commento Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

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

Recupera commenti Internal Link

Parametri

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

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

Recupera commenti pubblici Internal Link

req tenantId urlId

Parametri

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

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

Recupera testo commento Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
editKeystringNo
ssostringNo

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

Recupera nomi utenti che hanno votato il commento Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
commentIdstring
dirnumber
ssostringNo

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

NameTypeRichiestoDescrizione
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
createCommentParamsCreateCommentParams
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

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

NomeTipoObbligatorioDescrizione
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
broadcastIdstring
commentTextUpdateRequestCommentTextUpdateRequest
editKeystringNo
ssostringNo

Risposta

Restituisce: SetCommentText200Response

Esempio

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

Sblocca utente dal commento Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
unBlockFromCommentParamsUnBlockFromCommentParams
userIdstringNo
anonUserIdstringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
userIdstringNo
anonUserIdstringNo

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

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

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

NameTypeRequiredDescription
tenantIdstring
idstring
updatableCommentParamsUpdatableCommentParams
contextUserIdstringNo
doSpamCheckbooleanNo
isLivebooleanNo

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Vota commento Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
urlIdstring
broadcastIdstring
voteBodyParamsVoteBodyParams
sessionIdstringNo
ssostringNo

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

Recupera commenti per utente Internal Link

Parametri

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

Risposta

Restituisce: GetCommentsForUserResponse

Esempio

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

Aggiungi configurazione dominio Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
addDomainConfigParamsAddDomainConfigParams

Risposta

Restituisce: AddDomainConfig200Response


Elimina configurazione dominio Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
domainstring

Risposta

Restituisce: DeleteDomainConfig200Response


Recupera configurazione dominio Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
domainstring

Risposta

Restituisce: GetDomainConfig200Response


Recupera configurazioni dominio Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring

Risposta

Restituisce: GetDomainConfigs200Response

Aggiorna parzialmente configurazione dominio Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
domainToUpdatestring
patchDomainConfigParamsPatchDomainConfigParams

Risposta

Restituisce: GetDomainConfig200Response


Sostituisci configurazione dominio Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
domainToUpdatestring
updateDomainConfigParamsUpdateDomainConfigParams

Risposta

Restituisce: GetDomainConfig200Response

Crea template email Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
createEmailTemplateBodyCreateEmailTemplateBody

Risposta

Restituisce: CreateEmailTemplate200Response

Esempio

Esempio di createEmailTemplate
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9f4a2b';
4 const createEmailTemplateBody: CreateEmailTemplateBody = {
5 name: 'Weekly Digest',
6 subject: 'Your weekly discussion highlights',
7 html: '<!doctype html><body><h1>Hello \{{user.name}}</h1><p>Top comments this week...</p></body>',
8 fromAddress: 'no-reply@fastcomments-example.com',
9 replyTo: 'moderation@fastcomments-example.com',
10 isDefault: false
11 };
12 const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
13 console.log(result);
14})();
15

Elimina template email Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteEmailTemplate
Copy Copy
1
2const tenantId: string = "acme-corp-42";
3const idSuffix: string | undefined = "-archived";
4const templateId: string = "email_tmpl_6a1b2c" + (idSuffix ?? "");
5const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
6

Elimina errore di rendering template email Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
errorIdstring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = "tenant_7a1d2f9b";
3const id: string = "email_template_42b1";
4const errorId: string = "render_err_2026-04-24_7f3c";
5const includeStackTrace: boolean | undefined = undefined; // esempio di flag opzionale
6
7const response: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
8// Se fosse supportato un oggetto options opzionale, potrebbe apparire così:
9// await deleteEmailTemplateRenderError(tenantId, id, errorId /*, { includeStackTrace } */);
10

Recupera template email Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

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

Recupera definizioni template email Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring

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

Recupera errori di rendering template email Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
skipnumberNo

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

Recupera template email Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
skipnumberNo

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

Elabora template email Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
localestringNo

Risposta

Restituisce: RenderEmailTemplate200Response

Esempio

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

Aggiorna template email Internal Link


Parametri

NameTypeRequiredDescription
tenantIdstring
idstring
updateEmailTemplateBodyUpdateEmailTemplateBody

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

Recupera registro eventi Internal Link

req tenantId urlId userIdWS

Parametri

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumber

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

Recupera registro eventi globale Internal Link

req tenantId urlId userIdWS

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumber

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

Parameters

NomeTipoRichiestoDescrizione
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Risposta

Restituisce: CreateFeedPost200Response

Esempio

Esempio di createFeedPost
Copy Copy
1
2const tenantId: string = 'tenant_87f3b2';
3const mediaAsset: FeedPostMediaItemAsset = { url: 'https://cdn.example.com/images/post-123.jpg', mimeType: 'image/jpeg', width: 1200, height: 800, size: 245000 };
4const mediaItem: FeedPostMediaItem = { id: 'media_1', type: 'image', assets: [mediaAsset], altText: 'Conference keynote stage' };
5const link: FeedPostLink = { url: 'https://news.example.com/keynote-recap', title: 'Keynote recap' };
6const createFeedPostParams: CreateFeedPostParams = {
7 title: 'Product Launch Highlights',
8 content: 'Highlights from today’s product launch and roadmap updates.',
9 authorId: 'user_42',
10 mediaItems: [mediaItem],
11 links: [link],
12 tags: ['product', 'launch', 'announcement']
13};
14const broadcastId: string = 'broadcast_20260424';
15const isLive: boolean = true;
16const doSpamCheck: boolean = true;
17const skipDupCheck: boolean = false;
18const result: CreateFeedPost200Response = await createFeedPost(tenantId, createFeedPostParams, broadcastId, isLive, doSpamCheck, skipDupCheck);
19

Crea post feed pubblico Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstringNo
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
postIdstring
broadcastIdstringNo
ssostringNo

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

Recupera post feed Internal Link

req tenantId afterId

Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
afterIdstringNo
limitnumberNo
tagsArrayNo

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

Recupera post feed pubblici Internal Link

req tenantId afterId

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
afterIdstringNo
limitnumberNo
tagsArrayNo
ssostringNo
isCrawlerbooleanNo
includeUserInfobooleanNo

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

Recupera statistiche post feed Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
postIdsArray
ssostringNo

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

Recupera reazioni utente pubbliche Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
postIdsArrayNo
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
postIdstring
reactBodyParamsReactBodyParams
isUndobooleanNo
broadcastIdstringNo
urlIdstringNo
ssostringNo

Risposta

Restituisce: ReactFeedPostPublic200Response

Esempio

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

Aggiorna post feed Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
idstring
feedPostFeedPost

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

NameTypeRequiredDescription
tenantIdstring
postIdstring
updateFeedPostParamsUpdateFeedPostParams
broadcastIdstringNo
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
isFlaggedboolean
ssostringNo

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

Recupera GIF grande Internal Link

Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
largeInternalURLSanitizedstring

Risposta

Restituisce: GifGetLargeResponse

Esempio

Esempio di getGifLarge
Copy Copy
1
2const tenantId: string = 'tenant_8a92f4';
3const largeInternalURLSanitized: string = 'https://cdn.streamingco.com/gifs/product-demo-large.gif';
4let maybeStatus: APIStatus | undefined = undefined; // metadati opzionali quando disponibili
5const response: GifGetLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6

Cerca GIF Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringYes
searchstringYes
localestringNo
ratingstringNo
pagenumberNo

Risposta

Restituisce: GifSearchResponse

Esempio

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

Recupera GIF di tendenza Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
localestringNo
ratingstringNo
pagenumberNo

Risposta

Restituisce: GifSearchResponse

Esempio

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

Aggiungi hashtag Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstringNo
createHashTagBodyCreateHashTagBodyNo

Risposta

Restituisce: AddHashTag200Response

Esempio

Esempio di addHashTag
Copy Copy
1
2const tenantId: string | undefined = undefined;
3const createHashTagBody: CreateHashTagBody = {
4 name: 'release-2026',
5 description: 'Feedback and bug reports for the April 2026 product release',
6 synonyms: ['v2-release', 'launch-2026'],
7 color: '#1d72b8',
8 isActive: true,
9 createdBy: 'product.manager@acme-corp.com'
10};
11const result: AddHashTag200Response = await addHashTag(tenantId, createHashTagBody);
12

Aggiungi hashtag in blocco Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstringNo
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

Risposta

Restituisce: AddHashTagsBulk200Response

Esempio

Esempio di addHashTagsBulk
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_01';
3const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
4 tags: [
5 { name: 'feature-request', slug: 'feature-request', description: 'Requests for new capabilities', isActive: true, customConfig: { visibility: 'public' } as unknown as CustomConfigParameters }
6 ]
7};
8const addHashTagsResponse: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
9
10const bulkCreateHashTagsBodyNoTenant: BulkCreateHashTagsBody = {
11 tags: [
12 { name: 'ux-feedback', slug: 'ux-feedback', description: 'User experience suggestions', isActive: true }
13 ]
14};
15const addHashTagsResponseNoTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBodyNoTenant);
16

Elimina hashtag Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tagstring
tenantIdstringNo
deleteHashTagRequestDeleteHashTagRequestNo

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteHashTag
Copy Copy
1
2const tag: string = "spring-sale-2026";
3const tenantId: string = "tenant-9876";
4const deleteHashTagRequest: DeleteHashTagRequest = {
5 requestedBy: "admin@retailco.com",
6 reason: "Campaign ended; remove associated auto-tags",
7 cascadeDelete: true
8};
9const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteHashTagRequest);
10

Recupera hashtag Internal Link

Parameters

NomeTipoObbligatorioDescrizione
tenantIdstring
pagenumberNo

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

NomeTipoObbligatorioDescrizione
tagstringYes
tenantIdstringNo
updateHashTagBodyUpdateHashTagBodyNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
createModeratorBodyCreateModeratorBody

Risposta

Restituisce: CreateModerator200Response

Esempio

Esempio di createModerator
Copy Copy
1
2const tenantId: string = "tenant_8f3b6c";
3const optionalConfig: CustomConfigParameters = { moderationThreshold: 5, escalateOnRepeatedOffenses: true };
4const newModerator: CreateModeratorBody = {
5 email: "lina.gomez@dailynews.com",
6 fullName: "Lina Gomez",
7 role: "senior_moderator",
8 enabled: true,
9 notifyByEmail: true,
10 customConfig: optionalConfig
11};
12const response: CreateModerator200Response = await createModerator(tenantId, newModerator);
13

Elimina moderatore Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
sendEmailstringNo

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Recupera moderatore Internal Link

Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
idstring

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

Recupera moderatori Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
skipnumberNo

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

NomeTipoRichiestoDescrizione
tenantIdstring
idstring
fromNamestring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Aggiorna moderatore Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
idstring
updateModeratorBodyUpdateModeratorBody

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteNotificationCount
Copy Copy
1
2const tenantId: string = "org-72a8f1b9";
3const id: string = "notif-8f9c2e4a";
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
5console.log(result);
6

Recupera conteggio notifiche in cache Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

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

Recupera conteggio notifiche Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

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

Recupera notifiche Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateNotificationBodyUpdateNotificationBody
userIdstringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
createAPIPageDataCreateAPIPageData

Risposta

Restituisce: AddPageAPIResponse

Elimina pagina Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: DeletePageAPIResponse


Recupera pagina tramite URL ID Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
urlIdstring

Risposta

Restituisce: GetPageByURLIdAPIResponse


Recupera pagine Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring

Risposta

Restituisce: GetPagesAPIResponse


Aggiorna parzialmente pagina Internal Link


Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
idstring
updateAPIPageDataUpdateAPIPageData

Risposta

Restituisce: PatchPageAPIResponse


Elimina evento webhook in sospeso Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deletePendingWebhookEvent
Copy Copy
1
2const tenantId: string = "tenant_7f3b2a";
3const webhookEventId: string = "wh_evt_9a8c7d1234";
4const dryRun: boolean | undefined = undefined; // esempio di flag opzionale (non richiesto da questa chiamata)
5const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, webhookEventId);
6

Recupera conteggio eventi webhook in sospeso Internal Link

Parametri

NameTipoObbligatorioDescrizione
tenantIdstring
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo

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

Recupera eventi webhook in sospeso Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
createQuestionConfigBodyCreateQuestionConfigBody

Risposta

Restituisce: CreateQuestionConfig200Response

Esempio

Esempio di createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const createQuestionConfigBody: CreateQuestionConfigBody = {
4 title: "Post-purchase feedback",
5 description: "Quick survey about your recent order",
6 required: true,
7 renderingType: "single_choice",
8 options: [
9 { label: "Very dissatisfied", value: "1" },
10 { label: "Dissatisfied", value: "2" },
11 { label: "Neutral", value: "3" },
12 { label: "Satisfied", value: "4" },
13 { label: "Very satisfied", value: "5" }
14 ] as QuestionConfigCustomOptionsInner[]
15} as CreateQuestionConfigBody;
16const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
17

Elimina configurazione domanda Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_42fa9b7c";
3const id: string = "qcfg-0f8fad5b-d9cb-469f-a165-70867728950e";
4const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5

Recupera configurazione domanda Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

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

Recupera configurazioni domande Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
skipnumberNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateQuestionConfigBodyUpdateQuestionConfigBody

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

NameTypeRequiredDescription
tenantIdstring
createQuestionResultBodyCreateQuestionResultBody

Risposta

Restituisce: CreateQuestionResult200Response

Esempio

Esempio di createQuestionResult
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-01';
3const createQuestionResultBody: CreateQuestionResultBody = {
4 questionId: 'q-34567',
5 respondentId: 'user-8923',
6 answers: [{ optionId: 'opt_A', text: 'Agree', count: 1 }],
7 score: 5,
8 meta: [{ key: 'platform', value: 'web' }],
9 notifyModerators: false // parametro opzionale
10} as CreateQuestionResultBody;
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

Elimina risultato domanda Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteQuestionResult
Copy Copy
1
2const tenantIdEnv: string | undefined = process.env.FASTCOMMENTS_TENANT_ID;
3const tenantId: string = tenantIdEnv ?? 'tenant_78b3f2';
4const id: string = 'qres-9f2a3b1c';
5const response: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, id);
6

Recupera risultato domanda Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Risposta

Restituisce: GetQuestionResult200Response

Esempio

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

Recupera risultati domande Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Risposta

Restituisce: GetQuestionResults200Response

Esempio

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

Aggiorna risultato domanda Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateQuestionResultBodyUpdateQuestionResultBody

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

NomeTipoObbligatorioDescrizione
tenantIdstring
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Risposta

Restituisce: AggregateQuestionResults200Response

Esempio

Esempio di aggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_acme_001";
3const questionIds: string[] = ["q-2026-sales", "q-2026-support"];
4const urlId: string = "url_7f2c";
5const timeBucket: AggregateTimeBucket = { unit: "week", size: 1 };
6const startDate: Date = new Date("2026-01-01T00:00:00Z");
7const forceRecalculate: boolean = true;
8
9const result: AggregateQuestionResults200Response = await aggregateQuestionResults(
10 tenantId,
11 undefined,
12 questionIds,
13 urlId,
14 timeBucket,
15 startDate,
16 forceRecalculate
17);
18

Aggregazione risultati domande in blocco Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequest
forceRecalculatebooleanNo

Risposta

Restituisce: BulkAggregateQuestionResults200Response

Esempio

Esempio di bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_acme_42";
3const bulkAggregateQuestionResultsRequest: BulkAggregateQuestionResultsRequest = {
4 questions: [
5 { questionId: "q-001", threadId: "thread-1001", questionType: "rating" },
6 { questionId: "q-002", threadId: "thread-1002", questionType: "yes_no" }
7 ],
8 timeRange: { from: "2026-03-01T00:00:00Z", to: "2026-04-01T00:00:00Z" },
9 groupBy: ["questionId", "threadId"]
10};
11const forceRecalculate: boolean = true;
12const result: BulkAggregateQuestionResults200Response = await bulkAggregateQuestionResults(tenantId, bulkAggregateQuestionResultsRequest, forceRecalculate);
13

Combina commenti con risultati domande Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Risposta

Restituisce: CombineCommentsWithQuestionResults200Response

Esempio

Esempio di combineCommentsWithQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant-acme-001';
3const questionId: string | undefined = 'q-analytics-42';
4const questionIds: string[] | undefined = ['q-analytics-42', 'q-feedback-17'];
5const urlId: string | undefined = 'url-987654';
6const startDate: Date | undefined = new Date('2026-01-01T00:00:00Z');
7const forceRecalculate: boolean | undefined = true;
8const minValue: number | undefined = 1;
9const maxValue: number | undefined = 5;
10const limit: number | undefined = 250;
11const result: CombineCommentsWithQuestionResults200Response = await combineCommentsWithQuestionResults(
12 tenantId,
13 questionId,
14 questionIds,
15 urlId,
16 startDate,
17 forceRecalculate,
18 minValue,
19 maxValue,
20 limit
21);
22

Aggiungi utente SSO Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
createAPISSOUserDataCreateAPISSOUserData

Risposta

Restituisce: AddSSOUserAPIResponse


Elimina utente SSO Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
deleteCommentsbooleanNo
commentDeleteModestringNo

Risposta

Restituisce: DeleteSSOUserAPIResponse


Recupera utente SSO per email Internal Link


Parametri

NomeTypeObbligatorioDescrizione
tenantIdstring
emailstring

Risposta

Restituisce: GetSSOUserByEmailAPIResponse


Recupera utente SSO per ID Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: GetSSOUserByIdAPIResponse


Recupera utenti SSO Internal Link

Parametri

NomeTypeObbligatorioDescrizione
tenantIdstring
skipnumberNo

Risposta

Restituisce: GetSSOUsers200Response


Aggiorna parzialmente utente SSO Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
updateCommentsbooleanNo

Risposta

Restituisce: PatchSSOUserAPIResponse


Sostituisci utente SSO Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
updateCommentsbooleanNo

Risposta

Restituisce: PutSSOUserAPIResponse

Esempio

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

Crea sottoscrizione Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData

Risposta

Restituisce: CreateSubscriptionAPIResponse

Esempio

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

Elimina sottoscrizione Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstring
idstring
userIdstringNo

Risposta

Restituisce: DeleteSubscriptionAPIResponse


Recupera sottoscrizioni Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
userIdstringNo

Risposta

Restituisce: GetSubscriptionsAPIResponse

Esempio

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

Aggiorna sottoscrizione Internal Link

Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
idstring
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionData
userIdstringNo

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

Recupera utilizzi giornalieri tenant Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

Risposta

Restituisce: CreateTenantPackage200Response

Esempio

Esempio di createTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_acme-corp_001";
3const createTenantPackageBody: CreateTenantPackageBody = {
4 name: "Acme Standard Package",
5 description: "Default package for Acme Corp comments with moderation and SSO enabled",
6 enabled: true,
7 maxCommentsPerThread: 500,
8 voteStyle: "thumbs",
9 gifRating: "PG-13",
10 tosConfig: { enabled: true, url: "https://acme.example.com/terms" } // parametro opzionale dimostrato
11};
12const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
13

Elimina pacchetto tenant Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteTenantPackage
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_8f3a2b4c9d01";
4 const packageId: string = "pkg_2026-04-security-patch";
5 const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
6 console.log(result);
7})();
8

Recupera pacchetto tenant Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
idstring

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

Recupera pacchetti tenant Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
skipnumberNo

Risposta

Restituisce: GetTenantPackages200Response

Esempio

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

Sostituisci pacchetto tenant Internal Link

Parametri

NameTypeRequiredDescription
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

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

NameTypeObbligatorioDescrizione
tenantIdstring
idstring
updateTenantPackageBodyUpdateTenantPackageBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateTenantPackage
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_sf_001";
4 const id: string = "pkg-premium-v2";
5 const updateTenantPackageBody: UpdateTenantPackageBody = {
6 name: "San Francisco Premium",
7 enabled: true,
8 customConfig: { maxComments: 500 },
9 tosConfig: { required: true } // campi opzionali dimostrati dalla presenza; gli altri omessi
10 } as UpdateTenantPackageBody;
11 const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
12 console.log(result);
13})();
14

Crea utente tenant Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
createTenantUserBodyCreateTenantUserBody

Risposta

Restituisce: CreateTenantUser200Response

Esempio

Esempio di createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_74b3a9f4b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "jane.doe@acmecorp.com",
5 displayName: "Jane Doe",
6 role: "moderator",
7 sendWelcomeEmail: true, // esempio di parametro opzionale
8 metadata: { department: "Customer Support" }
9};
10const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
11

Elimina utente tenant Internal Link


Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
idstring
deleteCommentsstringNo
commentDeleteModestringNo

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteTenantUser
Copy Copy
1
2async function run(): Promise<void> {
3 const tenantId: string = "acme_corp_tenant_9f1a2b";
4 const id: string = "user_4d2a1b6c";
5 const deleteComments: string = "true"; // rimuove anche i commenti dell'utente
6 const commentDeleteMode: string = "permanent"; // "permanent" o "soft"
7 const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
8 console.log(result);
9}
10run();
11

Recupera utente tenant Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

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

Recupera utenti tenant Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
skipnumberNo

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

NameTypeRequiredDescription
tenantIdstring
idstring
replaceTenantUserBodyReplaceTenantUserBody
updateCommentsstringNo

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Parametri

NameTypeRequiredDescription
tenantIdstring
idstring
redirectURLstringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateTenantUserBodyUpdateTenantUserBody
updateCommentsstringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
createTenantBodyCreateTenantBody

Risposta

Restituisce: CreateTenant200Response

Esempio

Esempio di createTenant
Copy Copy
1
2const tenantId: string = 'acme-corp-001';
3const createTenantBody: CreateTenantBody = {
4 name: 'Acme Corporation',
5 domainConfiguration: { primaryDomain: 'comments.acme.com', enforceHttps: true } as APIDomainConfiguration,
6 billingInfo: { planId: 'enterprise', contactEmail: 'billing@acme.com' } as BillingInfo
7 // i campi opzionali come ssoConfig o customConfig sono intenzionalmente omessi
8} as CreateTenantBody;
9
10const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
11

Elimina tenant Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
surestringNo

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteTenant
Copy Copy
1
2const tenantId: string = 'tenant_42c9f1';
3const id: string = 'flag_9a7b3c';
4const sure: string = 'confirm-delete';
5const result: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
6

Recupera tenant Internal Link

Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
idstring

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

Recupera tenant Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
metastringNo
skipnumberNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateTenantBodyUpdateTenantBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

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

Cambia stato ticket Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstring
idstring
changeTicketStateBodyChangeTicketStateBody

Risposta

Restituisce: ChangeTicketState200Response

Esempio

Esempio di changeTicketState
Copy Copy
1
2const tenantId: string = "tenant_7f3b2c9a";
3const userId: string = "user_5a1d9fb2";
4const id: string = "ticket_3e8a1b6f";
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: "closed",
7 reason: "Fixed in backend release 2.4.1",
8 notifyUsers: true,
9 metadata: { resolutionOwner: "agent_12", priority: "high" } // campi opzionali dimostrati
10};
11const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
12

Crea ticket Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstring
createTicketBodyCreateTicketBody

Risposta

Restituisce: CreateTicket200Response

Esempio

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

Recupera ticket Internal Link

Parametri

NameTypeObbligatorioDescrizione
tenantIdstring
idstring
userIdstringNo

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

Recupera ticket Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

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

Recupera traduzioni Internal Link

Parametri

NomeTipoObbligatorioDescrizione
namespacestring
componentstring
localestringNo
useFullTranslationIdsbooleanNo

Risposta

Restituisce: GetTranslationsResponse

Esempio

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

Carica immagine Internal Link


Carica e ridimensiona un'immagine

Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
fileBlob
sizePresetSizePresetNo
urlIdstringNo

Risposta

Restituisce: UploadImageResponse


Recupera progresso badge utente per ID Internal Link

Parametri

NomeTipoRichiestoDescrizione
tenantIdstring
idstring

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

Recupera progresso badge utente per ID utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstring

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

Recupera lista progresso badge utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstringNo
limitnumberNo
skipnumberNo

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

NameTypeRequiredDescription
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

Response

Restituisce: CreateUserBadge200Response

Esempio

Esempio di createUserBadge
Copy Copy
1
2const tenantId: string = "tenant_9a8b7c";
3const params: CreateUserBadgeParams = {
4 name: "Top Contributor",
5 slug: "top-contributor",
6 description: "Awarded for 100 approved comments",
7 iconUrl: "https://cdn.fastcomments.com/badges/top-contributor.png",
8 active: true,
9 criteria: { approvedComments: 100 },
10 customConfig: { showOnProfile: true } // parametro opzionale
11};
12const result: CreateUserBadge200Response = await createUserBadge(tenantId, params);
13

Elimina badge utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

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

Recupera badge utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

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

Recupera badge utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
userIdstringNo
badgeIdstringNo
typenumberNo
displayedOnCommentsbooleanNo
limitnumberNo
skipnumberNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
updateUserBadgeParamsUpdateUserBadgeParams

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

Recupera conteggio notifiche utente Internal Link

Parametri

NameTipoRichiestoDescrizione
tenantIdstring
ssostringNo

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

Recupera notifiche utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

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 notifiche commento utente Internal Link

Abilita o disabilita le notifiche per un commento specifico.

Parametri

NameTypeRequiredDescription
tenantIdstring
notificationIdstring
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum
commentIdstring
ssostringNo

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 notifiche pagina 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

NomeTipoRichiestoDescrizione
tenantIdstring
urlIdstring
urlstring
pageTitlestring
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum
ssostringNo

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

NomeTipoObbligatorioDescrizione
tenantIdstring
notificationIdstring
newStatusUpdateUserNotificationStatusNewStatusEnum
ssostringNo

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

Recupera stati presenza utente Internal Link


Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
urlIdWSstring
userIdsstring

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

NameTypeRequiredDescription
tenantIdstring
urlIdstring
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

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

Recupera utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring

Risposta

Restituisce: GetUser200Response

Esempio

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

Crea voto Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
commentIdstring
directionCreateVoteDirectionEnum
userIdstringNo
anonUserIdstringNo

Risposta

Restituisce: VoteComment200Response

Esempio

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

Elimina voto Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
idstring
editKeystringNo

Risposta

Restituisce: DeleteCommentVote200Response

Esempio

Esempio di deleteVote
Copy Copy
1
2const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
3const id: string = 'vote-7a1b2c3d-9f8e-4b6a-8123-abcdef012345';
4const editKey: string = 'editKey_4f3e2d1c';
5
6const resultWithEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
7const resultWithoutEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id);
8

Recupera voti Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
urlIdstring

Risposta

Restituisce: GetVotes200Response

Esempio

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

Recupera voti per utente Internal Link

Parametri

NomeTipoObbligatorioDescrizione
tenantIdstring
urlIdstring
userIdstringNo
anonUserIdstringNo

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.