FastComments.com

FastComments JavaScript/TypeScript SDK


Questo è lo SDK ufficiale JavaScript/TypeScript per FastComments.

SDK ufficiale JavaScript/TypeScript per l'API di FastComments

Repository

Visualizza su GitHub


Installazione Internal Link

npm install fastcomments-sdk

Documentazione API Internal Link


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

Compatibilità Browser vs Server Internal Link


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

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

API Pubbliche vs Protette Internal Link

L'SDK fornisce tre principali classi API:

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

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

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

const publicApi = new PublicApi();

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

Esempio: Uso della Default API (solo lato server)

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

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

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

Integrazione SSO (Single Sign-On) Internal Link

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

SSO semplice (solo lato server)

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

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

// Crea SSO semplice usando l'aiuto integrato  
const userData = {
  username: 'john_doe',
  email: 'john@example.com',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg'
};

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

const ssoToken = sso.createToken();

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

SSO sicuro (lato server, raccomandato)

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

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

// Crea SSO sicuro usando l'aiuto integrato
const userData = {
  id: 'user-123',
  email: 'john@example.com',
  username: 'john_doe',
  displayName: 'John Doe',
  avatar: 'https://example.com/avatar.jpg',
  isAdmin: false,
  isModerator: false
};

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

const ssoConfig = sso.prepareToSend();

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

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

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

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

// Ottieni il token SSO dal tuo endpoint server
const ssoToken = await fetch('/api/sso-token').then(r => r.json());

const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: ssoToken // Use the server-generated SSO token
});

SSO con creazione di commenti

// Lato server: crea SSO e commento
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

const sso = FastCommentsSSO.createSecure('your-api-key', userData);
const ssoConfig = sso.prepareToSend();

const response = await publicApi.createCommentPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  broadcastId: 'unique-broadcast-id',
  commentData: {
    comment: 'This is my comment',
    date: Date.now(),
    commenterName: 'John Doe',
    url: 'https://example.com/page',
    urlId: 'page-url-id'
  },
  sso: JSON.stringify(ssoConfig)
});

Casi d'uso comuni Internal Link

Ottenere i commenti di una pagina

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

Creare un commento

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

Votare un commento

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

Gestione utenti (Richiede API Key)

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

Eventi Live (Aggiornamenti in tempo reale) Internal Link

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

Eventi a livello di pagina

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

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

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

// Subscribe to live events for a page
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (get this from getComments response)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Aggiorna la UI con il nuovo commento
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Aggiorna i conteggi dei voti nella tua UI
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

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

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

Iscriviti agli eventi utente

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

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

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

// Subscribe to user's personal feed
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);

    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Mostra la notifica nella tua UI
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }

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

// Close when done
userSubscription.close();

Ottenere userIdWS

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

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

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

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

ID di Broadcast Internal Link

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

import { v4 as uuidv4 } from 'uuid';

const response = await sdk.publicApi.createCommentPublic({
  createCommentParams: {
    tenantId: 'your-tenant-id',
    urlId: 'page-id',
    comment: 'My comment',
    broadcastId: uuidv4() // ID univoco per questa operazione
  }
});

Gestione degli errori Internal Link

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

aggregare Internal Link

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

Parametri

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

Response

Restituisce: AggregationResponse


ottieniLogAudit Internal Link

Parametri

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

Risposta

Restituisce: GetAuditLogs200Response


bloccaDaCommentoPubblico Internal Link

Parametri

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

Risposta

Restituisce: BlockFromCommentPublic200Response


sbloccaCommentoPubblico Internal Link


Parametri

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

Risposta

Restituisce: UnBlockCommentPublic200Response


controllaCommentiBloccati Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
commentIds string
sso string No

Risposta

Restituisce: CheckedCommentsForBlocked200Response


bloccaUtenteDaCommento Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
blockFromCommentParams BlockFromCommentParams
userId string No
anonUserId string No

Risposta

Restituisce: BlockFromCommentPublic200Response


creaCommentoPubblico Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlId string
broadcastId string
commentData CommentData
sessionId string No
sso string No

Risposta

Restituisce: CreateCommentPublic200Response


eliminaCommento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
contextUserId string No
isLive boolean No

Risposta

Restituisce: DeleteComment200Response

eliminaCommentoPubblico Internal Link

Parametri

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

Risposta

Restituisce: DeleteCommentPublic200Response


eliminaVotoCommento Internal Link

Parametri

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

Risposta

Restituisce: DeleteCommentVote200Response


segnalaCommento Internal Link

Parametri

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

Risposta

Restituisce: FlagComment200Response


ottieniCommento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetComment200Response


ottieniCommenti Internal Link

Parametri

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

Risposta

Restituisce: GetComments200Response


ottieniCommentiPubblici Internal Link

req tenantId urlId

Parametri

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

Risposta

Restituisce: GetCommentsPublic200Response

ottieniTestoCommento Internal Link

Parametri

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

Risposta

Restituisce: GetCommentText200Response


ottieniNomiUtentiVotoCommento Internal Link

Parametri

Nome Type Richiesto Descrizione
tenantId string
commentId string
dir number
sso string No

Risposta

Restituisce: GetCommentVoteUserNames200Response


bloccaCommento Internal Link

Parametri

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

Risposta

Restituisce: LockComment200Response


fissaCommento Internal Link

Parametri

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

Risposta

Restituisce: PinComment200Response


salvaCommento Internal Link

Parametri

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

Risposta

Restituisce: SaveComment200Response


salvaCommentiInBlocco Internal Link

Parametri

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

Risposta

Restituisce: Array<SaveComment200Response


