FastComments.com

SDK de FastComments para JavaScript/TypeScript


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

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

Repositorio

Ver en GitHub


Instalación Internal Link


npm

npm install fastcomments-sdk

Documentación de la API Internal Link


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

Compatibilidad navegador vs servidor Internal Link


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

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

APIs públicas vs seguras Internal Link

El SDK proporciona 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);
  }
}

Agregación 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
tenantIdstring
aggregationRequestAggregationRequest
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

Obtener registros de auditoría Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo

Respuesta

Devuelve: GetAuditLogsResponse1

Ejemplo

Ejemplo getAuditLogs
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_42";
4 const limit: number = 100;
5 const skip: number = 10;
6 const order: SORTDIR = "desc";
7 const after: number = Date.now() - 3 * 24 * 60 * 60 * 1000; // hace 3 días
8
9 const auditResponse: GetAuditLogsResponse1 = await getAuditLogs(
10 tenantId,
11 limit,
12 skip,
13 order,
14 after
15 );
16
17 console.log(auditResponse);
18})();
19

Bloquear desde comentario (público) Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostringNo

Respuesta

Devuelve: BlockFromCommentPublicResponse

Ejemplo

Ejemplo blockFromCommentPublic
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_9f8b7c";
4 const commentId: string = "cmt_1234567890";
5 const blockParams: PublicBlockFromCommentParams = {
6 reason: "spam",
7 durationHours: 24,
8 };
9 const ssoToken: string = "sso_ABCDEF123456";
10
11 const responseWithSso: BlockFromCommentPublicResponse = await blockFromCommentPublic(
12 tenantId,
13 commentId,
14 blockParams,
15 ssoToken
16 );
17
18 const responseWithoutSso: BlockFromCommentPublicResponse = await blockFromCommentPublic(
19 tenantId,
20 commentId,
21 blockParams
22 );
23
24 console.log(responseWithSso, responseWithoutSso);
25}
26demo();
27

Desbloquear comentario (público) Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostringNo

Respuesta

Devuelve: UnBlockCommentPublicResponse

Ejemplo

Ejemplo de unBlockCommentPublic
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const commentId: string = "cmt-20230915-001";
4const unblockParams: PublicBlockFromCommentParams = {
5 reason: "User appealed and was cleared",
6 unblockExpiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString()
7};
8const ssoToken: string = "sso-3d9f8a7b";
9
10const result: UnBlockCommentPublicResponse = await unBlockCommentPublic(
11 tenantId,
12 commentId,
13 unblockParams,
14 ssoToken
15);
16

Comprobar comentarios bloqueados Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdsstringYes
ssostringNo

Respuesta

Devuelve: CheckedCommentsForBlockedResponse

Ejemplo

Ejemplo de checkedCommentsForBlocked
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const commentIds: string = "cmt_001,cmt_002";
5 const ssoToken: string = "ssoTokenXYZ";
6
7 const blockedCheck: CheckedCommentsForBlockedResponse = await checkedCommentsForBlocked(tenantId, commentIds);
8 const blockedCheckWithSso: CheckedCommentsForBlockedResponse = await checkedCommentsForBlocked(tenantId, commentIds, ssoToken);
9})();
10

Bloquear usuario desde comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: BlockUserFromCommentResponse

Ejemplo

Ejemplo de blockUserFromComment
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const commentId: string = 'cmt_20231101';
4
5const blockParams: BlockFromCommentParams = {
6 reason: 'spam',
7 blockDurationHours: 24,
8};
9
10const userId: string = 'user_123'; // parámetro opcional
11
12const response: BlockUserFromCommentResponse = await blockUserFromComment(
13 tenantId,
14 commentId,
15 blockParams,
16 userId
17);
18

Crear comentario público Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring
broadcastIdstring
commentDataCommentData
sessionIdstringNo
ssostringNo

Respuesta

Devuelve: CreateCommentPublicResponse

Ejemplo

createCommentPublic Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-abc123";
4 const urlId: string = "post-987654";
5 const broadcastId: string = "bcast-001";
6 const commentData: CommentData = {
7 content: "I really enjoyed this article!"
8 };
9 const sessionId: string = "session-xyz789";
10 const sso: string = "sso-token-456def";
11
12 const response: CreateCommentPublicResponse = await createCommentPublic(
13 tenantId,
14 urlId,
15 broadcastId,
16 commentData,
17 sessionId,
18 sso
19 );
20
21 console.log(response);
22})();
23

Eliminar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
contextUserIdstringNo
isLivebooleanNo

Respuesta

Devuelve: DeleteCommentResponse

Ejemplo

Ejemplo deleteComment
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_01';
4 const commentId: string = 'comment_abc123';
5 const contextUserId: string = 'user_42';
6 const isLive: boolean = false;
7
8 const deleteResult: DeleteCommentResponse = await deleteComment(tenantId, commentId, contextUserId, isLive);
9 const simpleResult: DeleteCommentResponse = await deleteComment(tenantId, commentId);
10})();
11

Eliminar comentario público Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Respuesta

Devuelve: DeleteCommentPublicResponse

Ejemplo

deleteCommentPublic Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = 'c6f9a2e3-9b1d-4f8a-b2d2-1a2b3c4d5e6f';
4 const commentId: string = '7d9f0b1c-2e3f-4a5b-6c7d-8e9f0a1b2c3d';
5 const broadcastId: string = 'live-2023-09-15';
6 const editKey: string = 'ed1tK3y1234567890';
7 const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.abc123';
8
9 const result: DeleteCommentPublicResponse = await deleteCommentPublic(
10 tenantId,
11 commentId,
12 broadcastId,
13 editKey,
14 sso
15 );
16})();
17

Eliminar voto de comentario Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
voteIdstringYes
urlIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

Respuesta

Devuelve: DeleteCommentVoteResponse

Ejemplo

Ejemplo de deleteCommentVote
Copy Copy
1
2async function removeVote() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const voteId: string = "vote_abcde";
6 const urlId: string = "url_56789";
7 const broadcastId: string = "brd_001";
8 const editKey: string = "edit_456";
9 // sso es opcional y se omite
10
11 const response: DeleteCommentVoteResponse = await deleteCommentVote(
12 tenantId,
13 commentId,
14 voteId,
15 urlId,
16 broadcastId,
17 editKey
18 );
19
20 console.log(response);
21}
22
23removeVote();
24

Marcar comentario Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

Response

Devuelve: FlagCommentResponse1

Example

Ejemplo flagComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_2023";
4 const commentId: string = "comment_5678";
5 const userId: string = "user_1234";
6 const anonUserId: string = "anon_4321";
7
8 const result: FlagCommentResponse1 = await flagComment(tenantId, commentId, userId);
9 const anonResult: FlagCommentResponse1 = await flagComment(tenantId, commentId, undefined, anonUserId);
10})();
11

Obtener comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetCommentResponse

Ejemplo

Ejemplo getComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-987654";
5 const result: GetCommentResponse = await getComment(tenantId, commentId);
6 const badgeInfo: CommentUserBadgeInfo | undefined = result.comment?.user?.badgeInfo;
7 console.log(badgeInfo?.label);
8})();
9

Obtener comentarios Internal Link

Parámetros

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

Respuesta

Devuelve: GetCommentsResponse

Ejemplo

Ejemplo getComments
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const page: number = 2;
4const limit: number = 50;
5const asTree: boolean = true;
6const urlId: string = "article_5678";
7const direction: SortDirections = "desc";
8const fromDate: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // one week ago
9const toDate: number = Date.now();
10
11const commentsResponse: GetCommentsResponse = await getComments({
12 tenantId,
13 page,
14 limit,
15 asTree,
16 urlId,
17 direction,
18 fromDate,
19 toDate,
20});
21

Obtener comentarios públicos Internal Link

req tenantId urlId

Parámetros

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

Respuesta

Devuelve: GetCommentsPublicResponse

Ejemplo

Ejemplo getCommentsPublic
Copy Copy
1
2async function fetchComments() {
3 const tenantId: string = 'acme-corp';
4 const urlId: string = 'blog/post-789';
5 const page: number = 1;
6 const direction: SortDirections = SortDirections.Desc;
7 const limit: number = 25;
8 const includeConfig: boolean = true;
9 const locale: string = 'en-GB';
10 const modules: string = 'reactions,attachments';
11 const isCrawler: boolean = false;
12 const includeNotificationCount: boolean = true;
13 const asTree: boolean = true;
14 const maxTreeDepth: number = 4;
15 const searchText: string = 'TypeScript';
16 const hashTags: string[] = ['typescript', 'api'];
17 const response: GetCommentsPublicResponse = 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 modules,
34 isCrawler,
35 includeNotificationCount,
36 asTree,
37 maxTreeDepth,
38 undefined,
39 undefined,
40 searchText,
41 hashTags,
42 undefined,
43 undefined,
44 undefined,
45 undefined
46 );
47}
48

Obtener texto del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
editKeystringNo
ssostringNo

Respuesta

Devuelve: GetCommentTextResponse1

Ejemplo

Ejemplo getCommentText
Copy Copy
1
2async function run() {
3 const tenantId: string = "acme-corp-tenant";
4 const commentId: string = "cmt-5f2e9a1b";
5 const editKey: string = "edk-9b7c3";
6 const ssoToken: string = "sso-xyz789";
7
8 const commentOnly: GetCommentTextResponse1 = await getCommentText(tenantId, commentId);
9 const commentWithEdit: GetCommentTextResponse1 = await getCommentText(tenantId, commentId, editKey);
10 const commentFull: GetCommentTextResponse1 = await getCommentText(tenantId, commentId, editKey, ssoToken);
11}
12run();
13

Obtener nombres de usuarios que votaron el comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
dirnumberYes
ssostringNo

Respuesta

Devuelve: GetCommentVoteUserNamesResponse

Ejemplo

Ejemplo getCommentVoteUserNames
Copy Copy
1
2async function demoGetCommentVoteUserNames() {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "cmt_5f2a1e3b";
5 const dir: number = 1; // ascendente
6
7 const votesWithoutSSO: GetCommentVoteUserNamesResponse = await getCommentVoteUserNames(
8 tenantId,
9 commentId,
10 dir
11 );
12
13 const ssoToken: string = "sso_abcdef123456";
14 const votesWithSSO: GetCommentVoteUserNamesResponse = await getCommentVoteUserNames(
15 tenantId,
16 commentId,
17 dir,
18 ssoToken
19 );
20
21 console.log(votesWithoutSSO, votesWithSSO);
22}
23

Bloquear comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Respuesta

Devuelve: LockCommentResponse

Ejemplo

Ejemplo lockComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_54321";
6
7 // Con token SSO opcional
8 const ssoToken: string = "user-abc123";
9 const lockedWithSso: LockCommentResponse = await lockComment(tenantId, commentId, broadcastId, ssoToken);
10
11 // Sin token SSO
12 const lockedWithoutSso: LockCommentResponse = await lockComment(tenantId, commentId, broadcastId);
13})();
14

Fijar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

Respuesta

Devuelve: PinCommentResponse

Ejemplo

pinComment Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant-001';
4 const commentId: string = 'comment-5678';
5 const broadcastId: string = 'broadcast-2023';
6 const ssoToken: string = 'sso-xyz-789';
7
8 const pinResult: PinCommentResponse = await pinComment(tenantId, commentId, broadcastId);
9 const pinResultWithSso: PinCommentResponse = await pinComment(tenantId, commentId, broadcastId, ssoToken);
10})();
11

Guardar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createCommentParamsCreateCommentParams
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Respuesta

Devuelve: SaveCommentResponse

Ejemplo

Ejemplo de saveComment
Copy Copy
1
2async function submitComment() {
3 const tenantId: string = "tenant_9f8e7d6c";
4 const commentParams: CreateCommentParams = {
5 text: "Great post, thanks for sharing!",
6 authorId: "user_123abc",
7 mentions: [] as CommentUserMentionInfo[],
8 hashtags: [] as CommentUserHashTagInfo[]
9 };
10 const response: SaveCommentResponse = await saveComment(
11 tenantId,
12 commentParams,
13 true, // en vivo
14 false // comprobar spam
15 );
16 console.log(response);
17}
18submitComment();
19

Guardar comentarios en bloque Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
createCommentParamsArrayYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

Respuesta

Devuelve: Array<SaveCommentsBulkResponse

Ejemplo

Ejemplo de saveCommentsBulk
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const bulkComments: CreateCommentParams[] = [
5 {
6 content: "Welcome to the new forum thread!",
7 authorId: "user_42",
8 mentions: [{ userId: "user_84", username: "alice" }],
9 hashtags: [{ tag: "intro" }]
10 },
11 {
12 content: "Please review the updated guidelines.",
13 authorId: "moderator_1",
14 mentions: [],
15 hashtags: [{ tag: "guidelines" }, { tag: "update" }]
16 }
17];
18
19const results: SaveCommentsBulkResponse[] = await saveCommentsBulk(
20 tenantId,
21 bulkComments,
22 true, // isLive
23 false, // doSpamCheck
24 true, // sendEmails
25 undefined // populateNotifications (using default)
26);
27

Establecer texto del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
commentTextUpdateRequestCommentTextUpdateRequestYes
editKeystringNo
ssostringNo

Respuesta

Devuelve: SetCommentTextResponse1

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_112233';
6 const commentTextUpdateRequest: CommentTextUpdateRequest = {
7 text: 'Updated comment with @john.doe and #important',
8 mentions: [{ userId: 'user_001', username: 'john.doe' }],
9 hashtags: [{ tag: 'important' }],
10 };
11 const editKey: string = 'edit_abc123';
12 const result: SetCommentTextResponse1 = await setCommentText(
13 tenantId,
14 commentId,
15 broadcastId,
16 commentTextUpdateRequest,
17 editKey,
18 );
19 console.log(result);
20})();
21

Desbloquear usuario desde comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
unBlockFromCommentParamsUnBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: UnBlockUserFromCommentResponse

Ejemplo

Ejemplo de unBlockUserFromComment
Copy Copy
1
2async function demoUnblock() {
3 const tenantId: string = "acme-corp-tenant";
4 const commentId: string = "cmt_9f8b7a6d";
5
6 const params: UnBlockFromCommentParams = {
7 reason: "User resolved the issue",
8 notifyUser: true
9 };
10
11 const userId: string = "usr_12345";
12
13 const result: UnBlockUserFromCommentResponse = await unBlockUserFromComment(
14 tenantId,
15 commentId,
16 params,
17 userId
18 // anonUserId omitted
19 );
20
21 console.log(result);
22}
23demoUnblock();
24

Quitar marca de comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: UnFlagCommentResponse

Ejemplo

Ejemplo de unFlagComment
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_123456";
4const userId: string = "usr_98765";
5
6const result: UnFlagCommentResponse = await unFlagComment(tenantId, commentId, userId);
7
8const anonCommentId: string = "cmt_123457";
9const anonUserId: string = "anon_abc123";
10
11const anonResult: UnFlagCommentResponse = await unFlagComment(tenantId, anonCommentId, undefined, anonUserId);
12

