FastComments.com

SDK JavaScript/TypeScript FastComments


Ceci est le SDK officiel JavaScript/TypeScript pour FastComments.

Gérez les commentaires, les utilisateurs, le SSO et la modération depuis Node.js ou le navigateur.

Dépôt

Voir sur GitHub


Installation Internal Link

npm

npm install fastcomments-sdk

API Documentation Internal Link


Référence complète de l'API: docs/api/README.md

Browser vs Server Compatibility Internal Link


Ce SDK utilise des points d'entrée doubles pour garantir une compatibilité optimale et éviter les erreurs d'exécution :

  • fastcomments-sdk/browser - Version sécurisée pour les navigateurs avec fetch natif
  • fastcomments-sdk/server - Version complète pour Node.js avec prise en charge du SSO
  • fastcomments-sdk (par défaut) - Contient uniquement des types, sûr à importer n'importe où

Public vs Secured APIs Internal Link

Le SDK fournit trois classes d'API principales :

  • DefaultApi - Points de terminaison sécurisés qui nécessitent votre clé API pour l'authentification. Utilisez-les pour les opérations côté serveur.
  • PublicApi - Points de terminaison publics accessibles sans clé API. Ils peuvent être appelés directement depuis des navigateurs, appareils mobiles, etc.
  • HiddenApi - Points de terminaison internes/admin pour des cas d'utilisation avancés.

Exemple : Utilisation de l'API publique (adaptée au navigateur)

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

const publicApi = new PublicApi();

// Récupérer les commentaires d'une page (pas de clé API requise)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Exemple : Utilisation de l'API par défaut (côté serveur uniquement)

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

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

// Récupérer les commentaires avec un accès administrateur complet
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

SSO (Single Sign-On) Integration Internal Link

FastComments prend en charge le SSO pour s'intégrer à votre système d'authentification utilisateur existant. La fonctionnalité SSO n'est disponible que dans l'export côté serveur car elle nécessite les fonctionnalités crypto de Node.js.

SSO simple (côté serveur uniquement)

Le SSO simple doit être généré côté serveur et envoyé au client :

// Code côté serveur (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Créez un SSO simple en utilisant l'assistant intégré  
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();

// Envoyez ssoToken à votre code côté client
// Le code côté client peut ensuite utiliser ce jeton avec le SDK pour navigateur

SSO sécurisé (côté serveur, recommandé)

Le SSO sécurisé doit être implémenté côté serveur et offre une meilleure sécurité :

// Code côté serveur (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Créez un SSO sécurisé en utilisant l'assistant intégré
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();

// À utiliser avec les appels API côté serveur
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Ou envoyez ssoConfig au client pour une utilisation dans le navigateur

Utiliser le SSO depuis le navigateur (avec un jeton généré par le serveur)

// Code côté client (navigateur)
import { PublicApi } from 'fastcomments-sdk/browser';

// Récupérez le jeton SSO depuis votre endpoint serveur
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 // Utilisez le jeton SSO généré par le serveur
});

SSO avec création de commentaire

// Côté serveur : créer le SSO et le commentaire
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

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

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

Common Use Cases Internal Link

Récupérer les commentaires d'une page

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

Créer un commentaire

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

Voter sur un commentaire

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 pour un vote positif, -1 pour un vote négatif
  }
});

Gestion des utilisateurs (Nécessite une clé API)

// Rechercher des utilisateurs (nécessite DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Live Events (Real-time Updates) Internal Link

Abonnez-vous aux événements en direct pour recevoir des mises à jour en temps réel concernant les commentaires, les votes et autres activités.

Événements au niveau de la page

Écoutez les événements en direct sur une page spécifique (commentaires, votes, etc.) :

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

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

// Subscribe to live events for a page
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (get this from getComments response)
  (event: LiveEvent) => {
    console.log('Live event received:', event);
    
    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Mettez à jour votre interface avec le nouveau commentaire
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Mettez à jour les compteurs de votes dans votre interface
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }
    
    return true; // Retournez true si l'événement a été traité
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

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

S'abonner aux événements utilisateur

Écoutez les événements spécifiques à un utilisateur (notifications, mentions, etc.) :

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

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

// Subscribe to user's personal feed
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);
    
    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Affichez la notification dans votre interface
        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();

Obtenir userIdWS

Le paramètre userIdWS est requis pour les événements en direct et peut être obtenu à partir des réponses de l'API :

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

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

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

Broadcast IDs Internal Link


Vous verrez qu'il faut transmettre un broadcastId dans certains appels d'API. Quand vous recevez des événements, vous récupérerez cet ID, ce qui vous permet d'ignorer l'événement si vous comptez appliquer les changements de manière optimiste côté client (ce que vous voudrez probablement faire car cela offre la meilleure expérience). Passez un UUID ici. L'ID doit être suffisamment unique pour ne pas apparaître deux fois durant une session de navigateur.

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 unique pour cette opération
  }
});

Error Handling Internal Link

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

aggregate Internal Link


Regroupe les documents (si groupBy est fourni) et applique plusieurs opérations. Différentes opérations (par ex. sum, countDistinct, avg, etc.) sont prises en charge.

Paramètres

NameTypeRequiredDescription
tenantIdstringYes
aggregationRequestAggregationRequestYes
parentTenantIdstringNo
includeStatsbooleanNo

Réponse

Renvoie: Aggregate200Response

Exemple

Exemple pour aggregate
Copy Copy
1
2const tenantId: string = 'tenant_78a9';
3const parentTenantId: string = 'parent_tenant_01';
4const includeStats: boolean = true;
5const aggregationRequest: AggregationRequest = {
6 operation: { type: 'COUNT' },
7 groupBy: ['pageUrl'],
8 predicate: { field: 'status', operator: 'EQUALS', value: 'approved' },
9 sort: [{ field: 'count', direction: 'DESC' }],
10 limit: 25
11};
12const result: Aggregate200Response = await aggregate(tenantId, aggregationRequest, parentTenantId, includeStats);
13

getAuditLogs Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
limitnumberNon
skipnumberNon
orderSORTDIRNon
afternumberNon
beforenumberNon

Réponse

Renvoie: GetAuditLogs200Response

Exemple

Exemple getAuditLogs
Copy Copy
1
2const tenantId: string = 'tenant_5f8d7c3a';
3const limit: number = 100;
4const skip: number = 0;
5const order: SORTDIR = 'DESC' as SORTDIR;
6const after: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // il y a une semaine
7const before: number = Date.now();
8const result: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, order, after, before);
9

blockFromCommentPublic Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
commentIdstringOui
publicBlockFromCommentParamsPublicBlockFromCommentParamsOui
ssostringNon

Réponse

Renvoie: BlockFromCommentPublic200Response

Exemple

Exemple de blockFromCommentPublic
Copy Copy
1
2const tenantId: string = 'tenant_6b3f9a2d';
3const commentId: string = 'cmt_8f4b12a9';
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: 'Repeated promotional links',
6 durationMinutes: 60 * 24 * 30, // 30 jours
7 escalateToModeration: true
8};
9const sso: string = 'sso_token_3fH7kLw';
10
11const result: BlockFromCommentPublic200Response = await blockFromCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
12

unBlockCommentPublic Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
commentIdstringOui
publicBlockFromCommentParamsPublicBlockFromCommentParamsOui
ssostringNon

Réponse

Renvoie : UnBlockCommentPublic200Response

Exemple

Exemple de unBlockCommentPublic
Copy Copy
1
2const tenantId: string = "tenant-42-production";
3const commentId: string = "comment_7f3b2a9d";
4const publicBlockFromCommentParams: PublicBlockFromCommentParams = {
5 reason: "flag reviewed and determined not to violate policy",
6 restoredBy: "moderator_jane",
7 restoredAt: new Date().toISOString()
8};
9const sso: string = "sso_token_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
10const result: UnBlockCommentPublic200Response = await unBlockCommentPublic(tenantId, commentId, publicBlockFromCommentParams, sso);
11

checkedCommentsForBlocked Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
commentIdsstringOui
ssostringNon

Réponse

Renvoie: CheckedCommentsForBlocked200Response

Exemple

Exemple de checkedCommentsForBlocked
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_fa3b2c9e';
4 const commentIds: string = 'cmt_112233,cmt_445566';
5 const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI0Njc4IiwidGVuYW50IjoidGVuYW50X2ZhM2IifQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
6 const resultWithSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds, sso);
7 const resultWithoutSSO: CheckedCommentsForBlocked200Response = await checkedCommentsForBlocked(tenantId, commentIds);
8 console.log(resultWithSSO, resultWithoutSSO);
9})();
10

blockUserFromComment Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringOui
idstringOui
blockFromCommentParamsBlockFromCommentParamsOui
userIdstringNon
anonUserIdstringNon

Réponse

Retourne: BlockFromCommentPublic200Response

Exemple

Exemple de blockUserFromComment
Copy Copy
1
2const tenantId: string = "tenant_7f3b4c";
3const id: string = "comment_9a8b7c6d";
4const blockFromCommentParams: BlockFromCommentParams = {
5 reason: "Repeated spam links",
6 durationHours: 168,
7 notifyModerators: true
8};
9const userId: string | undefined = "user_42";
10const anonUserId: string | undefined = undefined;
11const result: BlockFromCommentPublic200Response = await blockUserFromComment(tenantId, id, blockFromCommentParams, userId, anonUserId);
12

createCommentPublic Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
urlIdstringOui
broadcastIdstringOui
commentDataCommentDataOui
sessionIdstringNon
ssostringNon

Réponse

Renvoie : CreateCommentPublic200Response

Exemple

Exemple de createCommentPublic
Copy Copy
1
2const tenantId: string = 'tenant_9a1b2c';
3const urlId: string = 'https://www.news-site.com/article/67890';
4const broadcastId: string = 'broadcast_2026-06-15-01';
5const sessionId: string | undefined = 'sess_abc123xyz';
6const sso: string | undefined = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiam9yZGFuIiwiaWF0IjoxNjI0MDAwMDB9.signature';
7const commentData: CommentData = {
8 content: 'Insightful piece — I appreciated the data-backed points and sources cited.',
9 authorDisplayName: 'Jordan Miles'
10} as CommentData;
11const result: CreateCommentPublic200Response = await createCommentPublic(tenantId, urlId, broadcastId, commentData, sessionId, sso);
12

deleteComment Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
contextUserIdstringNon
isLivebooleanNon

Réponse

Renvoie: DeleteComment200Response

Exemple

Exemple deleteComment
Copy Copy
1
2const tenantId: string = 'tenant_84a9f2';
3const id: string = 'comment_5f3b21';
4const contextUserId: string | undefined = 'user_1122';
5const isLive: boolean | undefined = true;
6
7async function run(): Promise<void> {
8 const result: DeleteComment200Response = await deleteComment(tenantId, id, contextUserId, isLive);
9 console.log(result);
10}
11
12run();
13

deleteCommentPublic Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
commentIdstringOui
broadcastIdstringOui
editKeystringNon
ssostringNon

Réponse

Renvoie : DeleteCommentPublic200Response

Exemple

Exemple de deleteCommentPublic
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const commentId: string = 'c0mment-9f8b7a6';
4const broadcastId: string = 'site_homepage_2026-06-15';
5const editKey: string = 'ek_3b7a1f59-4d2c-11eb-8dcd-0242ac130003';
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.fakePayload.signature';
7
8const result: DeleteCommentPublic200Response = await deleteCommentPublic(tenantId, commentId, broadcastId, editKey, sso);
9

deleteCommentVote Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringOui
commentIdstringOui
voteIdstringOui
urlIdstringOui
broadcastIdstringOui
editKeystringNon
ssostringNon

Réponse

Renvoie : DeleteCommentVote200Response

Exemple