impostaTestoCommento Internal Link

Parametri

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

Risposta

Restituisce: SetCommentText200Response


sbloccaUtenteDaCommento Internal Link


Parametri

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

Risposta

Restituisce: UnBlockCommentPublic200Response


rimuoviSegnalazioneCommento Internal Link

Parametri

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

Risposta

Restituisce: FlagComment200Response


sbloccaCommento Internal Link

Parametri

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

Risposta

Restituisce: LockComment200Response


rimuoviPinCommento Internal Link


Parametri

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

Risposta

Restituisce: PinComment200Response


aggiornaCommento Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
body PickAPICommentUpdatableCommentFields
contextUserId string No
doSpamCheck boolean No
isLive boolean No

Risposta

Restituisce: FlagCommentPublic200Response


votaCommento Internal Link

Parametri

Name Type Obbligatorio Descrizione
tenantId string
commentId string
urlId string
broadcastId string
voteBodyParams VoteBodyParams
sessionId string No
sso string No

Risposta

Restituisce: VoteComment200Response


aggiungiConfigurazioneDominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
addDomainConfigParams AddDomainConfigParams

Risposta

Restituisce: AddDomainConfig200Response


eliminaConfigurazioneDominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domain string

Risposta

Restituisce: DeleteDomainConfig200Response


ottieniConfigurazioneDominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domain string

Risposta

Restituisce: GetDomainConfig200Response


ottieniConfigurazioniDominio Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string

Risposta

Restituisce: GetDomainConfigs200Response

modificaParzialeConfigurazioneDominio Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domainToUpdate string
patchDomainConfigParams PatchDomainConfigParams

Risposta

Restituisce: GetDomainConfig200Response


sostituisciConfigurazioneDominio Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
domainToUpdate string
updateDomainConfigParams UpdateDomainConfigParams

Risposta

Restituisce: GetDomainConfig200Response

creaTemplateEmail Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createEmailTemplateBody CreateEmailTemplateBody

Risposta

Restituisce: CreateEmailTemplate200Response

Esempio

Esempio di createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_7a9f2b3d";
3
4const createEmailTemplateBody: CreateEmailTemplateBody = {
5 name: "Comment Notification",
6 subject: "New comment on your article: ",
7 htmlBody: "<p> left a comment:</p><blockquote></blockquote>",
8 enabled: true,
9 defaultLocale: "en-US",
10 metadata: { createdBy: "admin@example.com", purpose: "notify_comment" } // dati extra opzionali
11};
12
13const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
14

eliminaTemplateEmail Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_4b2f6a-4b2f6a2d";
3const templateId: string = "email_template_9f8b7c3e";
4const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
5const status: APIStatus | undefined = result?.status
6

eliminaErroreRenderingTemplateEmail Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
errorId string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = "tenant_8f3b2a9c";
3const id: string = "template_4a1c9f7e";
4const errorId: string = "err_20260112_abc123";
5const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
6

ottieniTemplateEmail Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string

Risposta

Restituisce: GetEmailTemplate200Response

Esempio

Esempio di getEmailTemplate
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-enterprises-123';
4 const id: string = 'welcome-email-template-v2';
5 const locale: string | undefined = 'en-US'; // esempio di parametro opzionale
6 const template: GetEmailTemplate200Response = await getEmailTemplate(tenantId, id);
7 console.log(template, locale);
8})();
9

ottieniDefinizioniTemplateEmail Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string

Risposta

Restituisce: GetEmailTemplateDefinitions200Response

Esempio

Esempio di getEmailTemplateDefinitions
Copy Copy
1
2const tenantId: string = 'acme-enterprises-78f2';
3const emailTemplates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4

ottieniErroriRenderingTemplateEmail Internal Link

Parametri

Name Type Obbligatorio Descrizione
tenantId string
id string
skip number No

Risposta

Restituisce: GetEmailTemplateRenderErrors200Response

Esempio

Esempio di getEmailTemplateRenderErrors
Copy Copy
1
2const tenantId: string = "tenant_7b3f2a9c";
3const id: string = "tmpl_4f1b2c9e";
4const skip: number = 25;
5const result: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id, skip);
6

ottieniTemplateEmail Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetEmailTemplates200Response

Esempio

Esempio di getEmailTemplates
Copy Copy
1
2const tenantId: string = 'tenant_8f4d2b7c';
3const responseWithoutSkip: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
4const skip: number = 20;
5const responseWithSkip: GetEmailTemplates200Response = await getEmailTemplates(tenantId, skip);
6

renderizzaTemplateEmail Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
renderEmailTemplateBody RenderEmailTemplateBody
locale string No

Risposta

Restituisce: RenderEmailTemplate200Response

Esempio

Esempio di renderEmailTemplate
Copy Copy
1
2const tenantId: string = 'acme-corp-7f3';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'new-comment-notification',
5 recipientEmail: 'jane.doe@acme.com',
6 variables: {
7 commenterName: 'Samir Patel',
8 commentText: 'I found this article really helpful — thanks for sharing!',
9 threadUrl: 'https://acme.com/blog/123#comments'
10 },
11 includeUnsubscribeLink: true
12};
13const locale: string = 'en-US';
14const response: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
15

aggiornaTemplateEmail Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
updateEmailTemplateBody UpdateEmailTemplateBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateEmailTemplate
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const id: string = 'email_tpl_42b7a9';
4const updateEmailTemplateBody: UpdateEmailTemplateBody = {
5 name: 'Comment Flag Notification',
6 subject: 'A comment was flagged on acme.com',
7 html: '<p>A comment by was flagged. Review at </p>',
8 replyTo: 'noreply@acme.com', // campo opzionale a scopo dimostrativo
9 enabled: true,
10 customConfig: { priority: 'high' } // parametri personalizzati opzionali
11};
12const response: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
13