Desbloquear comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Respuesta

Devuelve: UnLockCommentResponse

Ejemplo

unLockComment Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_9876";
4const broadcastId: string = "brd_001";
5const ssoToken: string | undefined = "sso_token_abc";
6
7async function run() {
8 const unlocked: UnLockCommentResponse = await unLockComment(tenantId, commentId, broadcastId, ssoToken);
9 console.log(unlocked);
10
11 // Llamada sin el parámetro sso opcional
12 const unlockedWithoutSso: UnLockCommentResponse = await unLockComment(tenantId, commentId, broadcastId);
13 console.log(unlockedWithoutSso);
14}
15
16run();
17

Desanclar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
broadcastIdstring
ssostringNo

Respuesta

Devuelve: UnPinCommentResponse

Ejemplo

Ejemplo de unPinComment
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-001"
4 const commentId: string = "comment-123"
5 const broadcastId: string = "broadcast-456"
6 const sso: string = "sso-token-xyz"
7
8 const resultWithSso: UnPinCommentResponse = await unPinComment(tenantId, commentId, broadcastId, sso)
9 const resultWithoutSso: UnPinCommentResponse = await unPinComment(tenantId, commentId, broadcastId)
10
11 console.log(resultWithSso, resultWithoutSso)
12})()
13

Actualizar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updatableCommentParamsUpdatableCommentParams
contextUserIdstringNo
doSpamCheckbooleanNo
isLivebooleanNo

Respuesta

Devuelve: UpdateCommentResponse

Ejemplo

Ejemplo de updateComment
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4
5const updatableCommentParams: UpdatableCommentParams = {
6 // campos de ejemplo; la forma real depende de la definición de la API
7 // por ejemplo, body: "Edited comment content",
8};
9
10const contextUserId: string = "user_abcde";
11const doSpamCheck: boolean = true;
12const isLive: boolean = false;
13
14const result: UpdateCommentResponse = await updateComment(
15 tenantId,
16 commentId,
17 updatableCommentParams,
18 contextUserId,
19 doSpamCheck,
20 isLive
21);
22

Votar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
urlIdstring
broadcastIdstring
voteBodyParamsVoteBodyParams
sessionIdstringNo
ssostringNo

Respuesta

Devuelve: VoteCommentResponse

Ejemplo

Ejemplo voteComment
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_9f8e7d6c";
4const urlId: string = "url_123456";
5const broadcastId: string = "bcast_2024_01";
6
7const voteBodyParams: VoteBodyParams = {
8 vote: "up", // p.ej., "up" | "down"
9 weight: 1, // ponderación opcional del voto
10};
11
12const sessionId: string = "sess_abc123def";
13const sso: string = "sso_token_xyz";
14
15const result: VoteCommentResponse = await voteComment(
16 tenantId,
17 commentId,
18 urlId,
19 broadcastId,
20 voteBodyParams,
21 sessionId,
22 sso
23);
24

Obtener comentarios de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
userIdstringNo
directionSortDirectionsNo
repliesToUserIdstringNo
pagenumberNo
includei10nbooleanNo
localestringNo
isCrawlerbooleanNo

Respuesta

Devuelve: GetCommentsForUserResponse1

Ejemplo

Ejemplo de getCommentsForUser
Copy Copy
1
2async function demo() {
3 const userId: string = "user-12345";
4 const direction: SortDirections = "desc";
5 const page: number = 1;
6 const includei10n: boolean = true;
7 const locale: string = "en-US";
8 const isCrawler: boolean = false;
9
10 const response: GetCommentsForUserResponse1 = await getCommentsForUser(
11 userId,
12 direction,
13 undefined,
14 page,
15 includei10n,
16 locale,
17 isCrawler
18 );
19
20 console.log(response);
21}
22

Agregar configuración de dominio Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
addDomainConfigParamsAddDomainConfigParams

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

Eliminar configuración de dominio Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
domainstring

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

Obtener configuración de dominio 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

Obtener configuraciones de dominio Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring

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

Actualizar parcialmente configuración de dominio 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

Reemplazar configuración de dominio 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

Crear plantilla de correo Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createEmailTemplateBodyCreateEmailTemplateBody

Respuesta

Devuelve: CreateEmailTemplateResponse1

Ejemplo

Ejemplo de createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_9f8e7d6c";
3
4const emailTemplate: CreateEmailTemplateBody = {
5 name: "Account Activation",
6 subject: "Activate Your New Account",
7 htmlContent: "<p>Welcome! Please click <a href=\"\{{activationLink}}\">here</a> to activate.</p>",
8 // optional fields like textContent, isActive are omitted to demonstrate optional parameters
9};
10
11const result: CreateEmailTemplateResponse1 = await createEmailTemplate(
12 tenantId,
13 emailTemplate
14);
15
16console.log(result);
17

Eliminar plantilla de correo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: DeleteEmailTemplateResponse

Ejemplo

Ejemplo deleteEmailTemplate
Copy Copy
1
2async () => {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_abcde";
5
6 const response: DeleteEmailTemplateResponse = await deleteEmailTemplate(tenantId, templateId);
7
8 // Ejemplo de acceso a una propiedad opcional de la respuesta
9 const statusCode: number | undefined = response.status?.code;
10}();
11

Eliminar error de renderizado de plantilla de correo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
errorIdstring

Respuesta

Devuelve: DeleteEmailTemplateRenderErrorResponse

Ejemplo

Ejemplo deleteEmailTemplateRenderError
Copy Copy
1
2async function executeDelete() {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "email_tpl_001";
5 const errorId: string = "render_err_2023";
6
7 const result: DeleteEmailTemplateRenderErrorResponse = await deleteEmailTemplateRenderError(
8 tenantId,
9 templateId,
10 errorId
11 );
12
13 console.log(result);
14}
15
16executeDelete();
17

Obtener plantilla de correo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetEmailTemplateResponse1

Ejemplo

getEmailTemplate Ejemplo
Copy Copy
1
2async function fetchTemplate(): Promise<void> {
3 const tenantId: string = "tenant-12345";
4 const templateId: string = "order-confirmation";
5 const response: GetEmailTemplateResponse1 = await getEmailTemplate(tenantId, templateId);
6 const emailTemplate: CustomEmailTemplate | undefined = response.customEmailTemplate;
7 const configParams: CustomConfigParameters | undefined = response.customConfigParameters;
8}
9

Obtener definiciones de plantillas de correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring

Respuesta

Devuelve: GetEmailTemplateDefinitionsResponse1

Ejemplo

getEmailTemplateDefinitions Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const emailTemplateDefs: GetEmailTemplateDefinitionsResponse1 = await getEmailTemplateDefinitions(tenantId);
5 console.log(emailTemplateDefs);
6})();
7

Obtener errores de renderizado de plantillas de correo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
skipnumberNo

Respuesta

Devuelve: GetEmailTemplateRenderErrorsResponse1

Ejemplo

Ejemplo getEmailTemplateRenderErrors
Copy Copy
1
2const tenantId: string = "c2f5a8d9-4b3e-4f6a-9e1b-2d5c6f7a8b9c";
3const templateId: string = "welcome-email-template";
4const skip: number = 20;
5
6const result: GetEmailTemplateRenderErrorsResponse1 = await getEmailTemplateRenderErrors(
7 tenantId,
8 templateId,
9 skip
10);
11

Obtener plantillas de correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetEmailTemplatesResponse1

Ejemplo

Ejemplo getEmailTemplates
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4
5 // Llamada sin el opcional 'skip'
6 const templates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId);
7
8 // Llamada con el parámetro opcional 'skip'
9 const pagedTemplates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId, 20);
10})();
11

Renderizar plantilla de correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
localestringNo

Respuesta

Devuelve: RenderEmailTemplateResponse1

Ejemplo

renderEmailTemplate Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-01";
4 const templateBody: RenderEmailTemplateBody = {
5 templateId: "welcome-email",
6 placeholders: {
7 userName: "John Doe",
8 signupDate: "2024-04-01"
9 }
10 };
11 const locale: string = "en-US";
12 const result: RenderEmailTemplateResponse1 = await renderEmailTemplate(tenantId, templateBody, locale);
13 console.log(result);
14})();
15

Actualizar plantilla de correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

Respuesta

Devuelve: UpdateEmailTemplateResponse

Ejemplo

Ejemplo de updateEmailTemplate
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "email_tpl_67890";
5
6 const updateBody: UpdateEmailTemplateBody = {
7 subject: "Comment reply notification",
8 htmlContent: "<p>Someone replied to your comment.</p>",
9 plainTextContent: "Someone replied to your comment.",
10 // ejemplo de campo opcional
11 isActive: true,
12 };
13
14 const result: UpdateEmailTemplateResponse = await updateEmailTemplate(
15 tenantId,
16 templateId,
17 updateBody
18 );
19
20 console.log(result);
21})();
22

Obtener registro de eventos Internal Link

req tenantId urlId userIdWS

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumberNo

Respuesta

Devuelve: GetEventLogResponse1

Ejemplo

Ejemplo de getEventLog
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9876";
4 const urlId: string = "page_54321";
5 const userIdWS: string = "ws_user_1122";
6 const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // hace una semana
7 const endTime: number = Date.now();
8
9 const log: GetEventLogResponse1 = await getEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10 const recentLog: GetEventLogResponse1 = await getEventLog(tenantId, urlId, userIdWS, startTime);
11})();
12

Obtener registro global de eventos Internal Link

req tenantId urlId userIdWS

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumberNo

Respuesta

Devuelve: GetGlobalEventLogResponse

Ejemplo

Ejemplo getGlobalEventLog
Copy Copy
1
2(async () => {
3 const tenantId: string = '123e4567-e89b-12d3-a456-426614174000';
4 const urlId: string = 'article-2023-09-15';
5 const userIdWS: string = 'ws_987654321';
6 const startTime: number = Date.now() - 86400000;
7 const endTime: number = Date.now();
8
9 const fullLog: GetGlobalEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
10 const recentLog: GetGlobalEventLogResponse = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime);
11
12 console.log(fullLog, recentLog);
13})();
14

Crear publicación de feed Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

Respuesta

Devuelve: CreateFeedPostResponse1

Ejemplo

Ejemplo de createFeedPost
Copy Copy
1
2async function run() {
3 const tenantId = "tenant-12345";
4 const feedParams: CreateFeedPostParams = {
5 text: "New product launch!",
6 mediaItems: [{ type: "image", asset: { url: "https://cdn.example.com/img.jpg", width: 800, height: 600 } as FeedPostMediaItemAsset } as FeedPostMediaItem],
7 link: { url: "https://example.com/product", title: "Product" } as FeedPostLink
8 };
9 const result: CreateFeedPostResponse1 = await createFeedPost(tenantId, feedParams, "broadcast-987", true, false, true);
10 console.log(result);
11}
12run();
13

Crear publicación de feed pública Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createFeedPostParamsCreateFeedPostParams
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: CreateFeedPostPublicResponse

Ejemplo

Ejemplo createFeedPostPublic
Copy Copy
1
2async function submitPost() {
3 const tenantId: string = "tenant_12345";
4
5 const mediaItem: FeedPostMediaItem = {
6 asset: {
7 url: "https://cdn.example.com/image.jpg",
8 mimeType: "image/jpeg",
9 size: 104857,
10 },
11 type: "image",
12 };
13
14 const link: FeedPostLink = {
15 url: "https://example.com/blog/new-feature",
16 title: "New Feature Release",
17 description: "Details about our latest product update.",
18 };
19
20 const createFeedPostParams: CreateFeedPostParams = {
21 content: "Check out our new feature!",
22 media: [mediaItem],
23 link: link,
24 };
25
26 const broadcastId: string = "broadcast_9876";
27 const sso: string = "sso_token_abc123";
28
29 const response: CreateFeedPostPublicResponse = await createFeedPostPublic(
30 tenantId,
31 createFeedPostParams,
32 broadcastId,
33 sso
34 );
35}
36

Eliminar publicación de feed pública Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
postIdstringYes
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: DeleteFeedPostPublicResponse

Ejemplo

deleteFeedPostPublic Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const postId: string = "post_987654321";
5 const broadcastId: string = "broadcast_2024Q1";
6 const sso: string = "sso_4fa3b9c2";
7
8 const response1: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(tenantId, postId);
9 const response2: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(tenantId, postId, broadcastId);
10 const response3: DeleteFeedPostPublicResponse = await deleteFeedPostPublic(tenantId, postId, broadcastId, sso);
11})();
12

Obtener publicaciones de feed Internal Link

solicitud
tenantId
afterId

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
afterIdstringNo
limitnumberNo
tagsArrayNo

Respuesta

Devuelve: GetFeedPostsResponse1

Ejemplo

Ejemplo getFeedPosts
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const afterId: string = 'post_9876';
5 const limit: number = 20;
6 const tags: string[] = ['news', 'sports'];
7
8 const feedResult: GetFeedPostsResponse1 = await getFeedPosts(tenantId, afterId, limit, tags);
9})();
10

Obtener publicaciones de feed públicas Internal Link

req tenantId afterId

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
afterIdstringNo
limitnumberNo
tagsArrayNo
ssostringNo
isCrawlerbooleanNo
includeUserInfobooleanNo

Respuesta

Devuelve: GetFeedPostsPublicResponse

Ejemplo

Ejemplo de getFeedPostsPublic
Copy Copy
1
2async function example() {
3 const tenantId: string = "tenant_12345";
4 const afterId: string = "post_9876";
5 const limit: number = 20;
6 const tags: string[] = ["news", "tech"];
7 const sso: string = "userToken123";
8 const isCrawler: boolean = false;
9 const includeUserInfo: boolean = true;
10 const response: GetFeedPostsPublicResponse = await getFeedPostsPublic(
11 tenantId,
12 afterId,
13 limit,
14 tags,
15 sso,
16 isCrawler,
17 includeUserInfo
18 );
19}
20example();
21

Obtener estadísticas de publicaciones de feed Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
postIdsArray
ssostringNo

Respuesta

Devuelve: GetFeedPostsStatsResponse

Ejemplo

Ejemplo getFeedPostsStats
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const postIds: string[] = ["post_a1b2c3", "post_d4e5f6"];
5 const ssoToken: string = "sso_abcdef123456";
6
7 const statsWithoutSso: GetFeedPostsStatsResponse = await getFeedPostsStats(tenantId, postIds);
8 const statsWithSso: GetFeedPostsStatsResponse = await getFeedPostsStats(tenantId, postIds, ssoToken);
9}
10
11runExample();
12

Obtener reacciones de usuario públicas Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
postIdsArrayNo
ssostringNo

Respuesta

Devuelve: GetUserReactsPublicResponse

Ejemplo

Ejemplo getUserReactsPublic
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_12345";
4 const postIds: string[] = ["post_1a2b3c", "post_4d5e6f"];
5 const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
6
7 const fullResponse: GetUserReactsPublicResponse = await getUserReactsPublic(tenantId, postIds, ssoToken);
8 const minimalResponse: GetUserReactsPublicResponse = await getUserReactsPublic(tenantId);
9}
10
11demo();
12

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

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
postIdstring
reactBodyParamsReactBodyParams
isUndobooleanNo
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: ReactFeedPostPublicResponse