Exemple de deleteCommentVote
Copy Copy
1
2const tenantId: string = 'tenant_8f3a2b7c';
3const commentId: string = 'cmt-5a1f3d92';
4const voteId: string = 'vote-3b9c7e1a';
5const urlId: string = 'articles/2026/06/typescript-best-practices';
6const broadcastId: string = 'broadcast-77f4d2';
7const editKey: string = 'edk-9b2f4c';
8const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload.signature';
9const result: DeleteCommentVote200Response = await deleteCommentVote(tenantId, commentId, voteId, urlId, broadcastId, editKey, sso);
10

flagComment Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
userIdstringNon
anonUserIdstringNon

Réponse

Renvoie : FlagComment200Response

Exemple

Exemple de flagComment
Copy Copy
1
2const tenantId: string = "tenant_4f21c9a";
3const commentId: string = "cmt_7a12b3e9";
4const userId: string = "user_82bd123";
5const result: FlagComment200Response = await flagComment(tenantId, commentId, userId);
6

getComment Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetComment200Response

Exemple

Exemple de getComment
Copy Copy
1
2const tenantId: string = 'tenant_6f1a2b';
3const commentId: string = 'cmt_4d9e8f';
4const includeReplies: boolean | undefined = true; // exemple de paramètre optionnel (non passé à getComment)
5const result: GetComment200Response = await getComment(tenantId, commentId);
6console.log('Fetched comment for tenant:', tenantId, 'comment id:', commentId);
7console.log('API response received:', result);
8

getComments Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
pagenumberNon
limitnumberNon
skipnumberNon
asTreebooleanNon
skipChildrennumberNon
limitChildrennumberNon
maxTreeDepthnumberNon
urlIdstringNon
userIdstringNon
anonUserIdstringNon
contextUserIdstringNon
hashTagstringNon
parentIdstringNon
directionSortDirectionsNon
fromDatenumberNon
toDatenumberNon

Réponse

Renvoie: GetComments200Response

Exemple

Exemple de getComments
Copy Copy
1
2const tenantId: string = "tenant_9a12b3";
3const response: GetComments200Response = await getComments(tenantId, 1, 20, 0, true, 0, 3, 2, "https://mysite.com/posts/678", undefined, undefined, undefined, undefined, "parent_987", undefined, 1716873600000, 1719552000000);
4

getCommentsPublic Internal Link

req tenantId urlId

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
urlIdstringOui
pagenumberNon
directionSortDirectionsNon
ssostringNon
skipnumberNon
skipChildrennumberNon
limitnumberNon
limitChildrennumberNon
countChildrenbooleanNon
fetchPageForCommentIdstringNon
includeConfigbooleanNon
countAllbooleanNon
includei10nbooleanNon
localestringNon
modulesstringNon
isCrawlerbooleanNon
includeNotificationCountbooleanNon
asTreebooleanNon
maxTreeDepthnumberNon
useFullTranslationIdsbooleanNon
parentIdstringNon
searchTextstringNon
hashTagsArrayNon
userIdstringNon
customConfigStrstringNon
afterCommentIdstringNon
beforeCommentIdstringNon

Réponse

Renvoie: GetCommentsPublic200Response

Exemple

Exemple de getCommentsPublic
Copy Copy
1
2const tenantId: string = 'acme-news';
3const urlId: string = '/articles/2026/fastcomments-update';
4const page: number = 1;
5const skip: number = 0;
6const limit: number = 25;
7const countChildren: boolean = true;
8const includeConfig: boolean = true;
9const result: GetCommentsPublic200Response = await getCommentsPublic(
10 tenantId,
11 urlId,
12 page,
13 undefined,
14 undefined,
15 skip,
16 undefined,
17 limit,
18 undefined,
19 countChildren,
20 undefined,
21 includeConfig
22);
23

getCommentText Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
commentIdstringOui
editKeystringNon
ssostringNon

Réponse

Renvoie : GetCommentText200Response

Exemple

Exemple de getCommentText
Copy Copy
1
2const tenantId: string = 'tenant_42b7e9';
3const commentId: string = 'cmt_9f3a2b';
4const editKey: string = 'edk_3f1b7c9d';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ssoPayload.signature';
6
7const result: GetCommentText200Response = await getCommentText(tenantId, commentId, editKey, sso);
8

getCommentVoteUserNames Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
commentIdstringOui
dirnumberOui
ssostringNon

Réponse

Renvoie : GetCommentVoteUserNames200Response

Exemple

Exemple de getCommentVoteUserNames
Copy Copy
1
2const tenantId: string = "tenant_67890";
3const commentId: string = "comment_abc123";
4const dir: number = 1;
5const ssoToken: string = "sso-eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
6
7const responseWithoutSSO: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dir);
8const responseWithSSO: GetCommentVoteUserNames200Response = await getCommentVoteUserNames(tenantId, commentId, dir, ssoToken);
9

lockComment Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
commentIdstringOui
broadcastIdstringOui
ssostringNon

Réponse

Renvoie : LockComment200Response

Exemple

Exemple de lockComment
Copy Copy
1
2const tenantId: string = 'tenant_42f6c1';
3const commentId: string = 'cmt-9a8b7c';
4const broadcastId: string = 'brd_2026_06_15';
5const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1Njc4OSIsImlhdCI6MTY1MDAwMDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
6
7const lockedWithSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId, ssoToken);
8const lockedWithoutSso: LockComment200Response = await lockComment(tenantId, commentId, broadcastId);
9

pinComment Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
commentIdstringOui
broadcastIdstringOui
ssostringNon

Réponse

Renvoie : PinComment200Response

Exemple

Exemple de pinComment
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-72";
3const commentId: string = "cmt_8f3a2b4c9d";
4const broadcastId: string = "live_2026-06-15_21z";
5const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.fake.payload.signature";
6
7const responseNoSSO: PinComment200Response = await pinComment(tenantId, commentId, broadcastId);
8const responseWithSSO: PinComment200Response = await pinComment(tenantId, commentId, broadcastId, ssoToken);
9

saveComment Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
createCommentParamsCreateCommentParamsOui
isLivebooleanNon
doSpamCheckbooleanNon
sendEmailsbooleanNon
populateNotificationsbooleanNon

Réponse

Retourne: SaveComment200Response

Exemple

Exemple de saveComment
Copy Copy
1
2const tenantId: string = "fastcomments-tenant-42";
3const createCommentParams: CreateCommentParams = {
4 threadId: "article-2026-06-0142",
5 content: "Great write-up — I followed the migration steps and everything worked as described.",
6 userId: "u_9c72b",
7 userName: "Ava R.",
8 userAvatarUrl: "https://cdn.example.com/avatars/u_9c72b.png",
9 metadata: { platform: "web", locale: "en-US" }
10};
11const isLive: boolean = true;
12const doSpamCheck: boolean = true;
13const sendEmails: boolean = false;
14const populateNotifications: boolean = true;
15const result: SaveComment200Response = await saveComment(tenantId, createCommentParams, isLive, doSpamCheck, sendEmails, populateNotifications);
16

saveCommentsBulk Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
createCommentParamsArrayOui
isLivebooleanNon
doSpamCheckbooleanNon
sendEmailsbooleanNon
populateNotificationsbooleanNon

Réponse

Retourne : Array<SaveComment200Response

Exemple

Exemple de saveCommentsBulk
Copy Copy
1
2const tenantId: string = "tenant_42a1b7";
3const mentions: CommentUserMentionInfo[] = [{ userId: "user_2b9", displayName: "Alex Chen" }];
4const hashtags: CommentUserHashTagInfo[] = [{ tag: "performance" }];
5const createCommentParams: CreateCommentParams[] = [
6 {
7 content: "Thanks for the detailed article — the alternative approach worked for me.",
8 authorId: "user_8f3c2",
9 authorName: "Maya Patel",
10 authorEmail: "maya.patel@example.com",
11 url: "/articles/optimizing-ts-performance",
12 createdAt: new Date().toISOString(),
13 mentions,
14 hashtags
15 }
16];
17const isLive: boolean = true;
18const doSpamCheck: boolean = false;
19const sendEmails: boolean = true;
20const populateNotifications: boolean = true;
21const result: Array<SaveComment200Response> = await saveCommentsBulk(tenantId, createCommentParams, isLive, doSpamCheck, sendEmails, populateNotifications);
22

setCommentText Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringOui
commentIdstringOui
broadcastIdstringOui
commentTextUpdateRequestCommentTextUpdateRequestOui
editKeystringNon
ssostringNon

Réponse

Renvoie : SetCommentText200Response

Exemple

Exemple de setCommentText
Copy Copy
1
2const tenantId: string = 'tenant_4f9a2b'
3const commentId: string = 'cmt-8421'
4const broadcastId: string = 'brd-2026-06-15'
5const commentTextUpdateRequest: CommentTextUpdateRequest = { text: 'Updated comment text to clarify the schedule.', mentions: [], hashtags: [] }
6const editKey: string = 'editkey_9b12'
7const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso.signature'
8const result: SetCommentText200Response = await setCommentText(tenantId, commentId, broadcastId, commentTextUpdateRequest, editKey, sso)
9

unBlockUserFromComment Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui
unBlockFromCommentParamsUnBlockFromCommentParamsOui
userIdstringNon
anonUserIdstringNon

Response

Renvoie: UnBlockCommentPublic200Response

Exemple

Exemple pour unBlockUserFromComment
Copy Copy
1
2const tenantId: string = 'tenant_7b9c2a';
3const id: string = 'comment_4f8e1d';
4const unBlockFromCommentParams: UnBlockFromCommentParams = {
5 reason: 'User submitted appeal and provided additional context',
6 effectiveAt: new Date().toISOString()
7};
8const userId: string = 'user_92a3f6';
9const result: UnBlockCommentPublic200Response = await unBlockUserFromComment(tenantId, id, unBlockFromCommentParams, userId);
10

unFlagComment Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
userIdstringNon
anonUserIdstringNon

Réponse

Renvoie : FlagComment200Response

Exemple

Exemple d'unFlagComment
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2a1f';
3const commentId: string = 'cmt_20250614_01';
4const userId: string = 'user_47d2b9';
5const result: FlagComment200Response = await unFlagComment(tenantId, commentId, userId);
6

unLockComment Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Réponse

Renvoie : LockComment200Response

Exemple

Exemple d'unLockComment
Copy Copy
1
2const tenantId: string = "tenant-8f3b2c4a";
3const commentId: string = "cmt_92a7f3e6";
4const broadcastId: string = "brd_1b4c9d20";
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6const result: LockComment200Response = await unLockComment(tenantId, commentId, broadcastId, sso);
7

unPinComment Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
commentIdstringOui
broadcastIdstringOui
ssostringNon

Réponse

Renvoie : PinComment200Response

Exemple

Exemple de unPinComment
Copy Copy
1
2const tenantId: string = "tenant_9f3b2c1a";
3const commentId: string = "comment_4d2e8a7f";
4const broadcastId: string = "broadcast_live_2026_06_15_18";
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.invalid-signature";
6const response: PinComment200Response = await unPinComment(tenantId, commentId, broadcastId, sso);
7console.log(response);
8

updateComment Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
updatableCommentParamsUpdatableCommentParamsOui
contextUserIdstringNon
doSpamCheckbooleanNon
isLivebooleanNon

Réponse

Retourne: FlagCommentPublic200Response

Exemple

Exemple updateComment
Copy Copy
1
2const tenantId: string = 'tenant_7f3c1b2a';
3const commentId: string = 'cmt_8d9f2a4b';
4const updatableCommentParams: UpdatableCommentParams = {
5 body: 'Updating this comment to clarify the feature behavior and include a timestamp.',
6 metadata: { category: 'support', editedReason: 'clarify instructions' },
7 visible: true
8};
9const contextUserId: string = 'user_42';
10const doSpamCheck: boolean = true;
11const result: FlagCommentPublic200Response = await updateComment(tenantId, commentId, updatableCommentParams, contextUserId, doSpamCheck);
12