ottieniLogEventi Internal Link

req tenantId urlId userIdWS

Parametri

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

Risposta

Restituisce: GetEventLog200Response

ottieniLogEventiGlobali Internal Link


req tenantId urlId userIdWS

Parametri

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

Risposta

Restituisce: GetEventLog200Response


creaFeedPost Internal Link

Parametri

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

Risposta

Restituisce: CreateFeedPost200Response


creaFeedPostPubblico Internal Link

Parametri

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

Risposta

Restituisce: CreateFeedPostPublic200Response


eliminaFeedPostPubblico Internal Link

Parametri

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

Risposta

Restituisce: DeleteFeedPostPublic200Response


ottieniFeedPost Internal Link

req tenantId afterId

Parametri

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

Risposta

Restituisce: GetFeedPosts200Response

ottieniFeedPostPubblici Internal Link

req tenantId afterId

Parametri

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

Risposta

Restituisce: GetFeedPostsPublic200Response

ottieniStatisticheFeedPost Internal Link


Parametri

Nome Tipo Richiesto Descrizione
tenantId string
postIds Array
sso string No

Risposta

Restituisce: GetFeedPostsStats200Response


ottieniReazioniUtentePubbliche Internal Link


Parametri

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

Risposta

Restituisce: GetUserReactsPublic200Response


reagisciFeedPostPubblico Internal Link


Parametri

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

Risposta

Restituisce: ReactFeedPostPublic200Response


aggiornaFeedPost Internal Link


Parametri

Name Type Required Description
tenantId string
id string
feedPost FeedPost

Risposta

Restituisce: FlagCommentPublic200Response


aggiornaFeedPostPubblico Internal Link


Parametri

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

Risposta

Restituisce: CreateFeedPostPublic200Response


segnalaCommentoPubblico Internal Link


Parametri

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

Risposta

Restituisce: FlagCommentPublic200Response


aggiungiHashtag Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string No
createHashTagBody CreateHashTagBody No

Risposta

Restituisce: AddHashTag200Response

Esempio

Esempio di addHashTag
Copy Copy
1
2const tenantId: string = 'tenant_7b2f6c2b';
3const createBody: CreateHashTagBody = {
4 tag: 'feature-request',
5 label: 'Feature Request',
6 description: 'Requests for new functionality in the web client',
7 isActive: true,
8 visibility: 'public',
9 allowedDomains: ['example.com', 'internal.example.com']
10};
11const result: AddHashTag200Response = await addHashTag(tenantId, createBody);
12const resultWithoutTenant: AddHashTag200Response = await addHashTag(undefined, {
13 tag: 'bug',
14 label: 'Bug',
15 description: 'Use for reproducible bugs reported by users',
16 isActive: true,
17 visibility: 'public'
18});
19

aggiungiHashtagInBlocco Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string No
bulkCreateHashTagsBody BulkCreateHashTagsBody No

Risposta

Restituisce: AddHashTagsBulk200Response

Esempio

Esempio di addHashTagsBulk
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_3f2b9a';
4 const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
5 tags: [
6 { name: 'performance', description: 'Comments about site performance', visibleToModeratorsOnly: false },
7 { name: 'feature-request', description: 'Requests for new features', visibleToModeratorsOnly: true }
8 ]
9 };
10 const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
11 const resultWithNoTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBody);
12 console.log(result, resultWithNoTenant);
13})();
14

eliminaHashtag Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tag string
tenantId string No
deleteHashTagRequest DeleteHashTagRequest No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteHashTag
Copy Copy
1
2const tag: string = 'breaking-news';
3const tenantId: string = 'tenant_42';
4const deleteReq: DeleteHashTagRequest = { removedBy: 'moderator_jane', reason: 'off-topic for this community', deleteAssociatedComments: true } as DeleteHashTagRequest;
5const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteReq);
6

ottieniHashtag Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
page number No

Risposta

Restituisce: GetHashTags200Response

Esempio

Esempio getHashTags
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-7a9f";
4 const tagsPage1: GetHashTags200Response = await getHashTags(tenantId);
5 const tagsPage2: GetHashTags200Response = await getHashTags(tenantId, 2);
6 console.log(tagsPage1, tagsPage2);
7})();
8

modificaParzialeHashtag Internal Link

Parametri

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

Risposta

Restituisce: PatchHashTag200Response

Esempio

Esempio di patchHashTag
Copy Copy
1
2const tag: string = 'release-2026';
3const tenantId: string = 'tenant_42';
4const updateHashTagBody: UpdateHashTagBody = {
5 displayName: 'Release 2026',
6 description: 'Discussions and notes for the 2026 product release',
7 isActive: true
8};
9const result: PatchHashTag200Response = await patchHashTag(tag, tenantId, updateHashTagBody);
10

creaModeratore Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createModeratorBody CreateModeratorBody

Risposta

Restituisce: CreateModerator200Response

Esempio

Esempio di createModerator
Copy Copy
1
2const tenantId: string = "tenant_prod_us-east_01";
3const createModeratorBody: CreateModeratorBody = {
4 email: "maria.lopez+mod@fastcompany.com",
5 username: "mlopez_mod",
6 displayName: "Maria Lopez",
7 roles: ["content_moderator"],
8 notifyOnReports: true,
9 metadata: { region: "us-east", team: "community" }
10};
11const result: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
12