Ejemplo

Ejemplo reactFeedPostPublic
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const postId: string = 'post_98765';
5 const reactBodyParams: ReactBodyParams = { reaction: 'thumbs_up' };
6 const isUndo: boolean = false;
7 const broadcastId: string = 'broadcast_abcde';
8 const sso: string = 'sso_token_xyz';
9
10 const response: ReactFeedPostPublicResponse = await reactFeedPostPublic(
11 tenantId,
12 postId,
13 reactBodyParams,
14 isUndo,
15 broadcastId,
16 sso
17 );
18
19 console.log(response);
20})();
21

Actualizar publicación de feed Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
feedPostFeedPost

Respuesta

Devuelve: UpdateFeedPostResponse

Ejemplo

Ejemplo updateFeedPost
Copy Copy
1
2const tenantId: string = "tenant_3421";
3const postId: string = "feedpost_a9b8c7";
4
5const feedPost: FeedPost = {
6 content: "We've refreshed the announcement with the latest project milestones.",
7 media: [
8 {
9 type: "image",
10 url: "https://assets.example.com/images/milestone.png",
11 caption: "Project Milestones"
12 } as FeedPostMediaItem
13 ],
14 link: {
15 url: "https://example.com/project-updates",
16 title: "Project Updates",
17 description: "Read about the recent progress and upcoming goals."
18 } as FeedPostLink
19};
20
21const result: UpdateFeedPostResponse = await updateFeedPost(tenantId, postId, feedPost);
22

Actualizar publicación de feed pública Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
postIdstringYes
updateFeedPostParamsUpdateFeedPostParamsYes
broadcastIdstringNo
ssostringNo

Respuesta

Devuelve: UpdateFeedPostPublicResponse

Ejemplo

Ejemplo de updateFeedPostPublic
Copy Copy
1
2async function updatePostExample() {
3 const tenantId: string = 'tenant-9f8b7c';
4 const postId: string = 'post-3a4d5e';
5 const updateParams: UpdateFeedPostParams = {
6 title: 'New Announcement',
7 content: 'We have updated our terms of service.',
8 media: [
9 {
10 url: 'https://cdn.example.com/assets/image.png',
11 type: 'image',
12 asset: {
13 width: 800,
14 height: 600,
15 size: 124000
16 } as FeedPostMediaItemAsset
17 } as FeedPostMediaItem
18 ],
19 link: {
20 url: 'https://example.com/terms',
21 title: 'Read the new TOS'
22 } as FeedPostLink
23 };
24 const broadcastId: string = 'broadcast-2023-09';
25 const sso: string = 'sso-abc123xyz';
26 const result: UpdateFeedPostPublicResponse = await updateFeedPostPublic(
27 tenantId,
28 postId,
29 updateParams,
30 broadcastId,
31 sso
32 );
33}
34

Marcar comentario público Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
isFlaggedbooleanYes
ssostringNo

Respuesta

Devuelve: FlagCommentPublicResponse

Ejemplo

Ejemplo flagCommentPublic
Copy Copy
1
2async function demoFlagComment() {
3 const tenantId: string = "acme-tenant-123";
4 const commentId: string = "comment-987654";
5 const isFlagged: boolean = true;
6 const sso: string = "sso-token-abc123";
7
8 const result: FlagCommentPublicResponse = await flagCommentPublic(
9 tenantId,
10 commentId,
11 isFlagged,
12 sso
13 );
14
15 console.log(result);
16}
17
18demoFlagComment();
19

Obtener GIF grande Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
largeInternalURLSanitizedstringYes

Respuesta

Devuelve: GetGifLargeResponse

Ejemplo

getGifLarge Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = 'c9f4a1b2-3d5e-4f6a-8b9c-0d1e2f3a4b5c';
4 const largeInternalURLSanitized: string = 'https://cdn.fastcomments.com/gifs/awesome-cat-large.gif';
5 const result: GetGifLargeResponse = await getGifLarge(tenantId, largeInternalURLSanitized);
6 console.log(result);
7})();
8

Buscar GIFs Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
searchstring
localestringNo
ratingstringNo
pagenumberNo

Respuesta

Devuelve: GetGifsSearchResponse

Ejemplo

Ejemplo getGifsSearch
Copy Copy
1
2async function demo() {
3 const tenantId: string = "tenant_9f8b7c";
4 const search: string = "funny cats";
5 const locale: string = "en-US";
6 const rating: string = "pg";
7 const page: number = 1;
8
9 const result: GetGifsSearchResponse = await getGifsSearch(
10 tenantId,
11 search,
12 locale,
13 rating,
14 page
15 );
16
17 console.log(result);
18}
19
20demo();
21

Obtener GIFs en tendencia Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Agregar hashtag Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstringNo
createHashTagBodyCreateHashTagBodyNo

Respuesta

Devuelve: AddHashTagResponse

Ejemplo

addHashTag Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_9876";
3
4const newHashTag: CreateHashTagBody = {
5 tag: "typescript",
6 description: "Discussions about TypeScript"
7};
8
9const responseWithTenant: AddHashTagResponse = await addHashTag(tenantId, newHashTag);
10
11const responseWithoutTenant: AddHashTagResponse = await addHashTag(undefined, newHashTag);
12

Agregar hashtags en bloque Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringNo
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

Respuesta

Devuelve: AddHashTagsBulkResponse

Ejemplo

Ejemplo addHashTagsBulk
Copy Copy
1
2async () => {
3 const tenantId: string | undefined = "tenant_9f8b7c6d";
4 const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
5 tags: [
6 {
7 name: "typescript",
8 description: "Discussions about TypeScript",
9 color: "#3178c6"
10 },
11 {
12 name: "fastcomments",
13 description: "Tags for FastComments integration",
14 color: "#00aaff"
15 }
16 ]
17 };
18 const result: AddHashTagsBulkResponse = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
19 console.log(result);
20}();
21

Eliminar hashtag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tagstring
tenantIdstringNo
deleteHashTagRequestBodyDeleteHashTagRequestBodyNo

Respuesta

Devuelve: DeleteHashTagResponse

Ejemplo

Ejemplo deleteHashTag
Copy Copy
1
2(async () => {
3 const tag: string = "announcement";
4 const tenantId: string = "tenant_9876";
5 const requestBody: DeleteHashTagRequestBody = {
6 confirmDeletion: true
7 };
8 const response: DeleteHashTagResponse = await deleteHashTag(tag, tenantId, requestBody);
9 console.log(response);
10})();
11

Obtener hashtags Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
pagenumberNo

Respuesta

Returns: GetHashTagsResponse1

Ejemplo

Ejemplo getHashTags
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4
5 const responseWithPage: GetHashTagsResponse1 = await getHashTags(tenantId, 1);
6 const responseDefault: GetHashTagsResponse1 = await getHashTags(tenantId);
7
8 console.log(responseWithPage, responseDefault);
9})();
10

Actualizar parcialmente hashtag Internal Link

Parámetros

NombreTipoRequeridoDescripción
tagstringYes
tenantIdstringNo
updateHashTagBodyUpdateHashTagBodyNo

Respuesta

Devuelve: PatchHashTagResponse

Ejemplo

patchHashTag Ejemplo
Copy Copy
1
2const response1: PatchHashTagResponse = await patchHashTag("new-feature");
3
4const response2: PatchHashTagResponse = await patchHashTag(
5 "beta-release",
6 "tenant-9f8b7c"
7);
8
9const updateBody: UpdateHashTagBody = {
10 description: "Mark comments related to the upcoming beta release",
11 color: "#1e90ff"
12};
13
14const response3: PatchHashTagResponse = await patchHashTag(
15 "beta-release",
16 "tenant-9f8b7c",
17 updateBody
18);
19

Eliminar voto de moderación Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstringYes
voteIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: DeleteModerationVoteResponse

Ejemplo

Ejemplo de deleteModerationVote
Copy Copy
1
2const commentId: string = "cmt_12345";
3const voteId: string = "vote_9876";
4const broadcastId: string = "brd_001";
5const tenantId: string = "tenant_42";
6const sso: string = "sso_token_abc";
7
8const result: DeleteModerationVoteResponse = await deleteModerationVote(
9 commentId,
10 voteId,
11 broadcastId,
12 tenantId,
13 sso
14);
15

Obtener comentarios (API) Internal Link

Parámetros

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

Respuesta

Devuelve: GetApiCommentsResponse

Ejemplo

Ejemplo getApiComments
Copy Copy
1
2async function loadComments() {
3 const fullResult: GetApiCommentsResponse = await getApiComments(
4 2, // page
5 25, // count
6 "feedback", // textSearch
7 "192.168.1.100", // byIPFromComment
8 "approved", // filters
9 "hasReplies", // searchFilters
10 "dateDesc", // sorts
11 false, // demo
12 "tenant-abc123", // tenantId
13 "sso-token-xyz" // sso
14 );
15
16 const minimalResult: GetApiCommentsResponse = await getApiComments(undefined, 5);
17}
18

Obtener estado de exportación (API) Internal Link

Parámetros

NombreTipoRequeridoDescripción
batchJobIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetApiExportStatusResponse

Ejemplo

Ejemplo getApiExportStatus
Copy Copy
1
2async function demoExportStatus() {
3 const batchJobId: string = "exportBatch-20231101-001";
4 const tenantId: string = "tenant-abc123";
5 const ssoToken: string = "sso-xyz789";
6
7 const fullStatus: GetApiExportStatusResponse = await getApiExportStatus(batchJobId, tenantId, ssoToken);
8 const simpleStatus: GetApiExportStatusResponse = await getApiExportStatus(batchJobId);
9 console.log(fullStatus, simpleStatus);
10}
11

Obtener IDs (API) Internal Link

Parámetros

NombreTipoObligatorioDescripción
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
afterIdstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetApiIdsResponse

Ejemplo

Ejemplo getApiIds
Copy Copy
1
2const textSearch: string = "urgent feedback";
3const byIPFromComment: string = "203.0.113.42";
4const filters: string = "status:approved";
5const afterId: string = "comment-789";
6const demo: boolean = true;
7const tenantId: string = "tenant-001";
8
9const apiIds: GetApiIdsResponse = await getApiIds({
10 textSearch,
11 byIPFromComment,
12 filters,
13 afterId,
14 demo,
15 tenantId,
16});
17

Obtener usuarios baneados por comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstring
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetBanUsersFromCommentResponse

Ejemplo

Ejemplo getBanUsersFromComment
Copy Copy
1
2async function demoGetBanUsers() {
3 const commentId: string = "cmt_5f8e3a9b2d";
4 const tenantId: string = "tenant_42";
5 const sso: string = "sso_token_abc123";
6
7 // Llamada con todos los parámetros
8 const fullResult: GetBanUsersFromCommentResponse = await getBanUsersFromComment(commentId, tenantId, sso);
9 console.log(fullResult);
10
11 // Llamada con solo el parámetro requerido
12 const minimalResult: GetBanUsersFromCommentResponse = await getBanUsersFromComment(commentId);
13 console.log(minimalResult);
14}
15
16demoGetBanUsers();
17

Obtener estado de baneo de comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentIdstringYes
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetCommentBanStatusResponse1

Ejemplo

getCommentBanStatus Ejemplo
Copy Copy
1
2async function checkCommentBanStatus() {
3 const banStatus: GetCommentBanStatusResponse1 = await getCommentBanStatus('cmt_987654321', 'tenant_42', 'sso_token_abc123');
4 const banStatusNoTenant: GetCommentBanStatusResponse1 = await getCommentBanStatus('cmt_987654322', undefined, 'sso_token_def456');
5}
6

Obtener respuestas del comentario Internal Link

Parámetros

NameTypeRequiredDescription
commentIdstring
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetCommentChildrenResponse

Ejemplo

Ejemplo getCommentChildren
Copy Copy
1
2const commentId: string = "cmt_12345";
3const tenantId: string = "tenant_xyz";
4const sso: string = "sso_987654";
5
6const fullResponse: GetCommentChildrenResponse = await getCommentChildren(commentId, tenantId, sso);
7const minimalResponse: GetCommentChildrenResponse = await getCommentChildren(commentId);
8

Obtener recuento Internal Link

Parámetros

NombreTipoRequeridoDescripción
textSearchstringNo
byIPFromCommentstringNo
filterstringNo
searchFiltersstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetCountResponse

Ejemplo

Ejemplo de getCount
Copy Copy
1
2async function main(): Promise<void> {
3 const count: GetCountResponse = await getCount({
4 textSearch: "order issue",
5 byIPFromComment: "198.51.100.23",
6 filter: "pending",
7 demo: true,
8 tenantId: "acme_corp",
9 sso: "sso_abcdef123456"
10 });
11 console.log(count);
12}
13main();
14

Obtener recuentos Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetCountsResponse

Ejemplo

Ejemplo de getCounts
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "acme-corp";
4 const ssoToken: string = "sso-token-2024";
5
6 const withBoth: GetCountsResponse = await getCounts(tenantId, ssoToken);
7 const withTenantOnly: GetCountsResponse = await getCounts(tenantId);
8 const withoutParams: GetCountsResponse = await getCounts();
9
10 console.log(withBoth, withTenantOnly, withoutParams);
11}
12runExample();
13

Obtener registros Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstringYes
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetLogsResponse

Ejemplo

Ejemplo getLogs
Copy Copy
1
2async function fetchLogs() {
3 const commentId: string = "cmt_9a8b7c6d5e4f3a2b";
4 const tenantId: string = "tenant_9876";
5 const sso: string = "sso_abcdef123456";
6
7 const fullResponse: GetLogsResponse = await getLogs(commentId, tenantId, sso);
8 const minimalResponse: GetLogsResponse = await getLogs(commentId);
9}
10

Obtener insignias manuales Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetManualBadgesResponse

Ejemplo

Ejemplo de getManualBadges
Copy Copy
1
2async function fetchBadges() {
3 const tenantId: string = "tenant_987654321";
4 const ssoToken: string = "sso_ABCdef123456";
5
6 // Llamada con ambos parámetros opcionales
7 const responseFull: GetManualBadgesResponse = await getManualBadges(tenantId, ssoToken);
8 console.log(responseFull);
9
10 // Llamada solo con tenantId
11 const responseTenantOnly: GetManualBadgesResponse = await getManualBadges(tenantId);
12 console.log(responseTenantOnly);
13}
14
15fetchBadges();
16

Obtener insignias manuales para usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
badgesUserIdstringNo
commentIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetManualBadgesForUserResponse

Ejemplo

Ejemplo de getManualBadgesForUser
Copy Copy
1
2(async () => {
3 const userId: string = "user_42";
4 const commentId: string = "comment_1001";
5 const tenantId: string = "tenant_acme";
6 const ssoToken: string = "sso_5f6g7h8i9j";
7
8 const badges: GetManualBadgesForUserResponse = await getManualBadgesForUser(userId, commentId, tenantId, ssoToken);
9 const limitedBadges: GetManualBadgesForUserResponse = await getManualBadgesForUser(userId);
10})();
11