voteComment Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
commentIdstringOui
urlIdstringOui
broadcastIdstringOui
voteBodyParamsVoteBodyParamsOui
sessionIdstringNon
ssostringNon

Réponse

Renvoie : VoteComment200Response

Exemple

Exemple de voteComment
Copy Copy
1
2const tenantId: string = 'tenant_7f9d2e';
3const commentId: string = '5a1d3f9b-2c4e-4a2b-bf7b-1234567890ab';
4const urlId: string = 'articles/2026/06/15/typescript-api-patterns';
5const broadcastId: string = 'broadcast-20260615-01';
6const voteBodyParams: VoteBodyParams = { vote: 'up' };
7const sessionId: string = 'sess_9d2f3b45';
8const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImlhdCI6MTY5NzE2MDAwMH0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
9
10const response: VoteComment200Response = await voteComment(
11 tenantId,
12 commentId,
13 urlId,
14 broadcastId,
15 voteBodyParams,
16 sessionId,
17 sso
18);
19

getCommentsForUser Internal Link

Paramètres

NomTypeRequisDescription
userIdstringNon
directionSortDirectionsNon
repliesToUserIdstringNon
pagenumberNon
includei10nbooleanNon
localestringNon
isCrawlerbooleanNon

Réponse

Renvoie : GetCommentsForUser200Response

Exemple

Exemple de getCommentsForUser
Copy Copy
1
2const userId: string = "550e8400-e29b-41d4-a716-446655440000";
3const page: number = 2;
4const includei10n: boolean = true;
5const locale: string = "en-US";
6const isCrawler: boolean = false;
7
8const comments: GetCommentsForUser200Response = await getCommentsForUser(
9 userId,
10 undefined, // direction omise
11 undefined, // repliesToUserId omise
12 page,
13 includei10n,
14 locale,
15 isCrawler
16);
17
18console.log(comments);
19

addDomainConfig Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
addDomainConfigParamsAddDomainConfigParamsOui

Réponse

Renvoie: AddDomainConfig200Response


deleteDomainConfig Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
domainstringOui

Réponse

Retourne: DeleteDomainConfig200Response


getDomainConfig Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
domainstringOui

Réponse

Renvoie: GetDomainConfig200Response


getDomainConfigs Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringOui

Réponse

Renvoie : GetDomainConfigs200Response


patchDomainConfig Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
domainToUpdatestringOui
patchDomainConfigParamsPatchDomainConfigParamsOui

Réponse

Retourne : GetDomainConfig200Response


putDomainConfig Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
domainToUpdatestringOui
updateDomainConfigParamsUpdateDomainConfigParamsOui

Réponse

Renvoie: GetDomainConfig200Response

createEmailTemplate Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
createEmailTemplateBodyCreateEmailTemplateBodyOui

Réponse

Renvoie : CreateEmailTemplate200Response

Exemple

Exemple de createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_4f2b1c9e";
3const createEmailTemplateBody: CreateEmailTemplateBody = {
4 name: "New Comment Notification",
5 subject: "Someone replied to your discussion",
6 fromName: "Community Team",
7 fromAddress: "no-reply@community.example.com",
8 htmlBody: "<p>\{{comment.author}} replied: \{{comment.text}}</p>",
9 plaintextBody: "\{{comment.author}} replied: \{{comment.text}}",
10 previewText: "A new reply on a discussion you follow",
11 isDefault: false // indicateur optionnel illustrant l'utilisation d'un paramètre optionnel
12};
13const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
14

deleteEmailTemplate Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui

Réponse

Retourne : FlagCommentPublic200Response

Exemple

Exemple de deleteEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_9c4f1b2a";
3const id: string = "emailtmpl_4d2b9a5e";
4const requestorNote: string | undefined = undefined; // métadonnées optionnelles (non requises par la fonction)
5const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, id);
6

deleteEmailTemplateRenderError Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
errorIdstringOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = 'tenant-72f3b4';
3const templateId: string = 'email_template-9c3a1';
4let providedErrorId: string | undefined = undefined; // valeur optionnelle, peut être définie ailleurs
5const errorId: string = providedErrorId ?? 'render_err-5d2f7';
6const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, templateId, errorId);
7

getEmailTemplate Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui

Réponse

Retourne: GetEmailTemplate200Response

Exemple

Exemple de getEmailTemplate
Copy Copy
1
2const tenantId: string = 'tenant_7f3b2c';
3const templateId: string = 'welcome-email-2024';
4const includeDrafts: boolean | undefined = undefined;
5const emailTemplate: GetEmailTemplate200Response = await getEmailTemplate(tenantId, templateId);
6

getEmailTemplateDefinitions Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui

Réponse

Renvoie: GetEmailTemplateDefinitions200Response

Exemple

Exemple getEmailTemplateDefinitions
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_001';
4 const options: { includeDrafts?: boolean } = { includeDrafts: true }; // paramètre optionnel (exemple)
5 const templates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId, options);
6 console.log(templates);
7})();
8

getEmailTemplateRenderErrors Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
skipnumberNon

Réponse

Renvoie : GetEmailTemplateRenderErrors200Response

Exemple

Exemple getEmailTemplateRenderErrors
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const id: string = 'tmpl_7f9a2b4c';
4const skip: number = 20;
5
6const errorsWithSkip: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id, skip);
7const errorsFirstPage: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id);
8

getEmailTemplates Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
skipnumberNon

Réponse

Renvoie: GetEmailTemplates200Response

Exemple

Exemple de getEmailTemplates
Copy Copy
1
2async function run(): Promise<void> {
3 const tenantId: string = "acme-marketing-tenant-001";
4 const templatesDefault: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
5 const templatesPaged: GetEmailTemplates200Response = await getEmailTemplates(tenantId, 25);
6 console.log(templatesDefault, templatesPaged);
7}
8run();
9

renderEmailTemplate Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
renderEmailTemplateBodyRenderEmailTemplateBodyOui
localestringNon

Réponse

Renvoie: RenderEmailTemplate200Response

Exemple

Exemple de renderEmailTemplate
Copy Copy
1
2const tenantId: string = '7f7e2b90-3a2b-4d9b-9df1-5f0b6b2e8a1c';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'welcome_email',
5 recipient: { email: 'jordan.smith@acme.co', name: 'Jordan Smith' },
6 variables: { siteName: 'Acme Forum', verificationUrl: 'https://acme.forum/verify?code=abc123' }
7};
8const locale: string = 'en-US';
9const result: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
10

updateEmailTemplate Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
updateEmailTemplateBodyUpdateEmailTemplateBodyOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de updateEmailTemplate
Copy Copy
1
2const tenantId: string = 'acme-corp-123';
3const id: string = 'template-789';
4const locale: string | undefined = 'en-US';
5const updateEmailTemplateBody: UpdateEmailTemplateBody = {
6 subject: 'Welcome to Acme — Get started',
7 bodyHtml: '<p>Hi \{{firstName}}, welcome to Acme. Start by visiting your dashboard.</p>',
8 fromName: 'Acme Support',
9 fromEmail: 'support@acme.com',
10 enabled: true,
11 ...(locale ? { locale } : {})
12};
13const result: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
14

getEventLog Internal Link

req tenantId urlId userIdWS

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
urlIdstringOui
userIdWSstringOui
startTimenumberOui
endTimenumberNon

Réponse

Renvoie : GetEventLog200Response

Exemple

Exemple de getEventLog
Copy Copy
1
2const tenantId: string = 'tenant_9f3a2b';
3const urlId: string = 'news/2026/06/fastcomments-release';
4const userIdWS: string = 'ws_user_48291';
5const startTime: number = Date.now() - 86_400_000;
6const endTime: number = Date.now();
7const result: GetEventLog200Response = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
8

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
urlIdstringOui
userIdWSstringOui
startTimenumberOui
endTimenumberNon

Réponse

Renvoie: GetEventLog200Response

Exemple

Exemple de getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant_639b7f12";
3const urlId: string = "https://www.news-site.com/articles/2026/06/15/important-update-987";
4const userIdWS: string = "user_ws_42b7";
5const startTime: number = new Date("2026-06-14T00:00:00Z").getTime();
6const endTime: number = Date.now();
7
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

createFeedPost Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
createFeedPostParamsCreateFeedPostParamsOui
broadcastIdstringNon
isLivebooleanNon
doSpamCheckbooleanNon
skipDupCheckbooleanNon

Réponse

Retourne : CreateFeedPost200Response

Exemple

Exemple de createFeedPost
Copy Copy
1
2const tenantId: string = 'tenant_4f2b1c';
3const createFeedPostParams: CreateFeedPostParams = {
4 content: 'Launching our summer collection today — check it out!',
5 authorId: 'user_879',
6 media: [
7 {
8 type: 'image',
9 assets: [
10 { url: 'https://cdn.myshop.com/uploads/summer-look.jpg', width: 1200, height: 800 } as FeedPostMediaItemAsset
11 ]
12 } as FeedPostMediaItem
13 ],
14 links: [
15 { url: 'https://myshop.com/new-arrival', title: 'Summer Collection' } as FeedPostLink
16 ],
17 allowComments: true
18};
19const broadcastId: string = 'broadcast-2026-06-15-001';
20const isLive: boolean = false;
21const doSpamCheck: boolean = true;
22const skipDupCheck: boolean = false;
23const response: CreateFeedPost200Response = await createFeedPost(tenantId, createFeedPostParams, broadcastId, isLive, doSpamCheck, skipDupCheck);
24

createFeedPostPublic Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringOui
createFeedPostParamsCreateFeedPostParamsOui
broadcastIdstringNon
ssostringNon

Réponse

Renvoie : CreateFeedPostPublic200Response

Exemple

createFeedPostPublic Exemple
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9f8b7c";
4 const media: FeedPostMediaItem[] = [{ type: "image", assets: [{ url: "https://cdn.example.com/roadmap.jpg", mimeType: "image/jpeg" }] }];
5 const links: FeedPostLink[] = [{ url: "https://company.example.com/roadmap", title: "Full roadmap" }];
6 const createFeedPostParams: CreateFeedPostParams = {
7 title: "Weekly Product Roadmap Update",
8 body: "This week we shipped enhancements to search relevance and fixed top customer bugs.",
9 authorId: "user_8321",
10 media,
11 links,
12 visibility: "public"
13 };
14 const broadcastId: string = "broadcast_2026_06_15";
15 const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload";
16 const response: CreateFeedPostPublic200Response = await createFeedPostPublic(tenantId, createFeedPostParams, broadcastId, sso);
17 console.log(response);
18})();
19

deleteFeedPostPublic Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
postIdstringOui
broadcastIdstringNon
ssostringNon

Réponse

Renvoie : DeleteFeedPostPublic200Response

Exemple

Exemple de deleteFeedPostPublic
Copy Copy
1
2const tenantId: string = 'acme-tenant-42';
3const postId: string = 'post_8f3d2a7c';
4const broadcastId: string = 'broadcast_2026-06-15_01';
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ssoPayload.signature';
6const response: DeleteFeedPostPublic200Response = await deleteFeedPostPublic(tenantId, postId, broadcastId, sso);
7

getFeedPosts Internal Link

req tenantId afterId

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
afterIdstringNon
limitnumberNon
tagsArrayNon

Réponse

Renvoie: GetFeedPosts200Response

Exemple

Exemple de getFeedPosts
Copy Copy
1
2const tenantId: string = "tenant_74321";
3const afterId: string = "post_20250610_9b2f3";
4const limit: number = 25;
5const tags: Array<string> = ["product-updates", "announcements"];
6
7const response: GetFeedPosts200Response = await getFeedPosts(tenantId, afterId, limit, tags);
8

getFeedPostsPublic Internal Link


req tenantId afterId

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
afterIdstringNon
limitnumberNon
tagsArrayNon
ssostringNon
isCrawlerbooleanNon
includeUserInfobooleanNon

Réponse

Renvoie : GetFeedPostsPublic200Response

