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


Agentes de codificación IA Internal Link

skills.sh

Proporcione a su agente de codificación el contexto de FastComments que necesita: widgets, configuración, Secure SSO, la API REST y los SDK:

npx skills add fastcomments/skills

Funciona con Claude Code, Codex, Cursor, Copilot, Gemini y cualquier otro agente que soporte la CLI de skills soporta.

Instalación Internal Link


npm

npm install fastcomments-sdk

Documentación de 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 estas clases de API:

  • DefaultApi - Endpoints seguros que requieren tu clave de API para la autenticación. Úsalos 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.
  • ModerationApi - Endpoints del panel de moderación (moderación de comentarios, expulsiones, insignias, factor de confianza, búsqueda). Autenticados mediante la sesión del moderador; pasa el parámetro de consulta sso para moderadores autenticados por SSO.
  • HiddenApi - Endpoints internos/administrativos para casos de uso avanzados.

Ejemplo: Uso de la API pública (seguro para navegador)

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

const publicApi = new PublicApi();

// Obtener comentarios para 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 la API predeterminada (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'
});

Ejemplo: Uso de la API de moderación

import { createFastCommentsSDK } from 'fastcomments-sdk/server';

const sdk = createFastCommentsSDK({ /* basePath, etc. */ });

// Llamadas autenticadas por moderador (cookie de sesión, o pasar `sso` para un moderador SSO).
const comments = await sdk.moderationApi.getApiComments({
  tenantId: 'your-tenant-id'
});

await sdk.moderationApi.postSetCommentSpamStatus({
  commentId: 'comment-id',
  spam: true
});

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

createAgentTenant Internal Link

Crea una nueva cuenta de prueba para un agente de IA sin un registro humano. No se necesita una clave API para llamar a este.

La respuesta contiene el ID del inquilino, una clave API que funciona inmediatamente contra la API REST y el servidor MCP, y una URL de reclamación. Proporcione la URL de reclamación a la persona para la que está trabajando: abrirla mientras está conectado a FastComments asocia la cuenta a ella. Las cuentas no reclamadas, y sus claves, se eliminan 72 horas después de su creación. Hasta que se reclamen, la cuenta tiene los límites de prueba estándar.

Parameters

NameTypeRequiredDescription
createAgentTenantBodyCreateAgentTenantBodyYes

Response

Devuelve: CreateAgentTenantResponse

Example

Ejemplo createAgentTenant
Copy Copy
1
2const tenantBody: CreateAgentTenantBody = {
3 name: "Acme Corp",
4 domain: "acme.example.com",
5 contactEmail: "admin@acme.example.com", // opcional
6 planId: 3 // opcional
7};
8
9const result: CreateAgentTenantResponse = await createAgentTenant(tenantBody);
10

aggregate Internal Link

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

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
aggregationRequestAggregationRequestSí
parentTenantIdstringNo
includeStatsbooleanNo

Respuesta

Devuelve: AggregateResponse

Ejemplo

Ejemplo de agregación
Copy Copy
1
2const tenantId: string = "tenant-12345";
3
4const aggregationRequest: AggregationRequest = {
5 predicates: [
6 {
7 field: "status",
8 operator: "eq",
9 value: { type: "string", value: "approved" }
10 }
11 ],
12 operations: [
13 { type: "count", field: "commentId" }
14 ],
15 sort: { field: "createdAt", direction: "desc" }
16};
17
18const parentTenantId: string = "parent-001";
19const includeStats: boolean = true;
20
21const result: AggregateResponse = await aggregate(
22 tenantId,
23 aggregationRequest,
24 parentTenantId,
25 includeStats
26);
27

getAuditLogs Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo
usernamestringNo
ipstringNo
crudTypestringNo
resourceNamestringNo
targetIdstringNo
targetstringNo
includeManagedTenantsbooleanNo

Respuesta

Devuelve: GetAuditLogsResponse

Ejemplo

Ejemplo getAuditLogs
Copy Copy
1
2async function fetchAuditLogs(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const limit: number = 50;
5 const skip: number = 0;
6 const order: SORTDIR = { direction: "DESC" };
7 const after: number = Date.now() - 86400000; // hace 1 día
8 const before: number = Date.now();
9 const username: string = "alice.smith";
10 const ip: string = "198.51.100.23";
11 const crudType: string = "CREATE";
12 const resourceName: string = "thread";
13 const targetId: string = "thread_45678";
14 const target: string = "forum_12";
15 const includeManagedTenants: boolean = false;
16
17 const logs: GetAuditLogsResponse = await getAuditLogs(
18 tenantId,
19 limit,
20 skip,
21 order,
22 after,
23 before,
24 username,
25 ip,
26 crudType,
27 resourceName,
28 targetId,
29 target,
30 includeManagedTenants
31 );
32
33 console.log(logs);
34}
35
36fetchAuditLogs();
37

blockFromCommentPublic Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
publicBlockFromCommentParamsPublicBlockFromCommentParamsSí
ssostringNo

Respuesta

Devuelve: BlockSuccess

Ejemplo

Ejemplo de blockFromCommentPublic
Copy Copy
1
2async function demoBlock() {
3 const tenantId: string = "tenant_9f8b7c";
4 const commentId: string = "comment_3e2d1a";
5 const blockParams: PublicBlockFromCommentParams = {
6 reason: "harassment",
7 expiresInHours: 48
8 };
9 const ssoToken: string = "sso_5g6h7i";
10
11 const resultWithSso: BlockSuccess = await blockFromCommentPublic(tenantId, commentId, blockParams, ssoToken);
12 const resultWithoutSso: BlockSuccess = await blockFromCommentPublic(tenantId, commentId, blockParams);
13}
14

unBlockCommentPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Respuesta

Devuelve: UnblockSuccess

Ejemplo

Ejemplo de unBlockCommentPublic
Copy Copy
1
2const tenantId: string = "c9f1e2a4-5b6d-4f8a-9c2e-123456789abc";
3const commentId: string = "d3b2c1a9-8f7e-4d6b-9a0b-987654321def";
4
5const unblockParams: PublicBlockFromCommentParams = {
6 reason: "User request resolved",
7 moderatorId: "mod-456"
8};
9
10const ssoToken: string = "sso-token-789xyz";
11
12const unblockResult: UnblockSuccess = await unBlockCommentPublic(tenantId, commentId, unblockParams, ssoToken);
13const unblockResultNoSso: UnblockSuccess = await unBlockCommentPublic(tenantId, commentId, unblockParams);
14

checkedCommentsForBlocked Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdsstringSí
ssostringNo

Respuesta

Devuelve: CheckBlockedCommentsResponse

Ejemplo

Ejemplo de checkedCommentsForBlocked
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentIds: string = "cmt_9876,cmt_5432";
5 const ssoToken: string = "sso_user_abc123";
6
7 const responseWithSso: CheckBlockedCommentsResponse = await checkedCommentsForBlocked(tenantId, commentIds, ssoToken);
8 const responseWithoutSso: CheckBlockedCommentsResponse = await checkedCommentsForBlocked(tenantId, commentIds);
9})();
10

blockUserFromComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
blockFromCommentParamsBlockFromCommentParamsSí
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: BlockSuccess

Ejemplo

Ejemplo de blockUserFromComment
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant-123e4567-e89b-12d3-a456-426614174000";
4 const commentId: string = "cmt-9876543210";
5 const blockParams: BlockFromCommentParams = {
6 reason: "spam",
7 durationHours: 24
8 };
9 const userId: string = "user-abc123";
10 const anonUserId: string = "anon-xyz789";
11 const result: BlockSuccess = await blockUserFromComment(tenantId, commentId, blockParams, userId, anonUserId);
12 console.log(result);
13}
14demo();
15

createCommentPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
broadcastIdstringSí
commentDataCommentDataSí
sessionIdstringNo
ssostringNo

Respuesta

Devuelve: SaveCommentsResponseWithPresence

Ejemplo

Ejemplo createCommentPublic
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant-456";
4 const urlId: string = "url-789";
5 const broadcastId: string = "broadcast-101112";
6 const commentData: CommentData = { text: "This is a comment", userId: "user-123" };
7 const sessionId: string = "session-131415";
8 const sso: string = "sso-token-xyz";
9 const result: SaveCommentsResponseWithPresence = await createCommentPublic(tenantId, urlId, broadcastId, commentData, sessionId, sso);
10 const resultNoOpt: SaveCommentsResponseWithPresence = await createCommentPublic(tenantId, urlId, broadcastId, commentData);
11}
12

deleteComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
contextUserIdstringNo
isLivebooleanNo

Respuesta

Returns: DeleteCommentResult

Ejemplo

Ejemplo deleteComment
Copy Copy
1
2async function removeComment(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "comment_9876";
5 const contextUserId: string = "user_42";
6 const result: DeleteCommentResult = await deleteComment(tenantId, commentId, contextUserId, true);
7 console.log(result);
8}
9removeComment();
10

deleteCommentPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
editKeystringNo
ssostringNo

Respuesta

Devuelve: PublicAPIDeleteCommentResponse

Ejemplo

Ejemplo deleteCommentPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_9876";
5 const broadcastId: string = "brd_5555";
6 const editKey: string = "edit_abc123";
7 const sso: string = "sso_token_xyz";
8
9 const resultWithoutOptional: PublicAPIDeleteCommentResponse = await deleteCommentPublic(tenantId, commentId, broadcastId);
10 const resultWithOptional: PublicAPIDeleteCommentResponse = await deleteCommentPublic(tenantId, commentId, broadcastId, editKey, sso);
11})();
12

deleteCommentVote Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
voteIdstringSí
urlIdstringSí
broadcastIdstringSí
editKeystringNo
ssostringNo

Respuesta

Devuelve: VoteDeleteResponse

Ejemplo

Ejemplo deleteCommentVote
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_9876";
4const voteId: string = "vote_555";
5const urlId: string = "url_abcde";
6const broadcastId: string = "brd_2023";
7const editKey: string = "edit_abc123"; // opcional
8const ssoToken: string = "sso_token_xyz"; // opcional
9
10// Llamada con solo los parámetros obligatorios y uno opcional
11const deleteResult: VoteDeleteResponse = await deleteCommentVote(
12 tenantId,
13 commentId,
14 voteId,
15 urlId,
16 broadcastId,
17 editKey
18);
19
20// Llamada con ambos parámetros opcionales
21const deleteResultWithSSO: VoteDeleteResponse = await deleteCommentVote(
22 tenantId,
23 commentId,
24 voteId,
25 urlId,
26 broadcastId,
27 editKey,
28 ssoToken
29);
30

flagComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: FlagCommentResponse

Ejemplo

Ejemplo flagComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-20230915-001";
5 const userId: string = "user-42";
6 const anonUserId: string = "anon-abc123";
7
8 const response: FlagCommentResponse = await flagComment(tenantId, commentId, userId, anonUserId);
9 console.log(response);
10})();
11

getComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIGetCommentResponse

Ejemplo

Ejemplo getComment
Copy Copy
1
2async function fetchComment(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5
6 const response: APIGetCommentResponse = await getComment(tenantId, commentId);
7 const comment: APIComment | undefined = response.comment;
8
9 // Demostración de campos opcionales
10 const badgeInfo: CommentUserBadgeInfo | undefined = comment?.user?.badge;
11 const hashtags: CommentUserHashTagInfo[] | undefined = comment?.user?.hashtags;
12 const mentions: CommentUserMentionInfo[] | undefined = comment?.user?.mentions;
13 const meta: APICommentBaseMeta | undefined = comment?.meta;
14
15 console.log(comment?.id, badgeInfo?.type);
16}
17
18fetchComment();
19

getComments Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
pagenumberNo
limitnumberNo
skipnumberNo
asTreebooleanNo
skipChildrennumberNo
limitChildrennumberNo
maxTreeDepthnumberNo
urlIdstringNo
userIdstringNo
anonUserIdstringNo
contextUserIdstringNo
hashTagstringNo
parentIdstringNo
directionSortDirectionsNo
fromDatenumberNo
toDatenumberNo

Respuesta

Devuelve: APIGetCommentsResponse

Ejemplo

Ejemplo getComments
Copy Copy
1
2async function loadComments(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const page: number = 1;
5 const limit: number = 50;
6 const asTree: boolean = false;
7 const direction: SortDirections = "asc";
8 const fromDate: number = Date.now() - 30 * 24 * 60 * 60 * 1000; // hace 30 días
9 const toDate: number = Date.now();
10
11 const commentsResponse: APIGetCommentsResponse = await getComments(
12 tenantId,
13 page,
14 limit,
15 undefined,
16 asTree,
17 undefined,
18 undefined,
19 undefined,
20 undefined,
21 undefined,
22 undefined,
23 undefined,
24 undefined,
25 undefined,
26 direction,
27 fromDate,
28 toDate
29 );
30
31 console.log(commentsResponse);
32}
33

getCommentsPublic Internal Link

req tenantId urlId

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
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

Response

Devuelve: GetCommentsResponseWithPresencePublicComment

Example

Ejemplo getCommentsPublic
Copy Copy
1
2async function loadComments(): Promise<void> {
3 const tenantId: string = "tenant-42",
4 urlId: string = "post-2023-09-15",
5 page: number = 1,
6 direction: SortDirections = "desc",
7 limit: number = 30,
8 includeConfig: boolean = true,
9 locale: string = "en-US",
10 isCrawler: boolean = false,
11 asTree: boolean = true,
12 maxTreeDepth: number = 2,
13 searchText: string = "fastcomments",
14 hashTags: string[] = ["fastcomments","typescript"],
15 userId: string = "user-123";
16
17 const result: GetCommentsResponseWithPresencePublicComment = await getCommentsPublic(
18 tenantId,
19 urlId,
20 page,
21 direction,
22 undefined,
23 undefined,
24 undefined,
25 limit,
26 undefined,
27 undefined,
28 undefined,
29 includeConfig,
30 undefined,
31 undefined,
32 locale,
33 undefined,
34 isCrawler,
35 undefined,
36 asTree,
37 maxTreeDepth,
38 undefined,
39 undefined,
40 searchText,
41 hashTags,
42 userId
43 );
44}
45

getCommentText Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
editKeystringNo
ssostringNo

Respuesta

Devuelve: PublicAPIGetCommentTextResponse

Ejemplo

Ejemplo getCommentText
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const commentId: string = "comment-987654321";
4const editKey: string = "edit-key-abc123";
5const sso: string = "sso-token-xyz789";
6
7const commentWithEdit: PublicAPIGetCommentTextResponse = await getCommentText(
8 tenantId,
9 commentId,
10 editKey,
11 sso
12);
13
14const commentBasic: PublicAPIGetCommentTextResponse = await getCommentText(
15 tenantId,
16 commentId
17);
18

getCommentVoteUserNames Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
dirnumberSí
ssostringNo

Respuesta

Devuelve: GetCommentVoteUserNamesSuccessResponse

Ejemplo

Ejemplo getCommentVoteUserNames
Copy Copy
1
2async function example() {
3 const tenantId: string = 'tenant-9876';
4 const commentId: string = 'comment-abc123';
5 const dir: number = 1;
6 const ssoToken: string = 'sso-xyz789';
7
8 const resultWithSso: GetCommentVoteUserNamesSuccessResponse = await getCommentVoteUserNames(tenantId, commentId, dir, ssoToken);
9 const resultWithoutSso: GetCommentVoteUserNamesSuccessResponse = await getCommentVoteUserNames(tenantId, commentId, dir);
10}
11

lockComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de lockComment
Copy Copy
1
2async function demoLockComment() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_9876";
5 const broadcastId: string = "brd_5555";
6 const ssoToken: string = "sso_user_abc";
7
8 const resultWithSso: APIEmptyResponse = await lockComment(tenantId, commentId, broadcastId, ssoToken);
9 const resultWithoutSso: APIEmptyResponse = await lockComment(tenantId, commentId, broadcastId);
10}
11
12demoLockComment();
13

pinComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
ssostringNo

Respuesta

Devuelve: ChangeCommentPinStatusResponse

Ejemplo

Ejemplo de pinComment
Copy Copy
1
2async function demoPinComment() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_54321";
6
7 const resultWithoutSso: ChangeCommentPinStatusResponse = await pinComment(tenantId, commentId, broadcastId);
8 const ssoToken: string = "sso_abcde12345";
9 const resultWithSso: ChangeCommentPinStatusResponse = await pinComment(tenantId, commentId, broadcastId, ssoToken);
10}
11
12demoPinComment();
13

saveComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createCommentParamsCreateCommentParamsSí
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Respuesta

Devuelve: APISaveCommentResponse

Ejemplo

Ejemplo de saveComment
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const commentParams: CreateCommentParams = {
5 content: "This is a comment with a mention and a hashtag.",
6 userId: "user_987",
7 mentions: [
8 { userId: "user_123", start: 27, end: 34 }
9 ] as CommentUserMentionInfo[],
10 hashtags: [
11 { tag: "feedback", start: 45, end: 53 }
12 ] as CommentUserHashTagInfo[],
13 poll: {
14 question: "Do you like this feature?",
15 options: ["Yes", "No"]
16 } as CommentPollInput,
17};
18
19const response: APISaveCommentResponse = await saveComment(
20 tenantId,
21 commentParams,
22 true, // isLive
23 true, // doSpamCheck
24 false, // sendEmails
25 true // populateNotifications
26);
27