Obtener comentario de moderación Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstring
includeEmailbooleanNo
includeIPbooleanNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetModerationCommentResponse

Ejemplo

Ejemplo getModerationComment
Copy Copy
1
2async function fetchCommentDetails() {
3 // Conjunto completo de parámetros
4 const commentId: string = "cmt_12345abc";
5 const includeEmail: boolean = true;
6 const includeIP: boolean = false;
7 const tenantId: string = "tenant_9876";
8 const sso: string = "sso_token_xyz";
9
10 const fullResult: GetModerationCommentResponse = await getModerationComment(
11 commentId,
12 includeEmail,
13 includeIP,
14 tenantId,
15 sso
16 );
17
18 // Llamada mínima usando solo el argumento requerido
19 const minimalResult: GetModerationCommentResponse = await getModerationComment("cmt_67890def");
20
21 // Utilice los resultados según sea necesario...
22}
23

Obtener texto de comentario de moderación Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentIdstring
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetModerationCommentTextResponse

Ejemplo

getModerationCommentText Ejemplo
Copy Copy
1
2async function exampleUsage(): Promise<void> {
3 const commentId: string = "cmt_9f8e7d6c5b4a3b2c1d0e";
4 const tenantId: string = "tenant_67890";
5 const sso: string = "sso_token_abc123";
6
7 // Llamar sólo con el parámetro requerido
8 const result1: GetModerationCommentTextResponse = await getModerationCommentText(commentId);
9
10 // Llamar con parámetros opcionales
11 const result2: GetModerationCommentTextResponse = await getModerationCommentText(commentId, tenantId, sso);
12}
13

Obtener resumen previo al baneo Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstring
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetPreBanSummaryResponse

Ejemplo

Ejemplo getPreBanSummary
Copy Copy
1
2const commentId: string = "5f8d0c2e4b1a2c3d4e5f6a7b";
3const includeByUserIdAndEmail: boolean = true;
4const includeByIP: boolean = true;
5const includeByEmailDomain: boolean = false;
6const tenantId: string = "tenant-001";
7const sso: string = "sso-xyz-123";
8
9const preBanSummary: GetPreBanSummaryResponse = await getPreBanSummary(
10 commentId,
11 includeByUserIdAndEmail,
12 includeByIP,
13 includeByEmailDomain,
14 tenantId,
15 sso
16);
17

Obtener resumen de búsqueda de comentarios Internal Link

Parámetros

NombreTipoObligatorioDescripción
valuestringNo
filtersstringNo
searchFiltersstringNo
tenantIdstringNo
ssostringNo

Respuesta

Returns: GetSearchCommentsSummaryResponse

Ejemplo

Ejemplo getSearchCommentsSummary
Copy Copy
1
2async function runExample(): Promise<void> {
3 const searchTerm: string = "fastcomments integration";
4 const filterString: string = "status:approved";
5 const searchFilterString: string = "author:jane";
6 const tenantId: string = "123e4567-e89b-12d3-a456-426614174000";
7 const ssoToken: string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";
8
9 const summary: GetSearchCommentsSummaryResponse = await getSearchCommentsSummary(
10 searchTerm,
11 filterString,
12 searchFilterString,
13 tenantId,
14 ssoToken
15 );
16
17 console.log(summary);
18}
19runExample();
20

Obtener páginas de búsqueda Internal Link


Parámetros

NombreTipoRequeridoDescripción
valuestringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetSearchPagesResponse

Ejemplo

Ejemplo getSearchPages
Copy Copy
1
2(async () => {
3 const query: string = "network outage";
4 const tenantId: string = "tenant-9876";
5 const ssoToken: string = "sso-abc123def456";
6
7 const searchResult: GetSearchPagesResponse = await getSearchPages(query, tenantId, ssoToken);
8 const searchResultNoSso: GetSearchPagesResponse = await getSearchPages(query, tenantId);
9})();
10

Obtener sitios de búsqueda Internal Link

Parámetros

NombreTipoRequeridoDescripción
valuestringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetSearchSitesResponse

Ejemplo

Ejemplo getSearchSites
Copy Copy
1
2async function fetchSites() {
3 const value: string = "customer support"
4 const tenantId: string = "tenant-9876"
5 const sso: string = "sso-abc123"
6
7 const sites: GetSearchSitesResponse = await getSearchSites(value, tenantId, sso)
8 const sitesOnlyTenant: GetSearchSitesResponse = await getSearchSites(undefined, tenantId)
9}
10

Obtener sugerencias de búsqueda Internal Link

Parámetros

NombreTipoRequeridoDescripción
textSearchstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetSearchSuggestResponse

Ejemplo

Ejemplo getSearchSuggest
Copy Copy
1
2async function example(): Promise<void> {
3 const term: string = "fastcomments api";
4 const tenant: string = "tenant_001";
5 const sso: string = "sso_9a8b7c";
6
7 const fullResult: GetSearchSuggestResponse = await getSearchSuggest(term, tenant, sso);
8 const partialResult: GetSearchSuggestResponse = await getSearchSuggest(term);
9}
10
11example();
12

Obtener usuarios de búsqueda Internal Link

Parámetros

NombreTipoRequeridoDescripción
valuestringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetSearchUsersResponse

Ejemplo

Ejemplo getSearchUsers
Copy Copy
1
2async function demoSearch() {
3 const query: string = "john.doe@example.com";
4 const tenantId: string = "tenant_12345";
5 const ssoToken: string = "sso_token_abc";
6
7 const resultWithSso: GetSearchUsersResponse = await getSearchUsers(query, tenantId, ssoToken);
8 const resultWithoutSso: GetSearchUsersResponse = await getSearchUsers(query, tenantId);
9}
10

Obtener factor de confianza Internal Link

Parámetros

NombreTipoRequeridoDescripción
userIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetTrustFactorResponse

Ejemplo

Ejemplo de getTrustFactor
Copy Copy
1
2async function runDemo(): Promise<void> {
3 const trustFull: GetTrustFactorResponse = await getTrustFactor("user_12345", "tenant_abc", "sso_token_987");
4 const trustUserOnly: GetTrustFactorResponse = await getTrustFactor("user_12345");
5 console.log(trustFull, trustUserOnly);
6}
7runDemo();
8

Obtener preferencia de baneo de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetUserBanPreferenceResponse

Ejemplo

Ejemplo de getUserBanPreference
Copy Copy
1
2async function demoGetUserBanPreference(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant-2024";
4 const sso: string = "sso-token-9f8b7a6c";
5
6 const result: GetUserBanPreferenceResponse = await getUserBanPreference(tenantId, sso);
7 console.log(result);
8}
9
10demoGetUserBanPreference();
11

Obtener perfil interno de usuario Internal Link

Parámetros

NameTypeRequiredDescription
commentIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: GetUserInternalProfileResponse1

Ejemplo

Ejemplo getUserInternalProfile
Copy Copy
1
2(async () => {
3 const fullProfile: GetUserInternalProfileResponse1 = await getUserInternalProfile({
4 commentId: "cmt_12345",
5 tenantId: "tenant_67890",
6 sso: "sso_token_abcdef"
7 });
8
9 const partialProfile: GetUserInternalProfileResponse1 = await getUserInternalProfile({
10 commentId: "cmt_98765"
11 });
12})();
13

Ajustar votos de comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentIdstringYes
adjustCommentVotesParamsAdjustCommentVotesParamsYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostAdjustCommentVotesResponse

Ejemplo

Ejemplo de postAdjustCommentVotes
Copy Copy
1
2const commentId: string = "cmt_9f8b7a6d";
3
4const adjustParams: AdjustCommentVotesParams = {
5 voteDelta: 1,
6 // campos adicionales según lo requiera AdjustCommentVotesParams
7};
8
9const broadcastId: string = "brd_20230915";
10const tenantId: string = "tenant_42";
11const sso: string = "sso-token-abc123";
12
13const result: PostAdjustCommentVotesResponse = await postAdjustCommentVotes(
14 commentId,
15 adjustParams,
16 broadcastId,
17 tenantId,
18 sso
19);
20

Exportar (API) Internal Link

Parámetros

NombreTipoObligatorioDescripción
textSearchstringNo
byIPFromCommentstringNo
filtersstringNo
searchFiltersstringNo
sortsstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostApiExportResponse

Ejemplo

postApiExport Ejemplo
Copy Copy
1
2(async () => {
3 const textSearch: string = "keyword:feedback"
4 const byIPFromComment: string = "203.0.113.45"
5 const filters: string = "status:pending,category:support"
6 const searchFilters: string = "createdAt>2023-01-01"
7 const sorts: string = "createdAt:desc"
8 const tenantId: string = "tenant_9876"
9 const sso: string = "sso_7e2a9b"
10
11 const exportResult: PostApiExportResponse = await postApiExport(
12 textSearch,
13 byIPFromComment,
14 filters,
15 searchFilters,
16 sorts,
17 tenantId,
18 sso
19 )
20
21 console.log(exportResult)
22})()
23

Banear usuario por comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstringYes
banEmailbooleanNo
banEmailDomainbooleanNo
banIPbooleanNo
deleteAllUsersCommentsbooleanNo
bannedUntilstringNo
isShadowBanbooleanNo
updateIdstringNo
banReasonstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostBanUserFromCommentResponse

Ejemplo

Ejemplo de postBanUserFromComment
Copy Copy
1
2async function runBan() {
3 const commentId: string = "cmt_5f8a2b3c";
4 const banEmail: boolean = true;
5 const banIP: boolean = false;
6 const deleteAllUsersComments: boolean = true;
7 const bannedUntil: string = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString();
8 const isShadowBan: boolean = false;
9 const banReason: string = "Repeated spam posting";
10 const tenantId: string = "tenant_12345";
11
12 const response: PostBanUserFromCommentResponse = await postBanUserFromComment(
13 commentId,
14 banEmail,
15 undefined,
16 banIP,
17 deleteAllUsersComments,
18 bannedUntil,
19 isShadowBan,
20 undefined,
21 banReason,
22 tenantId
23 );
24 console.log(response);
25}
26runBan();
27

Deshacer baneo de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
banUserUndoParamsBanUserUndoParams
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostBanUserUndoResponse

Ejemplo

postBanUserUndo Ejemplo
Copy Copy
1
2const undoParams: BanUserUndoParams = {
3 userId: "user-8421",
4 commentId: "comment-6702",
5 reason: "Accidental ban"
6};
7
8const tenantId: string = "tenant-7f9e";
9const ssoToken: string = "sso-4b2c1d";
10
11async function runUndo() {
12 const resultAll: PostBanUserUndoResponse = await postBanUserUndo(undoParams, tenantId, ssoToken);
13 console.log(resultAll);
14
15 const resultMinimal: PostBanUserUndoResponse = await postBanUserUndo(undoParams);
16 console.log(resultMinimal);
17}
18
19runUndo();
20

Enviar resumen previo al baneo en bloque Internal Link

Parámetros

NombreTipoObligatorioDescripción
bulkPreBanParamsBulkPreBanParams
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostBulkPreBanSummaryResponse

Ejemplo

Ejemplo postBulkPreBanSummary
Copy Copy
1
2async function runExample() {
3 const bulkPreBanParams: BulkPreBanParams = {
4 userIds: [10234, 56789],
5 emails: ["spam_user@example.com", "abuse@badsite.org"],
6 ips: ["203.0.113.45", "198.51.100.22"],
7 emailDomains: ["maliciousdomain.com"]
8 };
9
10 const includeByUserIdAndEmail: boolean = true;
11 const includeByIP: boolean = false;
12 const includeByEmailDomain: boolean = true;
13 const tenantId: string = "tenant_8f4b2c1a";
14 const sso: string = "sso-3948abf0";
15
16 const summary: PostBulkPreBanSummaryResponse = await postBulkPreBanSummary(
17 bulkPreBanParams,
18 includeByUserIdAndEmail,
19 includeByIP,
20 includeByEmailDomain,
21 tenantId,
22 sso
23 );
24
25 console.log(summary);
26}
27
28runExample();
29

Publicar comentarios por IDs Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentsByIdsParamsCommentsByIdsParams
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostCommentsByIdsResponse

Ejemplo

Ejemplo postCommentsByIds
Copy Copy
1
2const commentsByIdsParams: CommentsByIdsParams = {
3 commentIds: ['cmt001', 'cmt002'],
4 includeUserInfo: true,
5 includeThreadInfo: false,
6} as CommentsByIdsParams;
7
8const fullResponse: PostCommentsByIdsResponse = await postCommentsByIds(
9 commentsByIdsParams,
10 'tenant-12345',
11 'sso-token-xyz'
12);
13
14const minimalResponse: PostCommentsByIdsResponse = await postCommentsByIds(
15 commentsByIdsParams
16);
17

Marcar comentario (moderación) Internal Link

Parámetros

NameTypeRequiredDescription
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostFlagCommentResponse

Ejemplo

postFlagComment Ejemplo
Copy Copy
1
2const commentId: string = "cmt_20230915_001";
3const broadcastId: string = "brd_20230915_live";
4const tenantId: string = "tenant_42";
5const sso: string = "sso_token_abc123";
6
7const flaggedResponse: PostFlagCommentResponse = await postFlagComment(
8 commentId,
9 broadcastId,
10 tenantId,
11 sso
12);
13

Eliminar comentario (moderación) Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostRemoveCommentResponse

Ejemplo

Ejemplo postRemoveComment
Copy Copy
1
2async function removeCommentExample(): Promise<void> {
3 const commentId: string = "cmt_7f9a3e2b";
4
5 const result1: PostRemoveCommentResponse = await postRemoveComment(commentId);
6
7 const broadcastId: string = "brd_12ab34cd";
8 const tenantId: string = "tenant_5678efgh";
9 const sso: string = "sso_XYZ12345";
10
11 const result2: PostRemoveCommentResponse = await postRemoveComment(commentId, broadcastId, tenantId, sso);
12
13 console.log(result1, result2);
14}
15

Restaurar comentario eliminado Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentIdstring
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostRestoreDeletedCommentResponse

Ejemplo

postRestoreDeletedComment Ejemplo
Copy Copy
1
2async function restoreCommentDemo(): Promise<void> {
3 const commentId: string = "cmt_5f2a9b7e1234567890abcd";
4 const broadcastId: string | undefined = "brd_2023_09";
5 const tenantId: string | undefined = "tenant_42";
6 const sso: string | undefined = "sso_token_abcdef123456";
7
8 const response: PostRestoreDeletedCommentResponse = await postRestoreDeletedComment(
9 commentId,
10 broadcastId,
11 tenantId,
12 sso
13 );
14
15 console.log(response);
16}
17
18restoreCommentDemo();
19

Establecer estado de aprobación del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentIdstring
approvedbooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostSetCommentApprovalStatusResponse

Ejemplo