eliminaModeratore Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
sendEmail string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteModerator
Copy Copy
1
2const tenantId: string = 'acme-tenant-987';
3const moderatorId: string = 'mod-78b2c9a4-3f1e-4d6a';
4const sendEmail: string = 'true';
5const result: FlagCommentPublic200Response = await deleteModerator(tenantId, moderatorId, sendEmail);
6

ottieniModeratore Internal Link

Parametri

Name Type Required Description
tenantId string
id string

Risposta

Restituisce: GetModerator200Response

Esempio

Esempio getModerator
Copy Copy
1
2const tenantId: string = "tenant_eu_4f8d2b9e";
3const maybeModeratorId: string | undefined = "mod_91c3b7a2"; // origine opzionale (potrebbe essere undefined)
4const moderator: GetModerator200Response = await getModerator(tenantId, maybeModeratorId!);
5

ottieniModeratori Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string Yes
skip number No

Risposta

Restituisce: GetModerators200Response

Esempio

Esempio di getModerators
Copy Copy
1
2const tenantId: string = "tenant_corp_7f9b2a";
3const moderatorsPage1: GetModerators200Response = await getModerators(tenantId);
4const skip: number = 50;
5const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, skip);
6

inviaInvito Internal Link

Parametri

Name Type Obbligatorio Descrizione
tenantId string
id string
fromName string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di sendInvite
Copy Copy
1
2const tenantId: string = 'acme-tenant-004';
3const id: string = 'comment_9b7f3a2c';
4const fromName: string = 'María Hernández';
5const response: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName);
6

aggiornaModeratore Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateModeratorBody UpdateModeratorBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateModerator
Copy Copy
1
2const tenantId: string = '4f8a9c2e-3b6d-4d9e-8c2f-1a2b3c4d5e6f';
3const id: string = 'mod_92a7c4';
4const updateModeratorBodyMinimal: UpdateModeratorBody = { displayName: 'Sophia Patel' };
5const updateModeratorBodyWithOptional: UpdateModeratorBody = {
6 displayName: 'Sophia Patel',
7 email: 'sophia.patel@newsroom.example',
8 permissions: ['remove_comments', 'ban_user'],
9 notifyOnFlag: true // parametro opzionale dimostrato
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBodyWithOptional);
12

eliminaConteggioNotifiche Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_7f3a1b2c4d9e';
3const notificationId: string = 'notif_8c9d0a1b2f3e4b7';
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, notificationId);
5

ottieniConteggioNotificheCache Internal Link

Parametri

Name Type Required Description
tenantId string
id string

Risposta

Restituisce: GetCachedNotificationCount200Response

Esempio

Esempio di getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const baseNotificationId: string = 'notif-000123';
4const idSuffix: string | undefined = undefined; // esempio di parametro opzionale
5const notificationId: string = idSuffix ? `${baseNotificationId}-${idSuffix}` : baseNotificationId;
6const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, notificationId);
7console.log(result);
8

ottieniConteggioNotifiche Internal Link

Parametri

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

Risposta

Restituisce: GetNotificationCount200Response

Esempio

Esempio di getNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_8a9b7c';
3const userId: string = 'user_42b3c';
4const urlId: string = 'https://blog.example.com/posts/introducing-new-editor';
5const fromCommentId: string | undefined = undefined;
6const viewed: boolean = false;
7const type: string = 'mention';
8const result: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, fromCommentId, viewed, type);
9

ottieniNotifiche Internal Link

Parametri

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

Risposta

Restituisce: GetNotifications200Response

Esempio

Esempio di getNotifications
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_8f3b1a2c';
4 const userId: string = 'user_42';
5 const urlId: string = 'https://news.example.com/articles/2026/01/11/comment-thread';
6 const fromCommentId: string = 'cmt_9a7b';
7 const viewed: boolean = false;
8 const type: string = 'mention';
9 const skip: number = 0;
10 const response: GetNotifications200Response = await getNotifications(tenantId, userId, urlId, fromCommentId, viewed, type, skip);
11 console.log(response);
12})();
13

aggiornaNotifica Internal Link

Parametri

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

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateNotification
Copy Copy
1
2const tenantId: string = "tenant_86a7b3";
3const id: string = "notif_20260112_01";
4const userId: string = "moderator_42";
5const updateNotificationBody: UpdateNotificationBody = {
6 name: "Flagged comment alert",
7 enabled: true,
8 channels: ["email"],
9 recipients: ["mod-team@news-site.com"],
10 threshold: 1
11};
12
13(async () => {
14 const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
15 console.log(result);
16})();
17

aggiungiPagina Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createAPIPageData CreateAPIPageData

Risposta

Restituisce: AddPageAPIResponse

eliminaPagina Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: DeletePageAPIResponse


ottieniPaginaPerURLId Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlId string

Risposta

Restituisce: GetPageByURLIdAPIResponse


ottieniPagine Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string

Risposta

Restituisce: GetPagesAPIResponse


modificaParzialePagina Internal Link


Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
updateAPIPageData UpdateAPIPageData

Risposta

Restituisce: PatchPageAPIResponse


eliminaEventoWebhookInSospeso Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deletePendingWebhookEvent
Copy Copy
1
2const tenantId: string = 'tenant_7f4e2b';
3const pendingEventId: string = '9f7b6a8c-3b2a-4c0d-a8e5-1234567890ab';
4const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, pendingEventId);
5console.log(result);
6

ottieniConteggioEventiWebhookInSospeso Internal Link

Parametri

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

Risposta

Restituisce: GetPendingWebhookEventCount200Response

Esempio

