FastComments.com

SDK de JavaScript/TypeScript de FastComments


Este es el SDK oficial de JavaScript/TypeScript para FastComments.

Administra comentarios, usuarios, SSO y moderación desde Node.js o el navegador.

Repositorio

Ver en GitHub


Instalación Internal Link


npm

npm install fastcomments-sdk

Documentación de la API Internal Link


Referencia completa de la API: docs/api/README.md

Compatibilidad navegador vs servidor Internal Link


Este SDK utiliza puntos de entrada duales para garantizar la compatibilidad óptima y prevenir errores en tiempo de ejecución:

  • fastcomments-sdk/browser - Versión segura para el navegador con fetch nativo
  • fastcomments-sdk/server - Versión completa para Node.js con soporte SSO
  • fastcomments-sdk (predeterminado) - Solo tipos, seguro de importar en cualquier lugar

APIs públicas vs seguras Internal Link

El SDK proporciona tres clases principales de API:

  • DefaultApi - Endpoints seguros que requieren su clave de API para la autenticación. Úselos para operaciones del lado del servidor.
  • PublicApi - Endpoints públicos a los que se puede acceder sin una clave de API. Pueden llamarse directamente desde navegadores, dispositivos móviles, etc.
  • HiddenApi - Endpoints internos/administrativos para casos de uso avanzados.

Ejemplo: Uso de la API pública (segura para navegadores)

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

const publicApi = new PublicApi();

// Obtener comentarios de una página (no se requiere clave de API)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Ejemplo: Uso de Default API (solo del lado del servidor)

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

const config = new Configuration({
  apiKey: 'your-api-key' // ¡Mantén esto en secreto!
});
const defaultApi = new DefaultApi(config);

// Obtener comentarios con acceso administrativo completo
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Integración SSO (Inicio de sesión único) Internal Link

FastComments admite SSO para integrarse con su sistema de autenticación de usuarios existente. La funcionalidad SSO solo está disponible en la exportación del servidor ya que requiere funciones criptográficas de Node.js.

SSO simple (solo en el servidor)

El SSO simple debe generarse en el servidor y enviarse al cliente:

// Código del lado del servidor (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Crear SSO simple usando el auxiliar integrado  
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();

// Envíe ssoToken a su código del lado del cliente
// El código del lado del cliente puede entonces usar este token con el SDK para navegador

SSO seguro (lado del servidor, recomendado)

El SSO seguro debe implementarse en el servidor y ofrece mayor seguridad:

// Código del lado del servidor (Node.js/backend)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Crear SSO seguro usando el auxiliar integrado
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();

// Usar con llamadas a la API en el servidor
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// O enviar ssoConfig al cliente para uso en el navegador

Uso de SSO desde el navegador (con token generado por el servidor)

// Código del lado del cliente (navegador)
import { PublicApi } from 'fastcomments-sdk/browser';

// Obtener el token SSO desde su endpoint en el servidor
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 // Usar el token SSO generado por el servidor
});

SSO con creación de comentarios

// Lado del servidor: crear SSO y comentario
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)
});

Casos de uso comunes Internal Link

Obtener comentarios para una página

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

Crear un comentario

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

Votar en un comentario

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 para voto a favor, -1 para voto en contra
  }
});

Gestión de usuarios (requiere clave de API)

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

Eventos en vivo (Actualizaciones en tiempo real) Internal Link

Suscríbete a eventos en vivo para recibir actualizaciones en tiempo real sobre comentarios, votos y otras actividades.

Eventos a nivel de página

Escucha eventos en vivo en una página específica (comentarios, votos, etc.):

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

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

// Suscribirse a eventos en vivo para una página
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (obtén esto de la respuesta de getComments)
  (event: LiveEvent) => {
    console.log('Live event received:', event);
    
    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Actualiza tu UI con el nuevo comentario
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Actualiza los contadores de votos en tu UI
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }
    
    return true; // Devuelve true si el evento fue procesado
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Cierra la suscripción cuando hayas terminado
subscription.close();

Suscribirse a eventos de usuario