Exemple

Exemple de getFeedPostsPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_01';
4 const afterId: string = 'post_20250610_842';
5 const limit: number = 25;
6 const tags: string[] = ['news', 'technology'];
7 const sso: string = 'sso_jwt_eyJhbGciOiJIUzI1Ni';
8 const isCrawler: boolean = false;
9 const includeUserInfo: boolean = true;
10
11 const response: GetFeedPostsPublic200Response = await getFeedPostsPublic(
12 tenantId,
13 afterId,
14 limit,
15 tags,
16 sso,
17 isCrawler,
18 includeUserInfo
19 );
20
21 console.log(response);
22})();
23

getFeedPostsStats Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
postIdsArrayOui
ssostringNon

Réponse

Renvoie : GetFeedPostsStats200Response

Exemple

Exemple de getFeedPostsStats
Copy Copy
1
2const tenantId: string = "tenant_98765";
3const postIds: string[] = ["post_a1b2c3", "post_d4e5f6"];
4const ssoToken: string = "sso_jwt_eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
5
6const statsWithoutSSO: GetFeedPostsStats200Response = await getFeedPostsStats(tenantId, postIds);
7const statsWithSSO: GetFeedPostsStats200Response = await getFeedPostsStats(tenantId, postIds, ssoToken);
8

getUserReactsPublic Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
postIdsArrayNon
ssostringNon

Réponse

Renvoie : GetUserReactsPublic200Response

Exemple

Exemple getUserReactsPublic
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-4f2b9c';
3const postIds: Array<string> = ['post_7a1f9e', 'post_2b3c88'];
4const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1Njc4OSIsImlhdCI6MTYwOTQ0MDAwMH0.signature';
5
6const response: GetUserReactsPublic200Response = await getUserReactsPublic(tenantId, postIds, sso);
7

reactFeedPostPublic Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
postIdstringOui
reactBodyParamsReactBodyParamsOui
isUndobooleanNon
broadcastIdstringNon
ssostringNon

Réponse

Renvoie : ReactFeedPostPublic200Response

Exemple

Exemple reactFeedPostPublic
Copy Copy
1
2const tenantId: string = 'acme-tenant-001';
3const postId: string = 'feedpost_78901';
4const reactBodyParams: ReactBodyParams = { reaction: 'like', emoji: '👍' };
5const isUndo: boolean = false;
6const broadcastId: string = 'broadcast_2026_06_15_01';
7const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.signature';
8
9const response: ReactFeedPostPublic200Response = await reactFeedPostPublic(
10 tenantId,
11 postId,
12 reactBodyParams,
13 isUndo,
14 broadcastId,
15 sso
16);
17

updateFeedPost Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
feedPostFeedPostOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de updateFeedPost
Copy Copy
1
2const tenantId: string = "tenant_72f3b4c9";
3const id: string = "post_ba4f6e18-2d3c-4b7a-91f2-8c0e3a6b5d4f";
4
5const feedPost: FeedPost = {
6 title: "June feature rollout",
7 body: "Announcing performance improvements and moderation updates available to all sites.",
8 authorName: "Platform Team",
9 mediaItems: [
10 {
11 type: "image",
12 caption: "Release banner",
13 asset: { url: "https://cdn.fastcomments.com/assets/june-banner.jpg", mimeType: "image/jpeg", width: 1200, height: 600 }
14 }
15 ],
16 links: [{ title: "Release notes", url: "https://docs.fastcomments.com/releases/june-2026" }]
17} as FeedPost;
18
19const result: FlagCommentPublic200Response = await updateFeedPost(tenantId, id, feedPost);
20

updateFeedPostPublic Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
postIdstringOui
updateFeedPostParamsUpdateFeedPostParamsOui
broadcastIdstringNon
ssostringNon

Réponse

Renvoie : CreateFeedPostPublic200Response

Exemple

Exemple pour updateFeedPostPublic
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const postId: string = 'post_20260615_001';
4const updateFeedPostParams: UpdateFeedPostParams = {
5 title: 'Weekly Update: Product Launch',
6 content: 'We shipped the 2.0 release today — highlights and links below.',
7 media: [{ url: 'https://cdn.acme.com/releases/launch.jpg', type: 'image' }],
8 tags: ['release', 'product'],
9 isPublic: true
10};
11const broadcastId: string = 'broadcast_live_42';
12const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9';
13const result: CreateFeedPostPublic200Response = await updateFeedPostPublic(tenantId, postId, updateFeedPostParams, broadcastId, sso);
14

flagCommentPublic Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
commentIdstringOui
isFlaggedbooleanOui
ssostringNon

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple de flagCommentPublic
Copy Copy
1
2const tenantId: string = "tenant_4f1b2a9c";
3const commentId: string = "comment_8d3e6f12";
4const isFlagged: boolean = true;
5const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
6const result: FlagCommentPublic200Response = await flagCommentPublic(tenantId, commentId, isFlagged, sso);
7

getGifLarge Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
largeInternalURLSanitizedstringOui

Réponse

Retourne : GetGifLarge200Response

Exemple

Exemple getGifLarge
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c";
3const largeInternalURLSanitized: string = "https://cdn.fastcomments.com/gifs/07d3f6_large.gif";
4const preferWebP: boolean | undefined = true; // préférence facultative
5const urlToUse: string = preferWebP ? largeInternalURLSanitized.replace(".gif", ".webp") : largeInternalURLSanitized;
6const response: GetGifLarge200Response = await getGifLarge(tenantId, urlToUse);
7

getGifsSearch Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
searchstringOui
localestringNon
ratingstringNon
pagenumberNon

Réponse

Renvoie: GetGifsSearch200Response

Exemple

Exemple de getGifsSearch
Copy Copy
1
2const tenantId: string = "tenant_acme_9876";
3const search: string = "cat playing piano";
4const locale: string = "en-US";
5const rating: string = "pg";
6const page: number = 1;
7const result: GetGifsSearch200Response = await getGifsSearch(tenantId, search, locale, rating, page);
8

getGifsTrending Internal Link

Parameters

NomTypeRequisDescription
tenantIdstringOui
localestringNon
ratingstringNon
pagenumberNon

Response

Renvoie: GetGifsTrending200Response

Exemple

Exemple de getGifsTrending
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = 'tenant_8b3f2c';
4 const locale: string = 'en-US';
5 const rating: string = 'pg';
6 const page: number = 1;
7 const result: GetGifsTrending200Response = await getGifsTrending(tenantId, locale, rating, page);
8 console.log(result);
9}
10main();
11

addHashTag Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringNon
createHashTagBodyCreateHashTagBodyNon

Réponse

Renvoie : AddHashTag200Response

Exemple

Exemple addHashTag
Copy Copy
1
2const tenantId: string | undefined = "tenant_3c9f7b";
3const createHashTagBody: CreateHashTagBody = {
4 name: "support",
5 title: "Support",
6 description: "Questions about product usage, bugs, and account issues",
7 color: "#0066CC",
8 isActive: true,
9 aliases: ["help", "customer-service"]
10};
11const result: AddHashTag200Response = await addHashTag(tenantId, createHashTagBody);
12

addHashTagsBulk Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringNon
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNon

Response

Retourne: AddHashTagsBulk200Response

Exemple

Exemple d'utilisation de addHashTagsBulk
Copy Copy
1
2const tenantId: string = "tenant_acme_corp_987";
3const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
4 tags: [
5 { name: "product-update", description: "Announcements about new product releases", visible: true },
6 { name: "customer-support", description: "Customer support related discussions", visible: false }
7 ],
8 createdBy: "moderator_jane"
9};
10const resultWithTenant: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
11const resultWithoutTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBody);
12

deleteHashTag Internal Link

Parameters

NameTypeRequiredDescription
tagstringOui
tenantIdstringNon
deleteHashTagRequestDeleteHashTagRequestNon

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple de deleteHashTag
Copy Copy
1
2const tag: string = "breaking-news";
3const tenantId: string = "tenant_72a1";
4const deleteHashTagRequest: DeleteHashTagRequest = {
5 reason: "consolidate-duplicates",
6 requestedBy: "moderator@dailypress.com",
7 forceDelete: true
8};
9const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteHashTagRequest);
10

getHashTags Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
pagenumberNon

Réponse

Renvoie : GetHashTags200Response

Exemple

Exemple getHashTags
Copy Copy
1
2const tenantId: string = 'tenant_7f4b2c3a';
3const tagsFirstPage: GetHashTags200Response = await getHashTags(tenantId);
4const tagsSecondPage: GetHashTags200Response = await getHashTags(tenantId, 2);
5console.log(tagsFirstPage, tagsSecondPage);
6

patchHashTag Internal Link

Paramètres

NomTypeObligatoireDescription
tagstringOui
tenantIdstringNon
updateHashTagBodyUpdateHashTagBodyNon

Réponse

Renvoie: PatchHashTag200Response

Exemple

Exemple de patchHashTag
Copy Copy
1
2const tag: string = "feature-request";
3const tenantId: string = "tenant_8f7a3b2c";
4const updateHashTagBody: UpdateHashTagBody = {
5 displayName: "Feature Request",
6 description: "Use this tag for requests to add new features to the product",
7 enabled: true
8};
9const result: PatchHashTag200Response = await patchHashTag(tag, tenantId, updateHashTagBody);
10

createModerator Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
createModeratorBodyCreateModeratorBodyOui

Réponse

Renvoie : CreateModerator200Response

Exemple

Exemple de createModerator
Copy Copy
1
2const tenantId: string = 'tenant_9f3b21';
3const createModeratorBody: CreateModeratorBody = {
4 moderator: {
5 name: 'Alex Rivera',
6 email: 'alex.rivera@fastcomments.io',
7 role: 'global_moderator',
8 enabled: true,
9 },
10 // paramètres optionnels démontrés :
11 notifyUser: true,
12 permissions: ['delete_comment', 'edit_comment', 'ban_user'],
13 customConfig: { dashboardTheme: 'dark' } as unknown as CustomConfigParameters
14};
15const result: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
16

deleteModerator Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
idstringOui
sendEmailstringNon

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple de deleteModerator
Copy Copy
1
2const tenantId: string = 'tenant_4f3b2c9a';
3const id: string = 'mod_9c2d1f7b';
4const sendEmail: string = 'true';
5const response: FlagCommentPublic200Response = await deleteModerator(tenantId, id, sendEmail);
6console.log(response);
7

getModerator Internal Link

Parameters

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie : GetModerator200Response

Exemple

Exemple getModerator
Copy Copy
1
2const tenantId: string = 'acme-media-58';
3const id: string = 'mod-82f3b9c1';
4const moderatorResponse: GetModerator200Response = await getModerator(tenantId, id);
5

getModerators Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
skipnumberNon

Réponse

Renvoie: GetModerators200Response

Exemple

Exemple de getModerators
Copy Copy
1
2const tenantId: string = 'tenant_0a1b2c3d';
3const moderators: GetModerators200Response = await getModerators(tenantId);
4const skip: number = 20;
5const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, skip);
6

sendInvite Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
fromNamestringOui

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple de sendInvite
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_acme_42";
4 const id: string = "cmt_8f3b21";
5 const fromName: string = "Ava Thompson";
6 const inviteResult: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName);
7 console.log(inviteResult);
8})();
9

updateModerator Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
idstringOui
updateModeratorBodyUpdateModeratorBodyOui

Réponse

Retourne: FlagCommentPublic200Response

Exemple

Exemple pour updateModerator
Copy Copy
1
2const tenantId: string = 'acme-tenant-81';
3const id: string = 'mod_7f3a2b';
4const updateModeratorBody: UpdateModeratorBody = {
5 email: 'j.reyes@acme-corp.com',
6 displayName: 'Jordan Reyes',
7 roles: ['moderator', 'content_reviewer'],
8 active: true,
9 notes: 'Promoted to senior moderator; monitor flagged content weekly'
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBody);
12