saveCommentsBulk Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Respuesta

Devuelve: Array<SaveCommentsBulkResponse

Ejemplo

Ejemplo de saveCommentsBulk
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const mention1: CommentUserMentionInfo = {
5 userId: "user_002",
6 start: 10,
7 end: 20,
8};
9
10const hashtag1: CommentUserHashTagInfo = {
11 tag: "news",
12 start: 30,
13 end: 35,
14};
15
16const poll1: CommentPollInput = {
17 question: "Did you find this helpful?",
18 options: ["Yes", "No"],
19};
20
21const commentA: CreateCommentParams = {
22 content: "This is a great article!",
23 userId: "user_001",
24 mentions: [mention1],
25 hashtags: [hashtag1],
26 poll: poll1,
27};
28
29const commentB: CreateCommentParams = {
30 content: "I have a question about the topic.",
31 userId: "user_003",
32};
33
34const createCommentParams: CreateCommentParams[] = [commentA, commentB];
35
36const isLive: boolean = true;
37const doSpamCheck: boolean = false;
38const sendEmails: boolean = true;
39const populateNotifications: boolean = false;
40
41const results: SaveCommentsBulkResponse[] = await saveCommentsBulk(
42 tenantId,
43 createCommentParams,
44 isLive,
45 doSpamCheck,
46 sendEmails,
47 populateNotifications
48);
49

setCommentText Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
commentTextUpdateRequestCommentTextUpdateRequestSí
editKeystringNo
ssostringNo

Respuesta

Devuelve: PublicAPISetCommentTextResponse

Ejemplo

Ejemplo setCommentText
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_54321";
6 const commentTextUpdateRequest: CommentTextUpdateRequest = {
7 text: "Revised comment text with additional details."
8 };
9 const editKey: string = "edit_abc123";
10 const sso: string = "sso_token_456def";
11
12 const response: PublicAPISetCommentTextResponse = await setCommentText(
13 tenantId,
14 commentId,
15 broadcastId,
16 commentTextUpdateRequest,
17 editKey,
18 sso
19 );
20})();
21

unBlockUserFromComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
unBlockFromCommentParamsUnBlockFromCommentParamsSí
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: UnblockSuccess

Ejemplo

Ejemplo de unBlockUserFromComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const commentId: string = "comment-4a3b2c1d";
5 const params: UnBlockFromCommentParams = {
6 reason: "User appealed the block",
7 adminNote: "Reviewed and unblocked"
8 };
9 const userId: string = "user-5e6f7g8h";
10 const anonUserId: string = "anon-1a2b3c4d";
11 const result: UnblockSuccess = await unBlockUserFromComment(
12 tenantId,
13 commentId,
14 params,
15 userId,
16 anonUserId
17 );
18 console.log(result);
19})();
20

unFlagComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: FlagCommentResponse

Ejemplo

Ejemplo de unFlagComment
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt-20230915-001";
5 const userId: string = "user-42";
6
7 const unflaggedByUser: FlagCommentResponse = await unFlagComment(tenantId, commentId, userId);
8 const unflaggedByAnon: FlagCommentResponse = await unFlagComment(tenantId, commentId, undefined, "anon-xyz");
9
10 console.log(unflaggedByUser, unflaggedByAnon);
11}
12

unLockComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de unLockComment
Copy Copy
1
2async function demoUnlock() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5 const broadcastId: string = "brd_987654321";
6 const ssoToken: string = "sso_abcdef123456";
7
8 const resultWithoutSso: APIEmptyResponse = await unLockComment(tenantId, commentId, broadcastId);
9 const resultWithSso: APIEmptyResponse = await unLockComment(tenantId, commentId, broadcastId, ssoToken);
10}
11

unPinComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Respuesta

Devuelve: ChangeCommentPinStatusResponse

Ejemplo

Ejemplo de unPinComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-20230915-001";
5 const broadcastId: string = "broadcast-2023-09-15";
6 const ssoToken: string = "sso-abc123";
7
8 const result: ChangeCommentPinStatusResponse = await unPinComment(tenantId, commentId, broadcastId, ssoToken);
9 const resultWithoutSso: ChangeCommentPinStatusResponse = await unPinComment(tenantId, commentId, broadcastId);
10})();
11

updateComment Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
idstringSí
updatableCommentParamsUpdatableCommentParamsSí
contextUserIdstringNo
doSpamCheckbooleanNo
isLivebooleanNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de updateComment
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3const commentId: string = "comment-9876543210";
4const updateParams: UpdatableCommentParams = {
5 content: "Edited comment content",
6 isApproved: true
7};
8
9const contextUserId: string = "user-11223344";
10const doSpamCheck: boolean = true;
11const isLive: boolean = false;
12
13const response: APIEmptyResponse = await updateComment(
14 tenantId,
15 commentId,
16 updateParams,
17 contextUserId,
18 doSpamCheck,
19 isLive
20);
21

voteComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
urlIdstringSí
broadcastIdstringSí
voteBodyParamsVoteBodyParamsSí
sessionIdstringNo
ssostringNo

Respuesta

Devuelve: VoteResponse

Ejemplo

Ejemplo voteComment
Copy Copy
1
2async function runVote() {
3 const tenantId: string = 'tenant_001';
4 const commentId: string = 'cmt_987654';
5 const urlId: string = 'url_12345';
6 const broadcastId: string = 'brd_56789';
7 const voteBody: VoteBodyParams = { direction: 'up' };
8 const sessionId: string = 'sess_abc123';
9 const sso: string = 'sso_token_xyz';
10 const response: VoteResponse = await voteComment(
11 tenantId,
12 commentId,
13 urlId,
14 broadcastId,
15 voteBody,
16 sessionId,
17 sso
18 );
19 console.log(response);
20}
21runVote();
22

getCommentsForUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
userIdstringNo
directionSortDirectionsNo
repliesToUserIdstringNo
pagenumberNo
includei10nbooleanNo
localestringNo
isCrawlerbooleanNo

Respuesta

Devuelve: GetCommentsForUserResponse

Ejemplo

Ejemplo getCommentsForUser
Copy Copy
1
2const userId: string = '550e8400-e29b-41d4-a716-446655440000';
3const direction: SortDirections = SortDirections.Descending;
4const page: number = 3;
5const includei10n: boolean = true;
6const locale: string = 'fr-FR';
7const isCrawler: boolean = false;
8
9const commentsResponse: GetCommentsForUserResponse = await getCommentsForUser(
10 userId,
11 direction,
12 undefined,
13 page,
14 includei10n,
15 locale,
16 isCrawler
17);
18

addDomainConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
addDomainConfigParamsAddDomainConfigParamsSí

Respuesta

Devuelve: AddDomainConfigResponse

Ejemplo

addDomainConfig Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const config: AddDomainConfigParams = {
5 domain: 'myblog.example.com',
6 enabled: true,
7 // la descripción es opcional y se omite aquí
8 };
9 const response: AddDomainConfigResponse = await addDomainConfig(tenantId, config);
10 console.log(response);
11})();
12

deleteDomainConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
domainstringSí

Respuesta

Devuelve: DeleteDomainConfigResponse

Ejemplo

Ejemplo deleteDomainConfig
Copy Copy
1
2async function runExample() {
3 const tenantId: string = 'acme-corp';
4 const domain: string = 'blog.acme.com';
5 const response: DeleteDomainConfigResponse = await deleteDomainConfig(tenantId, domain);
6 console.log(response);
7}
8runExample();
9

getDomainConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
domainstringYes

Respuesta

Devuelve: GetDomainConfigResponse

Ejemplo

Ejemplo getDomainConfig
Copy Copy
1
2async function main() {
3 const tenantId: string = "acme-corp-123";
4 const domain: string = "blog.acme.com";
5 const config: GetDomainConfigResponse = await getDomainConfig(tenantId, domain);
6 console.log(config);
7}
8main();
9

getDomainConfigs Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí

Respuesta

Devuelve: GetDomainConfigsResponse

Ejemplo

Ejemplo getDomainConfigs
Copy Copy
1
2async function fetchDomainConfigs(): Promise<void> {
3 const tenantId: string = "acme-corp-567";
4 const configs: GetDomainConfigsResponse = await getDomainConfigs(tenantId);
5 console.log(configs);
6}
7

patchDomainConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Respuesta

Devuelve: PatchDomainConfigResponse

Ejemplo

Ejemplo de patchDomainConfig
Copy Copy
1
2async function updateDomainConfig() {
3 const tenantId: string = "tenant_98765";
4 const domainToUpdate: string = "forum.mycompany.com";
5 const patchParams: PatchDomainConfigParams = {
6 enableComments: true,
7 moderationLevel: "strict",
8 allowAnonymous: false, // parámetro opcional demostrado
9 };
10 const response: PatchDomainConfigResponse = await patchDomainConfig(tenantId, domainToUpdate, patchParams);
11 console.log(response);
12}
13
14updateDomainConfig();
15

putDomainConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
domainToUpdatestringYes
updateDomainConfigParamsUpdateDomainConfigParamsYes

Response

Returns: PutDomainConfigResponse

Example

Ejemplo putDomainConfig
Copy Copy
1
2async function runExample() {
3 const tenantId: string = 'tenant-9f8c7b1a';
4 const domainToUpdate: string = 'comments.mywebsite.org';
5 const updateDomainConfigParams: UpdateDomainConfigParams = {
6 enableModeration: true,
7 // campo opcional omitido, por ejemplo, maxCommentLength?: number
8 };
9 const result: PutDomainConfigResponse = await putDomainConfig(
10 tenantId,
11 domainToUpdate,
12 updateDomainConfigParams,
13 );
14 console.log(result);
15}
16runExample();
17

createEmailTemplate Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createEmailTemplateBodyCreateEmailTemplateBodySí

Respuesta

Devuelve: CreateEmailTemplateResponse

Ejemplo

Ejemplo createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const templateBody: CreateEmailTemplateBody = {
5 name: "Weekly Summary",
6 subject: "Your weekly activity report",
7 // campo opcional
8 replyTo: "no-reply@myapp.com",
9 htmlContent: "<p>Hello \{{userName}}, here is your summary...</p>"
10};
11
12const response: CreateEmailTemplateResponse = await createEmailTemplate(tenantId, templateBody);
13
14console.log(response.template.id);
15

deleteEmailTemplate Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo deleteEmailTemplate
Copy Copy
1
2interface APIStatus {
3 code: number;
4 message: string;
5}
6
7interface APIEmptyResponse {
8 status?: APIStatus;
9}
10
11(async () => {
12 const tenantId: string = "tenant_12345";
13 const templateId: string = "template_987";
14
15 const result: APIEmptyResponse = await deleteEmailTemplate(tenantId, templateId);
16})();
17

deleteEmailTemplateRenderError Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
errorIdstringSí

Response

Devuelve: APIEmptyResponse

Example

deleteEmailTemplateRenderError Ejemplo
Copy Copy
1
2async function removeRenderError() {
3 const tenantId: string = "acme-corp-tenant";
4 const templateId: string = "welcome-email-template";
5 const errorId: string = "render-err-20230915";
6
7 const result: APIEmptyResponse = await deleteEmailTemplateRenderError(tenantId, templateId, errorId);
8}
9

getEmailTemplate Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetEmailTemplateResponse

Ejemplo

Ejemplo getEmailTemplate
Copy Copy
1
2async function fetchTemplate() {
3 const tenantId: string = "acme-corp-123";
4 const templateId: string = "welcome-email-456";
5 const response: GetEmailTemplateResponse = await getEmailTemplate(tenantId, templateId);
6 const status: APIStatus | undefined = response.status;
7 const customTemplate: CustomEmailTemplate | undefined = response.template;
8}
9

getEmailTemplateDefinitions Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes

Respuesta

Devuelve: GetEmailTemplateDefinitionsResponse

Ejemplo

Ejemplo getEmailTemplateDefinitions
Copy Copy
1
2async function fetchEmailTemplates() {
3 const tenantId: string = "acme-corp-456";
4 const result: GetEmailTemplateDefinitionsResponse = await getEmailTemplateDefinitions(tenantId);
5 const status: APIStatus = result.status;
6 const definitions: EmailTemplateDefinition[] = result.definitions ?? [];
7 console.log(`Status: ${status.code}, Templates: ${definitions.length}`);
8}
9

getEmailTemplateRenderErrors Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
skipnumberNo

Respuesta

Devuelve: GetEmailTemplateRenderErrorsResponse

Ejemplo

getEmailTemplateRenderErrors Ejemplo
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_9876";
5
6 const resultWithSkip: GetEmailTemplateRenderErrorsResponse = await getEmailTemplateRenderErrors(tenantId, templateId, 10);
7 const resultWithoutSkip: GetEmailTemplateRenderErrorsResponse = await getEmailTemplateRenderErrors(tenantId, templateId);
8
9 console.log(resultWithSkip, resultWithoutSkip);
10}
11demo();
12

getEmailTemplates Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
skipnumberNo

Respuesta

Devuelve: GetEmailTemplatesResponse

Ejemplo

Ejemplo de getEmailTemplates
Copy Copy
1
2async function fetchEmailTemplates() {
3 const tenantId: string = "acme-corp-123";
4 const skip: number = 20;
5 const templatesWithSkip: GetEmailTemplatesResponse = await getEmailTemplates(tenantId, skip);
6 const templatesWithoutSkip: GetEmailTemplatesResponse = await getEmailTemplates(tenantId);
7}
8

renderEmailTemplate Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
renderEmailTemplateBodyRenderEmailTemplateBodySí
localestringNo

Respuesta

Devuelve: RenderEmailTemplateResponse

Ejemplo

renderEmailTemplate Ejemplo
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3
4const templateBody: RenderEmailTemplateBody = {
5 templateId: "welcome-email",
6 variables: {
7 userName: "Jane Doe",
8 signupDate: "2024-04-01"
9 }
10};
11
12const locale: string = "en-US";
13
14(async () => {
15 const rendered: RenderEmailTemplateResponse = await renderEmailTemplate(
16 tenantId,
17 templateBody,
18 locale
19 );
20 console.log(rendered);
21})();
22

updateEmailTemplate Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
updateEmailTemplateBodyUpdateEmailTemplateBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de updateEmailTemplate
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_67890";
5
6 const updateBody: UpdateEmailTemplateBody = {
7 subject: "New Comment Notification",
8 // htmlContent es opcional y omitido
9 status: { code: 200, message: "Active" } // APIStatus
10 };
11
12 const response: APIEmptyResponse = await updateEmailTemplate(tenantId, templateId, updateBody);
13 console.log(response);
14}
15

getEventLog Internal Link

solicitud
tenantId
urlId
userIdWS

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
userIdWSstringSí
startTimenumberSí
endTimenumberNo

Respuesta

Devuelve: GetEventLogResponse

Ejemplo

Ejemplo getEventLog
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "url_9876";
4const userIdWS: string = "user_abcde";
5const startTime: number = Date.now() - 86_400_000; // hace 24 horas
6const endTime: number = Date.now();
7
8const fullLog: GetEventLogResponse = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9const partialLog: GetEventLogResponse = await getEventLog(tenantId, urlId, userIdWS, startTime);
10

getGlobalEventLog Internal Link

solicitud tenantId urlId userIdWS

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
userIdWSstringSí
startTimenumberSí
endTimenumberNo

Respuesta

Devuelve: GetEventLogResponse

Ejemplo

Ejemplo de getGlobalEventLog
Copy Copy
1
2async function fetchEventLogs() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_9876";
5 const userIdWS: string = "user_ws_abcde";
6 const startTime: number = Date.now() - 24 * 60 * 60 * 1000; // hace 24 horas
7 const endTime: number = Date.now();
8
9 const logWithEnd: GetEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10 const logWithoutEnd: GetEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime);
11}
12

createFeedPost Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createFeedPostParamsCreateFeedPostParamsSí
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Respuesta

Devuelve: CreateFeedPostsResponse

Ejemplo

Ejemplo createFeedPost
Copy Copy
1
2(async () => {
3 const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
4 const broadcastId: string = "b1c2d3e4-5678-90ab-cdef-1234567890cd";
5 const isLive: boolean = true;
6 const doSpamCheck: boolean = false;
7 const skipDupCheck: boolean = true;
8
9 const mediaAsset: FeedPostMediaItemAsset = {
10 url: "https://cdn.example.com/photos/sunrise.jpg",
11 type: "image/jpeg"
12 };
13 const mediaItem: FeedPostMediaItem = {
14 asset: mediaAsset,
15 caption: "Sunrise over the mountains"
16 };
17 const linkItem: FeedPostLink = {
18 url: "https://blog.example.com/tech-trends-2024",
19 title: "Top Tech Trends for 2024"
20 };
21 const postParams: CreateFeedPostParams = {
22 text: "Excited to share the latest tech trends!",
23 media: [mediaItem],
24 link: linkItem
25 };
26
27 const response: CreateFeedPostsResponse = await createFeedPost(
28 tenantId,
29 postParams,
30 broadcastId,
31 isLive,
32 doSpamCheck,
33 skipDupCheck
34 );
35 console.log(response);
36})();
37