Escucha eventos específicos del usuario (notificaciones, menciones, etc.):

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

const userConfig = {
  userIdWS: 'user-session-id', // Obtén esto de la respuesta de getComments
};

// Suscribirse al feed personal del usuario
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);
    
    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Muestra la notificación en tu UI
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }
    
    return true;
  },
  (isConnected: boolean) => {
    console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Cierra cuando hayas terminado
userSubscription.close();

Obtener userIdWS

El parámetro userIdWS es requerido para eventos en vivo y puede obtenerse de las respuestas de la API:

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

// Extrae userIdWS de la respuesta
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // Ahora puedes suscribirte a eventos en vivo
  const subscription = subscribeToChanges(config, tenantIdWS, urlIdWS, userIdWS, handleEvent);
}

IDs de transmisión Internal Link

Verás que debes pasar un broadcastId en algunas llamadas a la API. Cuando recibas eventos, obtendrás este ID de vuelta, de modo que sepas ignorar el evento si planeas aplicar los cambios de forma optimista en el cliente (lo cual probablemente querrás hacer, ya que ofrece la mejor experiencia). Pasa un UUID aquí. El ID debe ser lo suficientemente único como para no ocurrir dos veces en una sesión del navegador.

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 único para esta operación
  }
});

Manejo de errores 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);
  }
}

Agregación Internal Link

Agrega documentos agrupándolos (si se proporciona groupBy) y aplicando múltiples operaciones. Se admiten diferentes operaciones (por ejemplo sum, countDistinct, avg, etc.).

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
aggregationRequestAggregationRequest
parentTenantIdstringNo
includeStatsbooleanNo

Respuesta

Devuelve: AggregationResponse


Obtener registros de auditoría Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo

Respuesta

Devuelve: GetAuditLogs200Response

Ejemplo

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

Bloquear desde comentario público Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostringNo

Respuesta

Devuelve: BlockFromCommentPublic200Response

Ejemplo

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

Desbloquear comentario público Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostringNo

Respuesta

Devuelve: UnBlockCommentPublic200Response

Ejemplo

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

Comprobar comentarios bloqueados Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
commentIdsstring
ssostringNo

Respuesta

Devuelve: CheckedCommentsForBlocked200Response

Ejemplo

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

Bloquear usuario desde comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
blockFromCommentParamsBlockFromCommentParams
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: BlockFromCommentPublic200Response

Ejemplo

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

Crear comentario público Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
broadcastIdstring
commentDataCommentData
sessionIdstringNo
ssostringNo

Respuesta

Devuelve: CreateCommentPublic200Response

Ejemplo

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

Eliminar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
contextUserIdstringNo
isLivebooleanNo

Respuesta

Devuelve: DeleteComment200Response

Ejemplo

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

Eliminar comentario público Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
broadcastIdstring
editKeystringNo
ssostringNo

Respuesta

Devuelve: DeleteCommentPublic200Response

Ejemplo

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

Eliminar voto de comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
voteIdstring
urlIdstring
broadcastIdstring
editKeystringNo
ssostringNo

Respuesta

Devuelve: DeleteCommentVote200Response

Ejemplo

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

Marcar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: FlagComment200Response

Ejemplo

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

Obtener comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetComment200Response

Ejemplo

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

Obtener comentarios Internal Link

Parámetros

NameTypeRequeridoDescripción
tenantIdstring
pagenumberNo
limitnumberNo
skipnumberNo
asTreebooleanNo
skipChildrennumberNo
limitChildrennumberNo
maxTreeDepthnumberNo
urlIdstringNo
userIdstringNo
anonUserIdstringNo
contextUserIdstringNo
hashTagstringNo
parentIdstringNo
directionSortDirectionsNo

Respuesta

Devuelve: GetComments200Response

Ejemplo

Ejemplo de getComments
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // página
6 20, // límite
7 0, // omitir
8 true, // como árbol
9 1, // omitir hijos
10 3, // límite de hijos
11 4, // profundidad máxima del árbol
12 'articles/2026/new-product-launch', // id de la URL
13 'user_7890', // id de usuario
14 'anon_4f3b2', // id de usuario anónimo
15 undefined, // id de usuario en contexto
16 '#launch', // etiqueta hash
17 undefined // id del comentario padre
18);
19