deleteNotificationCount Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de deleteNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_5f3d2e1b';
3const id: string = 'notification_9a4b1c2';
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
5

getCachedNotificationCount Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetCachedNotificationCount200Response

Exemple

Exemple de getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-23';
3const id: string = 'user_987654';
4const cachedCount: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
5
6const maybeId: string | undefined = Math.random() > 0.5 ? 'user_123456' : undefined;
7if (maybeId) {
8 const optionalCachedCount: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, maybeId);
9}
10

getNotificationCount Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
userIdstringNon
urlIdstringNon
fromCommentIdstringNon
viewedbooleanNon
typestringNon

Réponse

Retourne : GetNotificationCount200Response

Exemple

Exemple de getNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_82a3b9f';
3const userId: string = 'user_43721';
4const urlId: string = 'https://news.example.com/articles/2026/06/15/coverage-123';
5const fromCommentId: string = 'comment_98765';
6const viewed: boolean = false;
7const notificationType: string = 'mention';
8
9const result: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, fromCommentId, viewed, notificationType);
10

getNotifications Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
userIdstringNon
urlIdstringNon
fromCommentIdstringNon
viewedbooleanNon
typestringNon
skipnumberNon

Réponse

Renvoie : GetNotifications200Response

Exemple

Exemple getNotifications
Copy Copy
1
2const tenantId: string = 'tenant_9f8b7c6a';
3const userId: string = 'user_5a4b3c2d';
4const urlId: string = 'post_84f2a1b9';
5const fromCommentId: string = 'cmt_0a1b2c3d';
6const viewed: boolean = false;
7const type: string = 'reply';
8const skip: number = 0;
9
10const notifications: GetNotifications200Response = await getNotifications(
11 tenantId,
12 userId,
13 urlId,
14 fromCommentId,
15 viewed,
16 type,
17 skip
18);
19

updateNotification Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
updateNotificationBodyUpdateNotificationBodyOui
userIdstringNon

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple pour updateNotification
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2c';
3const id: string = 'notification_4a1d2e';
4const updateNotificationBody: UpdateNotificationBody = {
5 enabled: true,
6 channels: ['email', 'push'],
7 frequency: 'immediate',
8 templateId: 'tmpl_77aa'
9} as UpdateNotificationBody;
10const userId: string = 'user_2468';
11const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
12

createV1PageReact Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringOui
titlestringNon

Réponse

Retourne : CreateV1PageReact200Response

Exemple

Exemple de createV1PageReact
Copy Copy
1
2(async () => {
3 const tenantId: string = 'b12f3c4d-5678-90ab-cdef-1234567890ab';
4 const urlId: string = 'https://www.news-site.com/world/2026/election-results';
5 const title: string = 'Election results: key takeaways and analysis';
6 const responseWithTitle: CreateV1PageReact200Response = await createV1PageReact(tenantId, urlId, title);
7 const responseWithoutTitle: CreateV1PageReact200Response = await createV1PageReact(tenantId, urlId);
8 console.log(responseWithTitle, responseWithoutTitle);
9})();
10

createV2PageReact Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
urlIdstringOui
idstringOui
titlestringNon

Réponse

Renvoie : CreateV2PageReact200Response

Exemple

Exemple de createV2PageReact
Copy Copy
1
2const tenantId: string = "fastcomments-tenant-72";
3const urlId: string = "articles/2026/06/15/product-update";
4const id: string = "page-8f3b2a";
5const title: string = "Product Update: June 15, 2026";
6
7(async function run(): Promise<void> {
8 const response: CreateV2PageReact200Response = await createV2PageReact(tenantId, urlId, id, title);
9 console.log(response);
10})();
11

deleteV1PageReact Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringOui

Réponse

Renvoie : DeleteV1PageReact200Response

Exemple

Exemple de deleteV1PageReact
Copy Copy
1
2const tenantId: string = process.env.TENANT_ID ?? 'd3b07384-9f6a-4c2b-8c3e-0a1b2c3d4e5f';
3const urlId: string = 'https://acme.com/articles/2026/06/fastcomments-integration';
4const result: DeleteV1PageReact200Response = await deleteV1PageReact(tenantId, urlId);
5

deleteV2PageReact Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
urlIdstringOui
idstringOui

Réponse

Renvoie: DeleteV2PageReact200Response

Exemple

Exemple de deleteV2PageReact
Copy Copy
1
2const tenantId: string = "tenant_79021";
3const urlId: string = "blog/my-first-post";
4const id: string = "reaction_9f8b7c";
5let includeHistory: boolean | undefined = undefined; // indicateur optionnel, utilisé dans certains appels
6
7const result: DeleteV2PageReact200Response = await deleteV2PageReact(tenantId, urlId, id);
8console.log(result);
9

getV1PageLikes Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
urlIdstringOui

Réponse

Renvoie: GetV1PageLikes200Response

Exemple

Exemple d'utilisation de getV1PageLikes
Copy Copy
1
2const tenantId: string = 'fastcomments-742';
3const urlId: string = 'sports/2026/06/15/world-cup-preview';
4const pageLikes: GetV1PageLikes200Response = await getV1PageLikes(tenantId, urlId);
5

getV2PageReacts Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringOui

Réponse

Retourne : GetV2PageReacts200Response

Exemple

Exemple de getV2PageReacts
Copy Copy
1
2const tenantId: string = "tenant_82f4b3a9";
3const urlId: string = "https://news.site.com/articles/2026/06/15/product-launch";
4const response: GetV2PageReacts200Response = await getV2PageReacts(tenantId, urlId);
5console.log(response);
6

getV2PageReactUsers Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
idstringYes

Réponse

Renvoie : GetV2PageReactUsers200Response

Exemple

Exemple getV2PageReactUsers
Copy Copy
1
2const tenantId: string = "7421";
3const urlId: string = "sports/london-marathon";
4const id: string = "reactUser-3fa85f64-5717-4562-b3fc-2c963f66afa6";
5const includeDeleted: boolean | undefined = undefined; // indicateur optionnel (démonstration)
6
7const result: GetV2PageReactUsers200Response = await getV2PageReactUsers(tenantId, urlId, id);
8

addPage Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringOui
createAPIPageDataCreateAPIPageDataOui

Réponse

Retourne: AddPageAPIResponse


deletePage Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie : DeletePageAPIResponse


getOfflineUsers Internal Link

Commentateurs précédents sur la page qui NE sont PAS actuellement en ligne. Triés par displayName. Utilisez ceci après avoir épuisé /users/online pour afficher une section "Membres". Pagination par curseur sur commenterName: le serveur parcourt l'index partiel {tenantId, urlId, commenterName} à partir de afterName vers l'avant via $gt, sans coût $skip.

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
urlIdstringOui
afterNamestringNon
afterUserIdstringNon

Réponse

Retourne: GetOfflineUsers200Response

Exemple

Exemple de getOfflineUsers
Copy Copy
1
2const tenantId: string = 'tenant_prod_001';
3const urlId: string = 'article-2026-06-15-how-ai-impacts';
4const afterName: string = 'michael.smith';
5const afterUserId: string = 'user_72b9';
6
7const response: GetOfflineUsers200Response = await getOfflineUsers(tenantId, urlId, afterName, afterUserId);
8

getOnlineUsers Internal Link


Visiteurs actuellement en ligne d'une page : personnes dont la session websocket est abonnée à la page en ce moment. Renvoie anonCount + totalCount (abonnés de la salle, y compris les spectateurs anonymes que nous n'énumérons pas).

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
urlIdstringOui
afterNamestringNon
afterUserIdstringNon

Réponse

Renvoie : GetOnlineUsers200Response

Exemple

Exemple de getOnlineUsers
Copy Copy
1
2const tenantId: string = 'tenant_14f9c3';
3const urlId: string = 'article_20250615';
4const afterName: string = 'marie.curie';
5const afterUserId: string = 'u_92b7';
6const result: GetOnlineUsers200Response = await getOnlineUsers(tenantId, urlId, afterName, afterUserId);
7

getPageByURLId Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringOui

Réponse

Renvoie : GetPageByURLIdAPIResponse


getPages Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui

Réponse

Renvoie : GetPagesAPIResponse


getPagesPublic Internal Link

Lister les pages pour un tenant. Utilisé par le client de bureau FChat pour remplir sa liste de salons. Nécessite que enableFChat soit true sur la configuration personnalisée résolue pour chaque page. Les pages qui requièrent SSO sont filtrées en fonction de l'accès par groupe de l'utilisateur demandeur.

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
cursorstringNon
limitnumberNon
qstringNon
sortByPagesSortByNon
hasCommentsbooleanNon

Réponse

Renvoie: GetPagesPublic200Response

Exemple

Exemple de getPagesPublic
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2c';
3const cursor: string = 'eyJwYWdlIjoiMTIwIn0';
4const limit: number = 25;
5const q: string = 'homepage hero';
6const hasComments: boolean = true;
7
8const response: GetPagesPublic200Response = await getPagesPublic(
9 tenantId,
10 cursor,
11 limit,
12 q,
13 undefined,
14 hasComments
15);
16

getUsersInfo Internal Link

Informations groupées sur les utilisateurs pour un locataire. Étant donné des userIds, renvoie les informations d'affichage provenant de User / SSOUser. Utilisé par le widget de commentaires pour enrichir les utilisateurs qui viennent d'apparaître via un événement de présence. Pas de contexte de page : la confidentialité est appliquée uniformément (les profils privés sont masqués).

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idsstringOui

Réponse

Renvoie : GetUsersInfo200Response

Exemple

Exemple getUsersInfo
Copy Copy
1
2const tenantId: string = 'acme-tenant-007';
3const userIdsList: string[] = ['user_12a', 'user_34b', 'user_56c'];
4const separator: string | undefined = undefined; // optionnel; si indéfini, la valeur par défaut est la virgule
5const ids: string = userIdsList.join(separator ?? ',');
6const usersInfo: GetUsersInfo200Response = await getUsersInfo(tenantId, ids);
7

patchPage Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
updateAPIPageDataUpdateAPIPageDataOui

Réponse

Renvoie: PatchPageAPIResponse


deletePendingWebhookEvent Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple de deletePendingWebhookEvent
Copy Copy
1
2const tenantId: string = "tenant_5f8d7a34";
3const id: string = "webhook_evt_987654321";
4const requestNote: string | undefined = undefined;
5const response: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
6

getPendingWebhookEventCount Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
commentIdstringNon
externalIdstringNon
eventTypestringNon
typestringNon
domainstringNon
attemptCountGTnumberNon

Réponse

Renvoie : GetPendingWebhookEventCount200Response

Exemple

Exemple getPendingWebhookEventCount
Copy Copy
1
2const tenantId: string = 'tenant_9f8b3b';
3const commentId: string = 'cmt_1a2b3c';
4const eventType: string = 'comment.created';
5const domain: string = 'news-site.com';
6const attemptCountGT: number = 2;
7
8const result: GetPendingWebhookEventCount200Response = await getPendingWebhookEventCount(
9 tenantId,
10 commentId,
11 undefined, // externalId omis
12 eventType,
13 undefined, // type omis
14 domain,
15 attemptCountGT
16);
17

getPendingWebhookEvents Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
commentIdstringNon
externalIdstringNon
eventTypestringNon
typestringNon
domainstringNon
attemptCountGTnumberNon
skipnumberNon

Réponse

Renvoie : GetPendingWebhookEvents200Response

Exemple

Exemple de getPendingWebhookEvents
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a';
3const commentId: string = 'cmt_8a7d1';
4const eventType: string = 'comment.created';
5const domain: string = 'reviews.myshop.com';
6const attemptCountGT: number = 1;
7const skip: number = 0;
8
9const result: GetPendingWebhookEvents200Response = await getPendingWebhookEvents(
10 tenantId,
11 commentId,
12 undefined,
13 eventType,
14 undefined,
15 domain,
16 attemptCountGT,
17 skip
18);
19