createFeedPostPublic Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createFeedPostParamsCreateFeedPostParamsSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: CreateFeedPostResponse

Ejemplo

createFeedPostPublic Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const mediaAsset: FeedPostMediaItemAsset = {
5 url: "https://cdn.example.com/image.jpg",
6 width: 800,
7 height: 600,
8 mimeType: "image/jpeg"
9};
10
11const mediaItem: FeedPostMediaItem = {
12 type: "image",
13 asset: mediaAsset,
14 caption: "Sunset over the hills"
15};
16
17const link: FeedPostLink = {
18 url: "https://example.com/blog/post",
19 title: "Exciting New Features",
20 description: "Read about our latest updates."
21};
22
23const createFeedPostParams: CreateFeedPostParams = {
24 content: "Check out our latest blog post!",
25 media: [mediaItem],
26 link: link,
27 visibility: "public"
28};
29
30const broadcastId: string = "broadcast_9876";
31const sso: string = "sso_token_abc123";
32
33const response: CreateFeedPostResponse = await createFeedPostPublic(
34 tenantId,
35 createFeedPostParams,
36 broadcastId,
37 sso
38);
39

deleteFeedPostPublic Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
postIdstringSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: DeleteFeedPostPublicResponse

Ejemplo

Ejemplo deleteFeedPostPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const postId: string = "post_98765";
5 const broadcastId: string = "broadcast_abcde";
6 const sso: string = "sso_token_xyz";
7
8 const responseWithOpts: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(
9 tenantId,
10 postId,
11 broadcastId,
12 sso
13 );
14
15 const responseWithoutOpts: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(
16 tenantId,
17 postId
18 );
19})();
20

getFeedPosts Internal Link

solicitud tenantId afterId

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
afterIdstringNo
limitnumberNo
tagsArrayNo

Respuesta

Devuelve: GetFeedPostsResponse

Ejemplo

Ejemplo getFeedPosts
Copy Copy
1
2async function loadFeed() {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const afterId: string = 'post_987654321';
5 const limit: number = 25;
6 const tags: string[] = ['technology', 'innovation'];
7 const response: GetFeedPostsResponse = await getFeedPosts(tenantId, afterId, limit, tags);
8 console.log(response);
9}
10loadFeed();
11

getFeedPostsPublic Internal Link

req tenantId afterId

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
afterIdstringNo
limitnumberNo
tagsArrayNo
ssostringNo
isCrawlerbooleanNo
includeUserInfobooleanNo

Respuesta

Devuelve: PublicFeedPostsResponse

Ejemplo

Ejemplo getFeedPostsPublic
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const afterId: string = "post-20230915-abc123";
4const limit: number = 15;
5const tags: string[] = ["technology", "innovation"];
6const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NSJ9.s3cr3tSignature";
7const isCrawler: boolean = false;
8const includeUserInfo: boolean = true;
9
10const feedResponse: PublicFeedPostsResponse = await getFeedPostsPublic(
11 tenantId,
12 afterId,
13 limit,
14 tags,
15 sso,
16 isCrawler,
17 includeUserInfo
18);
19

getFeedPostsStats Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
postIdsArraySí
ssostringNo

Respuesta

Devuelve: FeedPostsStatsResponse

Ejemplo

Ejemplo getFeedPostsStats
Copy Copy
1
2const tenantId: string = "tenant-9f8b7c6d";
3const postIds: string[] = ["post-1a2b3c", "post-4d5e6f", "post-7g8h9i"];
4const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
5const feedStats: FeedPostsStatsResponse = await getFeedPostsStats(tenantId, postIds, ssoToken);
6

getUserReactsPublic Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
postIdsArrayNo
ssostringNo

Respuesta

Devuelve: UserReactsResponse

Ejemplo

Ejemplo getUserReactsPublic
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const postIds: string[] = ["post_abc", "post_def"];
4const ssoToken: string = "sso_token_987";
5
6const fullResponse: UserReactsResponse = await getUserReactsPublic(tenantId, postIds, ssoToken);
7const minimalResponse: UserReactsResponse = await getUserReactsPublic(tenantId);
8

reactFeedPostPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
postIdstringSí
reactBodyParamsReactBodyParamsSí
isUndobooleanNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: ReactFeedPostResponse

Ejemplo

Ejemplo reactFeedPostPublic
Copy Copy
1
2async function demoReact() {
3 const tenantId: string = "tenant_12345";
4 const postId: string = "post_98765";
5 const reactBodyParams: ReactBodyParams = {
6 type: "like",
7 userId: "user_abcde"
8 };
9 const response: ReactFeedPostResponse = await reactFeedPostPublic(
10 tenantId,
11 postId,
12 reactBodyParams,
13 true,
14 "broadcast_001",
15 "sso_token_xyz"
16 );
17}
18

getTranslations Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
feedPostFeedPostYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

updateFeedPost Ejemplo
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "tenant_12345";
4 const postId: string = "post_98765";
5
6 const mediaAsset: FeedPostMediaItemAsset = {
7 url: "https://cdn.example.com/image.jpg",
8 width: 800,
9 height: 600,
10 mimeType: "image/jpeg"
11 };
12
13 const mediaItem: FeedPostMediaItem = {
14 type: "image",
15 asset: mediaAsset,
16 caption: "Sunrise over the hills"
17 };
18
19 const link: FeedPostLink = {
20 url: "https://example.com/blog",
21 title: "Latest Blog Post",
22 description: "Insights on recent developments"
23 };
24
25 const feedPost: FeedPost = {
26 title: "Daily Highlights",
27 content: "Check out today’s top stories.",
28 mediaItems: [mediaItem], // opcional
29 links: [link] // opcional
30 };
31
32 const response: APIEmptyResponse = await updateFeedPost(tenantId, postId, feedPost);
33 console.log(response);
34}
35
36runUpdate();
37

updateFeedPostPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
postIdstringSí
updateFeedPostParamsUpdateFeedPostParamsSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: CreateFeedPostResponse

Ejemplo

Ejemplo updateFeedPostPublic
Copy Copy
1
2// Definir parámetros
3const tenantId: string = "tenant_12345";
4const postId: string = "post_98765";
5
6const mediaAsset: FeedPostMediaItemAsset = {
7 url: "https://cdn.example.com/image.jpg",
8 width: 800,
9 height: 600,
10 mimeType: "image/jpeg"
11};
12
13const mediaItem: FeedPostMediaItem = {
14 type: "image",
15 asset: mediaAsset,
16 caption: "A beautiful scenery"
17};
18
19const link: FeedPostLink = {
20 url: "https://example.com/article",
21 title: "Interesting Article",
22 description: "An article about TypeScript best practices."
23};
24
25const updateParams: UpdateFeedPostParams = {
26 content: "Updated post content with new media and link.",
27 media: [mediaItem],
28 link: link,
29 isPublic: true
30};
31
32const broadcastId: string = "broadcast_001";
33const sso: string = "sso_token_abc123";
34
35const response: CreateFeedPostResponse = await updateFeedPostPublic(
36 tenantId,
37 postId,
38 updateParams,
39 broadcastId,
40 sso
41);
42

flagCommentPublic Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
isFlaggedbooleanYes
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

flagCommentPublic Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_42";
3const commentId: string = "comment_1001";
4const isFlagged: boolean = true;
5const sso: string = "sso_user_5678";
6
7const resultWithSso: APIEmptyResponse = await flagCommentPublic(tenantId, commentId, isFlagged, sso);
8const resultWithoutSso: APIEmptyResponse = await flagCommentPublic(tenantId, commentId, false);
9

getGifLarge Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
largeInternalURLSanitizedstringSí

Respuesta

Devuelve: GifGetLargeResponse

Ejemplo

Ejemplo getGifLarge
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
4 const largeInternalURLSanitized: string = "https://cdn.fastcomments.com/gifs/large/abc123.gif";
5 const response: GifGetLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6 console.log(response);
7}
8

getGifsSearch Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
searchstringSí
localestringNo
ratingstringNo
pagenumberNo

Respuesta

Devuelve: GetGifsSearchResponse

Ejemplo

Ejemplo getGifsSearch
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9876";
4 const search: string = "celebration fireworks";
5 const locale: string = "fr-FR";
6 const rating: string = "g";
7 const page: number = 1;
8
9 const fullResult: GetGifsSearchResponse = await getGifsSearch(tenantId, search, locale, rating, page);
10 const minimalResult: GetGifsSearchResponse = await getGifsSearch(tenantId, "dog memes");
11}
12
13runExample();
14

getGifsTrending Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
localestringNo
ratingstringNo
pagenumberNo

Respuesta

Devuelve: GetGifsTrendingResponse

Ejemplo

Ejemplo getGifsTrending
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const locale: string = "en-US";
5 const rating: string = "PG-13";
6 const page: number = 1;
7
8 const trendingAll: GetGifsTrendingResponse = await getGifsTrending(tenantId, locale, rating, page);
9 console.log(trendingAll);
10
11 // Usando solo el parámetro requerido
12 const trendingMinimal: GetGifsTrendingResponse = await getGifsTrending(tenantId);
13 console.log(trendingMinimal);
14}
15
16runExample();
17

addHashTag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createHashTagBodyCreateHashTagBodyNo

Respuesta

Devuelve: CreateHashTagResponse

Ejemplo

Ejemplo addHashTag
Copy Copy
1
2const tenantId: string = "c3f5e8b2-9d4a-4f6a-8b2c-1a2b3c4d5e6f";
3
4const tagPayload: CreateHashTagBody = {
5 tag: "typescript",
6 description: "Discussions about TypeScript"
7};
8
9const responseWithBody: CreateHashTagResponse = await addHashTag(tenantId, tagPayload);
10const responseWithoutBody: CreateHashTagResponse = await addHashTag(tenantId);
11

addHashTagsBulk Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

Respuesta

Devuelve: BulkCreateHashTagsResponse

Ejemplo

Ejemplo addHashTagsBulk
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const tags: BulkCreateHashTagsBodyTagsInner[] = [
5 { name: "typescript", color: "#3178c6" },
6 { name: "fastcomments", color: "#ff6600" }
7];
8
9const bulkBody: BulkCreateHashTagsBody = { tags };
10
11const resultWithBody: BulkCreateHashTagsResponse = await addHashTagsBulk(tenantId, bulkBody);
12
13const resultWithoutBody: BulkCreateHashTagsResponse = await addHashTagsBulk(tenantId);
14

deleteHashTag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
tagstringSí
deleteHashTagRequestBodyDeleteHashTagRequestBodyNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo deleteHashTag
Copy Copy
1
2const tenantId: string = "tenant_42";
3const tag: string = "high-priority";
4
5const requestBody: DeleteHashTagRequestBody = {
6 // rellenar campos según sea necesario
7};
8
9const resultWithBody: APIEmptyResponse = await deleteHashTag(tenantId, tag, requestBody);
10const resultWithoutBody: APIEmptyResponse = await deleteHashTag(tenantId, tag);
11

getHashTags Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
pagenumberNo

Respuesta

Devuelve: GetHashTagsResponse

Ejemplo

Ejemplo de getHashTags
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const page: number = 1;
5 const result: GetHashTagsResponse = await getHashTags(tenantId, page);
6 console.log(result);
7})();
8

patchHashTag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
tagstringSí
updateHashTagBodyUpdateHashTagBodyNo

Respuesta

Devuelve: UpdateHashTagResponse

Ejemplo

Ejemplo patchHashTag
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const tag: string = "news";
5
6 // Llamada sin cuerpo opcional
7 const responseWithoutBody: UpdateHashTagResponse = await patchHashTag(tenantId, tag);
8
9 // Preparar cuerpo para la actualización
10 const updateBody: UpdateHashTagBody = {
11 name: "Latest News",
12 description: "Tag for the most recent news articles"
13 };
14
15 const responseWithBody: UpdateHashTagResponse = await patchHashTag(tenantId, tag, updateBody);
16})();
17

getMe Internal Link


Identifica la credencial en uso: el inquilino al que pertenece y, para tokens OAuth, el usuario que la autorizó.
Las integraciones usan esto para probar una conexión y etiquetarla.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí

Respuesta

Devuelve: GetMeResponse

Ejemplo

Ejemplo getMe
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant";
4 const me: GetMeResponse = await getMe(tenantId);
5 const authType: MeAuthType = me.auth.type;
6 const scopes: OAuthScope[] = me.auth.scopes ?? [];
7 const status: APIStatus = me.status;
8})();
9

deleteModerationVote Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
voteIdstringSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: VoteDeleteResponse

Ejemplo

Ejemplo de deleteModerationVote
Copy Copy
1
2async function runDeleteModerationVote(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6a";
4 const commentId: string = "comment_4d3e2f1a";
5 const voteId: string = "vote_12345abcde";
6 const broadcastId: string | undefined = "broadcast_2023_09_15";
7 const sso: string | undefined = "sso_user_7890token";
8
9 const result: VoteDeleteResponse = await deleteModerationVote(
10 tenantId,
11 commentId,
12 voteId,
13 broadcastId,
14 sso
15 );
16
17 console.log(result);
18}
19

getApiComments Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
pagenumberNo
countnumberNo
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
sortsstringNo
demobooleanNo
ssostringNo

Respuesta

Devuelve: ModerationAPIGetCommentsResponse

Ejemplo

Ejemplo getApiComments
Copy Copy
1
2async function fetchComments(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const page: number = 2;
5 const count: number = 20;
6 const textSearch: string = "typescript";
7 const byIPFromComment: string = "192.168.1.100";
8 const filters: string = "spam,offensive";
9 const searchFilters: string = "user:john";
10 const sorts: string = "date_desc";
11 const demo: boolean = true;
12 const sso: string = "sso_token_abc";
13
14 const response: ModerationAPIGetCommentsResponse = await getApiComments(
15 tenantId,
16 page,
17 count,
18 textSearch,
19 byIPFromComment,
20 filters,
21 searchFilters,
22 sorts,
23 demo,
24 sso
25 );
26}
27
28fetchComments();
29

getApiExportStatus Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
batchJobIdstringNo
ssostringNo

Respuesta

Devuelve: ModerationExportStatusResponse

Ejemplo

Ejemplo getApiExportStatus
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_12345";
4 const batchJobId: string = "job_98765";
5 const ssoToken: string = "sso_abcde12345";
6
7 const statusOnlyTenant: ModerationExportStatusResponse = await getApiExportStatus(tenantId);
8 const statusWithBatch: ModerationExportStatusResponse = await getApiExportStatus(tenantId, batchJobId);
9 const statusFull: ModerationExportStatusResponse = await getApiExportStatus(tenantId, batchJobId, ssoToken);
10}
11run();
12

getApiIds Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
afterIdstringNo
demobooleanNo
ssostringNo

Respuesta

Devuelve: ModerationAPIGetCommentIdsResponse

Ejemplo

Ejemplo getApiIds
Copy Copy
1
2async function run(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const textSearch: string = "offensive language";
5 const byIPFromComment: string = "203.0.113.45";
6 const filters: string = "status:unmoderated";
7 const searchFilters: string = "author:alice";
8 const afterId: string = "cmt_00123";
9 const demo: boolean = true;
10 const sso: string = "sso_9f8e7d6c";
11
12 const fullResult: ModerationAPIGetCommentIdsResponse = await getApiIds(
13 tenantId,
14 textSearch,
15 byIPFromComment,
16 filters,
17 searchFilters,
18 afterId,
19 demo,
20 sso
21 );
22
23 const minimalResult: ModerationAPIGetCommentIdsResponse = await getApiIds(tenantId);
24}
25

getBanUsersFromComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
ssostringNo

Respuesta

Devuelve: GetBannedUsersFromCommentResponse

Ejemplo

Ejemplo getBanUsersFromComment
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c";
3const commentId: string = "comment_a1b2c3";
4const ssoToken: string = "sso_abc123";
5
6const bannedUsers: GetBannedUsersFromCommentResponse = await getBanUsersFromComment(tenantId, commentId, ssoToken);
7const bannedUsersNoSso: GetBannedUsersFromCommentResponse = await getBanUsersFromComment(tenantId, commentId);
8

getCommentBanStatus Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
ssostringNo

Respuesta

Devuelve: GetCommentBanStatusResponse

Ejemplo

Ejemplo getCommentBanStatus
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_987654";
5 const ssoToken: string = "sso_user_abc";
6
7 const statusWithSso: GetCommentBanStatusResponse = await getCommentBanStatus(tenantId, commentId, ssoToken);
8 const statusWithoutSso: GetCommentBanStatusResponse = await getCommentBanStatus(tenantId, commentId);
9})();
10

getCommentChildren Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
ssostringNo

Respuesta

Devuelve: ModerationAPIChildCommentsResponse

Ejemplo

Ejemplo de getCommentChildren
Copy Copy
1
2async function fetchChildren() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const ssoToken: string = "sso_user_abc123";
6
7 const responseWithSSO: ModerationAPIChildCommentsResponse = await getCommentChildren(tenantId, commentId, ssoToken);
8 const responseWithoutSSO: ModerationAPIChildCommentsResponse = await getCommentChildren(tenantId, commentId);
9}
10
11fetchChildren();
12