Obtener comentarios públicos Internal Link


req tenantId urlId

Parámetros

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

Respuesta

Devuelve: GetCommentsPublic200Response

Ejemplo

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

Obtener texto del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
editKeystringNo
ssostringNo

Respuesta

Devuelve: GetCommentText200Response

Ejemplo

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

Obtener nombres de usuarios que votaron Internal Link

Parámetros

NameTypeRequeridoDescripción
tenantIdstring
commentIdstring
dirnumber
ssostringNo

Respuesta

Devuelve: GetCommentVoteUserNames200Response

Ejemplo

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

Bloquear comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

Respuesta

Devuelve: LockComment200Response

Ejemplo

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

Fijar comentario Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

Respuesta

Devuelve: PinComment200Response

Ejemplo

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

Guardar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createCommentParamsCreateCommentParams
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Respuesta

Devuelve: SaveComment200Response

Ejemplo

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

Guardar comentarios en bloque Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createCommentParamsArray
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Respuesta

Devuelve: Array<SaveComment200Response

Ejemplo

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

Establecer texto del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
broadcastIdstring
commentTextUpdateRequestCommentTextUpdateRequest
editKeystringNo
ssostringNo

Respuesta

Devuelve: SetCommentText200Response

Ejemplo

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

Desbloquear usuario desde comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
unBlockFromCommentParamsUnBlockFromCommentParams
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: UnBlockCommentPublic200Response

Ejemplo

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

Desmarcar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: FlagComment200Response

Ejemplo

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

Desbloquear comentario Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

Respuesta

Devuelve: LockComment200Response

Ejemplo

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

Desanclar comentario Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

Respuesta

Devuelve: PinComment200Response

Ejemplo

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

Actualizar comentario Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring
updatableCommentParamsUpdatableCommentParams
contextUserIdstringNo
doSpamCheckbooleanNo
isLivebooleanNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Votar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
urlIdstring
broadcastIdstring
voteBodyParamsVoteBodyParams
sessionIdstringNo
ssostringNo

Respuesta

Devuelve: VoteComment200Response

Ejemplo

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

Obtener comentarios para usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
userIdstringNo
tenantIdstringNo
urlIdstringNo
pagenumberNo
directionSortDirectionsNo
lastGenDatenumberNo
repliesToUserIdstringNo
fetchPageForCommentIdstringNo
includei10nbooleanNo
useFullTranslationIdsbooleanNo
localestringNo
includeConfigbooleanNo
includeNotificationCountbooleanNo
countAllbooleanNo
ssostringNo

Respuesta

Devuelve: GetCommentsForUserResponse

Ejemplo

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

Agregar configuración de dominio Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
addDomainConfigParamsAddDomainConfigParams

Respuesta

Devuelve: AddDomainConfig200Response


Eliminar configuración de dominio Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
domainstring

Respuesta

Devuelve: DeleteDomainConfig200Response


Obtener configuración de dominio Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
domainstring

Respuesta

Devuelve: GetDomainConfig200Response


Obtener configuraciones de dominio Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring

Respuesta

Devuelve: GetDomainConfigs200Response


Modificar configuración de dominio Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
domainToUpdatestring
patchDomainConfigParamsPatchDomainConfigParams

Respuesta

Devuelve: GetDomainConfig200Response


Reemplazar configuración de dominio Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
domainToUpdatestring
updateDomainConfigParamsUpdateDomainConfigParams

Respuesta

Devuelve: GetDomainConfig200Response


Crear plantilla de correo electrónico Internal Link

Parámetros

NameTypeObligatorioDescripción
tenantIdstring
createEmailTemplateBodyCreateEmailTemplateBody

Respuesta

Devuelve: CreateEmailTemplate200Response

Ejemplo

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