postSetCommentApprovalStatus Ejemplo
Copy Copy
1
2async function main() {
3 const commentIdOnly: string = "cmt_1001";
4 const resultOnly: PostSetCommentApprovalStatusResponse = await postSetCommentApprovalStatus(commentIdOnly);
5
6 const commentIdFull: string = "cmt_2002";
7 const approvedFull: boolean = true;
8 const broadcastIdFull: string = "brd_3003";
9 const tenantIdFull: string = "tenant_abc";
10 const ssoFull: string = "sso_token_xyz";
11 const resultFull: PostSetCommentApprovalStatusResponse = await postSetCommentApprovalStatus(
12 commentIdFull,
13 approvedFull,
14 broadcastIdFull,
15 tenantIdFull,
16 ssoFull
17 );
18
19 console.log(resultOnly, resultFull);
20}
21main();
22

Establecer estado de revisión del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
commentIdstring
reviewedbooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostSetCommentReviewStatusResponse

Ejemplo

Ejemplo postSetCommentReviewStatus
Copy Copy
1
2async function updateCommentReviewStatus(): Promise<void> {
3 const commentId: string = "cmt_9f8a7b6c5d4e3f2a1b0c";
4 const reviewed: boolean = true;
5 const broadcastId: string = "broadcast_2024Q1";
6 const tenantId: string = "tenant_1001";
7 const sso: string = "alice@example.com";
8
9 const response: PostSetCommentReviewStatusResponse = await postSetCommentReviewStatus(
10 commentId,
11 reviewed,
12 broadcastId,
13 tenantId,
14 sso
15 );
16
17 console.log(response);
18}
19

Establecer estado de spam del comentario Internal Link

Parámetros

NameTypeRequiredDescription
commentIdstringYes
spambooleanNo
permNotSpambooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Returns: PostSetCommentSpamStatusResponse

Ejemplo

Ejemplo postSetCommentSpamStatus
Copy Copy
1
2async function demoSpamStatus(): Promise<void> {
3 const commentId: string = "cmt_5f2a1b3c4d6e7f8g9h0i";
4
5 // Sólo el parámetro requerido
6 const resultSimple: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(commentId, true);
7
8 // Todos los parámetros opcionales provistos
9 const resultFull: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(
10 commentId,
11 false,
12 true,
13 "brd_1234abcd",
14 "tenant_42",
15 "sso_9876xyz"
16 );
17
18 console.log(resultSimple, resultFull);
19}
20

Establecer texto del comentario (moderación) Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstringYes
setCommentTextParamsSetCommentTextParamsYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostSetCommentTextResponse

Ejemplo

postSetCommentText Ejemplo
Copy Copy
1
2(async () => {
3 const commentId: string = "cmt_9f8b7a6d5e4c3b2a1";
4 const setParams: SetCommentTextParams = {
5 text: "Edited comment to correct a typo and add clarification."
6 };
7 const broadcastId: string = "brd_1a2b3c4d5e6f7g8h9";
8 const tenantId: string = "tenant_xyz123";
9 const sso: string = "sso_user_456def";
10
11 const fullResult: PostSetCommentTextResponse = await postSetCommentText(
12 commentId,
13 setParams,
14 broadcastId,
15 tenantId,
16 sso
17 );
18
19 const minimalResult: PostSetCommentTextResponse = await postSetCommentText(
20 commentId,
21 setParams
22 );
23
24 console.log(fullResult, minimalResult);
25})();
26

Desmarcar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostUnFlagCommentResponse

Ejemplo

Ejemplo postUnFlagComment
Copy Copy
1
2async () => {
3 const response: PostUnFlagCommentResponse = await postUnFlagComment(
4 "cmt_12345", // commentId
5 "brd_67890", // broadcastId (opcional)
6 "tenant_abc", // tenantId (opcional)
7 "sso_user_token_789" // sso (opcional)
8 );
9};
10

Votar (moderación) Internal Link

Parámetros

NombreTipoObligatorioDescripción
commentIdstringYes
directionstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PostVoteResponse

Ejemplo

Ejemplo postVote
Copy Copy
1
2let commentId: string = 'cmt_12345';
3let direction: string = 'up';
4let broadcastId: string = 'brd_67890';
5let tenantId: string = 'tenant_abc';
6let sso: string = 'sso_token_xyz';
7
8const fullVote: PostVoteResponse = await postVote(
9 commentId,
10 direction,
11 broadcastId,
12 tenantId,
13 sso
14);
15
16const simpleVote: PostVoteResponse = await postVote('cmt_67890');
17

Conceder insignia Internal Link

Parámetros

NombreTipoObligatorioDescripción
badgeIdstring
userIdstringNo
commentIdstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PutAwardBadgeResponse

Ejemplo

Ejemplo putAwardBadge
Copy Copy
1
2(async () => {
3 const badgeId: string = "badge-superstar"
4 const userId: string = "user-42"
5 const commentId: string = "comment-7f9c3"
6 const broadcastId: string = "broadcast-2023-09"
7 const result: PutAwardBadgeResponse = await putAwardBadge(badgeId, userId, commentId, broadcastId)
8 console.log(result)
9})()
10

Cerrar hilo Internal Link

Parámetros

NombreTipoRequeridoDescripción
urlIdstring
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PutCloseThreadResponse

Ejemplo

Ejemplo putCloseThread
Copy Copy
1
2async function closeThreadDemo(): Promise<void> {
3 const urlId: string = "article-2023-09-15";
4 const tenantId: string = "tenant-42";
5 const sso: string = "sso-token-xyz";
6
7 const response: PutCloseThreadResponse = await putCloseThread(urlId, tenantId, sso);
8 console.log(response);
9}
10
11closeThreadDemo();
12

Quitar insignia Internal Link

Parámetros

NombreTipoObligatorioDescripción
badgeIdstring
userIdstringNo
commentIdstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PutRemoveBadgeResponse

Ejemplo

putRemoveBadge Ejemplo
Copy Copy
1
2const badgeId: string = "badge-12345";
3const userId: string = "user-9876";
4const commentId: string = "comment-5555";
5const broadcastId: string = "broadcast-001";
6
7const result: PutRemoveBadgeResponse = await putRemoveBadge(
8 badgeId,
9 userId,
10 commentId,
11 broadcastId
12);
13

Reabrir hilo Internal Link

Parámetros

NombreTipoRequeridoDescripción
urlIdstring
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: PutReopenThreadResponse

Ejemplo

Ejemplo putReopenThread
Copy Copy
1
2async function exampleUsage() {
3 const urlId: string = "thread-9f8b7c6a";
4 const tenantId: string = "tenant-001";
5 const sso: string = "sso-3f9d2e1a";
6
7 const resultAll: PutReopenThreadResponse = await putReopenThread(urlId, tenantId, sso);
8 console.log(resultAll);
9
10 const resultMinimal: PutReopenThreadResponse = await putReopenThread(urlId);
11 console.log(resultMinimal);
12}
13

Establecer factor de confianza Internal Link

Parámetros

NombreTipoObligatorioDescripción
userIdstringNo
trustFactorstringNo
tenantIdstringNo
ssostringNo

Respuesta

Devuelve: SetTrustFactorResponse

Ejemplo

Ejemplo setTrustFactor
Copy Copy
1
2(async () => {
3 const userId: string = "user_8421";
4 const trustFactor: string = "high";
5 const tenantId: string = "tenant_33";
6 const ssoToken: string = "sso_7d9f";
7
8 const fullResult: SetTrustFactorResponse = await setTrustFactor(userId, trustFactor, tenantId, ssoToken);
9 const minimalResult: SetTrustFactorResponse = await setTrustFactor(userId, trustFactor);
10})();
11

Crear moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createModeratorBodyCreateModeratorBody

Respuesta

Devuelve: CreateModeratorResponse1

Ejemplo

Ejemplo de createModerator
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9876";
4 const moderatorPayload: CreateModeratorBody = {
5 name: "Alice Johnson",
6 email: "alice.johnson@example.com"
7 // los campos opcionales como descripción se omiten
8 };
9 const result: CreateModeratorResponse1 = await createModerator(tenantId, moderatorPayload);
10 console.log(result);
11}
12
13runExample();
14

Eliminar moderador Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
sendEmailstringNo

Respuesta

Devuelve: DeleteModeratorResponse

Ejemplo

Ejemplo deleteModerator
Copy Copy
1
2async function runDeleteModeratorExample() {
3 const tenantId: string = "tenant_2023";
4 const moderatorId: string = "mod_001";
5 const notificationEmail: string = "admin@mycompany.com";
6
7 const resultWithEmail: DeleteModeratorResponse = await deleteModerator(tenantId, moderatorId, notificationEmail);
8 const resultWithoutEmail: DeleteModeratorResponse = await deleteModerator(tenantId, moderatorId);
9}
10

Obtener moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetModeratorResponse1

Ejemplo

Ejemplo getModerator
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-001";
4 const id: string = "mod-12345";
5
6 const result: GetModeratorResponse1 = await getModerator(tenantId, id);
7
8 const moderatorName: string | undefined = result.moderator?.name;
9 console.log(moderatorName);
10})();
11

Obtener moderadores Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetModeratorsResponse1

Ejemplo

Ejemplo getModerators
Copy Copy
1
2async function fetchModerators(): Promise<void> {
3 const tenantId: string = "tenant-9876";
4 const skip: number = 30; // desplazamiento de paginación opcional
5 const moderators: GetModeratorsResponse1 = await getModerators(tenantId, skip);
6 // Ejemplo sin paginación:
7 // const allModerators: GetModeratorsResponse1 = await getModerators(tenantId);
8}
9

Enviar invitación Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
fromNamestring

Respuesta

Devuelve: SendInviteResponse

Ejemplo

Ejemplo de sendInvite
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const inviteId: string = "invite-12345";
4const fromName: string = "John Doe";
5
6const inviteResult: SendInviteResponse = await sendInvite(tenantId, inviteId, fromName);
7

Actualizar moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateModeratorBodyUpdateModeratorBody

Respuesta

Devuelve: UpdateModeratorResponse

Ejemplo

Ejemplo de updateModerator
Copy Copy
1
2async function demoUpdateModerator(): Promise<void> {
3 const tenantId: string = "tenant_42abc";
4 const moderatorId: string = "moderator_8f9e";
5 const updateBody: UpdateModeratorBody = {
6 isActive: true,
7 role: "admin",
8 // campo opcional
9 notes: "Promoted to senior moderator"
10 };
11 const result: UpdateModeratorResponse = await updateModerator(tenantId, moderatorId, updateBody);
12 console.log(result);
13}
14
15demoUpdateModerator();
16

Eliminar conteo de notificaciones Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: DeleteNotificationCountResponse

Ejemplo

deleteNotificationCount Ejemplo
Copy Copy
1
2async function run() {
3 const tenantId: string = "tenant_12345";
4 const notificationId: string = "notif_98765";
5 const result: DeleteNotificationCountResponse = await deleteNotificationCount(tenantId, notificationId);
6 console.log(result);
7}
8run();
9

Obtener conteo de notificaciones en caché Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetCachedNotificationCountResponse1

Ejemplo

Ejemplo getCachedNotificationCount
Copy Copy
1
2const tenantId: string = "e3f1a9b2-4c5d-6e7f-8a9b-0c1d2e3f4a5b";
3const userId: string = "u-20231101-001";
4
5const notificationResult: GetCachedNotificationCountResponse1 = await getCachedNotificationCount(tenantId, userId);
6
7console.log(notificationResult);
8

Obtener conteo de notificaciones Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo

Respuesta

Devuelve: GetNotificationCountResponse1

Ejemplo

Ejemplo getNotificationCount
Copy Copy
1
2async function demoNotificationCount() {
3 const tenantId: string = "tenant_001";
4 const userId: string = "user_42";
5 const urlId: string = "url_9f8e7d";
6 const fromCommentId: string = "comment_12345";
7 const viewed: boolean = false;
8 const type: string = "mention";
9
10 const result: GetNotificationCountResponse1 = await getNotificationCount(
11 tenantId,
12 userId,
13 urlId,
14 fromCommentId,
15 viewed,
16 type
17 );
18
19 console.log(result);
20}
21
22demoNotificationCount();
23

Obtener notificaciones Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

Respuesta

Devuelve: GetNotificationsResponse1

Ejemplo

Ejemplo getNotifications
Copy Copy
1
2async function demo() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe";
5
6 const notifications: GetNotificationsResponse1 = await getNotifications(tenantId, userId);
7 console.log(notifications);
8
9 const more: GetNotificationsResponse1 = await getNotifications(
10 tenantId,
11 undefined,
12 "article-5678",
13 undefined,
14 true,
15 "reply",
16 10
17 );
18 console.log(more);
19}
20demo();
21

Actualizar notificación Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
updateNotificationBodyUpdateNotificationBodyYes
userIdstringNo

Respuesta

Devuelve: UpdateNotificationResponse

Ejemplo

Ejemplo de updateNotification
Copy Copy
1
2const tenantId: string = "tenant_5f4d2c";
3const notificationId: string = "notif_9b8a7c";
4
5const updateBody: UpdateNotificationBody = {
6 enabled: false,
7 sendEmail: true,
8 schedule: "2023-12-01T08:00:00Z"
9};
10
11const userId: string = "user_123e4567";
12
13const responseWithUser: UpdateNotificationResponse = await updateNotification(
14 tenantId,
15 notificationId,
16 updateBody,
17 userId
18);
19
20const responseWithoutUser: UpdateNotificationResponse = await updateNotification(
21 tenantId,
22 notificationId,
23 updateBody
24);
25

Crear reacción de página V1 Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdstringYes
titlestringNo

Respuesta

Devuelve: CreateV1PageReactResponse

Ejemplo

createV1PageReact Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "article-2024-06-improvements";
4const title: string = "FastComments API Integration Guide";
5
6const responseWithTitle: CreateV1PageReactResponse = await createV1PageReact(tenantId, urlId, title);
7const responseWithoutTitle: CreateV1PageReactResponse = await createV1PageReact(tenantId, urlId);
8

Crear reacción de página V2 Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdstringYes
idstringYes
titlestringNo

Respuesta

Devuelve: CreateV2PageReactResponse

Ejemplo

Ejemplo de createV2PageReact
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "blog/posts/fastcomments-integration";
5 const pageId: string = "page-12345";
6 const title: string = "FastComments API Integration Guide";
7
8 const responseWithoutTitle: CreateV2PageReactResponse = await createV2PageReact(tenantId, urlId, pageId);
9 const responseWithTitle: CreateV2PageReactResponse = await createV2PageReact(tenantId, urlId, pageId, title);
10
11 console.log(responseWithoutTitle, responseWithTitle);
12})();
13

Eliminar reacción de página V1 Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring

Respuesta

Devuelve: DeleteV1PageReactResponse

Ejemplo

deleteV1PageReact Ejemplo
Copy Copy
1
2const tenantId: string = "acme-corp";
3const urlId: string = "article-2024-06-01";
4
5const response: DeleteV1PageReactResponse = await deleteV1PageReact(tenantId, urlId);
6console.log(response);
7