getCount Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
textSearchstringNo
byIPFromCommentstringNo
filterstringNo
searchFiltersstringNo
demobooleanNo
ssostringNo

Respuesta

Devuelve: ModerationAPICountCommentsResponse

Ejemplo

Ejemplo getCount
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const basicCount: ModerationAPICountCommentsResponse = await getCount(tenantId);
5
6const detailedCount: ModerationAPICountCommentsResponse = await getCount(
7 tenantId,
8 "spam",
9 "192.168.1.100",
10 "status:pending",
11 "user:john",
12 true,
13 "sso_token_abc"
14);
15

getCounts Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: GetBannedUsersCountResponse

Ejemplo

Ejemplo getCounts
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_9876";
4 const ssoToken: string = "sso_user_42";
5
6 const resultWithOnlyTenant: GetBannedUsersCountResponse = await getCounts(tenantId);
7 const resultWithBoth: GetBannedUsersCountResponse = await getCounts(tenantId, ssoToken);
8}
9
10run();
11

getLogs Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
ssostringNo

Respuesta

Devuelve: ModerationAPIGetLogsResponse

Ejemplo

Ejemplo getLogs
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const commentId: string = "cmt_4567890";
5 const ssoToken: string = "sso_abcdef123456";
6
7 const logsWithSso: ModerationAPIGetLogsResponse = await getLogs(tenantId, commentId, ssoToken);
8 const logsWithoutSso: ModerationAPIGetLogsResponse = await getLogs(tenantId, commentId);
9})();
10

getManualBadges Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: GetTenantManualBadgesResponse

Ejemplo

Ejemplo getManualBadges
Copy Copy
1
2async function fetchBadges() {
3 const tenantId: string = "tenant-987654321";
4 const ssoToken: string = "sso-token-abc123";
5
6 const badgesWithSso: GetTenantManualBadgesResponse = await getManualBadges(tenantId, ssoToken);
7 const badgesWithoutSso: GetTenantManualBadgesResponse = await getManualBadges(tenantId);
8}
9

getManualBadgesForUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
badgesUserIdstringNo
commentIdstringNo
ssostringNo

Respuesta

Devuelve: GetUserManualBadgesResponse

Ejemplo

Ejemplo getManualBadgesForUser
Copy Copy
1
2async () => {
3 const tenantId: string = "tenant_12345";
4 const badgesUserId: string | undefined = "user_98765";
5 const commentId: string | undefined = "comment_abcde";
6 const sso: string | undefined = "sso_token_xyz";
7
8 const basicResponse: GetUserManualBadgesResponse = await getManualBadgesForUser(tenantId);
9 const fullResponse: GetUserManualBadgesResponse = await getManualBadgesForUser(
10 tenantId,
11 badgesUserId,
12 commentId,
13 sso
14 );
15
16 console.log(basicResponse, fullResponse);
17}();
18

getModerationComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
includeEmailbooleanNo
includeIPbooleanNo
ssostringNo

Respuesta

Devuelve: ModerationAPICommentResponse

Ejemplo

Ejemplo de getModerationComment
Copy Copy
1
2async function fetchComments() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5
6 // Llamada con solo los parámetros requeridos
7 const basicResponse: ModerationAPICommentResponse = await getModerationComment(tenantId, commentId);
8
9 // Llamada con parámetros opcionales
10 const includeEmail: boolean = true;
11 const includeIP: boolean = false;
12 const sso: string = "sso-token-abc123";
13 const detailedResponse: ModerationAPICommentResponse = await getModerationComment(
14 tenantId,
15 commentId,
16 includeEmail,
17 includeIP,
18 sso
19 );
20}
21

getModerationCommentText Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
ssostringNo

Respuesta

Returns: GetCommentTextResponse

Ejemplo

Ejemplo getModerationCommentText
Copy Copy
1
2async function fetchComment() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const ssoToken: string = "sso_abcde12345";
6
7 const commentWithoutSso: GetCommentTextResponse = await getModerationCommentText(tenantId, commentId);
8 const commentWithSso: GetCommentTextResponse = await getModerationCommentText(tenantId, commentId, ssoToken);
9}
10
11fetchComment();
12

getPreBanSummary Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
ssostringNo

Respuesta

Devuelve: PreBanSummary

Ejemplo

Ejemplo getPreBanSummary
Copy Copy
1
2async function fetchSummary(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const includeByUserIdAndEmail: boolean = true;
6 const includeByIP: boolean = false;
7 const includeByEmailDomain: boolean = true;
8 const sso: string = "sso_token_abc";
9
10 const summary: PreBanSummary = await getPreBanSummary(
11 tenantId,
12 commentId,
13 includeByUserIdAndEmail,
14 includeByIP,
15 includeByEmailDomain,
16 sso
17 );
18
19 console.log(summary);
20}
21
22fetchSummary();
23

getSearchCommentsSummary Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
valuestringNo
filtersstringNo
searchFiltersstringNo
ssostringNo

Respuesta

Devuelve: ModerationCommentSearchResponse

Ejemplo

Ejemplo de getSearchCommentsSummary
Copy Copy
1
2async function runSearch() {
3 const tenantId: string = "tenant_12345";
4 const value: string = "spam";
5 const filters: string = "status:pending";
6 const searchFilters: string = "author:john";
7 const sso: string = "sso_token_abc";
8
9 const result: ModerationCommentSearchResponse = await getSearchCommentsSummary(
10 tenantId,
11 value,
12 filters,
13 searchFilters,
14 sso
15 );
16
17 console.log(result);
18}
19
20runSearch();
21

getSearchPages Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
valuestringNo
ssostringNo

Respuesta

Devuelve: ModerationPageSearchResponse

Ejemplo

Ejemplo getSearchPages
Copy Copy
1
2const tenantId: string = "acme-corp-123";
3const searchValue: string = "spam";
4const ssoToken: string = "sso-abc123def456";
5
6const result1: ModerationPageSearchResponse = await getSearchPages(tenantId);
7const result2: ModerationPageSearchResponse = await getSearchPages(tenantId, searchValue);
8const result3: ModerationPageSearchResponse = await getSearchPages(tenantId, searchValue, ssoToken);
9

getSearchSites Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
valuestringNo
ssostringNo

Respuesta

Devuelve: ModerationSiteSearchResponse

Ejemplo

Ejemplo getSearchSites
Copy Copy
1
2async function runSearches(): Promise<void> {
3 const tenantId: string = "tenant-987654";
4 const query: string = "offensive content";
5 const ssoToken: string = "sso-token-xyz";
6
7 const fullResult: ModerationSiteSearchResponse = await getSearchSites(tenantId, query, ssoToken);
8 const minimalResult: ModerationSiteSearchResponse = await getSearchSites(tenantId);
9}
10
11runSearches();
12

getSearchSuggest Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
textSearchstringNo
ssostringNo

Respuesta

Devuelve: ModerationSuggestResponse

Ejemplo

Ejemplo getSearchSuggest
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const textSearch: string = "harassment";
5 const sso: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
6 const suggestResponse: ModerationSuggestResponse = await getSearchSuggest(tenantId, textSearch, sso);
7 const minimalResponse: ModerationSuggestResponse = await getSearchSuggest(tenantId);
8})();
9

getSearchUsers Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
valuestringNo
ssostringNo

Respuesta

Devuelve: ModerationUserSearchResponse

Ejemplo

Ejemplo getSearchUsers
Copy Copy
1
2async function runSearch() {
3 const tenantId: string = "tenant-9876";
4 const emailFragment: string = "jane";
5 const ssoToken: string = "sso-token-456";
6
7 const resultWithAll: ModerationUserSearchResponse = await getSearchUsers(tenantId, emailFragment, ssoToken);
8 const resultWithTenantOnly: ModerationUserSearchResponse = await getSearchUsers(tenantId);
9}
10

getTrustFactor Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
userIdstringNo
ssostringNo

Respuesta

Devuelve: GetUserTrustFactorResponse

Ejemplo

Ejemplo getTrustFactor
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_98765";
5 const sso: string = "sso_token_abcde";
6
7 const trustFactor: GetUserTrustFactorResponse = await getTrustFactor(tenantId);
8 const trustFactorWithUser: GetUserTrustFactorResponse = await getTrustFactor(tenantId, userId);
9 const trustFactorFull: GetUserTrustFactorResponse = await getTrustFactor(tenantId, userId, sso);
10}
11

getUserBanPreference Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: APIModerateGetUserBanPreferencesResponse

Ejemplo

getUserBanPreference Ejemplo
Copy Copy
1
2async function demoGetUserBanPreference() {
3 const tenantId: string = "tenant_987654321";
4 const ssoToken: string = "sso_user_abc123xyz";
5
6 const responseWithSso: APIModerateGetUserBanPreferencesResponse = await getUserBanPreference(tenantId, ssoToken);
7 const responseWithoutSso: APIModerateGetUserBanPreferencesResponse = await getUserBanPreference(tenantId);
8}
9

getUserInternalProfile Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringNo
ssostringNo

Respuesta

Devuelve: GetUserInternalProfileResponse

Ejemplo

Ejemplo getUserInternalProfile
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_9876";
5 const ssoToken: string = "sso_abcde12345";
6
7 const profileOnly: GetUserInternalProfileResponse = await getUserInternalProfile(tenantId);
8 const profileWithComment: GetUserInternalProfileResponse = await getUserInternalProfile(tenantId, commentId);
9 const fullProfile: GetUserInternalProfileResponse = await getUserInternalProfile(tenantId, commentId, ssoToken);
10}
11
12demo();
13

postAdjustCommentVotes Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
adjustCommentVotesParamsAdjustCommentVotesParamsSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: AdjustVotesResponse

Ejemplo

Ejemplo de postAdjustCommentVotes
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_987654321";
4const adjustParams: AdjustCommentVotesParams = { voteDelta: 1 };
5const broadcastId: string = "brd_112233";
6const sso: string = "sso-token-xyz";
7
8const result: AdjustVotesResponse = await postAdjustCommentVotes(
9 tenantId,
10 commentId,
11 adjustParams,
12 broadcastId,
13 sso
14);
15

postApiExport Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
sortsstringNo
ssostringNo

Respuesta

Devuelve: ModerationExportResponse

Ejemplo

Ejemplo postApiExport
Copy Copy
1
2async function runExport() {
3 const tenantId: string = "c9f1e2b4-8a6d-4f3a-9d2e-5b6c7d8e9f0a";
4 const textSearch: string = "spam";
5 const byIPFromComment: string = "203.0.113.45";
6 const filters: string = "status:pending";
7 const searchFilters: string = "createdAt>2023-01-01";
8 const sorts: string = "createdAt:desc";
9 const sso: string = "sso-token-abc123";
10
11 const fullExport: ModerationExportResponse = await postApiExport(
12 tenantId,
13 textSearch,
14 byIPFromComment,
15 filters,
16 searchFilters,
17 sorts,
18 sso
19 );
20
21 const minimalExport: ModerationExportResponse = await postApiExport(tenantId);
22
23 console.log(fullExport, minimalExport);
24}
25runExport();
26

postBanUserFromComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
banEmailbooleanNo
banEmailDomainbooleanNo
banIPbooleanNo
deleteAllUsersCommentsbooleanNo
bannedUntilstringNo
isShadowBanbooleanNo
updateIdstringNo
banReasonstringNo
ssostringNo

Respuesta

Devuelve: BanUserFromCommentResult

Ejemplo

Ejemplo postBanUserFromComment
Copy Copy
1
2async function banUserExample(): Promise<void> {
3 const result: BanUserFromCommentResult = await postBanUserFromComment(
4 "tenant_42",
5 "comment_1001",
6 true, // banEmail
7 undefined, // banEmailDomain (omitido)
8 true, // banIP
9 false, // deleteAllUsersComments
10 "2025-01-01T00:00:00Z", // bannedUntil
11 true, // isShadowBan
12 undefined, // updateId (omitido)
13 "Harassment", // banReason
14 undefined // sso (omitido)
15 );
16
17 console.log(result);
18}
19

postBanUserUndo Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
banUserUndoParamsBanUserUndoParamsSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

postBanUserUndo Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_9876";
3
4const undoParams: BanUserUndoParams = {
5 userId: "user_12345",
6 // additional required fields can be added here
7};
8
9const resultWithoutSSO: APIEmptyResponse = await postBanUserUndo(tenantId, undoParams);
10
11const ssoToken: string = "sso_abcdef123456";
12
13const resultWithSSO: APIEmptyResponse = await postBanUserUndo(tenantId, undoParams, ssoToken);
14

postBulkPreBanSummary Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
bulkPreBanParamsBulkPreBanParamsSí
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
ssostringNo

Respuesta

Devuelve: BulkPreBanSummary

Ejemplo

Ejemplo de postBulkPreBanSummary
Copy Copy
1
2const tenantId: string = "c1f2e3d4-5678-90ab-cdef-1234567890ab";
3
4const bulkPreBanParams: BulkPreBanParams = {
5 userIds: ["user123"],
6 emails: ["spam@example.com"],
7 ips: ["192.0.2.1"],
8 emailDomains: ["example.com"]
9};
10
11const includeByUserIdAndEmail: boolean = true;
12const includeByIP: boolean = false;
13const includeByEmailDomain: boolean = true;
14const sso: string = "sso-token-abc123";
15
16const summary: BulkPreBanSummary = await postBulkPreBanSummary(
17 tenantId,
18 bulkPreBanParams,
19 includeByUserIdAndEmail,
20 includeByIP,
21 includeByEmailDomain,
22 sso
23);
24

postCommentsByIds Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentsByIdsParamsCommentsByIdsParamsYes
ssostringNo

Respuesta

Devuelve: ModerationAPIChildCommentsResponse

Ejemplo

Ejemplo postCommentsByIds
Copy Copy
1
2const tenantId: string = 'tenant-9f8b7c6d-1234-5678-90ab-cdef12345678';
3const commentsByIdsParams: CommentsByIdsParams = {
4 commentIds: ['comment-1', 'comment-2'],
5 includeUserBadges: true
6};
7const responseWithoutSso: ModerationAPIChildCommentsResponse = await postCommentsByIds(tenantId, commentsByIdsParams);
8const sso: string = 'sso-abc123def456';
9const responseWithSso: ModerationAPIChildCommentsResponse = await postCommentsByIds(tenantId, commentsByIdsParams, sso);
10

postFlagComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de postFlagComment
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5
6 // Solo parámetros requeridos
7 const result1: APIEmptyResponse = await postFlagComment(tenantId, commentId);
8
9 // Incluyendo parámetros opcionales
10 const broadcastId: string = "brd_54321";
11 const sso: string = "user@example.com";
12 const result2: APIEmptyResponse = await postFlagComment(tenantId, commentId, broadcastId, sso);
13
14 console.log(result1, result2);
15}
16runExample();
17

postRemoveComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: PostRemoveCommentApiResponse

Ejemplo

Ejemplo postRemoveComment
Copy Copy
1
2async function removeCommentExample() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_555";
6 const sso: string = "sso_token_abc";
7
8 const response: PostRemoveCommentApiResponse = await postRemoveComment(
9 tenantId,
10 commentId,
11 broadcastId,
12 sso
13 );
14 console.log(response);
15}
16
17removeCommentExample();
18

postRestoreDeletedComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de postRestoreDeletedComment
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4
5const resultRequired: APIEmptyResponse = await postRestoreDeletedComment(tenantId, commentId);
6
7const broadcastId: string = "brd_001";
8const sso: string = "sso_token_abc123";
9
10const resultAll: APIEmptyResponse = await postRestoreDeletedComment(
11 tenantId,
12 commentId,
13 broadcastId,
14 sso
15);
16

postSetCommentApprovalStatus Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
approvedbooleanNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: SetCommentApprovedResponse

Ejemplo

postSetCommentApprovalStatus Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_001";
4 const commentId: string = "comment_123";
5 const approved: boolean = false;
6 const broadcastId: string = "broadcast_456";
7 const sso: string = "sso_789";
8
9 const result: SetCommentApprovedResponse = await postSetCommentApprovalStatus(
10 tenantId,
11 commentId,
12 approved,
13 broadcastId,
14 sso
15 );
16
17 const minimalResult: SetCommentApprovedResponse = await postSetCommentApprovalStatus(
18 tenantId,
19 commentId
20 );
21})();
22

postSetCommentReviewStatus Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
reviewedbooleanNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

postSetCommentReviewStatus Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4const reviewed: boolean = true;
5const broadcastId: string = "brd_001";
6const sso: string = "sso_token_abc";
7
8const result: APIEmptyResponse = await postSetCommentReviewStatus(
9 tenantId,
10 commentId,
11 reviewed,
12 broadcastId,
13 sso
14);
15