Eliminar plantilla de correo electrónico Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Eliminar error de renderizado de plantilla de correo electrónico Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
errorIdstring

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = "tenant_7a1d2f9b";
3const id: string = "email_template_42b1";
4const errorId: string = "render_err_2026-04-24_7f3c";
5const includeStackTrace: boolean | undefined = undefined; // ejemplo de indicador opcional
6
7const response: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
8// Si se admitiera un objeto de opciones opcional, podría tener este aspecto:
9// await deleteEmailTemplateRenderError(tenantId, id, errorId /*, { includeStackTrace } */);
10

Obtener plantilla de correo electrónico Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetEmailTemplate200Response

Ejemplo

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

Obtener definiciones de plantillas de correo electrónico Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring

Respuesta

Devuelve: GetEmailTemplateDefinitions200Response

Ejemplo

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

Obtener errores de renderizado de plantillas de correo electrónico Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
skipnumberNo

Respuesta

Devuelve: GetEmailTemplateRenderErrors200Response

Ejemplo

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

Obtener plantillas de correo electrónico Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetEmailTemplates200Response

Ejemplo

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

Renderizar plantilla de correo electrónico Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
localestringNo

Respuesta

Devuelve: RenderEmailTemplate200Response

Ejemplo

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

Actualizar plantilla de correo electrónico Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateEmailTemplateBodyUpdateEmailTemplateBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener registro de eventos Internal Link

req tenantId urlId userIdWS

Parámetros

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumber

Respuesta

Devuelve: GetEventLog200Response

Ejemplo

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

Obtener registro de eventos global Internal Link

req tenantId urlId userIdWS

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumber

Respuesta

Devuelve: GetEventLog200Response

Ejemplo

Ejemplo de getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // hace 7 días
6const endTimeOptional: number | undefined = undefined; // fin del período opcional
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

Crear publicación del feed Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Respuesta

Devuelve: CreateFeedPost200Response

Ejemplo

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

Crear publicación del feed pública Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: CreateFeedPostPublic200Response

Ejemplo

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

Eliminar publicación del feed pública Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
postIdstring
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: DeleteFeedPostPublic200Response

Ejemplo

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

Obtener publicaciones del feed Internal Link

req tenantId afterId

Parámetros

NameTypeRequiredDescription
tenantIdstring
afterIdstringNo
limitnumberNo
tagsArrayNo

Respuesta

Devuelve: GetFeedPosts200Response

Ejemplo

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

Obtener publicaciones del feed públicas Internal Link

req tenantId afterId

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
afterIdstringNo
limitnumberNo
tagsArrayNo
ssostringNo
isCrawlerbooleanNo
includeUserInfobooleanNo

Respuesta

Devuelve: GetFeedPostsPublic200Response

Ejemplo

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

Obtener estadísticas de publicaciones del feed Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
postIdsArray
ssostringNo

Respuesta

Devuelve: GetFeedPostsStats200Response

Ejemplo

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

Obtener reacciones públicas de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
postIdsArrayNo
ssostringNo

Respuesta

Devuelve: GetUserReactsPublic200Response

Ejemplo

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

Reaccionar a publicación del feed pública Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
postIdstring
reactBodyParamsReactBodyParams
isUndobooleanNo
broadcastIdstringNo
urlIdstringNo
ssostringNo

Respuesta

Devuelve: ReactFeedPostPublic200Response

Ejemplo

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

Actualizar publicación del feed Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
feedPostFeedPost

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Actualizar publicación del feed pública Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
postIdstring
updateFeedPostParamsUpdateFeedPostParams
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: CreateFeedPostPublic200Response

Ejemplo

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

Marcar comentario público Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
isFlaggedboolean
ssostringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener GIF grande Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
largeInternalURLSanitizedstring

Respuesta

Devuelve: GifGetLargeResponse

Ejemplo

Ejemplo de getGifLarge
Copy Copy
1
2const tenantId: string = 'tenant_8a92f4';
3const largeInternalURLSanitized: string = 'https://cdn.streamingco.com/gifs/product-demo-large.gif';
4let maybeStatus: APIStatus | undefined = undefined; // metadatos opcionales cuando estén disponibles
5const response: GifGetLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6