createQuestionConfig Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
createQuestionConfigBodyCreateQuestionConfigBodyOui

Réponse

Renvoie : CreateQuestionConfig200Response

Exemple

Exemple createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_9f3b1c2a";
3
4const createQuestionConfigBody: CreateQuestionConfigBody = {
5 name: "Product feedback",
6 key: "product_quality",
7 description: "Short survey question shown after posting a comment",
8 required: true,
9 renderingType: "singleChoice",
10 customOptions: [
11 { label: "Excellent", value: "5" },
12 { label: "Good", value: "4" },
13 { label: "Fair", value: "3" }
14 ] as QuestionConfigCustomOptionsInner[],
15 notifyModerators: false // paramètre optionnel démontré
16};
17
18const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
19

deleteQuestionConfig Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui

Réponse

Retourne: FlagCommentPublic200Response

Exemple

Exemple de deleteQuestionConfig
Copy Copy
1
2const tenantId: string = 'acme-corp-47a9';
3const id: string = 'qcfg_20260615_001';
4const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5

getQuestionConfig Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetQuestionConfig200Response

Exemple

Exemple getQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-47";
3const questionId: string = "q-4f2b9a";
4const includeDrafts: boolean | undefined = undefined; // emplacement du paramètre optionnel
5const result: GetQuestionConfig200Response = await getQuestionConfig(tenantId, questionId);
6console.log(result);
7

getQuestionConfigs Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
skipnumberNon

Réponse

Renvoie : GetQuestionConfigs200Response

Exemple

Exemple de getQuestionConfigs
Copy Copy
1
2const tenantId: string = "tenant_4c9f2b";
3const responseWithoutSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const skip: number = 50;
5const responseWithSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, skip);
6

updateQuestionConfig Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
idstringOui
updateQuestionConfigBodyUpdateQuestionConfigBodyOui

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple updateQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_9f3b8a2e-4c6d-4b4f-a1b2-9e8f7d6c5b3a";
3const id: string = "q_7c2e1b4a-5d6f-4a8b-9c3d-2e1f0b9a4c5d";
4const options: QuestionConfigCustomOptionsInner[] = [
5 { value: "1", label: "Very dissatisfied" },
6 { value: "2", label: "Dissatisfied" },
7 { value: "3", label: "Neutral" },
8 { value: "4", label: "Satisfied" },
9 { value: "5", label: "Very satisfied" }
10];
11const updateQuestionConfigBody: UpdateQuestionConfigBody = {
12 label: "How satisfied are you with the article?",
13 enabled: true,
14 required: false, // paramètre optionnel démontré
15 options
16};
17const result: FlagCommentPublic200Response = await updateQuestionConfig(tenantId, id, updateQuestionConfigBody);
18

createQuestionResult Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
createQuestionResultBodyCreateQuestionResultBodyOui

Réponse

Renvoie : CreateQuestionResult200Response

Exemple

Exemple de createQuestionResult
Copy Copy
1
2const tenantId: string = 'fc-tenant-512';
3const meta: MetaItem[] = [{ key: 'source', value: 'article' }];
4const body: CreateQuestionResultBody = {
5 questionId: 'q-94',
6 userId: 'user_332',
7 answers: [{ optionId: 'opt_a', score: 1 }],
8 meta, // métadonnées optionnelles fournies
9} as CreateQuestionResultBody;
10const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, body);
11

deleteQuestionResult Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui

Réponse

Retourne: FlagCommentPublic200Response

Exemple

Exemple de deleteQuestionResult
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-01";
3const id: string = "qres_9f8b7c3a";
4const response: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, id);
5const optionalResponse: FlagCommentPublic200Response | undefined = response;
6

getQuestionResult Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui

Réponse

Retourne : GetQuestionResult200Response

Exemple

Exemple de getQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a7c9';
3const questionId: string = 'q_8d4f1b2c3a';
4const options: { includeMeta?: boolean } = { includeMeta: true }; // démonstration d'un paramètre optionnel
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, questionId);
6const apiStatus: APIStatus | undefined = (result as unknown as { apiStatus?: APIStatus }).apiStatus;
7const question: QuestionResult | undefined = (result as unknown as { question?: QuestionResult }).question;
8

getQuestionResults Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringNon
userIdstringNon
startDatestringNon
questionIdstringNon
questionIdsstringNon
skipnumberNon

Réponse

Renvoie : GetQuestionResults200Response

Exemple

Exemple de getQuestionResults
Copy Copy
1
2const tenantId: string = 'fc-tenant-7a9c';
3const urlId: string = 'news/article-2026-06-15';
4const userId: string = 'user-8421';
5const startDate: string = '2026-05-01T00:00:00Z';
6const questionId: string = 'q-13';
7const questionIds: string = 'q-13,q-14';
8const skip: number = 20;
9const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, questionId, questionIds, skip);
10

updateQuestionResult Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
updateQuestionResultBodyUpdateQuestionResultBodyOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de updateQuestionResult
Copy Copy
1
2const tenantId: string = "tenant_prod_84b2";
3const id: string = "question_9f3a";
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 outcome: "accepted",
6 confidence: 0.88,
7 moderatorId: "moderator_17",
8 notes: "Validated by automated review" // champ optionnel inclus
9};
10const result: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
11

aggregateQuestionResults Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
questionIdstringNon
questionIdsArrayNon
urlIdstringNon
timeBucketAggregateTimeBucketNon
startDateDateNon
forceRecalculatebooleanNon

Réponse

Renvoie : AggregateQuestionResults200Response

Exemple

Exemple de aggregateQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_6f2b3c';
3const questionIds: Array<string> = ['q-7a1b2c', 'q-8d3e4f'];
4const urlId: string = 'url_9f8e7d';
5const startDate: Date = new Date('2025-01-01T00:00:00Z');
6const result: AggregateQuestionResults200Response = await aggregateQuestionResults(tenantId, undefined, questionIds, urlId, undefined, startDate, true);
7

bulkAggregateQuestionResults Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestOui
forceRecalculatebooleanNon

Réponse

Retourne: BulkAggregateQuestionResults200Response

Exemple

Exemple de bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_0012";
3const bulkAggregateQuestionResultsRequest: BulkAggregateQuestionResultsRequest = {
4 items: [
5 {
6 questionId: "quality_score",
7 startTime: "2026-06-01T00:00:00Z",
8 endTime: "2026-06-14T00:00:00Z",
9 timeBucket: "day",
10 dimensions: ["threadId"]
11 }
12 ],
13 includeTotals: true
14};
15const forceRecalculate: boolean = false;
16const result: BulkAggregateQuestionResults200Response = await bulkAggregateQuestionResults(tenantId, bulkAggregateQuestionResultsRequest, forceRecalculate);
17

combineCommentsWithQuestionResults Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
questionIdstringNon
questionIdsArrayNon
urlIdstringNon
startDateDateNon
forceRecalculatebooleanNon
minValuenumberNon
maxValuenumberNon
limitnumberNon

Réponse

Retourne: CombineCommentsWithQuestionResults200Response

Exemple

Exemple de combineCommentsWithQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_12345';
3const questionId: string = 'q_98765';
4const questionIds: string[] = ['q_98765', 'q_12345'];
5const urlId: string = 'url_abc123';
6const startDate: Date = new Date('2026-01-01T00:00:00Z');
7const forceRecalculate: boolean = true;
8const minValue: number = 0;
9const maxValue: number = 5;
10const limit: number = 50;
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

addSSOUser Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
createAPISSOUserDataCreateAPISSOUserDataOui

Réponse

Renvoie : AddSSOUserAPIResponse


deleteSSOUser Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
deleteCommentsbooleanNon
commentDeleteModestringNon

Réponse

Renvoie: DeleteSSOUserAPIResponse


getSSOUserByEmail Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringOui
emailstringOui

Réponse

Renvoie : GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
skipnumberNon

Réponse

Retourne: GetSSOUsers200Response


patchSSOUser Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
updateAPISSOUserDataUpdateAPISSOUserDataOui
updateCommentsbooleanNon

Réponse

Renvoie: PatchSSOUserAPIResponse


putSSOUser Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
updateAPISSOUserDataUpdateAPISSOUserDataOui
updateCommentsbooleanNon

Response

Renvoie : PutSSOUserAPIResponse

Exemple

Exemple de 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

createSubscription Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataOui

Réponse

Renvoie: CreateSubscriptionAPIResponse

Exemple

Exemple de 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, // paramètre optionnel démontré
9 metadata: { campaign: "spring_launch" } // paramètre optionnel démontré
10};
11const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
12

deleteSubscription Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
userIdstringNon

Réponse

Retourne: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link


Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
userIdstringNon

Réponse

Renvoie: GetSubscriptionsAPIResponse

Exemple

Exemple de 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

updateSubscription Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataOui
userIdstringNon

Réponse

Renvoie : UpdateSubscriptionAPIResponse

Exemple

Exemple pour 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

getTenantDailyUsages Internal Link


Paramètres

NameTypeRequisDescription
tenantIdstringOui
yearNumbernumberNon
monthNumbernumberNon
dayNumbernumberNon
skipnumberNon

Response

Retourne: GetTenantDailyUsages200Response

Exemple

Exemple de getTenantDailyUsages
Copy Copy
1
2const tenantId: string = 'tenant_7a3c2e';
3const dailyUsages: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, 2026, 6, undefined, 0);
4

createTenantPackage Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
createTenantPackageBodyCreateTenantPackageBodyOui

Réponse

Renvoie : CreateTenantPackage200Response

Exemple

Exemple de createTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_7890";
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: "Growth Plan",
5 maxSeats: 2500,
6 features: {
7 moderation: true,
8 analytics: true,
9 sso: { enabled: true, provider: "saml" }
10 },
11 billing: { interval: "monthly", priceCents: 19900 },
12 // paramètre optionnel démontré : notes n'est pas requis mais est fourni
13 notes: "Onboarding bundle with priority support"
14};
15const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
16

deleteTenantPackage Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const packageId: string = 'pkg-2026-06-15-001';
4const dryRun: boolean | undefined = undefined; // exemple d'option facultative (non requise par la fonction)
5const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
6

getTenantPackage Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetTenantPackage200Response

Exemple

Exemple de getTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_4b8c2a9f';
3const packageId: string = 'pkg_7d3e1b5c';
4const includeMetadata: boolean | undefined = true;
5const packageResponse: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
6

getTenantPackages Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
skipnumberNon

Réponse

Renvoie: GetTenantPackages200Response

Exemple

Exemple de getTenantPackages
Copy Copy
1
2const tenantId: string = 'tenant_8421';
3const packagesWithSkip: GetTenantPackages200Response = await getTenantPackages(tenantId, 25);
4const packagesWithoutSkip: GetTenantPackages200Response = await getTenantPackages(tenantId);
5

replaceTenantPackage Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui
replaceTenantPackageBodyReplaceTenantPackageBodyOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de replaceTenantPackage
Copy Copy
1
2const tenantId: string = "fastcomments-tenant-114";
3const id: string = "pkg-enterprise-2026-06";
4const replaceTenantPackageBody: ReplaceTenantPackageBody = {
5 name: "EnterpriseModeration",
6 version: "2.4.7",
7 enabled: true,
8 apiStatus: { state: "active", lastUpdated: "2026-06-10T12:00:00Z" },
9 customConfigParameters: { maxCommentLength: 1200, allowImages: true }, // paramètres optionnels inclus
10 voteStyle: { style: "updown" }
11};
12const result: FlagCommentPublic200Response = await replaceTenantPackage(tenantId, id, replaceTenantPackageBody);
13

updateTenantPackage Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
updateTenantPackageBodyUpdateTenantPackageBodyOui

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple de updateTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a';
3const id: string = 'pkg_pro_2026';
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: 'Pro Plan',
6 monthlyPriceUsd: 49,
7 isActive: true,
8 features: ['moderation', 'analytics', 'sso'],
9 trialDays: 14 // paramètre optionnel démontré
10};
11const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
12