Eliminar reacción de página V2 Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
urlIdstringYes
idstringYes

Respuesta

Devuelve: DeleteV2PageReactResponse

Ejemplo

deleteV2PageReact Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const urlId: string = "page_98765";
4const reactionId: string = "react_abcde";
5
6const deleteResult: DeleteV2PageReactResponse = await deleteV2PageReact(tenantId, urlId, reactionId);
7

Obtener me gusta de página V1 Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdstringYes

Respuesta

Devuelve: GetV1PageLikesResponse

Ejemplo

Ejemplo de getV1PageLikes
Copy Copy
1
2async function fetchPageLikes() {
3 const tenantId: string = "acme-corp-tenant-42";
4 const urlId: string = "blog-post-2024-06-typescript-best-practices";
5
6 const likes: GetV1PageLikesResponse = await getV1PageLikes(tenantId, urlId);
7 console.log(likes);
8}
9

Obtener reacciones de página V2 Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes

Respuesta

Devuelve: GetV2PageReactsResponse

Ejemplo

Ejemplo getV2PageReacts
Copy Copy
1
2async function demoGetPageReacts(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant";
4 const urlId: string = "article-2024-06-01";
5
6 const reacts: GetV2PageReactsResponse = await getV2PageReacts(tenantId, urlId);
7
8 // ejemplo de acceso a propiedad opcional
9 const customConfig: CustomConfigParameters | undefined = reacts.customConfig;
10 console.log(reacts);
11}
12
13demoGetPageReacts();
14

Obtener usuarios que reaccionaron en página V2 Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
idstringYes

Respuesta

Devuelve: GetV2PageReactUsersResponse1

Ejemplo

Ejemplo getV2PageReactUsers
Copy Copy
1
2async function fetchReactUsers() {
3 const tenantId: string = 'tenant_12345';
4 const urlId: string = 'article-9876';
5 const id: string = 'user_abcde';
6 const response: GetV2PageReactUsersResponse1 = await getV2PageReactUsers(tenantId, urlId, id);
7 console.log(response);
8}
9fetchReactUsers();
10

Agregar página 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

Eliminar página Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener usuarios desconectados Internal Link

Past commenters on the page who are NOT currently online. Sorted by displayName.
Utilícelo después de agotar /users/online para renderizar una sección de "Members".
Cursor pagination on commenterName: server walks the partial {tenantId, urlId, commenterName} index from afterName forward via $gt, no $skip cost.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
afterNamestringNo
afterUserIdstringNo

Response

Returns: GetOfflineUsersResponse

Example

Ejemplo getOfflineUsers
Copy Copy
1
2async function fetchOfflineUsers(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "thread_9876";
5 const afterName: string = "Jane Smith";
6 const afterUserId: string = "user_7f9b3c";
7
8 const offlineUsers: GetOfflineUsersResponse = await getOfflineUsers(
9 tenantId,
10 urlId,
11 afterName,
12 afterUserId
13 );
14
15 console.log(offlineUsers);
16}
17

Obtener usuarios en línea Internal Link

Actualmente, los espectadores 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
tenantIdstring
urlIdstring
afterNamestringNo
afterUserIdstringNo

Respuesta

Devuelve: GetOnlineUsersResponse

Ejemplo

Ejemplo getOnlineUsers
Copy Copy
1
2async function demoOnlineUsers() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_98765";
5
6 // Con parámetros de paginación opcionales
7 const pagedResult: GetOnlineUsersResponse = await getOnlineUsers(
8 tenantId,
9 urlId,
10 "alice_smith",
11 "user_9"
12 );
13
14 // Sin parámetros de paginación opcionales
15 const fullResult: GetOnlineUsersResponse = await getOnlineUsers(tenantId, urlId);
16}
17

Obtener página por URL/ID 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

Obtener páginas Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring

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

Obtener páginas públicas Internal Link

List pages for a tenant. Used by the FChat desktop client to populate its room list.
Requires enableFChat to be true on the resolved custom config for each page.
Pages that require SSO are filtered against the requesting user's group access.

Parameters

NombreTipoObligatorioDescripción
tenantIdstring
cursorstringNo
limitnumberNo
qstringNo
sortByPagesSortByNo
hasCommentsbooleanNo

Response

Returns: GetPagesPublicResponse

Example

Ejemplo getPagesPublic
Copy Copy
1
2async function fetchPages() {
3 const tenantId: string = "tenant_12345";
4 const cursor: string = "nextPageToken";
5 const limit: number = 20;
6 const q: string = "blog";
7 const sortBy: PagesSortBy = "createdAt";
8 const hasComments: boolean = true;
9
10 const response: GetPagesPublicResponse = await getPagesPublic(
11 tenantId,
12 cursor,
13 limit,
14 q,
15 sortBy,
16 hasComments
17 );
18
19 console.log(response);
20}
21

Obtener información de usuarios Internal Link

Bulk user info for a tenant. Given userIds, return display info from User / SSOUser.
Used by the comment widget to enrich users that just appeared via a presence event.
No page context: privacy is enforced uniformly (private profiles are masked).

Parameters

NombreTipoObligatorioDescripción
tenantIdstring
idsstring

Response

Returns: GetUsersInfoResponse

Example

Ejemplo getUsersInfo
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const ids: string = "user-1001,user-1002";
4
5const usersInfo: GetUsersInfoResponse = await getUsersInfo(tenantId, ids);
6
7// Los campos opcionales en la respuesta pueden ser undefined
8const firstUser: PageUserEntry | undefined = usersInfo?.users?.[0];
9

Actualizar parcialmente página Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateAPIPageDataUpdateAPIPageData

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

Eliminar evento webhook pendiente Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: DeletePendingWebhookEventResponse

Ejemplo

Ejemplo deletePendingWebhookEvent
Copy Copy
1
2async function runDemo() {
3 const tenantId: string = 'c3f5e9d2-1a2b-4c3d-9e7f-1234567890ab';
4 const eventId: string = 'event_987654321';
5 const response: DeletePendingWebhookEventResponse = await deletePendingWebhookEvent(tenantId, eventId);
6 console.log(response);
7}
8runDemo();
9

Obtener conteo de eventos webhook pendientes Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo

Respuesta

Devuelve: GetPendingWebhookEventCountResponse1

Ejemplo

getPendingWebhookEventCount Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_001";
4
5 const responseAll: GetPendingWebhookEventCountResponse1 = await getPendingWebhookEventCount(
6 tenantId,
7 "comment_456",
8 "ext_789",
9 "comment.updated",
10 "webhook",
11 "mydomain.com",
12 3
13 );
14
15 const responseMinimal: GetPendingWebhookEventCountResponse1 = await getPendingWebhookEventCount(tenantId);
16
17 console.log(responseAll, responseMinimal);
18})();
19

Obtener eventos webhook pendientes Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo
skipnumberNo

Respuesta

Devuelve: GetPendingWebhookEventsResponse1

Ejemplo

Ejemplo de getPendingWebhookEvents
Copy Copy
1
2async function fetchPendingEvents(): Promise<void> {
3 const tenantId: string = "123e4567-e89b-12d3-a456-426614174000";
4 const commentId: string = "cmt-987654321";
5 const externalId: string = "ext-abc-123";
6 const eventType: string = "comment_created";
7 const type: string = "outbound";
8 const domain: string = "myblog.com";
9 const attemptCountGT: number = 3;
10 const skip: number = 0;
11
12 const pending: GetPendingWebhookEventsResponse1 = await getPendingWebhookEvents(
13 tenantId,
14 commentId,
15 externalId,
16 eventType,
17 type,
18 domain,
19 attemptCountGT,
20 skip
21 );
22
23 console.log(pending);
24}
25
26fetchPendingEvents();
27

Crear configuración de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createQuestionConfigBodyCreateQuestionConfigBody

Respuesta

Devuelve: CreateQuestionConfigResponse1

Ejemplo

Ejemplo createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_12345";
3
4const customOption: QuestionConfigCustomOptionsInner = {
5 label: "Option A",
6 value: "a",
7};
8
9const createQuestionConfigBody: CreateQuestionConfigBody = {
10 questionText: "What is your favorite color?",
11 isActive: true,
12 // los campos opcionales pueden omitirse
13 customOptions: [customOption],
14};
15
16const response: CreateQuestionConfigResponse1 = await createQuestionConfig(
17 tenantId,
18 createQuestionConfigBody
19);
20

Eliminar configuración de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: DeleteQuestionConfigResponse

Ejemplo

Ejemplo de deleteQuestionConfig
Copy Copy
1
2async function runDeletion(): Promise<void> {
3 const tenantId: string = "tenant_8f5a2c9d";
4 const configId: string = "questionConfig_4b7e1f";
5 const deleteResult: DeleteQuestionConfigResponse = await deleteQuestionConfig(tenantId, configId);
6 console.log(deleteResult);
7}
8void runDeletion();
9

Obtener configuración de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetQuestionConfigResponse1

Ejemplo

getQuestionConfig Ejemplo
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-42";
3const questionId: string = "question-7f9b3e";
4
5const response: GetQuestionConfigResponse1 = await getQuestionConfig(tenantId, questionId);
6

Obtener configuraciones de preguntas Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetQuestionConfigsResponse1

Ejemplo

Ejemplo getQuestionConfigs
Copy Copy
1
2async function fetchQuestionConfigs() {
3 const tenantId: string = "tenant-9876";
4
5 // Llamada sin el parámetro opcional 'skip'
6 const configsWithoutSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId);
7
8 // Llamada con el parámetro opcional 'skip'
9 const skip: number = 10;
10 const configsWithSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId, skip);
11
12 console.log(configsWithoutSkip, configsWithSkip);
13}
14

Actualizar configuración de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateQuestionConfigBodyUpdateQuestionConfigBody

Respuesta

Devuelve: UpdateQuestionConfigResponse

Ejemplo

Ejemplo de updateQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const questionId: string = "qstn-2023-04";
4
5const updateBody: UpdateQuestionConfigBody = {
6 // campos opcionales demostrados
7 customOptions: [
8 {
9 id: "opt-001",
10 label: "Extra Details",
11 required: true,
12 },
13 ],
14 renderingType: "markdown",
15};
16
17const response: UpdateQuestionConfigResponse = await updateQuestionConfig(
18 tenantId,
19 questionId,
20 updateBody
21);
22

Crear resultado de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
createQuestionResultBodyCreateQuestionResultBodyYes

Respuesta

Devuelve: CreateQuestionResultResponse1

Ejemplo

Ejemplo createQuestionResult
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3
4const metaItem: MetaItem = {
5 key: "campaign",
6 value: "spring-launch"
7};
8
9const questionResultBody: CreateQuestionResultBody = {
10 questionId: "question-42",
11 answer: "Positive",
12 metadata: [metaItem]
13 // los campos opcionales como notas se omiten
14};
15
16const result: CreateQuestionResultResponse1 = await createQuestionResult(tenantId, questionResultBody);
17

Eliminar resultado de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: DeleteQuestionResultResponse

Ejemplo

Ejemplo de deleteQuestionResult
Copy Copy
1
2async function runDeletion(): Promise<void> {
3 const tenantId: string = "tenant-001";
4 const resultId: string = "c9f2a5b3-7e6d-4c9a-8b1f-2d3e4f5a6b7c";
5 const result: DeleteQuestionResultResponse = await deleteQuestionResult(tenantId, resultId);
6 console.log(result);
7}
8
9runDeletion();
10

Obtener resultado de pregunta Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetQuestionResultResponse1

Ejemplo

Ejemplo getQuestionResult
Copy Copy
1
2async function fetchQuestionResult(): Promise<void> {
3 const tenantId: string = "acme-corp-001";
4 const questionId: string = "question-7a9b8c";
5 const result: GetQuestionResultResponse1 = await getQuestionResult(tenantId, questionId);
6
7 const question: QuestionResult | undefined = result.questionResult;
8 const firstMeta: MetaItem | undefined = result.meta?.[0];
9
10 console.log(question?.id, firstMeta?.key);
11}
12

Obtener resultados de preguntas Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstringNo
userIdstringNo
startDatestringNo
questionIdstringNo
questionIdsstringNo
skipnumberNo

Respuesta

Devuelve: GetQuestionResultsResponse1

Ejemplo

Ejemplo getQuestionResults
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const urlId: string = "post-456";
5 const userId: string = "user-789";
6 const startDate: string = "2023-09-01T00:00:00Z";
7 const questionId: string = "q-101";
8 const questionIds: string = "q-102,q-103";
9 const skip: number = 20;
10
11 const results: GetQuestionResultsResponse1 = await getQuestionResults(
12 tenantId,
13 urlId,
14 userId,
15 startDate,
16 questionId,
17 questionIds,
18 skip
19 );
20
21 console.log(results);
22})();
23

Actualizar resultado de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
updateQuestionResultBodyUpdateQuestionResultBodyYes

Respuesta

Devuelve: UpdateQuestionResultResponse

Ejemplo

Ejemplo de updateQuestionResult
Copy Copy
1
2async function runUpdate() {
3 const tenantId: string = "acme-corp-01";
4 const id: string = "qr-20230915-001";
5
6 const updateQuestionResultBody: UpdateQuestionResultBody = {
7 // campos requeridos
8 answer: "No",
9 // campos opcionales
10 comment: "User clarified their response",
11 // anotherOptionalField?: value,
12 };
13
14 const result: UpdateQuestionResultResponse = await updateQuestionResult(
15 tenantId,
16 id,
17 updateQuestionResultBody
18 );
19
20 console.log(result);
21}
22
23runUpdate();
24

Agregación de resultados de preguntas Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

Respuesta

Devuelve: AggregateQuestionResultsResponse1

Ejemplo

aggregateQuestionResults Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-123";
4 const questionId: string = "feedback-rating";
5 const questionIds: string[] = ["feedback-rating", "recommendation"];
6 const urlId: string = "https://myblog.com/articles/42";
7 const timeBucket: AggregateTimeBucket = "month";
8 const startDate: Date = new Date("2023-01-01T00:00:00Z");
9 const forceRecalculate: boolean = true;
10
11 const result: AggregateQuestionResultsResponse1 = await aggregateQuestionResults(
12 tenantId,
13 questionId,
14 questionIds,
15 urlId,
16 timeBucket,
17 startDate,
18 forceRecalculate
19 );
20
21 console.log(result);
22})();
23

Agregación en bloque de resultados de preguntas Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequest
forceRecalculatebooleanNo

Respuesta

Devuelve: BulkAggregateQuestionResultsResponse1

Ejemplo

Ejemplo bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "acme-corp";
3
4const request: BulkAggregateQuestionResultsRequest = {
5 questionIds: ["product-satisfaction", "feature-usage"],
6 startDate: "2024-01-01T00:00:00Z",
7 endDate: "2024-01-31T23:59:59Z",
8 timeBucket: "day"
9};
10
11const result: BulkAggregateQuestionResultsResponse1 = await bulkAggregateQuestionResults(
12 tenantId,
13 request,
14 true
15);
16