Esempio di getPendingWebhookEventCount
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9c3b2b';
4 const commentId: string = 'cmt_f4a1b2';
5 const externalId: string = 'ext-789';
6 const eventType: string = 'comment.created';
7 const type: string = 'delivery';
8 const domain: string = 'app.example.com';
9 const attemptCountGT: number = 2;
10
11 const result: GetPendingWebhookEventCount200Response = await getPendingWebhookEventCount(
12 tenantId,
13 commentId,
14 externalId,
15 eventType,
16 type,
17 domain,
18 attemptCountGT
19 );
20
21 console.log(result);
22})();
23

ottieniEventiWebhookInSospeso Internal Link

Parametri

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

Risposta

Restituisce: GetPendingWebhookEvents200Response

Esempio

Esempio di getPendingWebhookEvents
Copy Copy
1
2const tenantId: string = "tenant_78b2f1";
3const commentId: string = "cmt_0042";
4const eventType: string = "comment.created";
5const domain: string = "blog.example.com";
6const attemptCountGT: number = 1;
7const skip: number = 0;
8
9const pending: GetPendingWebhookEvents200Response = await getPendingWebhookEvents(
10 tenantId,
11 commentId,
12 undefined, // externalId
13 eventType,
14 undefined, // type
15 domain,
16 attemptCountGT,
17 skip
18);
19

creaConfigurazioneDomanda Internal Link

Parametri

Name Type Required Description
tenantId string
createQuestionConfigBody CreateQuestionConfigBody

Risposta

Restituisce: CreateQuestionConfig200Response

Esempio

Esempio di createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_live_7f8b3c2a";
3const customOptions: QuestionConfigCustomOptionsInner[] = [
4 { value: "under18", label: "Under 18" },
5 { value: "18-24", label: "18-24" },
6 { value: "25-34", label: "25-34", defaultSelected: true }
7];
8const createQuestionConfigBody: CreateQuestionConfigBody = {
9 key: "age_range",
10 label: "What is your age range?",
11 required: false, // opzionale: mostra la differenza tra campi opzionali omessi e inclusi
12 renderingType: QuestionRenderingType.Dropdown,
13 options: customOptions,
14 whenSave: QuestionWhenSave.Always
15};
16const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
17

eliminaConfigurazioneDomanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteQuestionConfig
Copy Copy
1
2async function deleteIfPresent(tenantId: string, id?: string): Promise<FlagCommentPublic200Response | null> {
3 if (!id) return null;
4 const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5 return result;
6}
7const tenantId: string = 'tenant_acme_001';
8const optionalConfigId: string | undefined = 'qcfg_20260112_01';
9(async (): Promise<void> => {
10 const deleted: FlagCommentPublic200Response | null = await deleteIfPresent(tenantId, optionalConfigId);
11 void deleted;
12})();
13

ottieniConfigurazioneDomanda Internal Link

Parametri

Name Type Required Description
tenantId string
id string

Risposta

Restituisce: GetQuestionConfig200Response

Esempio

Esempio di getQuestionConfig
Copy Copy
1
2const tenantId: string = 'acme-corp-47';
3const questionId: string = 'q-2026-01-12-01';
4const result: GetQuestionConfig200Response = await getQuestionConfig(tenantId, questionId);
5function summarizeConfig(cfg: GetQuestionConfig200Response, includeMetadata?: boolean): QuestionConfig | undefined {
6 // includeMetadata è opzionale; implementazione omessa per brevità
7 return undefined;
8}
9const summarizedWithMeta: QuestionConfig | undefined = summarizeConfig(result, true);
10const summarizedDefault: QuestionConfig | undefined = summarizeConfig(result);
11

ottieniConfigurazioniDomanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetQuestionConfigs200Response

Esempio

Esempio di getQuestionConfigs
Copy Copy
1
2const tenantId: string = 'tenant-42a7b9';
3const firstPage: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const secondPage: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, 50);
5

aggiornaConfigurazioneDomanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateQuestionConfigBody UpdateQuestionConfigBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateQuestionConfig
Copy Copy
1
2const tenantId: string = 'tenant-82b3a';
3const id: string = 'qst-20260112';
4const updateQuestionConfigBody: UpdateQuestionConfigBody = { label: 'Age verification', required: true, renderingType: 'singleChoice', customOptions: [{ value: '18-24', label: '18–24' }] } as UpdateQuestionConfigBody;
5const result: FlagCommentPublic200Response = await updateQuestionConfig(tenantId, id, updateQuestionConfigBody);
6

creaRisultatoDomanda Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createQuestionResultBody CreateQuestionResultBody

Risposta

Restituisce: CreateQuestionResult200Response

Esempio

Esempio di createQuestionResult
Copy Copy
1
2const tenantId: string = "fc_tenant_7a3c_us-east-1";
3const metaItem: MetaItem = { key: "referrer", value: "/blog/how-to-comment" };
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "q_42",
6 commenterId: "user_1984",
7 answer: "yes",
8 score: 4,
9 meta: [metaItem] // metadati opzionali (dimostrazione)
10} as CreateQuestionResultBody;
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

eliminaRisultatoDomanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteQuestionResult
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const questionResultId: string = '6f1a2b3c-4d5e-6789-abcd-ef0123456789';
4const deletedResult: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, questionResultId);
5console.log(deletedResult);
6

ottieniRisultatoDomanda Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetQuestionResult200Response

Esempio

Esempio di getQuestionResult
Copy Copy
1
2const tenantId: string = "3fa85f64-5717-4562-b3fc-2c963f66afa6";
3const questionId: string = "question_72f1b9c3a4";
4const result: GetQuestionResult200Response = await getQuestionResult(tenantId, questionId);
5console.log(result);
6