createTenantUser Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringOui
createTenantUserBodyCreateTenantUserBodyOui

Réponse

Retourne : CreateTenantUser200Response

Exemple

Exemple de createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_7f4a2b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "jane.doe@example.com",
5 firstName: "Jane",
6 lastName: "Doe",
7 role: "commenter",
8 approved: true,
9 displayName: "Jane D." // optionnel : fournir un nom d'affichage convivial
10};
11const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
12console.log(result);
13

deleteTenantUser Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
deleteCommentsstringNon
commentDeleteModestringNon

Réponse

Retourne : FlagCommentPublic200Response

Exemple

Exemple de deleteTenantUser
Copy Copy
1
2const tenantId: string = "tenant_8f3a2b1c4d";
3const id: string = "user_62a4f9e0b7";
4const deleteComments: string = "true";
5const commentDeleteMode: string = "permanent";
6const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
7

getTenantUser Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetTenantUser200Response

Exemple

Exemple de getTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_ab12c3';
3const id: string = 'user_9f8e7d';
4const response: GetTenantUser200Response = await getTenantUser(tenantId, id);
5console.log(response);
6

getTenantUsers Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
skipnumberNon

Réponse

Renvoie : GetTenantUsers200Response

Exemple

Exemple getTenantUsers
Copy Copy
1
2const tenantId: string = 'tenant_7b8f3a2c-9e4d-4f1a';
3const skip: number = 50;
4const usersResponseDefault: GetTenantUsers200Response = await getTenantUsers(tenantId);
5const usersResponsePaged: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
6

replaceTenantUser Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
replaceTenantUserBodyReplaceTenantUserBodyOui
updateCommentsstringNon

Réponse

Renvoie: FlagCommentPublic200Response

Exemple

Exemple de replaceTenantUser
Copy Copy
1
2const tenantId: string = "f3b9a2d1-8b4e-4c6a-9f2b-1d5c4e6a7b8c";
3const id: string = "user_92f7c3b1";
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 externalId: "auth0|1234567890",
6 email: "jane.doe@company.com",
7 displayName: "Jane Doe",
8 roles: ["moderator"],
9 metadata: { department: "support" }
10};
11const updateComments: string = "reassign-comments-to-new-user";
12const response: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
13

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
redirectURLstringNon

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de sendLoginLink
Copy Copy
1
2const tenantId: string = "tenant_0a1b2c3d";
3const id: string = "user_984321";
4const redirectURL: string = "https://app.acme-corp.com/welcome";
5const responseWithRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
6const responseWithoutRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id);
7

updateTenantUser Internal Link


Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
updateTenantUserBodyUpdateTenantUserBodyOui
updateCommentsstringNon

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de updateTenantUser
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const userId: string = 'u_72b9f4';
4const updateTenantUserBody: UpdateTenantUserBody = {
5 email: 'jane.doe@acme.com',
6 displayName: 'Jane Doe',
7 roles: ['moderator'],
8 suspended: false
9};
10const updateComments: string = 'Promoted to moderator after review of activity and community feedback';
11const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, userId, updateTenantUserBody, updateComments);
12

createTenant Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
createTenantBodyCreateTenantBodyOui

Réponse

Renvoie: CreateTenant200Response

Exemple

Exemple de createTenant
Copy Copy
1
2const tenantId: string = 'acme-news-01';
3const createTenantBody: CreateTenantBody = {
4 name: 'Acme News',
5 domainConfiguration: { primaryDomain: 'news.acme.com', redirectHttps: true } as APIDomainConfiguration,
6 importedSites: [{ siteId: 'site-92', url: 'https://news.acme.com' }] as ImportedSiteType[],
7 billingInfo: { planId: 'business_monthly', contactEmail: 'billing@acme.com' } as BillingInfo
8};
9const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
10

deleteTenant Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringOui
idstringOui
surestringNon

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple de deleteTenant
Copy Copy
1
2const tenantId: string = 'tenant_742b9c';
3const flagId: string = 'flag_1a2b3c';
4const resultWithoutSure: FlagCommentPublic200Response = await deleteTenant(tenantId, flagId);
5const sureConfirmation: string = 'confirmed';
6const resultWithSure: FlagCommentPublic200Response = await deleteTenant(tenantId, flagId, sureConfirmation);
7

getTenant Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetTenant200Response

Exemple

Exemple getTenant
Copy Copy
1
2const tenantId: string = 'fc_tenant_6b3e2a';
3const id: string = 'site_42f1';
4const tenantResponse: GetTenant200Response = await getTenant(tenantId, id);
5const tenant: APITenant | undefined = tenantResponse.tenant;
6const primaryDomain: APIDomainConfiguration | undefined = tenant?.domainConfiguration?.[0];
7

getTenants Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
metastringNon
skipnumberNon

Réponse

Retourne: GetTenants200Response

Exemple

Exemple de getTenants
Copy Copy
1
2const tenantId: string = "fcom-tenant-8b4f2a1c";
3const meta: string = "include=domains,billing&status=active";
4const skip: number = 20;
5const response: GetTenants200Response = await getTenants(tenantId, meta, skip);
6console.log(response);
7

updateTenant Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringOui
idstringOui
updateTenantBodyUpdateTenantBodyOui

Réponse

Renvoie : FlagCommentPublic200Response

Exemple

Exemple d'updateTenant
Copy Copy
1
2const tenantId: string = 'tenant_84f12';
3const id: string = 'flag_192b';
4const updateTenantBody: UpdateTenantBody = {
5 name: 'Acme Media',
6 billingInfo: { plan: 'enterprise', seats: 25, nextBillingDate: '2026-07-01' },
7 apiDomainConfiguration: { primaryDomain: 'comments.acme.com', additionalDomains: ['acme.com'] },
8 importedSites: [{ siteUrl: 'https://blog.acme.com', archived: false }], // optionnel
9 commentSettings: { htmlRenderingMode: 'sanitized', deletionMode: 'soft' } // optionnel
10} as UpdateTenantBody;
11const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
12

changeTicketState Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
userIdstringOui
idstringOui
changeTicketStateBodyChangeTicketStateBodyOui

Réponse

Renvoie : ChangeTicketState200Response

Exemple

Exemple de changeTicketState
Copy Copy
1
2const tenantId: string = 'tenant_8a7d3f4b';
3const userId: string = 'user_5d1a9b2c';
4const id: string = 'ticket_1024';
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: 'closed',
7 notifyParticipants: true, // paramètre optionnel démontré
8 comment: 'Resolved by support — follow-up not required.'
9};
10const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
11

createTicket Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
userIdstringOui
createTicketBodyCreateTicketBodyOui

Réponse

Renvoie: CreateTicket200Response

Exemple

Exemple de createTicket
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp';
3const userId: string = 'moderator_jane';
4const createTicketBody: CreateTicketBody = {
5 subject: 'Mass spam reports on article 789',
6 description: 'Multiple identical spam comments posted under article 789. Needs moderation and bulk removal.',
7 priority: 'high',
8 contactEmail: 'jane@acme-corp.com',
9 metadata: { articleId: '789', reportedCount: 12 } // métadonnées optionnelles démontrées
10};
11const ticket: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
12

getTicket Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
idstringOui
userIdstringNon

Réponse

Retourne: GetTicket200Response

Exemple

Exemple getTicket
Copy Copy
1
2const tenantId: string = 'acme-corp';
3const ticketId: string = 'TCKT-20250615-42';
4const userId: string = 'user_84b2';
5
6const ticketWithUser: GetTicket200Response = await getTicket(tenantId, ticketId, userId);
7const ticketWithoutUser: GetTicket200Response = await getTicket(tenantId, ticketId);
8
9console.log(ticketWithUser.id, ticketWithoutUser.id);
10

getTickets Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
userIdstringNon
statenumberNon
skipnumberNon
limitnumberNon

Réponse

Retourne: GetTickets200Response

Exemple

Exemple de getTickets
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const userId: string = 'user_87b3';
4const state: number = 2;
5const skip: number = 0;
6const limit: number = 50;
7
8const tickets: GetTickets200Response = await getTickets(tenantId, userId, state, skip, limit);
9

getTranslations Internal Link

Paramètres

NomTypeObligatoireDescription
namespacestringOui
componentstringOui
localestringNon
useFullTranslationIdsbooleanNon

Réponse

Renvoie : GetTranslations200Response

Exemple

Exemple getTranslations
Copy Copy
1
2const namespaceName: string = 'site-ui';
3const componentName: string = 'comment-widget';
4const locale: string = 'fr-FR';
5const useFullTranslationIds: boolean = true;
6const translationsWithLocale: GetTranslations200Response = await getTranslations(namespaceName, componentName, locale, useFullTranslationIds);
7const translationsDefault: GetTranslations200Response = await getTranslations(namespaceName, componentName);
8

uploadImage Internal Link


Téléverser et redimensionner une image

Paramètres

NomTypeRequisDescription
tenantIdstringOui
fileBlobOui
sizePresetSizePresetNon
urlIdstringNon

Réponse

Renvoie: UploadImageResponse


getUserBadgeProgressById Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringYes
idstringYes

Réponse

Renvoie : GetUserBadgeProgressById200Response

Exemple

Exemple de getUserBadgeProgressById
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-241';
3const badgeId: string = 'user-78b3d-badge-3';
4const response: GetUserBadgeProgressById200Response = await getUserBadgeProgressById(tenantId, badgeId);
5const progress: UserBadgeProgress | undefined = (response as unknown as { progress?: UserBadgeProgress }).progress;
6const percentComplete: number | undefined = progress?.percentage;
7console.log('Badge progress percent complete:', percentComplete);
8

getUserBadgeProgressByUserId Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
userIdstringOui

Réponse

Renvoie: GetUserBadgeProgressById200Response

Exemple

Exemple getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = 'acme-inc-tenant-01';
3const userId: string = 'user_73c9b2';
4const progress: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
5
6async function maybeFetchProgress(tenant: string, user?: string): Promise<GetUserBadgeProgressById200Response | null> {
7 if (!user) return null;
8 return await getUserBadgeProgressByUserId(tenant, user);
9}
10
11const optionalResult: GetUserBadgeProgressById200Response | null = await maybeFetchProgress(tenantId, userId);
12

getUserBadgeProgressList Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
userIdstringNon
limitnumberNon
skipnumberNon

Réponse

Renvoie : GetUserBadgeProgressList200Response

Exemple

Exemple de getUserBadgeProgressList
Copy Copy
1
2const tenantId: string = 'tenant_4f3a2b9c';
3const userId: string = 'user_7721d';
4const limit: number = 20;
5const skip: number = 0;
6const result: GetUserBadgeProgressList200Response = await getUserBadgeProgressList(tenantId, userId, limit, skip);
7

createUserBadge Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
createUserBadgeParamsCreateUserBadgeParamsOui

Réponse

Renvoie: CreateUserBadge200Response

Exemple

Exemple de createUserBadge
Copy Copy
1
2const tenantId: string = "tenant_7f4b2a";
3const createUserBadgeParams: CreateUserBadgeParams = {
4 code: "top_contributor",
5 title: "Top Contributor",
6 description: "Awarded for 100 high-quality comments",
7 iconUrl: "https://cdn.fastcomments.com/badges/top_contributor.svg",
8 isActive: true,
9 criteria: { commentsRequired: 100 },
10 customConfig: { displayOnProfile: true } // paramètre optionnel démontré
11};
12const result: CreateUserBadge200Response = await createUserBadge(tenantId, createUserBadgeParams);
13

deleteUserBadge Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: UpdateUserBadge200Response

Exemple