Buscar GIFs Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
searchstring
localestringNo
ratingstringNo
pagenumberNo

Respuesta

Devuelve: GifSearchResponse

Ejemplo

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

Obtener GIFs de tendencia Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
localestringNo
ratingstringNo
pagenumberNo

Respuesta

Devuelve: GifSearchResponse

Ejemplo

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

Agregar hashtag Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringNo
createHashTagBodyCreateHashTagBodyNo

Respuesta

Devuelve: AddHashTag200Response

Ejemplo

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

Agregar hashtags en bloque Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringNo
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

Respuesta

Devuelve: AddHashTagsBulk200Response

Ejemplo

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

Eliminar hashtag Internal Link

Parámetros

NombreTipoRequeridoDescripción
tagstring
tenantIdstringNo
deleteHashTagRequestDeleteHashTagRequestNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener hashtags Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
pagenumberNo

Respuesta

Devuelve: GetHashTags200Response

Ejemplo

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

Modificar hashtag Internal Link

Parámetros

NombreTipoRequeridoDescripción
tagstring
tenantIdstringNo
updateHashTagBodyUpdateHashTagBodyNo

Respuesta

Devuelve: PatchHashTag200Response

Ejemplo

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

Crear moderador Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createModeratorBodyCreateModeratorBody

Respuesta

Devuelve: CreateModerator200Response

Ejemplo

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

Eliminar moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
sendEmailstringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetModerator200Response

Ejemplo

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

Obtener moderadores Internal Link

Parámetros

NombreTypeRequeridoDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetModerators200Response

Ejemplo

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

Enviar invitación Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring
fromNamestring

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de sendInvite
Copy Copy
1
2const tenantId: string = 'acme-corp-128';
3const id: string = 'comment-8421f';
4const fromName: string = 'Marcus Lindström';
5const note: string | undefined = undefined; // ejemplo de parámetro opcional
6const response: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName);
7

Actualizar moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateModeratorBodyUpdateModeratorBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Eliminar conteo de notificaciones Internal Link

Parameters

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Response

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener conteo de notificaciones en caché Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetCachedNotificationCount200Response

Ejemplo

Ejemplo de getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'user_00012345';
4const includeUnreadOnly: boolean | undefined = true; // bandera de parámetro opcional (demostrado)
5const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
6

Obtener conteo de notificaciones Internal Link

Parámetros

NameTypeRequeridoDescripción
tenantIdstring
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Respuesta

Devuelve: GetNotificationCount200Response

Ejemplo

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

Obtener notificaciones Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Respuesta

Devuelve: GetNotifications200Response

Ejemplo

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

Actualizar notificación Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateNotificationBodyUpdateNotificationBody
userIdstringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Agregar página Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createAPIPageDataCreateAPIPageData

Respuesta

Devuelve: AddPageAPIResponse


Eliminar página Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring

Respuesta

Devuelve: DeletePageAPIResponse


Obtener página por ID de URL Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring

Respuesta

Devuelve: GetPageByURLIdAPIResponse


Obtener páginas Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring

Respuesta

Devuelve: GetPagesAPIResponse


Modificar página Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateAPIPageDataUpdateAPIPageData

Respuesta

Devuelve: PatchPageAPIResponse

Eliminar evento de webhook pendiente Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de deletePendingWebhookEvent
Copy Copy
1
2const tenantId: string = "tenant_7f3b2a";
3const webhookEventId: string = "wh_evt_9a8c7d1234";
4const dryRun: boolean | undefined = undefined; // ejemplo de indicador opcional (no obligatorio para esta llamada)
5const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, webhookEventId);
6

Obtener conteo de eventos de webhook pendientes Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo

Respuesta

Devuelve: GetPendingWebhookEventCount200Response

Ejemplo

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

Obtener eventos de webhook pendientes Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

Respuesta

Devuelve: GetPendingWebhookEvents200Response

Ejemplo

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

Crear configuración de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createQuestionConfigBodyCreateQuestionConfigBody

Respuesta