postSetCommentSpamStatus Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
spambooleanNo
permNotSpambooleanNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de postSetCommentSpamStatus
Copy Copy
1
2const tenantId: string = "tenant_42";
3const commentId: string = "comment_1001";
4
5const spam: boolean = true;
6const permNotSpam: boolean = false;
7const broadcastId: string = "broadcast_2023";
8const sso: string = "sso_user_5678";
9
10const resultFull: APIEmptyResponse = await postSetCommentSpamStatus(
11 tenantId,
12 commentId,
13 spam,
14 permNotSpam,
15 broadcastId,
16 sso
17);
18
19const resultMinimal: APIEmptyResponse = await postSetCommentSpamStatus(
20 tenantId,
21 commentId
22);
23

postSetCommentText Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
setCommentTextParamsSetCommentTextParamsSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: SetCommentTextResponse

Ejemplo

postSetCommentText Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_9876";
4const setCommentTextParams: SetCommentTextParams = {
5 text: "Revised comment after user edit.",
6 format: "plain"
7};
8const broadcastId: string = "broadcast_2023_09";
9
10const response: SetCommentTextResponse = await postSetCommentText(
11 tenantId,
12 commentId,
13 setCommentTextParams,
14 broadcastId
15);
16
17console.log(response);
18

postUnFlagComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

postUnFlagComment Ejemplo
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "comment_98765";
5 const broadcastId: string = "broadcast_55555";
6 const sso: string = "sso_token_abcde";
7
8 const result1: APIEmptyResponse = await postUnFlagComment(tenantId, commentId);
9 const result2: APIEmptyResponse = await postUnFlagComment(tenantId, commentId, broadcastId, sso);
10}
11
12runExample();
13

postVote Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
directionstringNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: VoteResponse

Ejemplo

Ejemplo de postVote
Copy Copy
1
2async function runVoteExamples(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_1234567890";
5
6 // Llamada con solo los parámetros obligatorios
7 const simpleVote: VoteResponse = await postVote(tenantId, commentId);
8
9 // Llamada con los parámetros opcionales
10 const direction: string = "down";
11 const broadcastId: string = "brd_987654321";
12 const sso: string = "user-42";
13 const detailedVote: VoteResponse = await postVote(tenantId, commentId, direction, broadcastId, sso);
14
15 console.log(simpleVote, detailedVote);
16}
17

putAwardBadge Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
badgeIdstringSí
userIdstringNo
commentIdstringNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: AwardUserBadgeResponse

Ejemplo

Ejemplo putAwardBadge
Copy Copy
1
2async function awardBadgeExample(): Promise<void> {
3 const tenantId: string = "tenant_42";
4 const badgeId: string = "badge_superstar";
5 const userId: string = "user_1001";
6 const commentId: string = "comment_2023";
7
8 const result: AwardUserBadgeResponse = await putAwardBadge(
9 tenantId,
10 badgeId,
11 userId,
12 commentId
13 );
14
15 console.log(result);
16}
17

putCloseThread Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo putCloseThread
Copy Copy
1
2(async () => {
3 const tenantId: string = "my-company";
4 const urlId: string = "post-2023-09-15";
5 const ssoToken: string = "sso-abc123def";
6
7 const resultWithSso: APIEmptyResponse = await putCloseThread(tenantId, urlId, ssoToken);
8 const resultWithoutSso: APIEmptyResponse = await putCloseThread(tenantId, urlId);
9})();
10

putRemoveBadge Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
badgeIdstringYes
userIdstringNo
commentIdstringNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: RemoveUserBadgeResponse

Ejemplo

Ejemplo putRemoveBadge
Copy Copy
1
2async function demoRemoveBadge() {
3 const tenantId: string = "tenant_42";
4 const badgeId: string = "badge_gold";
5 const userId: string = "user_1001";
6 const commentId: string = "comment_20230915";
7 const broadcastId: string = "broadcast_live_01";
8 const sso: string = "sso_abcdef123456";
9
10 const result: RemoveUserBadgeResponse = await putRemoveBadge(
11 tenantId,
12 badgeId,
13 userId,
14 commentId,
15 broadcastId,
16 sso
17 );
18
19 console.log(result);
20}
21

putReopenThread Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

putReopenThread Ejemplo
Copy Copy
1
2async function reopenThreadExample() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "post-9876";
5 const sso: string = "user-abc123";
6
7 const responseWithoutSso: APIEmptyResponse = await putReopenThread(tenantId, urlId);
8 const responseWithSso: APIEmptyResponse = await putReopenThread(tenantId, urlId, sso);
9}
10
11reopenThreadExample();
12

setTrustFactor Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
userIdstringNo
trustFactorstringNo
ssostringNo

Respuesta

Devuelve: SetUserTrustFactorResponse

Ejemplo

Ejemplo de setTrustFactor
Copy Copy
1
2async function demoSetTrustFactor() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-9876";
5 const trustFactor: string = "high";
6 const sso: string = "sso-token-xyz";
7
8 const fullResponse: SetUserTrustFactorResponse = await setTrustFactor(
9 tenantId,
10 userId,
11 trustFactor,
12 sso
13 );
14
15 const minimalResponse: SetUserTrustFactorResponse = await setTrustFactor(tenantId);
16}
17

createModerator Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createModeratorBodyCreateModeratorBodySí

Respuesta

Devuelve: CreateModeratorResponse

Ejemplo

Ejemplo createModerator
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const moderatorPayload: CreateModeratorBody = {
5 userId: "user_9876",
6 // campo opcional; puede omitirse si no es necesario
7 notes: "Temporary moderator for event"
8};
9
10const response: CreateModeratorResponse = await createModerator(tenantId, moderatorPayload);
11

deleteModerator Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
sendEmailstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo deleteModerator
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const moderatorId: string = "mod_9876";
5 const notifyEmail: string = "admin@company.com";
6
7 const resultWithEmail: APIEmptyResponse = await deleteModerator(tenantId, moderatorId, notifyEmail);
8 const resultWithoutEmail: APIEmptyResponse = await deleteModerator(tenantId, moderatorId);
9})();
10

getModerator Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetModeratorResponse

Ejemplo

Ejemplo getModerator
Copy Copy
1
2async function fetchModerator() {
3 const tenantId: string = "c9f1e2b3-4d5a-6f78-90ab-cdef12345678";
4 const moderatorId: string = "mod-987654";
5 const response: GetModeratorResponse = await getModerator(tenantId, moderatorId);
6 const isActive: boolean | undefined = response.moderator?.isActive;
7 const statusCode: number | undefined = response.status?.code;
8}
9

getModerators Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
skipnumberNo

Respuesta

Devuelve: GetModeratorsResponse

Ejemplo

Ejemplo getModerators
Copy Copy
1
2const tenantId: string = "tenant_987654321";
3
4const moderators: GetModeratorsResponse = await getModerators(tenantId);
5
6const skip: number = 20;
7const moreModerators: GetModeratorsResponse = await getModerators(tenantId, skip);
8

sendInvite Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
fromNamestringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de sendInvite
Copy Copy
1
2const tenantId: string = "tenant-987654321";
3const id: string = "user-123456789";
4const fromName: string = "Alice Johnson";
5
6const result: APIEmptyResponse = await sendInvite(tenantId, id, fromName);
7console.log(result);
8

updateModerator Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateModeratorBodyUpdateModeratorBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de updateModerator
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3const moderatorId: string = "mod_12345";
4
5const updateBody: UpdateModeratorBody = {
6 isActive: true,
7 // role?: string es opcional y se omite aquí
8};
9
10const result: APIEmptyResponse = await updateModerator(tenantId, moderatorId, updateBody);
11

deleteNotificationCount Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo deleteNotificationCount
Copy Copy
1
2let tenantId: string = "tenant-42f9b8c1";
3let notificationId: string = "notif-7e3a9d4f";
4
5const result: APIEmptyResponse = await deleteNotificationCount(tenantId, notificationId);
6

getCachedNotificationCount Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetCachedNotificationCountResponse

Ejemplo

Ejemplo getCachedNotificationCount
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const id: string = "user_9876";
5 const response: GetCachedNotificationCountResponse = await getCachedNotificationCount(tenantId, id);
6})();
7

getNotificationCount Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Respuesta

Devuelve: GetNotificationCountResponse

Ejemplo

Ejemplo getNotificationCount
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-12345";
4const urlId: string = "https://app.example.com/dashboard";
5const fromCommentId: string = "cmt-9876";
6const viewed: boolean = false;
7const type: string = "reply";
8
9const notificationCount: GetNotificationCountResponse = await getNotificationCount(
10 tenantId,
11 userId,
12 urlId,
13 fromCommentId,
14 viewed,
15 type
16);
17

getNotifications Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Respuesta

Devuelve: GetNotificationsResponse

Ejemplo

Ejemplo de getNotifications
Copy Copy
1
2async function fetchNotifications(): Promise<void> {
3 const tenantId: string = "tenant_42";
4 const userId: string = "user_1001";
5 const urlId: string = "url_2023";
6 const viewed: boolean = true;
7 const skip: number = 0;
8
9 const notifications: GetNotificationsResponse = await getNotifications(
10 tenantId,
11 userId,
12 urlId,
13 undefined,
14 viewed,
15 undefined,
16 skip
17 );
18
19 console.log(notifications);
20}
21

updateNotification Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
updateNotificationBodyUpdateNotificationBodySí
userIdstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

updateNotification Ejemplo
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant-abc123";
4 const notificationId: string = "notif-9876";
5 const updateBody: UpdateNotificationBody = {
6 title: "System Maintenance",
7 message: "Scheduled maintenance at 02:00 UTC.",
8 enabled: true
9 };
10 const userId: string = "user-42";
11
12 const resultWithoutUser: APIEmptyResponse = await updateNotification(tenantId, notificationId, updateBody);
13 const resultWithUser: APIEmptyResponse = await updateNotification(tenantId, notificationId, updateBody, userId);
14}
15

createV1PageReact Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
titlestringNo
ssostringNo

Respuesta

Devuelve: CreateV1PageReact

Ejemplo

createV1PageReact Ejemplo
Copy Copy
1
2const tenantId: string = "my-tenant-123";
3const urlId: string = "article-456";
4
5const pageTitle: string = "Understanding TypeScript Generics";
6const ssoToken: string = "user-789-token";
7
8const fullResult: CreateV1PageReact = await createV1PageReact(tenantId, urlId, pageTitle, ssoToken);
9const minimalResult: CreateV1PageReact = await createV1PageReact(tenantId, urlId);
10

createV2PageReact Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
idstringSí
titlestringNo
ssostringNo

Respuesta

Devuelve: CreateV1PageReact

Ejemplo

Ejemplo createV2PageReact
Copy Copy
1
2async function run() {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "product-page-123";
5 const pageId: string = "page-456";
6 const pageTitle: string = "Product Overview";
7 const ssoToken: string = "jwt-token-abc123";
8
9 const pageFull: CreateV1PageReact = await createV2PageReact(tenantId, urlId, pageId, pageTitle, ssoToken);
10 const pageTitleOnly: CreateV1PageReact = await createV2PageReact(tenantId, urlId, pageId, pageTitle);
11 const pageMinimal: CreateV1PageReact = await createV2PageReact(tenantId, urlId, pageId);
12}
13run();
14

deleteV1PageReact Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdstringYes
ssostringNo

Respuesta

Devuelve: CreateV1PageReact

Ejemplo

Ejemplo deleteV1PageReact
Copy Copy
1
2async function runExamples() {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const urlId: string = "blog/post-2024-06-15";
5 const ssoToken: string = "sso_user_42";
6
7 const resultWithSso: CreateV1PageReact = await deleteV1PageReact(tenantId, urlId, ssoToken);
8 const resultWithoutSso: CreateV1PageReact = await deleteV1PageReact(tenantId, urlId);
9}
10

deleteV2PageReact Internal Link

Parameters

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
idstringSí
ssostringNo

Response

Devuelve: CreateV1PageReact

Example

Ejemplo deleteV2PageReact
Copy Copy
1
2async function runDeleteExamples() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "page_98765";
5 const commentId: string = "comment_abcde";
6
7 // Llamada sin sso opcional
8 const resultWithoutSso: CreateV1PageReact = await deleteV2PageReact(tenantId, urlId, commentId);
9
10 // Llamada con sso opcional
11 const ssoToken: string = "sso_token_xyz";
12 const resultWithSso: CreateV1PageReact = await deleteV2PageReact(tenantId, urlId, commentId, ssoToken);
13}
14

getV1PageLikes Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdstringYes
ssostringNo

Respuesta

Devuelve: GetV1PageLikes

Ejemplo

Ejemplo getV1PageLikes
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "https://myblog.com/post/42";
5 const ssoToken: string = "sso_user_987";
6
7 const likesWithSSO: GetV1PageLikes = await getV1PageLikes(tenantId, urlId, ssoToken);
8 const likesWithoutSSO: GetV1PageLikes = await getV1PageLikes(tenantId, urlId);
9})();
10

getV2PageReacts Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
ssostringNo

Respuesta

Devuelve: GetV2PageReacts

Ejemplo

Ejemplo getV2PageReacts
Copy Copy
1
2const tenantId: string = "tenant-42";
3const urlId: string = "article-9876";
4const ssoToken: string = "sso-abc123";
5
6const reactsWithSso: GetV2PageReacts = await getV2PageReacts(tenantId, urlId, ssoToken);
7const reactsWithoutSso: GetV2PageReacts = await getV2PageReacts(tenantId, urlId);
8

getV2PageReactUsers Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
idstringSí
ssostringNo

Respuesta

Devuelve: GetV2PageReactUsersResponse

Ejemplo

Ejemplo getV2PageReactUsers
Copy Copy
1
2async function demoGetUsers() {
3 const tenantId: string = "d4e5f6a7-89ab-4cde-f012-3456789abcde";
4 const urlId: string = "blog/2024/06/fastcomments-typescript";
5 const userId: string = "user_123456789";
6 const ssoToken: string = "sso_token_abcdef123456";
7
8 const responseWithSso: GetV2PageReactUsersResponse = await getV2PageReactUsers(tenantId, urlId, userId, ssoToken);
9 const responseWithoutSso: GetV2PageReactUsersResponse = await getV2PageReactUsers(tenantId, urlId, userId);
10}
11

addPage Internal Link

Parameters

NombreTipoRequeridoDescripción
tenantIdstringYes
createAPIPageDataCreateAPIPageDataYes

Response

Devuelve: AddPageAPIResponse

Example

Ejemplo addPage
Copy Copy
1
2const tenantId: string = "tenant_9f8432b1-4c2e-4f9d-8a5d-7bc9e2f6d9a0";
3
4const pageData: CreateAPIPageData = {
5 url: "https://example.com/articles/fastcomments-intro",
6 title: "FastComments Introduction",
7 description: "An introductory guide to FastComments API usage.",
8 tags: ["fastcomments", "api", "tutorial"],
9 metadata: {
10 author: "Jane Doe",
11 publishedAt: "2024-03-15T08:00:00Z"
12 }
13};
14
15const response: AddPageAPIResponse = await addPage(tenantId, pageData);
16

deletePage Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: DeletePageAPIResponse

Ejemplo

Ejemplo deletePage
Copy Copy
1
2async function example() {
3 const tenantId: string = "acme-corp-001";
4 const pageId: string = "page-987654321";
5 const result: DeletePageAPIResponse = await deletePage(tenantId, pageId);
6 console.log(result);
7}
8example();
9

getOfflineUsers Internal Link

Past commenters on the page who are NOT currently online. Sorted by displayName.
Use this after exhausting /users/online to render a "Members" section.
Cursor pagination on commenterName: server walks the partial {tenantId, urlId, commenterName}
index from afterName forward via $gt, no $skip cost.

Parameters

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
afterNamestringNo
afterUserIdstringNo

Response

Returns: PageUsersOfflineResponse

Example

Ejemplo getOfflineUsers
Copy Copy
1
2async function fetchOfflineUsers(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "page_9876";
5 const afterName: string = "John Doe";
6 const afterUserId: string = "user_abc123";
7
8 const offlineResponse: PageUsersOfflineResponse = await getOfflineUsers(
9 tenantId,
10 urlId,
11 afterName,
12 afterUserId
13 );
14
15 console.log(offlineResponse);
16}
17

getOnlineUsers Internal Link

Visores actualmente en línea de una página: personas cuya sesión websocket está suscrita a la página en este momento.
Devuelve anonCount + totalCount (suscriptores de toda la sala, incluidos los espectadores anónimos que no enumeramos).

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
afterNamestringNo
afterUserIdstringNo

Respuesta

Devuelve: PageUsersOnlineResponse

Ejemplo

Ejemplo getOnlineUsers
Copy Copy
1
2async function fetchOnlineUsers() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "article-9876";
5 const afterName: string | undefined = "john_doe";
6 const afterUserId: string | undefined = "user_456";
7
8 const onlineUsers: PageUsersOnlineResponse = await getOnlineUsers(
9 tenantId,
10 urlId,
11 afterName,
12 afterUserId
13 );
14
15 console.log(onlineUsers);
16}
17
18fetchOnlineUsers();
19

getPageByURLId Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes

Respuesta

Devuelve: GetPageByURLIdAPIResponse

Ejemplo

Ejemplo getPageByURLId
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_9876";
5
6 const response: GetPageByURLIdAPIResponse = await getPageByURLId(tenantId, urlId);
7 const page: APIPage | undefined = response.page;
8})();
9

getPages Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí

Respuesta

Devuelve: GetPagesAPIResponse