ottieniRisultatiDomanda Internal Link

Parametri

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

Risposta

Restituisce: GetQuestionResults200Response

Esempio

Esempio getQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const urlId: string = 'news/2025/fastcomments-release';
4const userId: string = 'user_8b7f3c';
5const startDate: string = '2025-01-01T00:00:00Z';
6const questionIds: string = 'q123,q124';
7const skip: number = 20;
8const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, undefined, questionIds, skip);
9

aggiornaRisultatoDomanda Internal Link

Parametri

Name Type Required Description
tenantId string
id string
updateQuestionResultBody UpdateQuestionResultBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_84f2b9';
3const id: string = 'question_3a7c1d';
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 result: { verdict: 'helpful', confidence: 0.92 },
6 reviewer: { id: 'mod_102', name: 'Aisha Rahman' },
7 notifyUser: true // parametro opzionale incluso
8};
9const response: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
10

aggregazioneRisultatiDomanda Internal Link

Parametri

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

Risposta

Restituisce: AggregateQuestionResults200Response

aggregazioneInBloccoRisultatiDomanda Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest
forceRecalculate boolean No

Risposta

Restituisce: BulkAggregateQuestionResults200Response


combinaCommentiConRisultatiDomanda Internal Link

Parametri

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

Risposta

Restituisce: CombineCommentsWithQuestionResults200Response


aggiungiUtenteSSO Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createAPISSOUserData CreateAPISSOUserData

Risposta

Restituisce: AddSSOUserAPIResponse


eliminaUtenteSSO Internal Link

Parametri

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

Risposta

Restituisce: DeleteSSOUserAPIResponse


ottieniUtenteSSOPerEmail Internal Link


Parametri

Nome Type Obbligatorio Descrizione
tenantId string
email string

Risposta

Restituisce: GetSSOUserByEmailAPIResponse


ottieniUtenteSSOPerId Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetSSOUserByIdAPIResponse


ottieniUtentiSSO Internal Link

Parametri

Nome Type Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetSSOUsers200Response


modificaParzialeUtenteSSO Internal Link


Parametri

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

Risposta

Restituisce: PatchSSOUserAPIResponse


sostituisciUtenteSSO Internal Link

Parametri

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

Risposta

Restituisce: PutSSOUserAPIResponse


creaAbbonamento Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createAPIUserSubscriptionData CreateAPIUserSubscriptionData

Risposta

Restituisce: CreateSubscriptionAPIResponse


eliminaAbbonamento Internal Link

Parameters

Name Type Required Description
tenantId string
id string
userId string No

Risposta

Restituisce: DeleteSubscriptionAPIResponse


ottieniAbbonamenti Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string No

Risposta

Restituisce: GetSubscriptionsAPIResponse


ottieniUtilizziGiornalieriTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string Yes
yearNumber number No
monthNumber number No
dayNumber number No
skip number No

Risposta

Restituisce: GetTenantDailyUsages200Response

Esempio

Esempio di getTenantDailyUsages
Copy Copy
1
2const tenantId: string = "tenant_89f3c2-prod";
3const yearNumber: number = 2026;
4const monthNumber: number = 1;
5const skip: number = 0;
6const usages: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, undefined, skip);
7

creaPacchettoTenant Internal Link

Parametri

Name Type Required Description
tenantId string
createTenantPackageBody CreateTenantPackageBody

Risposta

Restituisce: CreateTenantPackage200Response

Esempio

Esempio di createTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_7f3b1a9c";
3const tenantPackage: TenantPackage = { id: "pkg_001", name: "Premium Plan", seats: 100 };
4const customConfig: CustomConfigParameters = { enableImages: true, maxImageSizeMb: 10 };
5const createTenantPackageBody: CreateTenantPackageBody = {
6 packageName: "Premium Plus",
7 tenantPackage,
8 customConfig,
9 notes: "Enable advanced moderation and image uploads" // parametro opzionale dimostrativo
10};
11const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
12

eliminaPacchettoTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'fc-tenant-8a9c2b';
3const packageId: string = 'pkg-47f3c9';
4const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
5

ottieniPacchettoTenant Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string

Risposta

Restituisce: GetTenantPackage200Response

Esempio

Esempio di getTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_westus_01';
3const packageId: string = 'pkg_premium_annual_2026';
4interface FetchOptions { includeArchived?: boolean }
5const options: FetchOptions = { includeArchived: false };
6const result: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
7

ottieniPacchettiTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetTenantPackages200Response

Esempio

Esempio di getTenantPackages
Copy Copy
1
2const tenantId: string = 'tenant_4f3a9c2d';
3const skip: number = 25;
4const packagesResponse: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const pagedPackagesResponse: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

sostituisciPacchettoTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
replaceTenantPackageBody ReplaceTenantPackageBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di replaceTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant-9b72f2';
3const packageId: string = 'pkg-prod-v2';
4const replaceTenantPackageBody: ReplaceTenantPackageBody = {
5 name: 'Premium Moderation Bundle',
6 enabled: true,
7 maxModerators: 4,
8 // i campi opzionali come "notes" o "trialExpiry" sono intenzionalmente omessi qui
9} as ReplaceTenantPackageBody;
10const result: FlagCommentPublic200Response = await replaceTenantPackage(
11 tenantId,
12 packageId,
13 replaceTenantPackageBody
14);
15

aggiornaPacchettoTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateTenantPackageBody UpdateTenantPackageBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_8a4f1c9b';
3const packageId: string = 'pkg_premium_v2';
4const customConfig: CustomConfigParameters = { enableRichText: true, maxImagesPerComment: 5 };
5const updateTenantPackageBody: UpdateTenantPackageBody = {
6 name: 'Premium Moderation Package',
7 enabled: true,
8 description: 'Adds advanced spam rules, image moderation and priority support',
9 customConfigParameters: customConfig
10};
11const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, packageId, updateTenantPackageBody);
12

creaUtenteTenant Internal Link

Parametri

Name Type Required Description
tenantId string
createTenantUserBody CreateTenantUserBody

Risposta

Restituisce: CreateTenantUser200Response

Esempio

Esempio di createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_9a8c7e4b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "julia.smith@acme-corp.com",
5 displayName: "Julia Smith",
6 role: "moderator",
7 password: "Str0ngP@ssword!23",
8 sendInviteEmail: true, // parametro opzionale dimostrato
9 locale: "en-US",
10 metadata: { department: "Customer Success" }
11};
12const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
13

eliminaUtenteTenant Internal Link

Parametri

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

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2a9c';
3const id: string = 'user_4e5f6a7b';
4const deleteComments: string = 'true';
5const commentDeleteMode: string = 'hard';
6
7const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
8

ottieniUtenteTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetTenantUser200Response

Esempio

Esempio getTenantUser
Copy Copy
1
2const tenantId: string = "tenant_9f7d4b2a-1c3e";
3const id: string = "user_6a12b3c4d5";
4const includeProfile: boolean | undefined = true; // esempio di parametro opzionale
5const response: GetTenantUser200Response = await getTenantUser(tenantId, id);
6console.log("Tenant user fetched", response);
7

ottieniUtentiTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
skip number No

Risposta

Restituisce: GetTenantUsers200Response

Esempio

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

sostituisciUtenteTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
replaceTenantUserBody ReplaceTenantUserBody
updateComments string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di replaceTenantUser
Copy Copy
1
2const tenantId: string = "tenant_5f8b9a";
3const id: string = "user_92bf21";
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 email: "jane.doe@acme-corp.com",
6 displayName: "Jane Doe",
7 externalId: "acme|12345",
8 roles: ["commenter", "moderator"],
9 isActive: true,
10 metadata: { team: "product", location: "NYC" }
11};
12const updateComments: string = "Update historical comments to reflect new display name";
13const result: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
14

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
redirectURL string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di sendLoginLink
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const id: string = 'user_9f3b2a';
4const redirectURL: string = 'https://app.example.com/onboard?source=login-email';
5const result: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
6

aggiornaUtenteTenant Internal Link

Parametri

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

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_84f3b2';
3const id: string = 'user_7a9d1c';
4const updateComments: string = 'Promoted to moderator and updated contact email';
5const updateTenantUserBody: UpdateTenantUserBody = {
6 email: 'jane.doe+mod@example.com',
7 displayName: 'Jane D.',
8 roles: ['moderator'],
9 isBanned: false,
10 metadata: { department: 'community' }
11};
12const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, id, updateTenantUserBody, updateComments);
13

creaTenant Internal Link

Parametri

Name Type Required Description
tenantId string
createTenantBody CreateTenantBody

Risposta

Restituisce: CreateTenant200Response

Esempio

Esempio di createTenant
Copy Copy
1
2const tenantId: string = "acme-corporation";
3const billing: BillingInfo = { planId: "pro", billingContactEmail: "finance@acme-corp.com", currency: "USD" };
4const domainConfig: APIDomainConfiguration = { primaryDomain: "comments.acme-corp.com", allowedDomains: ["acme-corp.com", "www.acme-corp.com"], enforceHttps: true };
5const importedSites: ImportedSiteType[] = [{ siteId: "site-001", url: "https://blog.acme-corp.com", name: "Acme Blog" }]; // opzionale
6const createBody: CreateTenantBody = { tenantName: "Acme Corporation", adminEmail: "admin@acme-corp.com", billingInfo: billing, domainConfiguration: domainConfig, importedSites, enableModeration: true };
7const response: CreateTenant200Response = await createTenant(tenantId, createBody);
8

eliminaTenant Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
sure string No

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di deleteTenant
Copy Copy
1
2const tenantId: string = "tenant_7b3f1a9e";
3const id: string = "flag_9c4d2b1a";
4const sure: string = "yes_confirm_delete";
5
6const result: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
7console.log(result);
8

ottieniTenant Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetTenant200Response

Esempio

Esempio di getTenant
Copy Copy
1
2const tenantId: string = "tenant_acme_corp";
3const id: string = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
4interface GetOptions { includeDeleted?: boolean; locale?: string; }
5const options: GetOptions = { locale: "en-US" };
6const result: GetTenant200Response = await getTenant(tenantId, id);
7

ottieniTenants Internal Link

Parametri

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

Risposta

Restituisce: GetTenants200Response

Esempio

Esempio di getTenants
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9f2d1b7c';
4 const meta: string = 'include=domains,billing,customConfig';
5 const skip: number = 20;
6 const response: GetTenants200Response = await getTenants(tenantId, meta, skip);
7 console.log(response);
8})();
9

aggiornaTenant Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
id string
updateTenantBody UpdateTenantBody

Risposta

Restituisce: FlagCommentPublic200Response

Esempio