Devuelve: CreateQuestionConfig200Response

Ejemplo

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

Eliminar configuración de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener configuración de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetQuestionConfig200Response

Ejemplo

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

Obtener configuraciones de preguntas Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetQuestionConfigs200Response

Ejemplo

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

Actualizar configuración de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateQuestionConfigBodyUpdateQuestionConfigBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Crear resultado de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createQuestionResultBodyCreateQuestionResultBody

Respuesta

Devuelve: CreateQuestionResult200Response

Ejemplo

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

Eliminar resultado de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener resultado de pregunta Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring

Respuesta

Devuelve: GetQuestionResult200Response

Ejemplo

Ejemplo de getQuestionResult
Copy Copy
1
2const tenantId: string = 'acme-corp-42';
3const id: string = 'question-9f8b7c';
4const includeComments: boolean | undefined = true; // ejemplo de parámetro opcional
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, id);
6console.log(result);
7

Obtener resultados de preguntas Internal Link

Parámetros

NameTypeRequeridoDescripción
tenantIdstring
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Respuesta

Devuelve: GetQuestionResults200Response

Ejemplo

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

Actualizar resultado de pregunta Internal Link


Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring
updateQuestionResultBodyUpdateQuestionResultBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Agregación de resultados de preguntas Internal Link

Parámetros

NameTypeRequeridoDescripción
tenantIdstring
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Respuesta

Devuelve: AggregateQuestionResults200Response

Ejemplo

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

Agregación masiva de resultados de preguntas Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequest
forceRecalculatebooleanNo

Respuesta

Devuelve: BulkAggregateQuestionResults200Response

Ejemplo

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

Combinar comentarios con resultados de preguntas Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Respuesta

Devuelve: CombineCommentsWithQuestionResults200Response

Ejemplo

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

Agregar usuario SSO Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createAPISSOUserDataCreateAPISSOUserData

Respuesta

Devuelve: AddSSOUserAPIResponse


Eliminar usuario SSO Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
deleteCommentsbooleanNo
commentDeleteModestringNo

Respuesta

Devuelve: DeleteSSOUserAPIResponse

Obtener usuario SSO por correo electrónico Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
emailstring

Respuesta

Devuelve: GetSSOUserByEmailAPIResponse


Obtener usuario SSO por ID Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetSSOUserByIdAPIResponse


Obtener usuarios SSO Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetSSOUsers200Response


Modificar usuario SSO Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
updateCommentsbooleanNo

Respuesta

Devuelve: PatchSSOUserAPIResponse

Reemplazar usuario SSO Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
updateCommentsbooleanNo

Respuesta

Devuelve: PutSSOUserAPIResponse

Ejemplo

Ejemplo 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

Crear suscripción Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData

Respuesta

Devuelve: CreateSubscriptionAPIResponse

Ejemplo

Ejemplo 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, // parámetro opcional demostrado
9 metadata: { campaign: "spring_launch" } // parámetro opcional demostrado
10};
11const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
12

Eliminar suscripción Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
userIdstringNo

Respuesta

Devuelve: DeleteSubscriptionAPIResponse


Obtener suscripciones Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstringNo

Respuesta

Devuelve: GetSubscriptionsAPIResponse

Ejemplo

Ejemplo 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

Actualizar suscripción Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionData
userIdstringNo

Respuesta

Devuelve: UpdateSubscriptionAPIResponse

Ejemplo

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

Obtener usos diarios del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Respuesta

Devuelve: GetTenantDailyUsages200Response

Ejemplo

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

Crear paquete del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

Respuesta

Devuelve: CreateTenantPackage200Response

Ejemplo

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

Eliminar paquete del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener paquete del tenant Internal Link


Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring

Respuesta

Devuelve: GetTenantPackage200Response

Ejemplo

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

Obtener paquetes del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetTenantPackages200Response

Ejemplo

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