Ejemplo

Ejemplo getPages
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4(async () => {
5 const response: GetPagesAPIResponse = await getPages(tenantId);
6 const firstPage: APIPage | undefined = response.pages?.[0];
7 console.log(firstPage?.title);
8})();
9

getPagesPublic Internal Link

List pages for a tenant. Used by the FChat desktop client to populate its room list.
Requiere que enableFChat sea verdadero en la configuración personalizada resuelta para cada página.
Las páginas que requieren SSO se filtran según el acceso a grupos del usuario solicitante.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
cursorstringNo
limitnumberNo
qstringNo
sortByPagesSortByNo
hasCommentsbooleanNo

Response

Devuelve: GetPublicPagesResponse

Example

Ejemplo getPagesPublic
Copy Copy
1
2async function fetchPublicPages() {
3 const tenantId: string = "tenant_12345";
4 const cursor: string = "page_5";
5 const limit: number = 20;
6 const query: string = "support";
7 const hasComments: boolean = true;
8
9 const response: GetPublicPagesResponse = await getPagesPublic(
10 tenantId,
11 cursor,
12 limit,
13 query,
14 undefined,
15 hasComments
16 );
17
18 console.log(response);
19}
20

getUsersInfo Internal Link


Información de usuarios en bloque para un inquilino. Dado userIds, devuelve la información de visualización de User / SSOUser.
Utilizado por el widget de comentarios para enriquecer a los usuarios que acaban de aparecer mediante un evento de presencia.
Sin contexto de página: la privacidad se aplica de manera uniforme (los perfiles privados se enmascaran).

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idsstringSí

Respuesta

Devuelve: PageUsersInfoResponse

Ejemplo

Ejemplo getUsersInfo
Copy Copy
1
2async function fetchUsersInfo(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const ids: string = "user_001,user_002";
5 const response: PageUsersInfoResponse = await getUsersInfo(tenantId, ids);
6 console.log(response);
7}
8fetchUsersInfo();
9

patchPage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateAPIPageDataUpdateAPIPageDataSí

Respuesta

Devuelve: PatchPageAPIResponse

Ejemplo

Ejemplo patchPage
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const pageId: string = "page_98765";
5
6 const updateData: UpdateAPIPageData = {
7 title: "Updated FAQ Page"
8 // description?: string puede omitirse
9 };
10
11 const response: PatchPageAPIResponse = await patchPage(tenantId, pageId, updateData);
12})();
13

deletePendingWebhookEvent Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

deletePendingWebhookEvent Ejemplo
Copy Copy
1
2async function runDeletion() {
3 const tenantId: string = "tenant-42f7b9c2";
4 const eventId: string = "webhook-event-8a7d6c5b";
5 const result: APIEmptyResponse = await deletePendingWebhookEvent(tenantId, eventId);
6 console.log(result);
7}
8

getPendingWebhookEventCount Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo

Respuesta

Devuelve: GetPendingWebhookEventCountResponse

Ejemplo

Ejemplo getPendingWebhookEventCount
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_42";
4 const commentId: string = "comment_1001";
5 const eventType: string = "comment.deleted";
6 const domain: string = "myblog.com";
7
8 const result: GetPendingWebhookEventCountResponse = await getPendingWebhookEventCount(
9 tenantId,
10 commentId,
11 undefined,
12 eventType,
13 undefined,
14 domain
15 );
16
17 console.log(result);
18}
19
20runExample();
21

getPendingWebhookEvents Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

Respuesta

Devuelve: GetPendingWebhookEventsResponse

Ejemplo

Ejemplo getPendingWebhookEvents
Copy Copy
1
2const tenantId: string = "123e4567-e89b-12d3-a456-426614174000";
3const commentId: string = "cmt_987654321";
4const externalId: string = "ext_abc123";
5const eventType: string = "comment_created";
6const type: string = "outbound";
7const domain: string = "myblog.com";
8const attemptCountGT: number = 2;
9const skip: number = 10;
10
11const pendingEvents: GetPendingWebhookEventsResponse = await getPendingWebhookEvents(
12 tenantId,
13 commentId,
14 externalId,
15 eventType,
16 type,
17 domain,
18 attemptCountGT,
19 skip
20);
21

createPollVote Internal Link

Record a vote on a poll, or move an existing one to a different option. A voter has at most one vote per poll, so calling this again for the same voter moves their vote rather than adding one.

Esto respeta la configuración de encuestas del sitio: si la votación está configurada solo para usuarios registrados, un voto con solo un anonUserId es rechazado, y los votos anónimos están limitados por tasa por IP por encuesta.

Parameters

NombreTipoRequeridoDescripción
tenantIdstringSí
createPollVoteBodyCreatePollVoteBodySí

Response

Returns: CreatePollVoteResponse

Example

Ejemplo createPollVote
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant";
4
5 const vote: CreatePollVoteBody = {
6 pollId: "poll-2024-09",
7 optionId: "option-A"
8 // userId es opcional y se omite aquí
9 };
10
11 const result: CreatePollVoteResponse = await createPollVote(tenantId, vote);
12 console.log(result);
13})();
14

deletePollVote Internal Link


Retirar un voto. La opción en la que se emitió devuelve su recuento.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: DeletePollVoteResponse

Ejemplo

Ejemplo deletePollVote
Copy Copy
1
2async function runDeletePollVoteExample(): Promise<void> {
3 const tenantId: string = "tenant_42abc";
4 const pollId: string = "poll_7f9e2d";
5
6 const result: DeletePollVoteResponse = await deletePollVote(tenantId, pollId);
7
8 console.log(result);
9}
10

getPollVote Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetPollVoteResponse

Ejemplo

Ejemplo getPollVote
Copy Copy
1
2async function fetchPollVote(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant";
4 const pollId: string = "poll-2024-05";
5 const result: GetPollVoteResponse = await getPollVote(tenantId, pollId);
6 const status: APIStatus = result.status;
7 const vote: PublicPollVote | undefined = result.vote;
8}
9

getPollVotes Internal Link

Los votos individuales detrás de los recuentos de una encuesta, del más antiguo al más reciente.

Una encuesta pertenece a un comentario, por lo que los votos siempre se leen una encuesta a la vez - commentId es obligatorio. Eso mantiene cada consulta en los índices que ya tiene la colección.

Respeta la privacidad de la encuesta: los votos de una encuesta anónima no pueden leerse (poll-anonymous), aquí o por id.

Parameters

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
voterIdstringNo
optionIdstringNo
skipnumberNo

Response

Devuelve: GetPollVotesResponse

Example

Ejemplo getPollVotes
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4const voterId: string = "user_abc";
5const optionId: string = "opt_1";
6const skip: number = 20;
7
8const pollResult: GetPollVotesResponse = await getPollVotes(
9 tenantId,
10 commentId,
11 voterId,
12 optionId,
13 skip
14);
15
16console.log(pollResult);
17

deletePoll Internal Link

Eliminar una encuesta de su comentario, junto con todos los votos emitidos en ella. El propio comentario se deja sin cambios.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo deletePoll
Copy Copy
1
2async function runDeletePoll(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const commentId: string = "comment_a1b2c3d4";
5 const result: APIEmptyResponse = await deletePoll(tenantId, commentId);
6 console.log(result);
7}
8

getPoll Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí

Respuesta

Devuelve: GetPollResponse

Ejemplo

Ejemplo getPoll
Copy Copy
1
2const tenantId: string = "c9f1e2b4-8a3d-4f6a-9d2e-7b5c1a2f3e4d";
3const commentId: string = "a1b2c3d4e5f6g7h8i9j0";
4
5const pollResponse: GetPollResponse = await getPoll(tenantId, commentId);
6
7const poll: CommentPoll | undefined = pollResponse.poll;
8const privacy: PollPrivacy | undefined = poll?.privacy;
9const options: CommentPollOption[] | undefined = poll?.options;
10

patchPoll Internal Link

Editar una encuesta en el lugar, manteniendo sus recuentos: cambiar la pregunta, volver a etiquetar una opción, cerrar o reabrirla, o cambiar quién puede ver a los votantes. Las opciones se identifican por id; para añadir, eliminar o reordenarlas, haga PUT de la lista completa.

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
commentPollPatchCommentPollPatchSí

Respuesta

Devuelve: SavePollResponse

Ejemplo

Ejemplo patchPoll
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_9876543210";
5
6 const pollPatch: CommentPollPatch = {
7 question: "Which new feature would you like to see?",
8 options: [
9 { id: "opt-1", label: "Dark Mode" },
10 { id: "opt-2", label: "Multi-language Support" }
11 ]
12 };
13
14 const response: SavePollResponse = await patchPoll(tenantId, commentId, pollPatch);
15 console.log(response);
16})();
17

putPoll Internal Link

Adjunte una encuesta a un comentario, o establezca el estado completo de la encuesta que ya tiene.

Las opciones se emparejan por id: una opción enviada con el id de una opción existente conserva sus votos (y toma la nueva etiqueta y posición), una opción enviada sin id se agrega, y las opciones existentes que se omiten de la lista se eliminan junto con los votos emitidos en ellas.

Mantener sin ids de opciones existentes en una encuesta que tiene votos elimina todas ellas, por lo que se necesita replaceVotes=true.

Parameters

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
commentPollPutInputCommentPollPutInputSí
replaceVotesbooleanNo

Response

Returns: SavePollResponse

Example

Ejemplo putPoll
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3const commentId: string = "9876543210";
4
5const optionA: CommentPollOptionInput = { text: "Dark mode" };
6const optionB: CommentPollOptionInput = { text: "Light mode" };
7
8const pollInput: CommentPollPutInput = {
9 question: "Which UI theme do you prefer?",
10 options: [optionA, optionB],
11};
12
13const replaceVotes: boolean = true;
14
15const result: SavePollResponse = await putPoll(tenantId, commentId, pollInput, replaceVotes);
16

createQuestionConfig Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createQuestionConfigBodyCreateQuestionConfigBodySí

Respuesta

Devuelve: CreateQuestionConfigResponse

Ejemplo

createQuestionConfig Ejemplo
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "acme-corp-123";
4
5 const customOption: QuestionConfigCustomOptionsInner = {
6 key: "maxLength",
7 value: 500,
8 };
9
10 const createQuestionConfigBody: CreateQuestionConfigBody = {
11 name: "User Feedback",
12 description: "Collect user feedback after purchase",
13 enabled: true,
14 customOptions: [customOption],
15 // campo opcional
16 tags: ["feedback", "post-purchase"],
17 };
18
19 const response: CreateQuestionConfigResponse = await createQuestionConfig(
20 tenantId,
21 createQuestionConfigBody
22 );
23
24 console.log(response);
25}
26

deleteQuestionConfig Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de deleteQuestionConfig
Copy Copy
1
2async function executeDeletion() {
3 const tenantId: string = "tenant_12345";
4 const configId: string = "config_9876";
5 const result: APIEmptyResponse = await deleteQuestionConfig(tenantId, configId);
6 console.log(result);
7}
8executeDeletion();
9

getQuestionConfig Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetQuestionConfigResponse

Ejemplo

Ejemplo getQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const questionId: string = "q-987654321";
4
5const configResponse: GetQuestionConfigResponse = await getQuestionConfig(tenantId, questionId);
6
7const status: APIStatus = configResponse.status;
8const questionConfig?: QuestionConfig = configResponse.question;
9const firstOption?: QuestionConfigCustomOptionsInner = questionConfig?.customOptions?.[0];
10

getQuestionConfigs Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
skipnumberNo

Respuesta

Devuelve: GetQuestionConfigsResponse

Ejemplo

Ejemplo getQuestionConfigs
Copy Copy
1
2async function fetchConfigs() {
3 const tenantId: string = "tenant_12345";
4
5 const firstPage: GetQuestionConfigsResponse = await getQuestionConfigs(tenantId);
6 const secondPage: GetQuestionConfigsResponse = await getQuestionConfigs(tenantId, 20);
7}
8

updateQuestionConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de updateQuestionConfig
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant";
4 const questionId: string = "question-42";
5
6 const updateBody: UpdateQuestionConfigBody = {
7 title: "Revised FAQ Question"
8 // isActive, customOptions, etc. son opcionales y se omiten
9 };
10
11 const response: APIEmptyResponse = await updateQuestionConfig(tenantId, questionId, updateBody);
12 console.log(response);
13})();
14

createQuestionResult Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createQuestionResultBodyCreateQuestionResultBodySí

Respuesta

Devuelve: CreateQuestionResultResponse

Ejemplo

Ejemplo de createQuestionResult
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "q_9876",
6 answer: "Yes",
7 score: 5,
8 meta: [
9 { key: "source", value: "survey" }
10 ]
11};
12
13const result: CreateQuestionResultResponse = await createQuestionResult(tenantId, createQuestionResultBody);
14

deleteQuestionResult Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

deleteQuestionResult Ejemplo
Copy Copy
1
2async function runDelete() {
3 const tenantId: string = "tenant_12345";
4 const resultId: string = "qr_98765";
5
6 const response: APIEmptyResponse = await deleteQuestionResult(tenantId, resultId);
7 console.log(response);
8}
9

getQuestionResult Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetQuestionResultResponse

Ejemplo

Ejemplo getQuestionResult
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const questionId: string = "question_98765";
4
5const response: GetQuestionResultResponse = await getQuestionResult(tenantId, questionId);
6
7const status: APIStatus | undefined = response.status;
8const firstResult: QuestionResult | undefined = response.results?.[0];
9const firstMeta: MetaItem | undefined = response.meta?.[0];
10
11console.log(response);
12

getQuestionResults Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Respuesta

Devuelve: GetQuestionResultsResponse

Ejemplo

Ejemplo getQuestionResults
Copy Copy
1
2async function fetchResults() {
3 const tenantId: string = 'c1a2b3d4-5678-90ab-cdef-1234567890ab';
4 const urlId: string = 'blog-post-789';
5 const startDate: string = '2023-01-01T00:00:00Z';
6 const questionIds: string = 'q-abc123,q-def456';
7 const response: GetQuestionResultsResponse = await getQuestionResults(
8 tenantId,
9 urlId,
10 undefined,
11 startDate,
12 undefined,
13 questionIds
14 );
15 console.log(response);
16}
17

updateQuestionResult Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
updateQuestionResultBodyUpdateQuestionResultBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

updateQuestionResult Ejemplo
Copy Copy
1
2const tenantId: string = "c1f5e8b2-9a4d-4f3a-8d2e-6b7c9d0e1f2a";
3const questionId: string = "qstn_1234567890";
4
5const updateBody: UpdateQuestionResultBody = {
6 score: 85,
7 comment: "Adjusted based on new criteria",
8 meta: [
9 { key: "reviewer", value: "john.doe@example.com" },
10 { key: "timestamp", value: new Date().toISOString() }
11 ]
12};
13
14const response: APIEmptyResponse = await updateQuestionResult(tenantId, questionId, updateBody);
15

aggregateQuestionResults Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Respuesta

Devuelve: AggregateQuestionResultsResponse

Ejemplo

aggregateQuestionResults Ejemplo
Copy Copy
1
2async function runAggregation() {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const questionId: string = 'question-9f8e7d6c5b4a3';
5 const questionIds: string[] = ['question-1a2b3c', 'question-4d5e6f'];
6 const urlId: string = 'blog-post-2023-08-15';
7 const startDate: Date = new Date('2023-01-01T00:00:00Z');
8 const forceRecalculate: boolean = true;
9
10 const result: AggregateQuestionResultsResponse = await aggregateQuestionResults(
11 tenantId,
12 questionId,
13 questionIds,
14 urlId,
15 undefined,
16 startDate,
17 forceRecalculate
18 );
19}
20

bulkAggregateQuestionResults Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestYes
forceRecalculatebooleanNo

Respuesta

Devuelve: BulkAggregateQuestionResultsResponse

Ejemplo

Ejemplo bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const request: BulkAggregateQuestionResultsRequest = {
5 items: [
6 {
7 questionId: "q_9876",
8 startDate: "2023-01-01T00:00:00Z",
9 endDate: "2023-01-31T23:59:59Z",
10 timeBucket: "day"
11 }
12 ]
13};
14
15const response: BulkAggregateQuestionResultsResponse = await bulkAggregateQuestionResults(tenantId, request, true);
16

combineCommentsWithQuestionResults Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Respuesta

Devuelve: CombineQuestionResultsWithCommentsResponse

Ejemplo

Ejemplo de combineCommentsWithQuestionResults
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const questionId: string | undefined = "q_987";
5 const questionIds: string[] = ["q_001", "q_002"];
6 const urlId: string | undefined = "url_abc";
7 const startDate: Date = new Date("2023-01-01T00:00:00Z");
8 const forceRecalculate: boolean = true;
9 const minValue: number = 0;
10 const maxValue: number = 100;
11 const limit: number = 50;
12
13 const result: CombineQuestionResultsWithCommentsResponse = await combineCommentsWithQuestionResults(
14 tenantId,
15 questionId,
16 questionIds,
17 urlId,
18 startDate,
19 forceRecalculate,
20 minValue,
21 maxValue,
22 limit
23 );
24
25 console.log(result);
26}
27
28runExample();
29

addSSOUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createAPISSOUserDataCreateAPISSOUserDataSí

Respuesta

Devuelve: AddSSOUserAPIResponse

Ejemplo

Ejemplo addSSOUser
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const newUser: CreateAPISSOUserData = {
5 userId: "sso_user_987",
6 name: "Jane Doe",
7 email: "jane.doe@example.com",
8 // campo opcional
9 avatarUrl: "https://example.com/avatars/jane.jpg",
10};
11
12const result: AddSSOUserAPIResponse = await addSSOUser(tenantId, newUser);
13

deleteSSOUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
deleteCommentsbooleanNo
commentDeleteModestringNo

Respuesta

Devuelve: DeleteSSOUserAPIResponse

Ejemplo

Ejemplo deleteSSOUser
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const userId: string = "sso-user-42";
4const deleteComments: boolean = true;
5const commentDeleteMode: string = "hard";
6
7const detailedResult: DeleteSSOUserAPIResponse = await deleteSSOUser(
8 tenantId,
9 userId,
10 deleteComments,
11 commentDeleteMode
12);
13
14const simpleResult: DeleteSSOUserAPIResponse = await deleteSSOUser(
15 tenantId,
16 userId
17);
18

getSSOUserByEmail Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
emailstringSí

Respuesta

Devuelve: GetSSOUserByEmailAPIResponse

Ejemplo

Ejemplo getSSOUserByEmail
Copy Copy
1
2async function fetchSSOUser() {
3 const tenantId: string = "tenant_12345";
4 const email: string = "john.doe@example.com";
5
6 const result: GetSSOUserByEmailAPIResponse = await getSSOUserByEmail(tenantId, email);
7 const user: APISSOUser | undefined = result?.user;
8}
9

getSSOUserById Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetSSOUserByIdAPIResponse

Ejemplo

Ejemplo getSSOUserById
Copy Copy
1
2async function fetchUser() {
3 const tenantId: string = "tenant-987654321";
4 const userId: string = "sso-user-abc123";
5 const result: GetSSOUserByIdAPIResponse = await getSSOUserById(tenantId, userId);
6 const ssoUser: APISSOUser = result.user;
7}
8

getSSOUsers Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
skipnumberNo

Respuesta

Devuelve: GetSSOUsersResponse

Ejemplo

getSSOUsers Ejemplo
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4
5 // Llamada sin `skip` opcional
6 const firstPage: GetSSOUsersResponse = await getSSOUsers(tenantId);
7
8 // Llamada con `skip` opcional
9 const secondPage: GetSSOUsersResponse = await getSSOUsers(tenantId, 100);
10
11 console.log(firstPage, secondPage);
12}
13
14runExample();
15

patchSSOUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
updateAPISSOUserDataUpdateAPISSOUserDataSí
updateCommentsbooleanNo

Respuesta

Devuelve: PatchSSOUserAPIResponse

Ejemplo

Ejemplo patchSSOUser
Copy Copy
1
2const tenantId: string = "c1f2a3b4-5678-90ab-cdef-1234567890ab";
3const userId: string = "user-987654321";
4const updateData: UpdateAPISSOUserData = {
5 email: "jane.smith@enterprise.com",
6 displayName: "Jane Smith",
7 role: "editor"
8};
9
10const responseWithComments: PatchSSOUserAPIResponse = await patchSSOUser(
11 tenantId,
12 userId,
13 updateData,
14 true
15);
16
17const responseWithoutComments: PatchSSOUserAPIResponse = await patchSSOUser(
18 tenantId,
19 userId,
20 updateData
21);
22

putSSOUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateAPISSOUserDataUpdateAPISSOUserDataSí
updateCommentsbooleanNo

Respuesta

Devuelve: PutSSOUserAPIResponse

Ejemplo

Ejemplo putSSOUser
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_abc123";
4 const userId: string = "user_456def";
5
6 const updateData: UpdateAPISSOUserData = {
7 email: "jane.doe@example.com",
8 displayName: "Jane Doe",
9 isActive: true,
10 };
11
12 const response: PutSSOUserAPIResponse = await putSSOUser(tenantId, userId, updateData, true);
13})();
14

createSubscription Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataSí

Respuesta

Devuelve: CreateSubscriptionAPIResponse

Ejemplo

Ejemplo createSubscription
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4
5 const subscriptionData: CreateAPIUserSubscriptionData = {
6 userId: "user-456",
7 planId: "premium-monthly",
8 startDate: new Date(),
9 trialPeriodDays: 14 // campo opcional
10 };
11
12 const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, subscriptionData);
13 console.log(result);
14})();
15

deleteSubscription Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
userIdstringNo

Respuesta

Returns: DeleteSubscriptionAPIResponse

Ejemplo

Ejemplo de deleteSubscription
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9876";
4 const subscriptionId: string = "sub_54321";
5 const userId: string = "user_abc123";
6
7 // Con userId opcional
8 const responseWithUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId, userId);
9
10 // Sin userId opcional
11 const responseWithoutUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId);
12})();
13

getSubscriptions Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
userIdstringNo

Respuesta

Devuelve: GetSubscriptionsAPIResponse

Ejemplo

Ejemplo getSubscriptions
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const userId: string = "user-789";
5
6 const responseWithUser: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId, userId);
7 const responseWithoutUser: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId);
8})();
9

updateSubscription Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataSí
userIdstringNo

Respuesta

Devuelve: UpdateSubscriptionAPIResponse

Ejemplo

Ejemplo de updateSubscription
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const subscriptionId: string = "sub_98765";
4
5const updateData: UpdateAPIUserSubscriptionData = {
6 planId: "premium_plan",
7 status: "active",
8 renewalDate: "2024-12-31",
9};
10
11const userId: string = "user_abcde";
12
13const response: UpdateSubscriptionAPIResponse = await updateSubscription(
14 tenantId,
15 subscriptionId,
16 updateData,
17 userId
18);
19

getTenantDailyUsages Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Respuesta

Devuelve: GetTenantDailyUsagesResponse

Ejemplo

Ejemplo getTenantDailyUsages
Copy Copy
1
2async function demoGetTenantDailyUsages() {
3 const tenantId: string = "tenant_9876";
4 const yearNumber: number = 2024;
5 const monthNumber: number = 2;
6 const dayNumber: number = 28;
7 const skip: number = 10;
8
9 const fullResult: GetTenantDailyUsagesResponse = await getTenantDailyUsages(
10 tenantId,
11 yearNumber,
12 monthNumber,
13 dayNumber,
14 skip
15 );
16
17 const partialResult: GetTenantDailyUsagesResponse = await getTenantDailyUsages(
18 tenantId,
19 yearNumber
20 );
21}
22

createTenantPackage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createTenantPackageBodyCreateTenantPackageBodySí

Respuesta

Devuelve: CreateTenantPackageResponse

Ejemplo

Ejemplo createTenantPackage
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const createTenantPackageBody: CreateTenantPackageBody = {
5 name: "Enterprise Package",
6 priceCents: 49999,
7 // campo opcional
8 description: "Full suite of enterprise features"
9 };
10 const result: CreateTenantPackageResponse = await createTenantPackage(tenantId, createTenantPackageBody);
11 console.log(result);
12}
13runExample();
14

deleteTenantPackage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de deleteTenantPackage
Copy Copy
1
2let tenantId: string = "tenant_12345";
3let packageId: string = "pkg_98765";
4
5const result: APIEmptyResponse = await deleteTenantPackage(tenantId, packageId);
6

getTenantPackage Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetTenantPackageResponse

Ejemplo

Ejemplo getTenantPackage
Copy Copy
1
2function fetchPackage(tenantId?: string, id?: string): Promise<GetTenantPackageResponse> {
3 const tid: string = tenantId ?? "acme-corp-001";
4 const pid: string = id ?? "premium-plan-2024";
5 return getTenantPackage(tid, pid);
6}
7
8async function runExample(): Promise<void> {
9 const response: GetTenantPackageResponse = await fetchPackage();
10 const status: APIStatus | undefined = response.status;
11 const pkg: TenantPackage | undefined = response.package;
12}
13

getTenantPackages Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
skipnumberNo

Respuesta

Devuelve: GetTenantPackagesResponse

Ejemplo

Ejemplo getTenantPackages
Copy Copy
1
2async function fetchPackages() {
3 const tenantId: string = "acme-corp-001";
4 const skip: number = 15;
5
6 const resultWithSkip: GetTenantPackagesResponse = await getTenantPackages(tenantId, skip);
7 const resultWithoutSkip: GetTenantPackagesResponse = await getTenantPackages(tenantId);
8}
9

replaceTenantPackage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
replaceTenantPackageBodyReplaceTenantPackageBodyYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo replaceTenantPackage
Copy Copy
1
2async function replacePackageDemo(): Promise<void> {
3 const tenantId: string = "acme-corp-001";
4 const packageId: string = "basic-plan-2023";
5 const replaceBody: ReplaceTenantPackageBody = {
6 newPackageId: "enterprise-plan-2024"
7 // los campos opcionales pueden agregarse aquí si es necesario
8 };
9 const response: APIEmptyResponse = await replaceTenantPackage(tenantId, packageId, replaceBody);
10 console.log(response);
11}
12

updateTenantPackage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateTenantPackageBodyUpdateTenantPackageBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de updateTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3const packageId: string = "pkg_3a2b1c";
4
5const updateBody: UpdateTenantPackageBody = {
6 // los campos opcionales pueden omitirse o incluirse según sea necesario
7 // newPackageName?: string;
8 // renewalDate?: string;
9};
10
11const result: APIEmptyResponse = await updateTenantPackage(tenantId, packageId, updateBody);
12

createTenantUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

Respuesta

Devuelve: CreateTenantUserResponse

Ejemplo

Ejemplo createTenantUser
Copy Copy
1
2async function addTenantUser() {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const digestFreq: DigestEmailFrequency = 'daily';
5 const body: CreateTenantUserBody = {
6 email: 'jane.doe@example.com',
7 firstName: 'Jane',
8 lastName: 'Doe',
9 role: 'admin',
10 digestEmailFrequency: digestFreq,
11 phoneNumber: '+15551234567' // opcional
12 };
13 const response: CreateTenantUserResponse = await createTenantUser(tenantId, body);
14 console.log(response);
15}
16addTenantUser();
17

deleteTenantUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
deleteCommentsstringNo
commentDeleteModestringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo deleteTenantUser
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const userId: string = "u-112233";
5
6 const result1: APIEmptyResponse = await deleteTenantUser(tenantId, userId);
7 const result2: APIEmptyResponse = await deleteTenantUser(tenantId, userId, "true", "hard");
8
9 console.log(result1, result2);
10})();
11

getTenantUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetTenantUserResponse

Ejemplo

getTenantUser Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-tenant-001";
4 const userId: string = "user-12345";
5 const response: GetTenantUserResponse = await getTenantUser(tenantId, userId);
6 console.log(response);
7})();
8

getTenantUsers Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
skipnumberNo

Respuesta

Devuelve: GetTenantUsersResponse

Ejemplo

Ejemplo de getTenantUsers
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const skip: number = 20;
4
5const firstPage: GetTenantUsersResponse = await getTenantUsers(tenantId);
6const secondPage: GetTenantUsersResponse = await getTenantUsers(tenantId, skip);
7

replaceTenantUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
replaceTenantUserBodyReplaceTenantUserBodySí
updateCommentsstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo replaceTenantUser
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3const userId: string = "user-987654321";
4const replaceBody: ReplaceTenantUserBody = {
5 email: "newuser@example.com",
6 name: "New User",
7 role: "admin"
8};
9
10const response: APIEmptyResponse = await replaceTenantUser(
11 tenantId,
12 userId,
13 replaceBody,
14 "Migrated user to new tenant"
15);
16

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
redirectURLstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de sendLoginLink
Copy Copy
1
2interface APIStatus {
3 // campos de estado
4}
5
6interface APIEmptyResponse {
7 status: APIStatus;
8}
9
10(async () => {
11 const tenantId: string = "acme-corp";
12 const userId: string = "user-98765";
13 const redirectURL: string = "https://app.example.com/welcome";
14
15 const responseWithRedirect: APIEmptyResponse = await sendLoginLink(tenantId, userId, redirectURL);
16 const responseWithoutRedirect: APIEmptyResponse = await sendLoginLink(tenantId, userId);
17})();
18

updateTenantUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateTenantUserBodyUpdateTenantUserBodySí
updateCommentsstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

updateTenantUser Ejemplo
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_987";
5 const updateBody: UpdateTenantUserBody = {
6 email: "new.email@example.com",
7 role: "admin",
8 isActive: true
9 };
10 const comment: string = "Promoted to admin role";
11
12 const result: APIEmptyResponse = await updateTenantUser(tenantId, userId, updateBody, comment);
13 console.log(result);
14}
15
16runUpdate();
17

createTenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

Respuesta

Devuelve: CreateTenantResponse

Ejemplo

Ejemplo createTenant
Copy Copy
1
2async function run() {
3 const tenantId: string = "acme-corp-2024";
4 const createTenantBody: CreateTenantBody = {
5 name: "Acme Corp",
6 domainConfiguration: { domain: "comments.acme.com", sslEnabled: true },
7 importedSite: { siteId: "site-123", source: "wordpress" },
8 billingInfo: { plan: "enterprise", renewalDate: "2025-01-01" },
9 description: "Tenant for Acme Corp's production environment", // opcional
10 };
11 const response: CreateTenantResponse = await createTenant(tenantId, createTenantBody);
12}
13run();
14

deleteTenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
surestringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de deleteTenant
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_9876";
5
6 const resultWithoutSure: APIEmptyResponse = await deleteTenant(tenantId, userId);
7 const resultWithSure: APIEmptyResponse = await deleteTenant(tenantId, userId, "confirm");
8}
9
10main();
11

getTenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetTenantResponse

Ejemplo

Ejemplo getTenant
Copy Copy
1
2async function fetchTenant(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const id: string = "tenant_12345";
5
6 const tenantResponse: GetTenantResponse = await getTenant(tenantId, id);
7
8 // Campos opcionales en la respuesta
9 const billing: BillingInfo | undefined = tenantResponse.billingInfo;
10 const domainConfig: APIDomainConfiguration | undefined = tenantResponse.domainConfiguration;
11}
12

getTenants Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
metastringNo
skipnumberNo

Respuesta

Devuelve: GetTenantsResponse

Ejemplo

Ejemplo getTenants
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "c3f5e9b2-4d1a-4f2b-9a6e-1234567890ab";
4 const meta: string = "includeBilling";
5 const skip: number = 10;
6
7 const result: GetTenantsResponse = await getTenants(tenantId, meta, skip);
8 console.log(result);
9}
10runExample();
11

updateTenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de updateTenant
Copy Copy
1
2async function runUpdateTenant() {
3 const tenantId: string = "tenant-abc123";
4 const id: string = "config-456def";
5
6 const updateTenantBody: UpdateTenantBody = {
7 // campo requerido
8 name: "Acme International",
9 // los campos opcionales pueden omitirse, p.ej., billingInfo, domainConfiguration
10 };
11
12 const response: APIEmptyResponse = await updateTenant(tenantId, id, updateTenantBody);
13 console.log(response);
14}
15

changeTicketState Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
userIdstringSí
idstringSí
changeTicketStateBodyChangeTicketStateBodySí

Respuesta

Devuelve: ChangeTicketStateResponse

Ejemplo

Ejemplo changeTicketState
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe";
5 const ticketId: string = "ticket-20230915-001";
6
7 const changeTicketStateBody: ChangeTicketStateBody = {
8 // ejemplo de campo opcional
9 note: "Resolved after investigation"
10 };
11
12 const response: ChangeTicketStateResponse = await changeTicketState(
13 tenantId,
14 userId,
15 ticketId,
16 changeTicketStateBody
17 );
18
19 console.log(response);
20})();
21

createTicket Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
userIdstringSí
createTicketBodyCreateTicketBodySí

Respuesta

Devuelve: CreateTicketResponse

Ejemplo

Ejemplo createTicket
Copy Copy
1
2async function submitTicket() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-9876";
5
6 const ticketBody: CreateTicketBody = {
7 subject: "Login issues after password reset",
8 description: "User reports being unable to log in despite using the new password.",
9 priority: "medium",
10 // campo opcional en CreateTicketBody
11 tags: ["login", "password-reset"]
12 };
13
14 const response: CreateTicketResponse = await createTicket(tenantId, userId, ticketBody);
15 console.log(response);
16}
17
18submitTicket();
19

getTicket Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
userIdstringNo

Respuesta

Devuelve: GetTicketResponse

Ejemplo

Ejemplo getTicket
Copy Copy
1
2async function fetchTickets() {
3 const tenantId: string = "acme-corp";
4 const ticketId: string = "ticket-12345";
5 const userId: string = "user-9876";
6
7 const ticketWithUser: GetTicketResponse = await getTicket(tenantId, ticketId, userId);
8 const ticketWithoutUser: GetTicketResponse = await getTicket(tenantId, ticketId);
9}
10

getTickets Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Respuesta

Devuelve: GetTicketsResponse

Ejemplo