Combinar comentarios con resultados de preguntas Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

Respuesta

Devuelve: CombineCommentsWithQuestionResultsResponse

Ejemplo

Ejemplo combineCommentsWithQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const questionIds: string[] = ["question_1", "question_2"];
4const urlId: string = "article-9876";
5const startDate: Date = new Date("2023-01-01T00:00:00Z");
6const forceRecalculate: boolean = false;
7const minValue: number = 1;
8const maxValue: number = 5;
9const limit: number = 50;
10
11const result: CombineCommentsWithQuestionResultsResponse = await combineCommentsWithQuestionResults(
12 tenantId,
13 undefined,
14 questionIds,
15 urlId,
16 startDate,
17 forceRecalculate,
18 minValue,
19 maxValue,
20 limit
21);
22

Agregar usuario SSO Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createAPISSOUserDataCreateAPISSOUserData

Respuesta

Devuelve: AddSSOUserAPIResponse

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

Eliminar usuario SSO 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

Obtener usuario SSO por correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
emailstring

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

Obtener usuario SSO por ID Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

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

Obtener usuarios SSO Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Actualizar parcialmente usuario SSO Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
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

Reemplazar usuario SSO Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
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

Crear suscripción Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData

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

Eliminar suscripción 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

Obtener suscripciones Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
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

Actualizar suscripción Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionData
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

Obtener usos diarios del tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
yearNumbernumberNo
monthNumbernumberNo
dayNumbernumberNo
skipnumberNo

Respuesta

Devuelve: GetTenantDailyUsagesResponse1

Ejemplo

Ejemplo getTenantDailyUsages
Copy Copy
1
2async function fetchDailyUsage() {
3 const tenantId: string = "tenant-9876";
4 const yearNumber: number = 2024;
5 const monthNumber: number = 5; // Mayo
6 const dayNumber: number = 12;
7 const skip: number = 0;
8
9 const fullResult: GetTenantDailyUsagesResponse1 = await getTenantDailyUsages(
10 tenantId,
11 yearNumber,
12 monthNumber,
13 dayNumber,
14 skip
15 );
16
17 // Usando solo el parámetro requerido y uno opcional
18 const partialResult: GetTenantDailyUsagesResponse1 = await getTenantDailyUsages(
19 tenantId,
20 yearNumber
21 );
22
23 console.log(fullResult, partialResult);
24}
25
26fetchDailyUsage();
27

Crear paquete de tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

Respuesta

Devuelve: CreateTenantPackageResponse1

Ejemplo

Ejemplo createTenantPackage
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9876";
4
5 const body: CreateTenantPackageBody = {
6 packageName: "Standard",
7 quota: 5000,
8 // campo opcional
9 description: "Standard package for medium traffic",
10 };
11
12 const result: CreateTenantPackageResponse1 = await createTenantPackage(tenantId, body);
13 console.log(result);
14})();
15

Eliminar paquete de tenant Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: DeleteTenantPackageResponse

Ejemplo

deleteTenantPackage Ejemplo
Copy Copy
1
2async function removeTenantPackage(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const packageId: string = "pkg_67890";
5
6 const result: DeleteTenantPackageResponse = await deleteTenantPackage(tenantId, packageId);
7 // usar el resultado según sea necesario
8}
9
10removeTenantPackage();
11

Obtener paquete de tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetTenantPackageResponse1

Ejemplo

Ejemplo getTenantPackage
Copy Copy
1
2async function fetchTenantPackage(): Promise<void> {
3 const tenantId: string = "acme-tenant-2024";
4 const packageId: string = "premium-package-01";
5 const response: GetTenantPackageResponse1 = await getTenantPackage(tenantId, packageId);
6
7 // Campos opcionales en la respuesta
8 const tenantPackage: TenantPackage | undefined = response.tenantPackage;
9 const customConfig: CustomConfigParameters | undefined = response.customConfigParameters;
10}
11

Obtener paquetes de tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetTenantPackagesResponse1

Ejemplo

Ejemplo getTenantPackages
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_67890';
4 const skip: number = 30;
5
6 const packagesWithSkip: GetTenantPackagesResponse1 = await getTenantPackages(tenantId, skip);
7 const packagesWithoutSkip: GetTenantPackagesResponse1 = await getTenantPackages(tenantId);
8
9 console.log(packagesWithSkip, packagesWithoutSkip);
10})();
11

Reemplazar paquete de tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

Respuesta

Devuelve: ReplaceTenantPackageResponse

Ejemplo

Ejemplo replaceTenantPackage
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant-01";
4 const packageId: string = "pkg-2024-annual";
5
6 const config: CustomConfigParameters = {
7 // campos de configuración personalizados aquí
8 };
9
10 const body: ReplaceTenantPackageBody = {
11 name: "Enterprise Package",
12 // configuración personalizada opcional
13 customConfig: config,
14 };
15
16 const response: ReplaceTenantPackageResponse = await replaceTenantPackage(tenantId, packageId, body);
17 console.log(response);
18})();
19

Actualizar paquete de tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
updateTenantPackageBodyUpdateTenantPackageBodyYes

Respuesta

Devuelve: UpdateTenantPackageResponse

Ejemplo

updateTenantPackage Ejemplo
Copy Copy
1
2const tenantId: string = "tenant-9876";
3const packageId: string = "pkg-2023";
4
5const customConfig: CustomConfigParameters = {
6 enableSpamFilter: true,
7 spamRatingThreshold: 4,
8};
9
10const updateBody: UpdateTenantPackageBody = {
11 displayName: "Enterprise Pro",
12 customConfig,
13};
14
15const response: UpdateTenantPackageResponse = await updateTenantPackage(
16 tenantId,
17 packageId,
18 updateBody
19);
20

Crear usuario de tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createTenantUserBodyCreateTenantUserBody

Respuesta

Devuelve: CreateTenantUserResponse1

Ejemplo

Ejemplo createTenantUser
Copy Copy
1
2const tenantId: string = "a1b2c3d4-5678-90ab-cdef-1234567890ab";
3
4const newUser: CreateTenantUserBody = {
5 email: "jane.doe@example.com",
6 firstName: "Jane",
7 lastName: "Doe",
8 role: "admin",
9 // parámetros opcionales
10 phoneNumber: "+15551234567",
11 isActive: true,
12};
13
14const result: CreateTenantUserResponse1 = await createTenantUser(tenantId, newUser);
15

Eliminar usuario de tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
deleteCommentsstringNo
commentDeleteModestringNo

Respuesta

Devuelve: DeleteTenantUserResponse

Ejemplo

Ejemplo deleteTenantUser
Copy Copy
1
2async function demoDeleteTenantUser() {
3 const tenantId: string = "acme-corp-tenant";
4 const userId: string = "user-9876";
5
6 // Eliminar al usuario y todos sus comentarios, usando modo de eliminación dura
7 const resultWithOptions: DeleteTenantUserResponse = await deleteTenantUser(
8 tenantId,
9 userId,
10 "true",
11 "hard"
12 );
13
14 // Eliminar al usuario sin eliminar los comentarios (comportamiento predeterminado)
15 const resultBasic: DeleteTenantUserResponse = await deleteTenantUser(tenantId, userId);
16}
17

Obtener usuario de tenant Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetTenantUserResponse1

Ejemplo

Ejemplo getTenantUser
Copy Copy
1
2async function fetchUser(): Promise<void> {
3 const tenantId: string = "tenant-01a2b3c";
4 const userId: string = "user-7890";
5 const result: GetTenantUserResponse1 = await getTenantUser(tenantId, userId);
6 console.log(result);
7}
8

Obtener usuarios de tenant Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
skipnumberNo

Respuesta

Devuelve: GetTenantUsersResponse1

Ejemplo

Ejemplo getTenantUsers
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9f7a2c";
4 const skip: number = 25;
5
6 const usersPage: GetTenantUsersResponse1 = await getTenantUsers(tenantId, skip);
7 const allUsers: GetTenantUsersResponse1 = await getTenantUsers(tenantId);
8})();
9

Reemplazar usuario de tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
replaceTenantUserBodyReplaceTenantUserBody
updateCommentsstringNo

Respuesta

Devuelve: ReplaceTenantUserResponse

Ejemplo

replaceTenantUser Ejemplo
Copy Copy
1
2async function updateUser() {
3 const tenantId: string = "c3d1f2e4-5b6a-4c7d-9f2e-1234567890ab";
4 const userId: string = "u-654321";
5 const replaceBody: ReplaceTenantUserBody = {
6 email: "newuser@example.com",
7 username: "newusername"
8 };
9 const response: ReplaceTenantUserResponse = await replaceTenantUser(
10 tenantId,
11 userId,
12 replaceBody,
13 "true"
14 );
15 console.log(response);
16}
17updateUser();
18

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
redirectURLstringNo

Respuesta

Devuelve: SendLoginLinkResponse

Ejemplo

Ejemplo de sendLoginLink
Copy Copy
1
2async function demoSendLoginLink() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-9876";
5 const redirectURL: string = "https://app.acme-corp.com/auth/callback";
6
7 const resultWithRedirect: SendLoginLinkResponse = await sendLoginLink(tenantId, userId, redirectURL);
8 const resultWithoutRedirect: SendLoginLinkResponse = await sendLoginLink(tenantId, userId);
9}
10

Actualizar usuario de tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateTenantUserBodyUpdateTenantUserBody
updateCommentsstringNo

Respuesta

Devuelve: UpdateTenantUserResponse

Ejemplo

Ejemplo de updateTenantUser
Copy Copy
1
2let tenantId: string = "5f8f8c1a2e9b3c001c2a9b2d";
3let userId: string = "user_98765";
4
5let updateBody: UpdateTenantUserBody = {
6 email: "jane.smith@example.com",
7 role: "moderator",
8 isActive: false,
9};
10
11let updateComments: string = "Deactivated user due to policy violation.";
12
13let result: UpdateTenantUserResponse = await updateTenantUser(tenantId, userId, updateBody, updateComments);
14

Crear tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createTenantBodyCreateTenantBody

Respuesta

Devuelve: CreateTenantResponse1

Ejemplo

Ejemplo createTenant
Copy Copy
1
2async function example() {
3 const tenantId: string = 'tenant-2024-01';
4 const createTenantBody: CreateTenantBody = {
5 // campos requeridos
6 name: 'Acme International',
7 // los campos opcionales pueden añadirse según sea necesario, p. ej.:
8 // billingInfo: { address: '123 Main St', city: 'Metropolis' } as BillingInfo,
9 };
10 const response: CreateTenantResponse1 = await createTenant(tenantId, createTenantBody);
11 console.log(response);
12}
13

Eliminar tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
surestringNo

Respuesta

Devuelve: DeleteTenantResponse

Ejemplo

Ejemplo deleteTenant
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const id: string = "resource_98765";
5 const sure: string = "confirm";
6
7 // Llamada con el parámetro opcional 'sure'
8 const responseWithSure: DeleteTenantResponse = await deleteTenant(tenantId, id, sure);
9 console.log(responseWithSure);
10
11 // Llamada sin el parámetro opcional 'sure'
12 const responseWithoutSure: DeleteTenantResponse = await deleteTenant(tenantId, id);
13 console.log(responseWithoutSure);
14}
15
16runExample();
17

Obtener tenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetTenantResponse1

Ejemplo

Ejemplo getTenant
Copy Copy
1
2async function fetchTenant(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const id: string = "user_9876";
5 const tenantInfo: GetTenantResponse1 = await getTenant(tenantId, id);
6 console.log(tenantInfo);
7}
8
9fetchTenant();
10

Obtener tenants Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
metastringNo
skipnumberNo

Respuesta

Devuelve: GetTenantsResponse1

Ejemplo

Ejemplo getTenants
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-9f8e7d6c";
4 const resultOnlyId: GetTenantsResponse1 = await getTenants(tenantId);
5 const resultWithMeta: GetTenantsResponse1 = await getTenants(tenantId, "full");
6 const resultAllParams: GetTenantsResponse1 = await getTenants(tenantId, "full", 15);
7 console.log(resultOnlyId, resultWithMeta, resultAllParams);
8})();
9

Actualizar tenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateTenantBodyUpdateTenantBody

Respuesta

Devuelve: UpdateTenantResponse

Ejemplo

Ejemplo de updateTenant
Copy Copy
1
2const tenantId: string = "c8f9e3d2-4b6a-11ee-8c99-0242ac130003";
3const id: string = "tenant-config-01";
4
5const updateBody: UpdateTenantBody = {
6 domain: "mytenant.fastcomments.io",
7 branding: {
8 logoUrl: "https://cdn.mytenant.com/assets/logo.png"
9 },
10 description: "Branding update for Q3"
11};
12
13const response: UpdateTenantResponse = await updateTenant(tenantId, id, updateBody);
14console.log(response);
15

Cambiar estado del ticket Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
userIdstring
idstring
changeTicketStateBodyChangeTicketStateBody

Respuesta

Devuelve: ChangeTicketStateResponse1

Ejemplo

Ejemplo de changeTicketState
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-97123";
4const ticketId: string = "ticket-45001";
5
6const changeTicketStateBody: ChangeTicketStateBody = {
7 state: "closed",
8 // campo opcional en el cuerpo
9 comment: "Issue resolved after code fix"
10};
11
12const response: ChangeTicketStateResponse1 = await changeTicketState(
13 tenantId,
14 userId,
15 ticketId,
16 changeTicketStateBody
17);
18

Crear ticket Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
userIdstringYes
createTicketBodyCreateTicketBodyYes

Respuesta

Devuelve: CreateTicketResponse1

Ejemplo

Ejemplo de createTicket
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const userId: string = "user_98765";
4
5const ticketBody: CreateTicketBody = {
6 subject: "Issue with payment processing"
7 // description?: string es opcional y se omite
8};
9
10const response: CreateTicketResponse1 = await createTicket(tenantId, userId, ticketBody);
11// Ejemplo de uso de un campo opcional de la respuesta
12// console.log(response.ticket?.id);
13

Obtener ticket Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
userIdstringNo

Respuesta

Devuelve: GetTicketResponse1

Ejemplo

Ejemplo getTicket
Copy Copy
1
2const tenantId: string = "acme-inc";
3const ticketId: string = "ticket-3421";
4const userId: string = "alice.smith";
5
6const ticketWithUser: GetTicketResponse1 = await getTicket(tenantId, ticketId, userId);
7const ticketWithoutUser: GetTicketResponse1 = await getTicket(tenantId, ticketId);
8

Obtener tickets Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

Respuesta

Devuelve: GetTicketsResponse1

Ejemplo

Ejemplo getTickets
Copy Copy
1
2async function loadTickets() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe";
5 const state: number = 2; // p.ej., cerrado
6 const skip: number = 10;
7 const limit: number = 5;
8
9 const ticketsFull: GetTicketsResponse1 = await getTickets(tenantId, userId, state, skip, limit);
10 const ticketsPartial: GetTicketsResponse1 = await getTickets(tenantId);
11}
12
13loadTickets();
14

Obtener traducciones Internal Link