Reemplazar paquete del tenant Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Actualizar paquete del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateTenantPackageBodyUpdateTenantPackageBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de updateTenantPackage
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_sf_001";
4 const id: string = "pkg-premium-v2";
5 const updateTenantPackageBody: UpdateTenantPackageBody = {
6 name: "San Francisco Premium",
7 enabled: true,
8 customConfig: { maxComments: 500 },
9 tosConfig: { required: true } // campos opcionales demostrados por su presencia; los demás omitidos
10 } as UpdateTenantPackageBody;
11 const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
12 console.log(result);
13})();
14

Crear usuario del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createTenantUserBodyCreateTenantUserBody

Respuesta

Devuelve: CreateTenantUser200Response

Ejemplo

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

Eliminar usuario del tenant Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
deleteCommentsstringNo
commentDeleteModestringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de deleteTenantUser
Copy Copy
1
2async function run(): Promise<void> {
3 const tenantId: string = "acme_corp_tenant_9f1a2b";
4 const id: string = "user_4d2a1b6c";
5 const deleteComments: string = "true"; // eliminar también los comentarios del usuario
6 const commentDeleteMode: string = "permanent"; // "permanent" o "soft"
7 const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
8 console.log(result);
9}
10run();
11

Obtener usuario del tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetTenantUser200Response

Ejemplo

Ejemplo de getTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_fc5a9b2c';
3const userId: string = 'user_0a12b3';
4const result: GetTenantUser200Response = await getTenantUser(tenantId, userId);
5const user: User | undefined = (result as any).user; // accediendo a la carga útil
6const userEmail: string | undefined = user?.email;
7console.log('Fetched user email:', userEmail);
8

Obtener usuarios del tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetTenantUsers200Response

Ejemplo

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

Reemplazar usuario del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
replaceTenantUserBodyReplaceTenantUserBody
updateCommentsstringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
redirectURLstringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Actualizar usuario del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateTenantUserBodyUpdateTenantUserBody
updateCommentsstringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Crear tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createTenantBodyCreateTenantBody

Respuesta

Devuelve: CreateTenant200Response

Ejemplo

Ejemplo de createTenant
Copy Copy
1
2const tenantId: string = 'acme-corp-001';
3const createTenantBody: CreateTenantBody = {
4 name: 'Acme Corporation',
5 domainConfiguration: { primaryDomain: 'comments.acme.com', enforceHttps: true } as APIDomainConfiguration,
6 billingInfo: { planId: 'enterprise', contactEmail: 'billing@acme.com' } as BillingInfo
7 // los campos opcionales como ssoConfig o customConfig se omiten intencionadamente
8} as CreateTenantBody;
9
10const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
11

Eliminar tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
surestringNo

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Obtener tenant Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring

Respuesta

Devuelve: GetTenant200Response

Ejemplo

Ejemplo de getTenant
Copy Copy
1
2const tenantId: string = "tenant_9f4b2c1a";
3const idOverride: string | undefined = undefined; // anulación opcional, si está disponible
4const id: string = idOverride ?? "site_3e7a6b2f";
5const response: GetTenant200Response = await getTenant(tenantId, id);
6console.log(response);
7

Obtener tenants Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
metastringNo
skipnumberNo

Respuesta

Devuelve: GetTenants200Response

Ejemplo

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

Actualizar tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateTenantBodyUpdateTenantBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

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

Cambiar estado del ticket Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
userIdstring
idstring
changeTicketStateBodyChangeTicketStateBody

Respuesta

Devuelve: ChangeTicketState200Response

Ejemplo

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

Crear ticket Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstring
createTicketBodyCreateTicketBody

Respuesta

Devuelve: CreateTicket200Response

Ejemplo

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

Obtener ticket Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
idstring
userIdstringNo

Respuesta

Devuelve: GetTicket200Response

Ejemplo

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

Obtener tickets Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Respuesta

Devuelve: GetTickets200Response

Ejemplo

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

Obtener traducciones Internal Link

Parámetros

NameTypeRequeridoDescripción
namespacestring
componentstring
localestringNo
useFullTranslationIdsbooleanNo

Respuesta

Devuelve: GetTranslationsResponse

Ejemplo

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

Subir imagen Internal Link