Ejemplo getTickets
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const ticketsSimple: GetTicketsResponse = await getTickets(tenantId);
5
6 const userId: string = "user_9876";
7 const state: number = 1; // p.ej., abierto
8 const skip: number = 0;
9 const limit: number = 20;
10 const ticketsFull: GetTicketsResponse = await getTickets(
11 tenantId,
12 userId,
13 state,
14 skip,
15 limit
16 );
17})();
18

getTranslations Internal Link

Parámetros

NombreTipoRequeridoDescripción
namespacestringSí
componentstringSí
localestringNo
useFullTranslationIdsbooleanNo

Respuesta

Devuelve: GetTranslationsResponse

Ejemplo

Ejemplo de getTranslations
Copy Copy
1
2async function fetchTranslations() {
3 const adminDashboard: GetTranslationsResponse = await getTranslations('admin', 'dashboard');
4 const userProfileFr: GetTranslationsResponse = await getTranslations('user', 'profile', 'fr-FR', true);
5}
6

uploadImage Internal Link

Subir y cambiar el tamaño de una imagen

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
fileBlobYes
sizePresetSizePresetNo
urlIdstringNo

Respuesta

Devuelve: UploadImageResponse

Ejemplo

Ejemplo uploadImage
Copy Copy
1
2const tenantId: string = "acme-tenant-01";
3const imageBlob: Blob = new Blob([new Uint8Array([137,80,78,71])], { type: "image/png" });
4
5const uploadResult1: UploadImageResponse = await uploadImage(tenantId, imageBlob);
6
7const sizePreset: SizePreset = { presetName: "medium" };
8const urlId: string = "article-9876";
9
10const uploadResult2: UploadImageResponse = await uploadImage(tenantId, imageBlob, sizePreset, urlId);
11

getUserBadgeProgressById Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIGetUserBadgeProgressResponse

Ejemplo

Ejemplo getUserBadgeProgressById
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const badgeId: string = "badge-2024-07";
4
5const result: APIGetUserBadgeProgressResponse = await getUserBadgeProgressById(tenantId, badgeId);
6
7const progress: UserBadgeProgress | undefined = result?.progress;
8const status: APIStatus | undefined = result?.status;
9

getUserBadgeProgressByUserId Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
userIdstringSí

Respuesta

Devuelve: APIGetUserBadgeProgressResponse

Ejemplo

Ejemplo getUserBadgeProgressByUserId
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-42";
4
5const badgeProgress: APIGetUserBadgeProgressResponse = await getUserBadgeProgressByUserId(tenantId, userId);
6
7if (badgeProgress.status?.code !== undefined) {
8 const statusCode: number = badgeProgress.status.code;
9}
10
11if (badgeProgress.progress?.length) {
12 const firstProgress: UserBadgeProgress = badgeProgress.progress[0];
13}
14

getUserBadgeProgressList Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
userIdstringNo
limitnumberNo
skipnumberNo

Respuesta

Devuelve: APIGetUserBadgeProgressListResponse

Ejemplo

Ejemplo getUserBadgeProgressList
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const userId: string = "user-123e4567-e89b-12d3-a456-426614174000";
5 const limit: number = 10;
6 const skip: number = 0;
7
8 const response: APIGetUserBadgeProgressListResponse = await getUserBadgeProgressList(tenantId, userId, limit, skip);
9 const status: APIStatus = response.status;
10 const badges: UserBadgeProgress[] = response.badges;
11})();
12

createUserBadge Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createUserBadgeParamsCreateUserBadgeParamsSí

Respuesta

Devuelve: APICreateUserBadgeResponse

Ejemplo

Ejemplo createUserBadge
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c";
4 const badgeParams: CreateUserBadgeParams = {
5 name: "Community Helper",
6 iconUrl: "https://cdn.example.com/badges/helper.png"
7 };
8 const response: APICreateUserBadgeResponse = await createUserBadge(tenantId, badgeParams);
9}
10main();
11

deleteUserBadge Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptySuccessResponse

Ejemplo

Ejemplo deleteUserBadge
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const badgeId: string = "moderator-badge";
5 const result: APIEmptySuccessResponse = await deleteUserBadge(tenantId, badgeId);
6 console.log(result);
7})();
8

getUserBadge Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: APIGetUserBadgeResponse

Ejemplo

Ejemplo getUserBadge
Copy Copy
1
2async function demoGetUserBadge() {
3 const tenantId: string = "tenant-9f8b7c6d";
4 const userId: string = "user-123456";
5 const badgeResponse: APIGetUserBadgeResponse = await getUserBadge(tenantId, userId);
6}
7

getUserBadges Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
userIdstringNo
badgeIdstringNo
typenumberNo
displayedOnCommentsbooleanNo
limitnumberNo
skipnumberNo

Respuesta

Devuelve: APIGetUserBadgesResponse

Ejemplo

Ejemplo getUserBadges
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4
5 // Todos los parámetros suministrados
6 const fullResponse: APIGetUserBadgesResponse = await getUserBadges(
7 tenantId,
8 "user-42",
9 "badge-premium",
10 1,
11 true,
12 10,
13 0
14 );
15
16 // Sólo los requeridos y un parámetro opcional (limit)
17 const limitedResponse: APIGetUserBadgesResponse = await getUserBadges(
18 tenantId,
19 undefined,
20 undefined,
21 undefined,
22 undefined,
23 5
24 );
25
26 console.log(fullResponse, limitedResponse);
27})();
28

updateUserBadge Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Respuesta

Devuelve: APIEmptySuccessResponse

Ejemplo

Ejemplo de updateUserBadge
Copy Copy
1
2const tenantId: string = "tenant-9f8b7c6d";
3const id: string = "user-4a3b2c1d";
4
5const updateParams: UpdateUserBadgeParams = {
6 badgeId: "badge-premium",
7 // campo opcional
8 expiresAt: new Date("2025-12-31T23:59:59Z")
9};
10
11const result: APIEmptySuccessResponse = await updateUserBadge(tenantId, id, updateParams);
12

getUserNotificationCount Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: GetUserNotificationCountResponse

Ejemplo

Ejemplo de getUserNotificationCount
Copy Copy
1
2async function demo(): Promise<void> {
3 const tenantId: string = "acme-corp-001";
4 const ssoToken: string = "sso-token-xyz789";
5
6 const countWithoutSso: GetUserNotificationCountResponse = await getUserNotificationCount(tenantId);
7 const countWithSso: GetUserNotificationCountResponse = await getUserNotificationCount(tenantId, ssoToken);
8}
9
10demo();
11

getUserNotifications Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
urlIdstringNo
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
includeTenantNotificationsbooleanNo
ssostringNo

Respuesta

Devuelve: GetMyNotificationsResponse

Ejemplo

Ejemplo getUserNotifications
Copy Copy
1
2async function fetchNotifications(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "article-42";
5 const pageSize: number = 20;
6 const includeContext: boolean = true;
7 const unreadOnly: boolean = true;
8
9 const notifications: GetMyNotificationsResponse = await getUserNotifications(
10 tenantId,
11 urlId,
12 pageSize,
13 undefined,
14 includeContext,
15 undefined,
16 unreadOnly
17 );
18
19 console.log(notifications);
20}
21

resetUserNotificationCount Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: ResetUserNotificationsResponse

Ejemplo

Ejemplo de resetUserNotificationCount
Copy Copy
1
2async function demoReset() {
3 const tenantId: string = "tenant_12345";
4 const ssoToken: string = "sso_abcdef123456";
5
6 const resultWithSso: ResetUserNotificationsResponse = await resetUserNotificationCount(tenantId, ssoToken);
7 const resultWithoutSso: ResetUserNotificationsResponse = await resetUserNotificationCount(tenantId);
8}
9
10demoReset();
11

resetUserNotifications Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

Respuesta

Devuelve: ResetUserNotificationsResponse

Ejemplo

Ejemplo resetUserNotifications
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const afterId: string = "notif-2023-09-01";
5 const afterCreatedAt: number = 1693526400; // Marca de tiempo Unix
6 const unreadOnly: boolean = true;
7 const dmOnly: boolean = false;
8
9 const response: ResetUserNotificationsResponse = await resetUserNotifications(
10 tenantId,
11 afterId,
12 afterCreatedAt,
13 unreadOnly,
14 dmOnly
15 );
16
17 console.log(response);
18})();
19

updateUserNotificationCommentSubscriptionStatus Internal Link

Enable or disable notifications for a specific comment.

Parameters

NombreTipoObligatorioDescripción
tenantIdstringSí
notificationIdstringSí
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumSí
commentIdstringSí
ssostringNo

Response

Devuelve: UpdateUserNotificationCommentSubscriptionStatusResponse

Example

Ejemplo de updateUserNotificationCommentSubscriptionStatus
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const notificationId: string = "notif_9876";
5 const commentId: string = "comment_abc123";
6 const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum =
7 UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptIn;
8 const sso: string = "sso_token_456";
9
10 const resultWithSso: UpdateUserNotificationCommentSubscriptionStatusResponse = await updateUserNotificationCommentSubscriptionStatus(
11 tenantId,
12 notificationId,
13 optedInOrOut,
14 commentId,
15 sso
16 );
17
18 const resultWithoutSso: UpdateUserNotificationCommentSubscriptionStatusResponse = await updateUserNotificationCommentSubscriptionStatus(
19 tenantId,
20 notificationId,
21 optedInOrOut,
22 commentId
23 );
24}
25

updateUserNotificationPageSubscriptionStatus Internal Link

Enable o deshabilitar 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

Parameters

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
urlstringSí
pageTitlestringSí
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumSí
ssostringNo

Response

Devuelve: UpdateUserNotificationPageSubscriptionStatusResponse

Example

Ejemplo de updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_9876";
5 const url: string = "https://example.com/articles/awesome-article";
6 const pageTitle: string = "Awesome Article";
7 const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum =
8 UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
9 const sso: string = "sso_token_abc";
10
11 const response: UpdateUserNotificationPageSubscriptionStatusResponse = await updateUserNotificationPageSubscriptionStatus(
12 tenantId,
13 urlId,
14 url,
15 pageTitle,
16 subscribedOrUnsubscribed,
17 sso
18 );
19
20 console.log(response);
21}
22
23runExample();
24

updateUserNotificationStatus Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
notificationIdstringSí
newStatusUpdateUserNotificationStatusNewStatusEnumSí
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationStatusResponse

Ejemplo

Ejemplo de updateUserNotificationStatus
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const notificationId: string = "notif_9876";
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.READ;
5const ssoToken: string = "sso_token_abc";
6
7const responseWithSso: UpdateUserNotificationStatusResponse = await updateUserNotificationStatus(
8 tenantId,
9 notificationId,
10 newStatus,
11 ssoToken
12);
13
14const responseWithoutSso: UpdateUserNotificationStatusResponse = await updateUserNotificationStatus(
15 tenantId,
16 notificationId,
17 newStatus
18);
19

getUserPresenceStatuses Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdWSstringSí
userIdsstringSí

Respuesta

Devuelve: GetUserPresenceStatusesResponse

Ejemplo

Ejemplo getUserPresenceStatuses
Copy Copy
1
2(async () => {
3 const tenantId: string = "my-tenant-42";
4 const urlIdWS: string = "post-9876";
5 const userIds: string = "alice,bob,carol";
6
7 const presence: GetUserPresenceStatusesResponse = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
8 console.log(presence);
9})();
10

searchUsers Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

Respuesta

Devuelve: SearchUsersResult

Ejemplo

Ejemplo de searchUsers
Copy Copy
1
2async function example() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "article-9876";
5 const usernameStartsWith: string = "john";
6 const mentionGroupIds: string[] = ["group1", "group2"];
7 const sso: string = "sso_token_abc";
8 const searchSection: SearchUsersSearchSectionEnum = SearchUsersSearchSectionEnum.MENTIONS;
9
10 const result: SearchUsersResult = await searchUsers(
11 tenantId,
12 urlId,
13 usernameStartsWith,
14 mentionGroupIds,
15 sso,
16 searchSection
17 );
18
19 console.log(result);
20}
21

getUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetUserResponse

Ejemplo

Ejemplo getUser
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const id: string = "user_98765";
5 const response: GetUserResponse = await getUser(tenantId, id);
6 const { user }: { user?: User } = response;
7}
8main();
9

createVote Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
directionCreateVoteDirectionEnumSí
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: VoteResponse

Ejemplo

Ejemplo createVote
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "comment_67890";
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.UP;
5const userId: string = "user_abcde";
6
7const voteResult: VoteResponse = await createVote(tenantId, commentId, direction, userId);
8
9const anonUserId: string = "anon_zyxwv";
10const anonVoteResult: VoteResponse = await createVote(tenantId, commentId, direction, undefined, anonUserId);
11

deleteVote Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
editKeystringNo

Respuesta

Devuelve: VoteDeleteResponse

Ejemplo

Ejemplo deleteVote
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "comment_98765";
5 const editKey: string = "edit_abcde";
6
7 const responseWithKey: VoteDeleteResponse = await deleteVote(tenantId, commentId, editKey);
8 const responseWithoutKey: VoteDeleteResponse = await deleteVote(tenantId, commentId);
9}
10
11run();
12

getVotes Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
urlIdstringSí

Respuesta

Devuelve: GetVotesResponse

Ejemplo

Ejemplo getVotes
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "article-67890";
4
5(async () => {
6 const votesResponse: GetVotesResponse = await getVotes(tenantId, urlId);
7 // Ejemplo de acceso a una propiedad opcional de la respuesta
8 const firstVote: PublicVote | undefined = votesResponse.votes?.[0];
9})();
10

getVotesForUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: GetVotesForUserResponse

Ejemplo

Ejemplo getVotesForUser
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "post_9876";
5 const userId: string = "user_abcde";
6 const anonUserId: string = "anon_5678";
7
8 const responseWithUser: GetVotesForUserResponse = await getVotesForUser(tenantId, urlId, userId);
9 const responseWithAnon: GetVotesForUserResponse = await getVotesForUser(tenantId, urlId, undefined, anonUserId);
10}
11
12demo();
13

createWebhook Internal Link

Suscribe una URL a un evento de comentario (suscripción de webhook REST). Suscribir la misma URL al mismo evento y dominio nuevamente devuelve la suscripción existente. Las entregas están firmadas con HMAC, consulte la guía de webhooks; el encabezado token heredado nunca se envía a suscripciones de API.

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createWebhookParamsCreateWebhookParamsSí

Respuesta

Devuelve: CreateWebhookResponse

Ejemplo

Ejemplo createWebhook
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const webhookParams: CreateWebhookParams = {
5 event: "comment.created" as WebhookEventName,
6 method: "POST" as WebhookHTTPMethod,
7 url: "https://myapp.example.com/webhook",
8 source: "comment" as WebhookSource,
9 // secreto opcional para la verificación de la carga útil
10 secret: "s3cr3tK3y123",
11};
12
13const result: CreateWebhookResponse = await createWebhook(tenantId, webhookParams);
14
15const webhookId: string = result.webhook.id;
16

deleteWebhook Internal Link


Desuscripciones (REST hook unsubscribe). Sólo las suscripciones creadas a través de esta API pueden eliminarse aquí; los webhooks gestionados desde el panel se editan en el panel.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo deleteWebhook
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const webhookId: string = "wh_98765";
4
5const result: APIEmptyResponse = await deleteWebhook(tenantId, webhookId);
6

getWebhooks Internal Link

Enumera los webhooks configurados para el inquilino, tanto las filas gestionadas desde el panel como las suscripciones API.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
eventWebhookEventNameNo
domainstringNo
sourceWebhookSourceNo
skipnumberNo

Respuesta

Devuelve: GetWebhooksResponse

Ejemplo

Ejemplo getWebhooks
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42';
4 const event: WebhookEventName = 'comment.created';
5 const domain: string = 'forum.example.org';
6 const source: WebhookSource = 'admin';
7 const skip: number = 0;
8
9 const fullResponse: GetWebhooksResponse = await getWebhooks(tenantId, event, domain, source, skip);
10 const minimalResponse: GetWebhooksResponse = await getWebhooks(tenantId);
11})();
12

getWebhookSamplePayloads Internal Link

Comentarios recientes en exactamente la forma que usan las entregas de webhook, para crear integraciones (por ejemplo datos de muestra de Zapier). Cada evento entrega el mismo objeto de comentario, por lo que event solo tiene que ser válido.

Parameters

NameTypeRequiredDescription
tenantIdstringSí
eventWebhookEventNameNo
limitnumberNo

Response

Devuelve: GetWebhookSamplePayloadsResponse

Example

Ejemplo getWebhookSamplePayloads
Copy Copy
1
2const tenantId: string = "c1a2b3d4-5678-90ab-cdef-1234567890ab";
3
4const responseAll: GetWebhookSamplePayloadsResponse = await getWebhookSamplePayloads(
5 tenantId,
6 "comment.created",
7 10
8);
9
10const responseWithEvent: GetWebhookSamplePayloadsResponse = await getWebhookSamplePayloads(
11 tenantId,
12 "comment.created"
13);
14
15const responseBasic: GetWebhookSamplePayloadsResponse = await getWebhookSamplePayloads(
16 tenantId
17);
18

¿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.