Esempio di updateTenant
Copy Copy
1
2const tenantId: string = "tenant_01H4ZQ7KABCD";
3const id: string = "site_9f8e7d6c";
4const apiDomainConfiguration: APIDomainConfiguration = {
5 primaryDomain: "comments.acme.com",
6 allowSubdomains: true
7};
8const billingInfo: BillingInfo = {
9 planName: "Business",
10 billingContactEmail: "billing@acme.com",
11 seats: 25
12};
13const updateTenantBody: UpdateTenantBody = {
14 displayName: "Acme Corporation Comments",
15 apiDomainConfiguration,
16 billingInfo, // parametro opzionale dimostrato
17 enableModeration: true
18};
19const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
20

caricaImmagine Internal Link


Carica e ridimensiona un'immagine

Parametri

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

Risposta

Restituisce: UploadImageResponse


ottieniProgressoBadgeUtentePerId Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetUserBadgeProgressById200Response

ottieniProgressoBadgeUtentePerUserId Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
userId string

Risposta

Restituisce: GetUserBadgeProgressById200Response


ottieniListaProgressoBadgeUtente Internal Link

Parametri

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

Risposta

Restituisce: GetUserBadgeProgressList200Response


creaBadgeUtente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
createUserBadgeParams CreateUserBadgeParams

Risposta

Restituisce: CreateUserBadge200Response


eliminaBadgeUtente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: UpdateUserBadge200Response


ottieniBadgeUtente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string

Risposta

Restituisce: GetUserBadge200Response


ottieniBadgeUtenti Internal Link

Parametri

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

Risposta

Restituisce: GetUserBadges200Response


aggiornaBadgeUtente Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
updateUserBadgeParams UpdateUserBadgeParams

Risposta

Restituisce: UpdateUserBadge200Response


ottieniConteggioNotificheUtente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
sso string No

Risposta

Restituisce: GetUserNotificationCount200Response


ottieniNotificheUtente Internal Link

Parametri

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

Risposta

Restituisce: GetUserNotifications200Response


resettaConteggioNotificheUtente Internal Link

Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
sso string No

Risposta

Restituisce: ResetUserNotifications200Response


resettaNotificheUtente Internal Link

Parametri

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

Risposta

Restituisce: ResetUserNotifications200Response


aggiornaStatoIscrizioneCommentiNotificheUtente Internal Link

Abilita o disabilita le notifiche per un commento specifico.

Parametri

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

Risposta

Restituisce: UpdateUserNotificationStatus200Response


aggiornaStatoIscrizionePagineNotificheUtente Internal Link

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

Parametri

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

Risposta

Restituisce: UpdateUserNotificationStatus200Response

aggiornaStatoNotificheUtente Internal Link


Parametri

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

Risposta

Restituisce: UpdateUserNotificationStatus200Response


ottieniStatiPresenzaUtenti Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
urlIdWS string
userIds string

Risposta

Restituisce: GetUserPresenceStatuses200Response


cercaUtenti Internal Link

Parametri

Nome Tipo Richiesto Descrizione
tenantId string
urlId string
usernameStartsWith string
mentionGroupIds Array No
sso string No

Risposta

Restituisce: SearchUsers200Response


ottieniUtente Internal Link

Parametri

Name Type Required Description
tenantId string
id string

Risposta

Restituisce: GetUser200Response

Esempio

Esempio getUser
Copy Copy
1
2const tenantId: string = "acme-publishing-42";
3const userIdOptional: string | undefined = "user_9d7b4c"; // potrebbe essere undefined in alcuni flussi (opzionale)
4const id: string = userIdOptional ?? "user_default_0001";
5const result: GetUser200Response = await getUser(tenantId, id);
6console.log(result);
7

creaVoto Internal Link


Parametri

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

Risposta

Restituisce: VoteComment200Response

Esempio

Esempio di createVote
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-tenant-812';
4 const commentId: string = '5e8f8b7a-3d4b-4f1b-9a2e-1c9f2d6a7b8c';
5 const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.UP;
6 const anonUserId: string = 'anon-84b9c2d';
7 const voteResult: VoteComment200Response = await createVote(tenantId, commentId, direction, undefined, anonUserId);
8 console.log(voteResult);
9})();
10

eliminaVoto Internal Link


Parametri

Nome Tipo Obbligatorio Descrizione
tenantId string
id string
editKey string No

Risposta

Restituisce: DeleteCommentVote200Response

Esempio

Esempio di deleteVote
Copy Copy
1
2const tenantId: string = 'tenant_7f3b21c9';
3const id: string = 'vote_4a2d9f1b';
4const editKey: string = 'edit_92b7c6a1';
5
6const resultWithoutEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id);
7const resultWithEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
8

ottieniVoti Internal Link

Parametri

Name Type Required Description
tenantId string
urlId string

Risposta

Restituisce: GetVotes200Response

Esempio

Esempio getVotes
Copy Copy
1
2const tenantId: string = 'tenant_9f8b3c_prod';
3const urlId: string = '/news/2026/typescript-ecosystem-update';
4const votes: GetVotes200Response = await getVotes(tenantId, urlId);
5// Se esistesse un parametro opzionale, ad esempio includeHidden, potrebbe essere utilizzato così:
6// const votesWithHidden: GetVotes200Response = await getVotes(tenantId, urlId, { includeHidden: true });
7

ottieniVotiPerUtente Internal Link

Parametri

Name Type Required Description
tenantId string
urlId string
userId string No
anonUserId string No

Risposta

Restituisce: GetVotesForUser200Response

Esempio

Esempio di getVotesForUser
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const urlId: string = 'news/2026/01/12/product-launch';
4const userId: string = 'user_9c3f2b';
5const anonUserId: string = 'anon_d4e7a1';
6
7const votesForUser: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, userId);
8const votesForAnon: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, undefined, anonUserId);
9

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.