Subir y redimensionar una imagen

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
fileBlob
sizePresetSizePresetNo
urlIdstringNo

Respuesta

Devuelve: UploadImageResponse


Obtener progreso de insignia de usuario por ID Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetUserBadgeProgressById200Response

Ejemplo

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

Obtener progreso de insignia de usuario por ID de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstring

Respuesta

Devuelve: GetUserBadgeProgressById200Response

Ejemplo

Ejemplo de getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = 'tenant_7f9c2d3b';
3const maybeUserId: string | undefined = 'user_4b8e1f9a'; // fuente opcional (podría ser undefined)
4const userId: string = maybeUserId ?? 'user_fallback0001';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
6console.log(result);
7

Obtener lista de progreso de insignias de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstringNo
limitnumberNo
skipnumberNo

Respuesta

Devuelve: GetUserBadgeProgressList200Response

Ejemplo

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

Crear insignia de usuario Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

Respuesta

Devuelve: CreateUserBadge200Response

Ejemplo

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

Eliminar insignia de usuario Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: UpdateUserBadge200Response

Ejemplo

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

Obtener insignia de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetUserBadge200Response

Ejemplo

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

Obtener insignias de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
userIdstringNo
badgeIdstringNo
typenumberNo
displayedOnCommentsbooleanNo
limitnumberNo
skipnumberNo

Respuesta

Devuelve: GetUserBadges200Response

Ejemplo

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

Actualizar insignia de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateUserBadgeParamsUpdateUserBadgeParams

Respuesta

Devuelve: UpdateUserBadge200Response

Ejemplo

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

Obtener conteo de notificaciones del usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
ssostringNo

Respuesta

Devuelve: GetUserNotificationCount200Response

Ejemplo

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

Obtener notificaciones del usuario Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
ssostringNo

Respuesta

Devuelve: GetUserNotifications200Response

Ejemplo

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

Restablecer conteo de notificaciones del usuario Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
ssostringNo

Respuesta

Devuelve: ResetUserNotifications200Response

Ejemplo

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

Restablecer notificaciones del usuario Internal Link


Parámetros

NameTypeRequiredDescription
tenantIdstring
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

Respuesta

Devuelve: ResetUserNotifications200Response

Ejemplo

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

Actualizar estado de suscripción a comentarios de notificaciones del usuario Internal Link


Habilitar o deshabilitar las notificaciones para un comentario específico.

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
notificationIdstring
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum
commentIdstring
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationStatus200Response

Ejemplo

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

Actualizar estado de suscripción a páginas de notificaciones del usuario Internal Link

Habilitar o deshabilitar las notificaciones para una página. Cuando los usuarios están suscritos a una página, se crean notificaciones para nuevos comentarios raíz, y también

Parámetros

NameTypeRequiredDescription
tenantIdstring
urlIdstring
urlstring
pageTitlestring
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationStatus200Response

Ejemplo

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

Actualizar estado de notificación del usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
notificationIdstring
newStatusUpdateUserNotificationStatusNewStatusEnum
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationStatus200Response

Ejemplo

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

Obtener estados de presencia del usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdWSstring
userIdsstring

Respuesta

Devuelve: GetUserPresenceStatuses200Response

Ejemplo

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

Buscar usuarios Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
urlIdstring
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

Respuesta

Devuelve: SearchUsers200Response

Ejemplo

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

Obtener usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetUser200Response

Ejemplo

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

Crear voto Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
directionCreateVoteDirectionEnum
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: VoteComment200Response

Ejemplo

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

Eliminar voto Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
editKeystringNo

Respuesta

Devuelve: DeleteCommentVote200Response

Ejemplo

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

Obtener votos Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring

Respuesta

Devuelve: GetVotes200Response

Ejemplo

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

Obtener votos para el usuario Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: GetVotesForUser200Response

Ejemplo

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

¿Necesitas ayuda?

Si encuentras algún problema o tienes preguntas sobre el SDK de JavaScript/TypeScript, por favor:

Contribuciones

¡Las contribuciones son bienvenidas! Visita el repositorio de GitHub para las pautas de contribución.