Exemple d'utilisation de deleteUserBadge
Copy Copy
1
2const tenantId: string = "tenant_8b3f2c7a";
3const badgeIdOptional: string | undefined = Math.random() > 0.5 ? "badge_4f9a21" : undefined;
4const id: string = badgeIdOptional ?? "badge_backup_01";
5const result: UpdateUserBadge200Response = await deleteUserBadge(tenantId, id);
6

getUserBadge Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetUserBadge200Response

Exemple

Exemple d'utilisation de getUserBadge
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_6b8f2a1c';
4 const id: string = 'badge_9f3d4b2a';
5 const response: GetUserBadge200Response = await getUserBadge(tenantId, id);
6 const badge: UserBadge | undefined = response.userBadge;
7 const badgeName: string | undefined = badge?.name;
8 console.log('Retrieved badge name:', badgeName);
9})();
10

getUserBadges Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
userIdstringNon
badgeIdstringNon
typenumberNon
displayedOnCommentsbooleanNon
limitnumberNon
skipnumberNon

Réponse

Renvoie : GetUserBadges200Response

Exemple

Exemple de getUserBadges
Copy Copy
1
2const tenantId: string = 'tenant_7f9a12';
3const userId: string = 'user_42b7';
4const badgeId: string = 'badge_top_contributor';
5const type: number = 2;
6const displayedOnComments: boolean = true;
7const limit: number = 25;
8const skip: number = 0;
9const badges: GetUserBadges200Response = await getUserBadges(tenantId, userId, badgeId, type, displayedOnComments, limit, skip);
10

updateUserBadge Internal Link

Paramètres

NameTypeRequisDescription
tenantIdstringOui
idstringOui
updateUserBadgeParamsUpdateUserBadgeParamsOui

Réponse

Renvoie : UpdateUserBadge200Response

Exemple

Exemple d'utilisation de updateUserBadge
Copy Copy
1
2const tenantId: string = "tenant_9a8b7c";
3const id: string = "badge_a1b2c3";
4const updateUserBadgeParams: UpdateUserBadgeParams = {
5 title: "Community Helper",
6 description: "Awarded for providing 50 helpful answers",
7 iconUrl: "https://cdn.fastcomments.com/badges/community-helper.png",
8 isActive: true,
9 expiryDate: undefined
10};
11const result: UpdateUserBadge200Response = await updateUserBadge(tenantId, id, updateUserBadgeParams);
12

getUserNotificationCount Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
ssostringNon

Réponse

Retourne : GetUserNotificationCount200Response

Exemple

Exemple d'utilisation de getUserNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const ssoToken: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.sso_payload.signature';
4const notificationCountNoSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId);
5const notificationCountWithSSO: GetUserNotificationCount200Response = await getUserNotificationCount(tenantId, ssoToken);
6

getUserNotifications Internal Link

Paramètres

NameTypeObligatoireDescription
tenantIdstringOui
urlIdstringNon
pageSizenumberNon
afterIdstringNon
includeContextbooleanNon
afterCreatedAtnumberNon
unreadOnlybooleanNon
dmOnlybooleanNon
noDmbooleanNon
includeTranslationsbooleanNon
includeTenantNotificationsbooleanNon
ssostringNon

Réponse

Renvoie: GetUserNotifications200Response

Exemple

Exemple de getUserNotifications
Copy Copy
1
2const tenantId: string = "tenant_8271";
3const urlId: string = "https://www.news-site.com/articles/2026/06/15/ai-updates";
4const pageSize: number = 25;
5const afterId: string = "notif_abc123";
6const includeContext: boolean = true;
7const afterCreatedAt: number = Date.now() - 86_400_000;
8const unreadOnly: boolean = true;
9const dmOnly: boolean = false;
10const noDm: boolean = false;
11const includeTranslations: boolean = true;
12const includeTenantNotifications: boolean = true;
13const sso: string = "sso_token_xyz_987";
14
15const notifications: GetUserNotifications200Response = await getUserNotifications(
16 tenantId,
17 urlId,
18 pageSize,
19 afterId,
20 includeContext,
21 afterCreatedAt,
22 unreadOnly,
23 dmOnly,
24 noDm,
25 includeTranslations,
26 includeTenantNotifications,
27 sso
28);
29

resetUserNotificationCount Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
ssostringNon

Réponse

Renvoie: ResetUserNotifications200Response

Exemple

Exemple de resetUserNotificationCount
Copy Copy
1
2const tenantId: string = "tenant_8a3f2b6c";
3const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyX2QxMjM0IiwiaWF0IjoxNjI1MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
4const resetResponseWithSso: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId, ssoToken);
5const resetResponseWithoutSso: ResetUserNotifications200Response = await resetUserNotificationCount(tenantId);
6

resetUserNotifications Internal Link

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
afterIdstringNon
afterCreatedAtnumberNon
unreadOnlybooleanNon
dmOnlybooleanNon
noDmbooleanNon
ssostringNon

Réponse

Renvoie : ResetUserNotifications200Response

Exemple

Exemple de resetUserNotifications
Copy Copy
1
2const tenantId: string = "tenant_9b1f2";
3const afterId: string = "notification_0001";
4const afterCreatedAt: number = Date.now() - 60 * 60 * 1000; // il y a une heure
5const unreadOnly: boolean = true;
6const dmOnly: boolean = false;
7const noDm: boolean = false;
8const sso: string = "sso_session_7f2d";
9const result: ResetUserNotifications200Response = await resetUserNotifications(
10 tenantId,
11 afterId,
12 afterCreatedAt,
13 unreadOnly,
14 dmOnly,
15 noDm,
16 sso
17);
18

updateUserNotificationCommentSubscriptionStatus Internal Link

Activer ou désactiver les notifications pour un commentaire spécifique.

Paramètres

NomTypeObligatoireDescription
tenantIdstringOui
notificationIdstringOui
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumOui
commentIdstringOui
ssostringNon

Réponse

Retourne : UpdateUserNotificationStatus200Response

Exemple

Exemple : updateUserNotificationCommentSubscriptionStatus
Copy Copy
1
2const tenantId: string = 'f3a9c8b0-4d2e-4f8a-9c3b-1234567890ab';
3const notificationId: string = '62a1f4d2-8c7b-4e1a-aaa1-abcdef123456';
4const commentId: string = '7e4a2b1c-1234-5678-90ab-cdef12345678';
5const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum = UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptedIn;
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ssoPayload.signature';
7const response: UpdateUserNotificationStatus200Response = await updateUserNotificationCommentSubscriptionStatus(tenantId, notificationId, optedInOrOut, commentId, sso);
8

updateUserNotificationPageSubscriptionStatus Internal Link

Activer ou désactiver les notifications pour une page. Lorsqu'un utilisateur est abonné à une page, des notifications sont créées pour les nouveaux commentaires racines, et aussi

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringOui
urlstringOui
pageTitlestringOui
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumOui
ssostringNon

Réponse

Renvoie : UpdateUserNotificationStatus200Response

Exemple

Exemple updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2const tenantId: string = 'tenant_7f3b2';
3const urlId: string = 'article_987';
4const url: string = 'https://www.news-site.com/articles/2026/pasta-guide';
5const pageTitle: string = 'The Definitive Guide to Cooking Pasta';
6const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum = UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
7const sso: string = 'sso-token-62b9f1';
8const result: UpdateUserNotificationStatus200Response = await updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscribedOrUnsubscribed, sso);
9

updateUserNotificationStatus Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
notificationIdstringOui
newStatusUpdateUserNotificationStatusNewStatusEnumOui
ssostringNon

Réponse

Renvoie : UpdateUserNotificationStatus200Response

Exemple

Exemple de updateUserNotificationStatus
Copy Copy
1
2const tenantId: string = 'tenant_5f2a8b9c';
3const notificationId: string = 'notif_987654321';
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.Read;
5const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.payload.signature';
6const result: UpdateUserNotificationStatus200Response = await updateUserNotificationStatus(tenantId, notificationId, newStatus, sso);
7

getUserPresenceStatuses Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdWSstringOui
userIdsstringOui

Réponse

Renvoie : GetUserPresenceStatuses200Response

Exemple

Exemple de getUserPresenceStatuses
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const urlIdWS: string = 'wss://comments.fastsite.com/ws/tenant_42';
4const userIds: string = 'user_9012,user_3478';
5const includePresenceMetadata: boolean | undefined = true; // exemple de paramètre optionnel
6const presenceStatuses: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

searchUsers Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringOui
usernameStartsWithstringNon
mentionGroupIdsArrayNon
ssostringNon
searchSectionSearchUsersSearchSectionEnumNon

Réponse

Retourne : SearchUsers200Response

Exemple

Exemple de searchUsers
Copy Copy
1
2const tenantId: string = 'tenant_7890';
3const urlId: string = 'news/2026-06-15-world-cup-final';
4const usernameStartsWith: string = 'mar';
5const mentionGroupIds: string[] = ['staff', 'trusted-commenters'];
6const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI0NTY3OCJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
7const searchSection: SearchUsersSearchSectionEnum = SearchUsersSearchSectionEnum.Commenters;
8const response: SearchUsers200Response = await searchUsers(tenantId, urlId, usernameStartsWith, mentionGroupIds, sso, searchSection);
9

getUser Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
idstringOui

Réponse

Renvoie: GetUser200Response

Exemple

Exemple de getUser
Copy Copy
1
2const tenantId: string = 'fastcomments_corp';
3const id: string = 'user_9f8b7c6d-5e4a-3b2c-1f0e-123456789abc';
4const response: GetUser200Response = await getUser(tenantId, id);
5const userEmail: string | undefined = response.user?.email;
6const displayName: string | undefined = response.user?.displayName
7

createVote Internal Link

Paramètres

NameTypeRequiredDescription
tenantIdstringOui
commentIdstringOui
directionCreateVoteDirectionEnumOui
userIdstringNon
anonUserIdstringNon

Réponse

Renvoie : VoteComment200Response

Exemple

Exemple de createVote
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-001';
3const commentId: string = 'cmt_8f3b2a9d';
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Up;
5const userId: string = 'user_5021';
6const anonUserId: string = 'anon_7a9c';
7
8const voteResponse: VoteComment200Response = await createVote(tenantId, commentId, direction, userId, anonUserId);
9

deleteVote Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
idstringOui
editKeystringNon

Réponse

Renvoie : DeleteCommentVote200Response

Exemple

Exemple de deleteVote
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_8421';
4 const id: string = 'vote_3f9b7c2a';
5 const editKey: string = 'edit_7Xk9LpQ';
6 const responseWithoutEdit: DeleteCommentVote200Response = await deleteVote(tenantId, id);
7 const responseWithEdit: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
8 console.log(responseWithoutEdit, responseWithEdit);
9})();
10

getVotes Internal Link

Paramètres

NomTypeRequisDescription
tenantIdstringOui
urlIdstringOui

Réponse

Renvoie : GetVotes200Response

Exemple

Exemple de getVotes
Copy Copy
1
2const tenantId: string = 'tenant_7f8e91c2';
3const urlId: string = 'https://www.sportsdaily.com/news/2026/06/15/championship-game-recap';
4const votes: GetVotes200Response = await getVotes(tenantId, urlId);
5console.log(votes);
6

getVotesForUser Internal Link


Paramètres

NameTypeRequisDescription
tenantIdstringOui
urlIdstringOui
userIdstringNon
anonUserIdstringNon

Réponse

Renvoie : GetVotesForUser200Response

Exemple

Exemple getVotesForUser
Copy Copy
1
2const tenantId: string = 'tenant_9b8f7c6d';
3const urlId: string = 'articles/product-update-2026';
4const userId: string = 'user_c12345';
5const anonUserId: string = 'anon_7f4e2a';
6const votes: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, userId, anonUserId);
7

Besoin d'aide ?

Si vous rencontrez des problèmes ou avez des questions concernant le SDK JavaScript/TypeScript, veuillez :

Contribuer

Les contributions sont les bienvenues ! Veuillez consulter le dépôt GitHub pour les consignes de contribution.