Parámetros

NombreTipoObligatorioDescripción
namespacestring
componentstring
localestringNo
useFullTranslationIdsbooleanNo

Respuesta

Devuelve: GetTranslationsResponse1

Ejemplo

Ejemplo de getTranslations
Copy Copy
1
2(async () => {
3 const namespace: string = 'blog';
4 const component: string = 'comment-editor';
5 const locale: string = 'fr-FR';
6 const useFullTranslationIds: boolean = true;
7
8 const basicTranslations: GetTranslationsResponse1 = await getTranslations(namespace, component);
9 const fullTranslations: GetTranslationsResponse1 = await getTranslations(namespace, component, locale, useFullTranslationIds);
10})();
11

Subir imagen 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

Obtener progreso de insignia de usuario por ID Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetUserBadgeProgressByIdResponse

Ejemplo

Ejemplo getUserBadgeProgressById
Copy Copy
1
2async function demo(): Promise<void> {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-42";
5 const result: GetUserBadgeProgressByIdResponse = await getUserBadgeProgressById(tenantId, userId);
6 const progress: UserBadgeProgress | undefined = result.progress;
7 const earnedAt: Date | undefined = progress?.earnedAt;
8 console.log(`Badge earned at: ${earnedAt?.toISOString() ?? "not earned yet"}`);
9}
10demo();
11

Obtener progreso de insignia por ID de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstring

Respuesta

Devuelve: GetUserBadgeProgressByUserIdResponse

Ejemplo

getUserBadgeProgressByUserId Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const userId: string = "user-12345";
5
6 const badgeProgress: GetUserBadgeProgressByUserIdResponse = await getUserBadgeProgressByUserId(tenantId, userId);
7 console.log(badgeProgress);
8})();
9

Obtener lista de progreso de insignias de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
userIdstringNo
limitnumberNo
skipnumberNo

Respuesta

Devuelve: GetUserBadgeProgressListResponse

Ejemplo

getUserBadgeProgressList Ejemplo
Copy Copy
1
2async function fetchBadgeProgress() {
3 const tenantId: string = "acme-corp";
4 const userId: string = "john.doe@example.com";
5 const limit: number = 10;
6 const skip: number = 5;
7
8 const fullList: GetUserBadgeProgressListResponse = await getUserBadgeProgressList(
9 tenantId,
10 userId,
11 limit,
12 skip
13 );
14
15 const simpleList: GetUserBadgeProgressListResponse = await getUserBadgeProgressList(tenantId);
16}
17
18fetchBadgeProgress();
19

Crear insignia de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

Respuesta

Devuelve: CreateUserBadgeResponse

Ejemplo

Ejemplo de createUserBadge
Copy Copy
1
2const tenantId: string = "company-42";
3
4const badgeParams: CreateUserBadgeParams = {
5 name: "Community Champion",
6 iconUrl: "https://assets.example.com/badges/champion.png",
7 // la descripción es opcional y se omite aquí
8};
9
10const result: CreateUserBadgeResponse = await createUserBadge(tenantId, badgeParams);
11

Eliminar insignia de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: DeleteUserBadgeResponse

Ejemplo

deleteUserBadge Ejemplo
Copy Copy
1
2async function exampleDeleteBadge(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6a";
4 const badgeId: string = "badge_4e3d2c1b";
5 const result: DeleteUserBadgeResponse = await deleteUserBadge(tenantId, badgeId);
6 console.log(result);
7}
8exampleDeleteBadge();
9

Obtener insignia de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

Respuesta

Devuelve: GetUserBadgeResponse

Ejemplo

Ejemplo de getUserBadge
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant-001";
4 const badgeId: string = "badge-5f9d3a2b";
5
6 const badgeResponse: GetUserBadgeResponse = await getUserBadge(tenantId, badgeId);
7
8 // Acceder de forma segura a los campos opcionales
9 const badgeName: string | undefined = badgeResponse.userBadge?.name;
10 console.log(`Badge ID: ${badgeId}, Name: ${badgeName ?? "Unnamed"}`);
11}
12
13runExample();
14

Obtener insignias de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
userIdstringNo
badgeIdstringNo
typenumberNo
displayedOnCommentsbooleanNo
limitnumberNo
skipnumberNo

Respuesta

Devuelve: GetUserBadgesResponse

Ejemplo

getUserBadges Ejemplo
Copy Copy
1
2async function example() {
3 const tenantId: string = "tenant-01";
4 const userId: string = "user-42";
5 const badgeId: string = "badge-gold";
6 const type: number = 1;
7 const displayedOnComments: boolean = true;
8 const limit: number = 10;
9 const skip: number = 5;
10
11 const fullResult: GetUserBadgesResponse = await getUserBadges(
12 tenantId,
13 userId,
14 badgeId,
15 type,
16 displayedOnComments,
17 limit,
18 skip
19 );
20
21 const minimalResult: GetUserBadgesResponse = await getUserBadges(tenantId);
22}
23example();
24

Actualizar insignia de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Respuesta

Devuelve: UpdateUserBadgeResponse

Ejemplo

Ejemplo de updateUserBadge
Copy Copy
1
2async function applyBadge() {
3 const tenantId: string = "acme-corp-tenant";
4 const userId: string = "user-98765";
5
6 const params: UpdateUserBadgeParams = {
7 badgeId: "gold-contributor",
8 // ejemplo de campo opcional
9 expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString(),
10 };
11
12 const result: UpdateUserBadgeResponse = await updateUserBadge(tenantId, userId, params);
13 console.log(result);
14}
15
16applyBadge();
17

Obtener conteo de notificaciones de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
ssostringNo

Respuesta

Devuelve: GetUserNotificationCountResponse1

Ejemplo

Ejemplo de getUserNotificationCount
Copy Copy
1
2async function demoGetUserNotificationCount() {
3 const tenantId: string = "acme-corp-01";
4
5 // Llamar con token SSO opcional
6 const countWithSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
7 tenantId,
8 "sso-token-abc123"
9 );
10
11 // Llamar sin token SSO
12 const countWithoutSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
13 tenantId
14 );
15
16 console.log(countWithSSO, countWithoutSSO);
17}
18

Obtener notificaciones de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstringNo
pageSizenumberNo
afterIdstringNo
includeContextbooleanNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
includeTranslationsbooleanNo
includeTenantNotificationsbooleanNo
ssostringNo

Respuesta

Devuelve: GetUserNotificationsResponse

Ejemplo

Ejemplo getUserNotifications
Copy Copy
1
2async function fetchUserNotifications() {
3 const tenantId: string = "tenant_9f4b2c";
4 const urlId: string = "post_1234";
5 const pageSize: number = 25;
6 const afterId: string = "notif_5678";
7 const includeContext: boolean = true;
8 const unreadOnly: boolean = false;
9 const dmOnly: boolean = false;
10 const includeTranslations: boolean = true;
11
12 const notifications: GetUserNotificationsResponse = await getUserNotifications(
13 tenantId,
14 urlId,
15 pageSize,
16 afterId,
17 includeContext,
18 undefined,
19 unreadOnly,
20 dmOnly,
21 undefined,
22 includeTranslations,
23 undefined,
24 undefined
25 );
26
27 console.log(notifications);
28}
29

Restablecer conteo de notificaciones de usuario Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstring
ssostringNo

Response

Devuelve: ResetUserNotificationCountResponse

Example

Ejemplo de resetUserNotificationCount
Copy Copy
1
2async function demoResetCount() {
3 const tenantId: string = "acme-corp-tenant";
4 const sso: string = "sso-user-9876";
5
6 // Llamada con el parámetro sso opcional
7 const resultWithSso: ResetUserNotificationCountResponse = await resetUserNotificationCount(tenantId, sso);
8
9 // Llamada sin el parámetro sso opcional
10 const resultWithoutSso: ResetUserNotificationCountResponse = await resetUserNotificationCount(tenantId);
11
12 console.log(resultWithSso, resultWithoutSso);
13}
14

Restablecer notificaciones de usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

Respuesta

Devuelve: ResetUserNotificationsResponse1

Ejemplo

resetUserNotifications Ejemplo
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-001";
4 const afterId: string = "notif-123";
5 const afterCreatedAt: number = 1697049600; // ejemplo de marca de tiempo UNIX
6 const unreadOnly: boolean = true;
7 const dmOnly: boolean = false;
8 const noDm: boolean = false;
9 const sso: string = "sso-token-xyz";
10
11 const result: ResetUserNotificationsResponse1 = await resetUserNotifications(
12 tenantId,
13 afterId,
14 afterCreatedAt,
15 unreadOnly,
16 dmOnly,
17 noDm,
18 sso
19 );
20
21 console.log(result);
22})();
23

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

Enable or disable notifications for a specific comment.

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
notificationIdstringYes
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumYes
commentIdstringYes
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationCommentSubscriptionStatusResponse

Ejemplo

updateUserNotificationCommentSubscriptionStatus Ejemplo
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const notificationId: string = "notif_9876";
4const commentId: string = "comment_abc123";
5const optedInOrOut: UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum =
6 UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum.OptIn;
7const sso: string = "ssoTokenXYZ";
8
9const responseWithSso: UpdateUserNotificationCommentSubscriptionStatusResponse =
10 await updateUserNotificationCommentSubscriptionStatus(
11 tenantId,
12 notificationId,
13 optedInOrOut,
14 commentId,
15 sso
16 );
17
18const responseWithoutSso: UpdateUserNotificationCommentSubscriptionStatusResponse =
19 await updateUserNotificationCommentSubscriptionStatus(
20 tenantId,
21 notificationId,
22 optedInOrOut,
23 commentId
24 );
25

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

Habilitar 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

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
urlstring
pageTitlestring
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationPageSubscriptionStatusResponse

Ejemplo

Ejemplo de updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant-2024";
4 const urlId: string = "page-5678";
5 const url: string = "https://example.com/articles/typescript-tips";
6 const pageTitle: string = "Top TypeScript Tips";
7 const subscribedOrUnsubscribed: UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum =
8 UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum.Subscribed;
9 const sso: string = "sso-token-xyz";
10
11 const resultWithSso: UpdateUserNotificationPageSubscriptionStatusResponse = await updateUserNotificationPageSubscriptionStatus(
12 tenantId,
13 urlId,
14 url,
15 pageTitle,
16 subscribedOrUnsubscribed,
17 sso
18 );
19
20 const resultWithoutSso: UpdateUserNotificationPageSubscriptionStatusResponse = await updateUserNotificationPageSubscriptionStatus(
21 tenantId,
22 urlId,
23 url,
24 pageTitle,
25 subscribedOrUnsubscribed
26 );
27})();
28

Actualizar estado de notificación de usuario Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
notificationIdstringYes
newStatusUpdateUserNotificationStatusNewStatusEnumYes
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationStatusResponse

Ejemplo

Ejemplo de updateUserNotificationStatus
Copy Copy
1
2const tenantId: string = "acme-corp";
3const notificationId: string = "notif-20231101-001";
4const newStatus: UpdateUserNotificationStatusNewStatusEnum = UpdateUserNotificationStatusNewStatusEnum.Dismissed;
5const ssoToken: string = "sso-9f8e7d6c5b4a";
6
7const result: UpdateUserNotificationStatusResponse = await updateUserNotificationStatus(
8 tenantId,
9 notificationId,
10 newStatus,
11 ssoToken
12);
13

Obtener estados de presencia de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Respuesta

Devuelve: GetUserPresenceStatusesResponse1

Ejemplo

Ejemplo getUserPresenceStatuses
Copy Copy
1
2async function fetchUserPresences() {
3 const tenantId: string = "tenant_9f8e2d";
4 const urlIdWS: string = "blog.mycompany.com/thread/12345";
5 const userIds: string = "alice,bob,carol";
6
7 const result: GetUserPresenceStatusesResponse1 = await getUserPresenceStatuses(
8 tenantId,
9 urlIdWS,
10 userIds
11 );
12
13 console.log(result);
14}
15

Buscar usuarios Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

Respuesta

Devuelve: SearchUsersResponse1

Ejemplo

Ejemplo de searchUsers
Copy Copy
1
2async function demoSearch(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "article-9876";
5 const usernameStartsWith: string = "john";
6 const mentionGroupIds: string[] = ["groupA", "groupB"];
7 const sso: string = "sso_abc123";
8 const searchSection: SearchUsersSearchSectionEnum = SearchUsersSearchSectionEnum.Users;
9
10 const response: SearchUsersResponse1 = await searchUsers(
11 tenantId,
12 urlId,
13 usernameStartsWith,
14 mentionGroupIds,
15 sso,
16 searchSection
17 );
18
19 console.log(response);
20}
21
22demoSearch();
23

Obtener usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetUserResponse1

Ejemplo

Ejemplo getUser
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const userId: string = "user_98765";
5 const result: GetUserResponse1 = await getUser(tenantId, userId);
6})();
7

Crear voto Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
directionCreateVoteDirectionEnum
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: CreateVoteResponse

Ejemplo

Ejemplo createVote
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "comment_987654";
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Upvote;
5const userId: string = "user_7f9a2b";
6
7const voteResult: CreateVoteResponse = await createVote(
8 tenantId,
9 commentId,
10 direction,
11 userId
12);
13

Eliminar voto Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
editKeystringNo

Respuesta

Devuelve: DeleteVoteResponse

Ejemplo

Ejemplo de deleteVote
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp";
4 const commentId: string = "comment-9876";
5 const editKey: string = "edit-key-123";
6
7 const resultWithEdit: DeleteVoteResponse = await deleteVote(tenantId, commentId, editKey);
8 const resultWithoutEdit: DeleteVoteResponse = await deleteVote(tenantId, commentId);
9})();
10

Obtener votos Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring

Respuesta

Devuelve: GetVotesResponse1

Ejemplo

Ejemplo getVotes
Copy Copy
1
2async function fetchVotes(): Promise<void> {
3 const tenantId: string = "acme-corp-01";
4 const urlId: string = "article-2024-05-15";
5
6 const response: GetVotesResponse1 = await getVotes(tenantId, urlId);
7
8 // Ejemplo de acceso a un campo opcional en la respuesta
9 const firstVoteId: string | undefined = response?.votes?.[0]?.id;
10}
11

Obtener votos para usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdstringYes
userIdstringNo
anonUserIdstringNo

Respuesta

Devuelve: GetVotesForUserResponse1

Ejemplo

Ejemplo getVotesForUser
Copy Copy
1
2async function demo() {
3 const tenantId: string = "acme-corp";
4 const urlId: string = "post-9f8b7c";
5 const userId: string = "user-42";
6 const anonUserId: string = "anon-123";
7
8 const votesRequiredOnly: GetVotesForUserResponse1 = await getVotesForUser(tenantId, urlId);
9 const votesWithUserId: GetVotesForUserResponse1 = await getVotesForUser(tenantId, urlId, userId);
10 const votesWithAnonId: GetVotesForUserResponse1 = await getVotesForUser(tenantId, urlId, undefined, anonUserId);
11}
12demo();
13

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