FastComments.com

SDK JavaScript/TypeScript do FastComments

Este é o SDK oficial JavaScript/TypeScript para o FastComments.

Gerencie comentários, usuários, SSO e moderação a partir do Node.js ou do navegador.

Repositório

Ver no GitHub


Instalação Internal Link

npm

npm install fastcomments-sdk

Documentação da API Internal Link


Referência completa da API: docs/api/README.md

Compatibilidade Navegador vs Servidor Internal Link


Este SDK usa dois pontos de entrada para garantir compatibilidade ideal e prevenir erros em tempo de execução:

  • fastcomments-sdk/browser - Versão segura para navegador com fetch nativo
  • fastcomments-sdk/server - Versão completa para Node.js com suporte a SSO
  • fastcomments-sdk (padrão) - Apenas tipos, seguro para importar em qualquer lugar

APIs Públicas vs Seguras Internal Link

O SDK fornece três classes principais de API:

  • DefaultApi - Endpoints protegidos que exigem sua chave de API para autenticação. Use-os para operações do lado do servidor.
  • PublicApi - Endpoints públicos que podem ser acessados sem uma chave de API. Podem ser chamados diretamente de navegadores/dispositivos móveis/etc.
  • HiddenApi - Endpoints internos/administrador para casos de uso avançados.

Exemplo: Usando a PublicApi (seguro para navegador)

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

const publicApi = new PublicApi();

// Obter comentários de uma página (sem necessidade de chave de API)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Exemplo: Usando a DefaultApi (somente no servidor)

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

const config = new Configuration({
  apiKey: 'your-api-key' // Mantenha esta chave em segredo!
});
const defaultApi = new DefaultApi(config);

// Obter comentários com acesso administrativo completo
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

Integração SSO (Single Sign-On) Internal Link

FastComments oferece suporte a SSO para integrar com seu sistema de autenticação de usuários existente. A funcionalidade SSO está disponível apenas na exportação do servidor já que requer recursos de crypto do Node.js.

SSO Simples (Apenas no Lado do Servidor)

O SSO simples deve ser gerado no servidor e enviado ao cliente:

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

// Crie um SSO simples usando o helper embutido  
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();

// Envie ssoToken para o código do cliente
// O código do lado do cliente pode então usar este token com o SDK para navegador

SSO Seguro (Lado do Servidor, Recomendado)

O SSO seguro deve ser implementado no servidor e oferece maior segurança:

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

// Crie um SSO seguro usando o helper embutido
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();

// Use com chamadas de API no servidor
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// Ou envie ssoConfig para o cliente para uso no navegador

Usando SSO a partir do Navegador (com Token Gerado pelo Servidor)

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

// Obtenha o token SSO do endpoint do seu 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 // Use o token SSO gerado no servidor
});

SSO com Criação de Comentário

// Lado do servidor: Crie SSO e comentário
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 Comuns Internal Link

Obtendo Comentários de uma Página

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

Criando um Comentário

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

Votando em um Comentário

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

Gerenciamento de Usuários (Requer Chave de API)

// Pesquisar usuários (requer DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

Eventos ao Vivo (Atualizações em Tempo Real) Internal Link

Inscreva-se em eventos ao vivo para receber atualizações em tempo real sobre comentários, votos e outras atividades.

Eventos por página

Ouça eventos ao vivo em uma página específica (comentários, votos, etc.):

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

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

// Subscribe to live events for a page
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (get this from getComments response)
  (event: LiveEvent) => {
    console.log('Live event received:', event);
    
    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // Update your UI with the new comment
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // Update vote counts in your UI
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }
    
    return true; // Return true if event was handled
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

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

Inscreva-se em eventos do usuário

Ouça eventos específicos do usuário (notificações, menções, etc.):

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

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

// Subscribe to user's personal feed
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);
    
    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // Show notification in your UI
        break;
      case LiveEventType.notification_update:
        console.log('Notification updated:', event.notification);
        break;
      default:
        console.log('Other user event:', event.type);
    }
    
    return true;
  },
  (isConnected: boolean) => {
    console.log('User feed connection:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// Close when done
userSubscription.close();

Obtendo userIdWS

O parâmetro userIdWS é necessário para eventos ao vivo e pode ser obtido nas respostas da API:

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

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

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

IDs de Transmissão Internal Link

Você verá que deve passar um broadcastId em algumas chamadas de API. Quando você receber eventos, receberá esse ID de volta, então saberá ignorar o evento se planejar aplicar mudanças de forma otimista no cliente (o que você provavelmente desejará fazer, pois oferece a melhor experiência). Passe um UUID aqui. O ID deve ser suficientemente único para não ocorrer duas vezes em uma sessão do 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 operação
  }
});

Tratamento de Erros Internal Link

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

aggregate Internal Link


Agrega documentos agrupando-os (se groupBy for fornecido) e aplicando múltiplas operações. Diferentes operações (por exemplo sum, countDistinct, avg, etc.) são suportadas.

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
aggregationRequestAggregationRequestSim
parentTenantIdstringNão
includeStatsbooleanNão

Resposta

Retorna: Aggregate200Response

Exemplo

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

getAuditLogs Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
limitnumberNão
skipnumberNão
orderSORTDIRNão
afternumberNão
beforenumberNão

Resposta

Retorna: GetAuditLogs200Response

Exemplo

Exemplo de uso de getAuditLogs
Copy Copy
1
2const tenantId: string = 'tenant_5f8d7c3a';
3const limit: number = 100;
4const skip: number = 0;
5const order: SORTDIR = 'DESC' as SORTDIR;
6const after: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // uma semana atrás
7const before: number = Date.now();
8const result: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, order, after, before);
9

blockFromCommentPublic Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
publicBlockFromCommentParamsPublicBlockFromCommentParamsSim
ssostringNão

Resposta

Retorna: BlockFromCommentPublic200Response

Exemplo

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

unBlockCommentPublic Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
publicBlockFromCommentParamsPublicBlockFromCommentParamsSim
ssostringNão

Resposta

Retorna: UnBlockCommentPublic200Response

Exemplo

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

checkedCommentsForBlocked Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
commentIdsstringSim
ssostringNão

Resposta

Retorna: CheckedCommentsForBlocked200Response

Exemplo

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

blockUserFromComment Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
blockFromCommentParamsBlockFromCommentParamsSim
userIdstringNão
anonUserIdstringNão

Resposta

Retorna: BlockFromCommentPublic200Response

Exemplo

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

createCommentPublic Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
broadcastIdstringSim
commentDataCommentDataSim
sessionIdstringNão
ssostringNão

Resposta

Retorna: CreateCommentPublic200Response

Exemplo

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

deleteComment Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim
contextUserIdstringNão
isLivebooleanNão

Resposta

Retorna: DeleteComment200Response

Exemplo

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

deleteCommentPublic Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
broadcastIdstringSim
editKeystringNão
ssostringNão

Resposta

Retorna: DeleteCommentPublic200Response

Exemplo

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

deleteCommentVote Internal Link

Parâmetros

NameTypeObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
voteIdstringSim
urlIdstringSim
broadcastIdstringSim
editKeystringNão
ssostringNão

Resposta

Retorna: DeleteCommentVote200Response

Exemplo

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

flagComment Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim
userIdstringNão
anonUserIdstringNão

Resposta

Retorna: FlagComment200Response

Exemplo

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

getComment Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim

Resposta

Retorna: GetComment200Response

Exemplo

Exemplo de getComment
Copy Copy
1
2const tenantId: string = 'tenant_6f1a2b';
3const commentId: string = 'cmt_4d9e8f';
4const includeReplies: boolean | undefined = true; // exemplo de parâmetro opcional (não passado para getComment)
5const result: GetComment200Response = await getComment(tenantId, commentId);
6console.log('Fetched comment for tenant:', tenantId, 'comment id:', commentId);
7console.log('API response received:', result);
8

getComments Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
pagenumberNão
limitnumberNão
skipnumberNão
asTreebooleanNão
skipChildrennumberNão
limitChildrennumberNão
maxTreeDepthnumberNão
urlIdstringNão
userIdstringNão
anonUserIdstringNão
contextUserIdstringNão
hashTagstringNão
parentIdstringNão
directionSortDirectionsNão
fromDatenumberNão
toDatenumberNão

Resposta

Retorna: GetComments200Response

Exemplo

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

getCommentsPublic Internal Link

req tenantId urlId

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
pagenumberNão
directionSortDirectionsNão
ssostringNão
skipnumberNão
skipChildrennumberNão
limitnumberNão
limitChildrennumberNão
countChildrenbooleanNão
fetchPageForCommentIdstringNão
includeConfigbooleanNão
countAllbooleanNão
includei10nbooleanNão
localestringNão
modulesstringNão
isCrawlerbooleanNão
includeNotificationCountbooleanNão
asTreebooleanNão
maxTreeDepthnumberNão
useFullTranslationIdsbooleanNão
parentIdstringNão
searchTextstringNão
hashTagsArrayNão
userIdstringNão
customConfigStrstringNão
afterCommentIdstringNão
beforeCommentIdstringNão

Resposta

Retorna: GetCommentsPublic200Response

Exemplo

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

getCommentText Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
editKeystringNão
ssostringNão

Resposta

Retorna: GetCommentText200Response

Exemplo

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

getCommentVoteUserNames Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
dirnumberSim
ssostringNão

Resposta

Retorna: GetCommentVoteUserNames200Response

Exemplo

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

lockComment Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
commentIdstringSim
broadcastIdstringSim
ssostringNão

Resposta

Retorna: LockComment200Response

Exemplo

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

pinComment Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
broadcastIdstringSim
ssostringNão

Resposta

Retorna: PinComment200Response

Exemplo

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

saveComment Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createCommentParamsCreateCommentParamsSim
isLivebooleanNão
doSpamCheckbooleanNão
sendEmailsbooleanNão
populateNotificationsbooleanNão

Resposta

Retorna: SaveComment200Response

Exemplo

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

saveCommentsBulk Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createCommentParamsArraySim
isLivebooleanNão
doSpamCheckbooleanNão
sendEmailsbooleanNão
populateNotificationsbooleanNão

Resposta

Retorna: Array<SaveComment200Response

Exemplo

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

setCommentText Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
commentIdstringSim
broadcastIdstringSim
commentTextUpdateRequestCommentTextUpdateRequestSim
editKeystringNão
ssostringNão

Resposta

Retorna: SetCommentText200Response

Exemplo

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

unBlockUserFromComment Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
unBlockFromCommentParamsUnBlockFromCommentParamsSim
userIdstringNão
anonUserIdstringNão

Resposta

Retorna: UnBlockCommentPublic200Response

Exemplo

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

unFlagComment Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim
userIdstringNão
anonUserIdstringNão

Resposta

Retorna: FlagComment200Response

Exemplo

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

unLockComment Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
broadcastIdstringSim
ssostringNão

Resposta

Retorna: LockComment200Response

Exemplo

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

unPinComment Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
broadcastIdstringSim
ssostringNão

Resposta

Retorna: PinComment200Response

Exemplo

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

updateComment Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updatableCommentParamsUpdatableCommentParamsSim
contextUserIdstringNão
doSpamCheckbooleanNão
isLivebooleanNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

voteComment Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
urlIdstringSim
broadcastIdstringSim
voteBodyParamsVoteBodyParamsSim
sessionIdstringNão
ssostringNão

Resposta

Retorna: VoteComment200Response

Exemplo

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

getCommentsForUser Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
userIdstringNão
directionSortDirectionsNão
repliesToUserIdstringNão
pagenumberNão
includei10nbooleanNão
localestringNão
isCrawlerbooleanNão

Resposta

Retorna: GetCommentsForUser200Response

Exemplo

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

addDomainConfig Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
addDomainConfigParamsAddDomainConfigParamsSim

Resposta

Retorna: AddDomainConfig200Response

deleteDomainConfig Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
domainstringSim

Resposta

Retorna: DeleteDomainConfig200Response


getDomainConfig Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
domainstringSim

Resposta

Retorna: GetDomainConfig200Response


getDomainConfigs Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim

Resposta

Retorna: GetDomainConfigs200Response


patchDomainConfig Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
domainToUpdatestringSim
patchDomainConfigParamsPatchDomainConfigParamsSim

Resposta

Retorna: GetDomainConfig200Response


putDomainConfig Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
domainToUpdatestringSim
updateDomainConfigParamsUpdateDomainConfigParamsSim

Resposta

Retorna: GetDomainConfig200Response


createEmailTemplate Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
createEmailTemplateBodyCreateEmailTemplateBodySim

Resposta

Retorna: CreateEmailTemplate200Response

Exemplo

Exemplo de createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_4f2b1c9e";
3const createEmailTemplateBody: CreateEmailTemplateBody = {
4 name: "New Comment Notification",
5 subject: "Someone replied to your discussion",
6 fromName: "Community Team",
7 fromAddress: "no-reply@community.example.com",
8 htmlBody: "<p>\{{comment.author}} replied: \{{comment.text}}</p>",
9 plaintextBody: "\{{comment.author}} replied: \{{comment.text}}",
10 previewText: "A new reply on a discussion you follow",
11 isDefault: false // flag opcional demonstrando o uso de parâmetro opcional
12};
13const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
14

deleteEmailTemplate Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_9c4f1b2a";
3const id: string = "emailtmpl_4d2b9a5e";
4const requestorNote: string | undefined = undefined; // metadados opcionais (não exigido pela função)
5const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, id);
6

deleteEmailTemplateRenderError Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
errorIdstringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = 'tenant-72f3b4';
3const templateId: string = 'email_template-9c3a1';
4let providedErrorId: string | undefined = undefined; // valor opcional, pode ser definido em outro lugar
5const errorId: string = providedErrorId ?? 'render_err-5d2f7';
6const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, templateId, errorId);
7

getEmailTemplate Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetEmailTemplate200Response

Exemplo

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

getEmailTemplateDefinitions Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim

Resposta

Retorna: GetEmailTemplateDefinitions200Response

Exemplo

Exemplo de getEmailTemplateDefinitions
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_acme_001';
4 const options: { includeDrafts?: boolean } = { includeDrafts: true }; // parâmetro opcional demonstrado
5 const templates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId, options);
6 console.log(templates);
7})();
8

getEmailTemplateRenderErrors Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringYes
idstringYes
skipnumberNo

Resposta

Retorna: GetEmailTemplateRenderErrors200Response

Exemplo

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

getEmailTemplates Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
skipnumberNão

Resposta

Retorna: GetEmailTemplates200Response

Exemplo

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

renderEmailTemplate Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
renderEmailTemplateBodyRenderEmailTemplateBodySim
localestringNão

Resposta

Retorna: RenderEmailTemplate200Response

Exemplo

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

updateEmailTemplate Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updateEmailTemplateBodyUpdateEmailTemplateBodySim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getEventLog Internal Link

req tenantId urlId userIdWS

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
userIdWSstringSim
startTimenumberSim
endTimenumberNão

Resposta

Retorna: GetEventLog200Response

Exemplo

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

getGlobalEventLog Internal Link


req tenantId urlId userIdWS

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
userIdWSstringSim
startTimenumberSim
endTimenumberNão

Resposta

Retorna: GetEventLog200Response

Exemplo

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

createFeedPost Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
createFeedPostParamsCreateFeedPostParamsSim
broadcastIdstringNão
isLivebooleanNão
doSpamCheckbooleanNão
skipDupCheckbooleanNão

Resposta

Retorna: CreateFeedPost200Response

Exemplo

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

createFeedPostPublic Internal Link

Parâmetros

NameTypeObrigatórioDescrição
tenantIdstringSim
createFeedPostParamsCreateFeedPostParamsSim
broadcastIdstringNão
ssostringNão

Response

Retorna: CreateFeedPostPublic200Response

Exemplo

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

deleteFeedPostPublic Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
postIdstringSim
broadcastIdstringNão
ssostringNão

Resposta

Retorna: DeleteFeedPostPublic200Response

Exemplo

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

getFeedPosts Internal Link

req tenantId afterId

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
afterIdstringNão
limitnumberNão
tagsArrayNão

Resposta

Retorna: GetFeedPosts200Response

Exemplo

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

getFeedPostsPublic Internal Link

req tenantId afterId

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
afterIdstringNão
limitnumberNão
tagsArrayNão
ssostringNão
isCrawlerbooleanNão
includeUserInfobooleanNão

Resposta

Retorna: GetFeedPostsPublic200Response

Exemplo

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

getFeedPostsStats Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
postIdsArraySim
ssostringNão

Resposta

Retorna: GetFeedPostsStats200Response

Exemplo

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

getUserReactsPublic Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
postIdsArrayNão
ssostringNão

Resposta

Retorna: GetUserReactsPublic200Response

Exemplo

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

reactFeedPostPublic Internal Link


Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
postIdstringSim
reactBodyParamsReactBodyParamsSim
isUndobooleanNão
broadcastIdstringNão
ssostringNão

Resposta

Retorna: ReactFeedPostPublic200Response

Exemplo

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

updateFeedPost Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
feedPostFeedPostSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

updateFeedPostPublic Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
postIdstringSim
updateFeedPostParamsUpdateFeedPostParamsSim
broadcastIdstringNão
ssostringNão

Resposta

Retorna: CreateFeedPostPublic200Response

Exemplo

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

flagCommentPublic Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
isFlaggedbooleanSim
ssostringNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getGifLarge Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
largeInternalURLSanitizedstringSim

Resposta

Retorna: GetGifLarge200Response

Exemplo

Exemplo de getGifLarge
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c";
3const largeInternalURLSanitized: string = "https://cdn.fastcomments.com/gifs/07d3f6_large.gif";
4const preferWebP: boolean | undefined = true; // preferência opcional
5const urlToUse: string = preferWebP ? largeInternalURLSanitized.replace(".gif", ".webp") : largeInternalURLSanitized;
6const response: GetGifLarge200Response = await getGifLarge(tenantId, urlToUse);
7

getGifsSearch Internal Link


Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
searchstringSim
localestringNão
ratingstringNão
pagenumberNão

Resposta

Retorna: GetGifsSearch200Response

Exemplo

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

getGifsTrending Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringYes
localestringNo
ratingstringNo
pagenumberNo

Resposta

Retorna: GetGifsTrending200Response

Exemplo

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

addHashTag Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringNão
createHashTagBodyCreateHashTagBodyNão

Resposta

Retorna: AddHashTag200Response

Exemplo

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

addHashTagsBulk Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringNão
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNão

Resposta

Retorna: AddHashTagsBulk200Response

Exemplo

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

deleteHashTag Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tagstringSim
tenantIdstringNão
deleteHashTagRequestDeleteHashTagRequestNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getHashTags Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
pagenumberNão

Resposta

Retorna: GetHashTags200Response

Exemplo

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

patchHashTag Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tagstringSim
tenantIdstringNão
updateHashTagBodyUpdateHashTagBodyNão

Resposta

Retorna: PatchHashTag200Response

Exemplo

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

createModerator Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createModeratorBodyCreateModeratorBodySim

Resposta

Retorna: CreateModerator200Response

Exemplo

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

deleteModerator Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
sendEmailstringNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getModerator Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetModerator200Response

Exemplo

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

getModerators Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
skipnumberNão

Resposta

Retorna: GetModerators200Response

Exemplo

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

sendInvite Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim
fromNamestringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

updateModerator Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updateModeratorBodyUpdateModeratorBodySim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

deleteNotificationCount Internal Link


Parâmetros

NameTypeObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getCachedNotificationCount Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetCachedNotificationCount200Response

Exemplo

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

getNotificationCount Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
userIdstringNão
urlIdstringNão
fromCommentIdstringNão
viewedbooleanNão
typestringNão

Resposta

Retorna: GetNotificationCount200Response

Exemplo

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

getNotifications Internal Link

Parâmetros

NameTypeObrigatórioDescrição
tenantIdstringSim
userIdstringNão
urlIdstringNão
fromCommentIdstringNão
viewedbooleanNão
typestringNão
skipnumberNão

Resposta

Retorna: GetNotifications200Response

Exemplo

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

updateNotification Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updateNotificationBodyUpdateNotificationBodySim
userIdstringNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

createV1PageReact Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
titlestringNão

Resposta

Retorna: CreateV1PageReact200Response

Exemplo

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

createV2PageReact Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
urlIdstringSim
idstringSim
titlestringNão

Resposta

Retorna: CreateV2PageReact200Response

Exemplo

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

deleteV1PageReact Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
urlIdstringSim

Resposta

Retorna: DeleteV1PageReact200Response

Exemplo

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

deleteV2PageReact Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
idstringSim

Resposta

Retorna: DeleteV2PageReact200Response

Exemplo

Exemplo deleteV2PageReact
Copy Copy
1
2const tenantId: string = "tenant_79021";
3const urlId: string = "blog/my-first-post";
4const id: string = "reaction_9f8b7c";
5let includeHistory: boolean | undefined = undefined; // sinalizador opcional, usado em algumas chamadas
6
7const result: DeleteV2PageReact200Response = await deleteV2PageReact(tenantId, urlId, id);
8console.log(result);
9

getV1PageLikes Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim

Resposta

Retorna: GetV1PageLikes200Response

Exemplo

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

getV2PageReacts Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim

Resposta

Retorna: GetV2PageReacts200Response

Exemplo

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

getV2PageReactUsers Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
idstringSim

Resposta

Retorna: GetV2PageReactUsers200Response

Exemplo

Exemplo getV2PageReactUsers
Copy Copy
1
2const tenantId: string = "7421";
3const urlId: string = "sports/london-marathon";
4const id: string = "reactUser-3fa85f64-5717-4562-b3fc-2c963f66afa6";
5const includeDeleted: boolean | undefined = undefined; // sinalizador opcional (demonstração)
6
7const result: GetV2PageReactUsers200Response = await getV2PageReactUsers(tenantId, urlId, id);
8

addPage Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createAPIPageDataCreateAPIPageDataSim

Resposta

Retorna: AddPageAPIResponse


deletePage Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: DeletePageAPIResponse


getOfflineUsers Internal Link


Comentadores anteriores na página que NÃO estão atualmente online. Ordenados por displayName. Use isto depois de esgotar /users/online para renderizar uma seção "Membros". Paginação por cursor em commenterName: o servidor percorre o índice parcial {tenantId, urlId, commenterName} índice a partir de afterName em diante via $gt, sem custo de $skip.

Parameters

NameTypeRequiredDescription
tenantIdstringSim
urlIdstringSim
afterNamestringNão
afterUserIdstringNão

Response

Retorna: GetOfflineUsers200Response

Example

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

getOnlineUsers Internal Link


Visualizadores atualmente online de uma página: pessoas cuja sessão WebSocket está inscrita na página neste momento. Retorna anonCount + totalCount (assinantes da sala, incluindo visualizadores anônimos que não enumeramos).

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
urlIdstringSim
afterNamestringNão
afterUserIdstringNão

Resposta

Retorna: GetOnlineUsers200Response

Exemplo

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

getPageByURLId Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim

Resposta

Retorna: GetPageByURLIdAPIResponse


getPages Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim

Resposta

Retorna: GetPagesAPIResponse


getPagesPublic Internal Link

Lista as páginas de um tenant. Usado pelo cliente desktop FChat para preencher sua lista de salas. Requer que enableFChat seja true na configuração personalizada resolvida para cada página. Páginas que exigem SSO são filtradas com base no acesso de grupo do usuário solicitante.

Parameters

NameTypeRequiredDescription
tenantIdstringSim
cursorstringNão
limitnumberNão
qstringNão
sortByPagesSortByNão
hasCommentsbooleanNão

Response

Retorna: GetPagesPublic200Response

Example

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

getUsersInfo Internal Link

Informações em lote de usuários para um tenant. Dado(s) userIds, retorna informações de exibição de User / SSOUser. Usado pelo widget de comentários para enriquecer usuários que acabaram de aparecer via um evento de presença. Sem contexto de página: a privacidade é aplicada de forma uniforme (perfis privados são mascarados).

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idsstringSim

Resposta

Retorna: GetUsersInfo200Response

Exemplo

Exemplo de getUsersInfo
Copy Copy
1
2const tenantId: string = 'acme-tenant-007';
3const userIdsList: string[] = ['user_12a', 'user_34b', 'user_56c'];
4const separator: string | undefined = undefined; // opcional; se undefined, padrão é vírgula
5const ids: string = userIdsList.join(separator ?? ',');
6const usersInfo: GetUsersInfo200Response = await getUsersInfo(tenantId, ids);
7

patchPage Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim
updateAPIPageDataUpdateAPIPageDataSim

Resposta

Retorna: PatchPageAPIResponse

deletePendingWebhookEvent Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getPendingWebhookEventCount Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringNão
externalIdstringNão
eventTypestringNão
typestringNão
domainstringNão
attemptCountGTnumberNão

Resposta

Retorna: GetPendingWebhookEventCount200Response

Exemplo

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

getPendingWebhookEvents Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringNão
externalIdstringNão
eventTypestringNão
typestringNão
domainstringNão
attemptCountGTnumberNão
skipnumberNão

Resposta

Retorna: GetPendingWebhookEvents200Response

Exemplo

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

createQuestionConfig Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createQuestionConfigBodyCreateQuestionConfigBodySim

Resposta

Retorna: CreateQuestionConfig200Response

Exemplo

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

deleteQuestionConfig Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getQuestionConfig Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetQuestionConfig200Response

Exemplo

Exemplo de getQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-corp-47";
3const questionId: string = "q-4f2b9a";
4const includeDrafts: boolean | undefined = undefined; // espaço reservado para parâmetro opcional
5const result: GetQuestionConfig200Response = await getQuestionConfig(tenantId, questionId);
6console.log(result);
7

getQuestionConfigs Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
skipnumberNão

Resposta

Retorna: GetQuestionConfigs200Response

Exemplo

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

updateQuestionConfig Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

createQuestionResult Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createQuestionResultBodyCreateQuestionResultBodySim

Resposta

Retorna: CreateQuestionResult200Response

Exemplo

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

deleteQuestionResult Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getQuestionResult Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetQuestionResult200Response

Exemplo

Exemplo de getQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a7c9';
3const questionId: string = 'q_8d4f1b2c3a';
4const options: { includeMeta?: boolean } = { includeMeta: true }; // demonstração de parâmetro opcional
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, questionId);
6const apiStatus: APIStatus | undefined = (result as unknown as { apiStatus?: APIStatus }).apiStatus;
7const question: QuestionResult | undefined = (result as unknown as { question?: QuestionResult }).question;
8

getQuestionResults Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringNão
userIdstringNão
startDatestringNão
questionIdstringNão
questionIdsstringNão
skipnumberNão

Resposta

Retorna: GetQuestionResults200Response

Exemplo

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

updateQuestionResult Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim
updateQuestionResultBodyUpdateQuestionResultBodySim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

aggregateQuestionResults Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
questionIdstringNão
questionIdsArrayNão
urlIdstringNão
timeBucketAggregateTimeBucketNão
startDateDateNão
forceRecalculatebooleanNão

Resposta

Retorna: AggregateQuestionResults200Response

Exemplo

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

bulkAggregateQuestionResults Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestSim
forceRecalculatebooleanNão

Resposta

Retorna: BulkAggregateQuestionResults200Response

Exemplo

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

combineCommentsWithQuestionResults Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
questionIdstringNão
questionIdsArrayNão
urlIdstringNão
startDateDateNão
forceRecalculatebooleanNão
minValuenumberNão
maxValuenumberNão
limitnumberNão

Resposta

Retorna: CombineCommentsWithQuestionResults200Response

Exemplo

Exemplo de combineCommentsWithQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_12345';
3const questionId: string = 'q_98765';
4const questionIds: string[] = ['q_98765', 'q_12345'];
5const urlId: string = 'url_abc123';
6const startDate: Date = new Date('2026-01-01T00:00:00Z');
7const forceRecalculate: boolean = true;
8const minValue: number = 0;
9const maxValue: number = 5;
10const limit: number = 50;
11const result: CombineCommentsWithQuestionResults200Response = await combineCommentsWithQuestionResults(
12 tenantId,
13 questionId,
14 questionIds,
15 urlId,
16 startDate,
17 forceRecalculate,
18 minValue,
19 maxValue,
20 limit
21);
22

addSSOUser Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createAPISSOUserDataCreateAPISSOUserDataSim

Resposta

Retorna: AddSSOUserAPIResponse


deleteSSOUser Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
deleteCommentsbooleanNão
commentDeleteModestringNão

Resposta

Retorna: DeleteSSOUserAPIResponse


getSSOUserByEmail Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
emailstringSim

Resposta

Retorna: GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
skipnumberNão

Resposta

Retorna: GetSSOUsers200Response


patchSSOUser Internal Link

Parâmetros

NameTypeObrigatórioDescrição
tenantIdstringSim
idstringSim
updateAPISSOUserDataUpdateAPISSOUserDataSim
updateCommentsbooleanNão

Resposta

Retorna: PatchSSOUserAPIResponse


putSSOUser Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updateAPISSOUserDataUpdateAPISSOUserDataSim
updateCommentsbooleanNão

Resposta

Retorna: PutSSOUserAPIResponse

Exemplo

Exemplo do putSSOUser
Copy Copy
1
2const tenantId: string = 'acme-enterprises-42';
3const id: string = 'usr-73a1b2';
4const updateAPISSOUserData: UpdateAPISSOUserData = {
5 email: 'marcus.ingram@acme.com',
6 givenName: 'Marcus',
7 familyName: 'Ingram',
8 roles: ['editor', 'project_owner'],
9 enabled: true
10};
11const result: PutSSOUserAPIResponse = await putSSOUser(tenantId, id, updateAPISSOUserData, true);
12

createSubscription Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataSim

Resposta

Retorna: CreateSubscriptionAPIResponse

Exemplo

Exemplo de createSubscription
Copy Copy
1
2const tenantId: string = "acme-corp-tenant-123";
3const createAPIUserSubscriptionData: CreateAPIUserSubscriptionData = {
4 userId: "user_98765",
5 planId: "pro_monthly",
6 paymentMethod: { type: "card", cardId: "card_abc123" },
7 autoRenew: true,
8 trialDays: 14, // parâmetro opcional demonstrado
9 metadata: { campaign: "spring_launch" } // parâmetro opcional demonstrado
10};
11const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
12

deleteSubscription Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
userIdstringNão

Resposta

Retorna: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
userIdstringNão

Resposta

Retorna: GetSubscriptionsAPIResponse

Exemplo

Exemplo de getSubscriptions
Copy Copy
1
2const tenantId: string = "contoso-9a1b2c";
3const userId: string = "u-482f6";
4const subscriptions: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId);
5const userSubscriptions: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId, userId);
6

updateSubscription Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataSim
userIdstringNão

Resposta

Retorna: UpdateSubscriptionAPIResponse

Exemplo

Exemplo de updateSubscription
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2c';
3const subscriptionId: string = 'sub_7641a2b3';
4const updateData: UpdateAPIUserSubscriptionData = {
5 status: 'active',
6 planId: 'pro_annual',
7 autoRenew: true,
8 renewalDate: '2026-04-15T00:00:00Z',
9 metadata: { upgradedBy: 'billing-team' }
10};
11const userId: string = 'user_215';
12const result: UpdateSubscriptionAPIResponse = await updateSubscription(tenantId, subscriptionId, updateData, userId);
13

getTenantDailyUsages Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
yearNumbernumberNão
monthNumbernumberNão
dayNumbernumberNão
skipnumberNão

Resposta

Retorna: GetTenantDailyUsages200Response

Exemplo

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

createTenantPackage Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createTenantPackageBodyCreateTenantPackageBodySim

Resposta

Retorna: CreateTenantPackage200Response

Exemplo

Exemplo de createTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_7890";
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: "Growth Plan",
5 maxSeats: 2500,
6 features: {
7 moderation: true,
8 analytics: true,
9 sso: { enabled: true, provider: "saml" }
10 },
11 billing: { interval: "monthly", priceCents: 19900 },
12 // parâmetro opcional demonstrado: notes não é obrigatório, mas foi fornecido
13 notes: "Onboarding bundle with priority support"
14};
15const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
16

deleteTenantPackage Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const packageId: string = 'pkg-2026-06-15-001';
4const dryRun: boolean | undefined = undefined; // exemplo de flag opcional (não exigido pela função)
5const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
6

getTenantPackage Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetTenantPackage200Response

Exemplo

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

getTenantPackages Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
skipnumberNão

Resposta

Retorna: GetTenantPackages200Response

Exemplo

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

replaceTenantPackage Internal Link


Parâmetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
replaceTenantPackageBodyReplaceTenantPackageBodyYes

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

updateTenantPackage Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updateTenantPackageBodyUpdateTenantPackageBodySim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2a';
3const id: string = 'pkg_pro_2026';
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: 'Pro Plan',
6 monthlyPriceUsd: 49,
7 isActive: true,
8 features: ['moderation', 'analytics', 'sso'],
9 trialDays: 14 // parâmetro opcional demonstrado
10};
11const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
12

createTenantUser Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
createTenantUserBodyCreateTenantUserBodySim

Resposta

Retorna: CreateTenantUser200Response

Exemplo

Exemplo de createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_7f4a2b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "jane.doe@example.com",
5 firstName: "Jane",
6 lastName: "Doe",
7 role: "commenter",
8 approved: true,
9 displayName: "Jane D." // opcional: fornecendo um nome de exibição amigável
10};
11const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
12console.log(result);
13

deleteTenantUser Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
deleteCommentsstringNão
commentDeleteModestringNão

Response

Retorna: FlagCommentPublic200Response

Exemplo

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

getTenantUser Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim

Resposta

Retorna: GetTenantUser200Response

Exemplo

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

getTenantUsers Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
skipnumberNão

Resposta

Retorna: GetTenantUsers200Response

Exemplo

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

replaceTenantUser Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
replaceTenantUserBodyReplaceTenantUserBodySim
updateCommentsstringNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
redirectURLstringNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

updateTenantUser Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
idstringSim
updateTenantUserBodyUpdateTenantUserBodySim
updateCommentsstringNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

createTenant Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
createTenantBodyCreateTenantBodySim

Resposta

Retorna: CreateTenant200Response

Exemplo

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

deleteTenant Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
surestringNão

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getTenant Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetTenant200Response

Exemplo

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

getTenants Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
metastringNão
skipnumberNão

Resposta

Retorna: GetTenants200Response

Exemplo

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

updateTenant Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

changeTicketState Internal Link


Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
userIdstringSim
idstringSim
changeTicketStateBodyChangeTicketStateBodySim

Resposta

Retorna: ChangeTicketState200Response

Exemplo

Exemplo de changeTicketState
Copy Copy
1
2const tenantId: string = 'tenant_8a7d3f4b';
3const userId: string = 'user_5d1a9b2c';
4const id: string = 'ticket_1024';
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: 'closed',
7 notifyParticipants: true, // parâmetro opcional demonstrado
8 comment: 'Resolved by support — follow-up not required.'
9};
10const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
11

createTicket Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringYes
userIdstringYes
createTicketBodyCreateTicketBodyYes

Resposta

Retorna: CreateTicket200Response

Exemplo

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

getTicket Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
userIdstringNão

Resposta

Retorna: GetTicket200Response

Exemplo

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

getTickets Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
userIdstringNão
statenumberNão
skipnumberNão
limitnumberNão

Resposta

Retorna: GetTickets200Response

Exemplo

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

getTranslations Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
namespacestringSim
componentstringSim
localestringNão
useFullTranslationIdsbooleanNão

Resposta

Retorna: GetTranslations200Response

Exemplo

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

uploadImage Internal Link


Enviar e redimensionar uma imagem

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
fileBlobSim
sizePresetSizePresetNão
urlIdstringNão

Resposta

Retorna: UploadImageResponse


getUserBadgeProgressById Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetUserBadgeProgressById200Response

Exemplo

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

getUserBadgeProgressByUserId Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
userIdstringSim

Resposta

Retorna: GetUserBadgeProgressById200Response

Exemplo

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

getUserBadgeProgressList Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
userIdstringNão
limitnumberNão
skipnumberNão

Resposta

Retorna: GetUserBadgeProgressList200Response

Exemplo

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

createUserBadge Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
createUserBadgeParamsCreateUserBadgeParamsSim

Resposta

Retorna: CreateUserBadge200Response

Exemplo

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

deleteUserBadge Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: UpdateUserBadge200Response

Exemplo

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

getUserBadge Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetUserBadge200Response

Exemplo

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

getUserBadges Internal Link

Parâmetros

NomeTypeObrigatórioDescrição
tenantIdstringSim
userIdstringNão
badgeIdstringNão
typenumberNão
displayedOnCommentsbooleanNão
limitnumberNão
skipnumberNão

Resposta

Retorna: GetUserBadges200Response

Exemplo

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

updateUserBadge Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
updateUserBadgeParamsUpdateUserBadgeParamsSim

Resposta

Retorna: UpdateUserBadge200Response

Exemplo

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

getUserNotificationCount Internal Link

Parâmetros

NameTypeRequiredDescription
tenantIdstringSim
ssostringNão

Resposta

Retorna: GetUserNotificationCount200Response

Exemplo

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

getUserNotifications Internal Link


Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringNão
pageSizenumberNão
afterIdstringNão
includeContextbooleanNão
afterCreatedAtnumberNão
unreadOnlybooleanNão
dmOnlybooleanNão
noDmbooleanNão
includeTranslationsbooleanNão
includeTenantNotificationsbooleanNão
ssostringNão

Resposta

Retorna: GetUserNotifications200Response

Exemplo

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

resetUserNotificationCount Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
ssostringNão

Resposta

Retorna: ResetUserNotifications200Response

Exemplo

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

resetUserNotifications Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
afterIdstringNão
afterCreatedAtnumberNão
unreadOnlybooleanNão
dmOnlybooleanNão
noDmbooleanNão
ssostringNão

Resposta

Retorna: ResetUserNotifications200Response

Exemplo

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

updateUserNotificationCommentSubscriptionStatus Internal Link

Habilitar ou desabilitar notificações para um comentário específico.

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
notificationIdstringSim
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumSim
commentIdstringSim
ssostringNão

Resposta

Retorna: UpdateUserNotificationStatus200Response

Exemplo

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

updateUserNotificationPageSubscriptionStatus Internal Link


Ativar ou desativar notificações para uma página. Quando os usuários estão inscritos em uma página, notificações são criadas para novos comentários raiz, e também

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
urlstringSim
pageTitlestringSim
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumSim
ssostringNão

Resposta

Retorna: UpdateUserNotificationStatus200Response

Exemplo

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

updateUserNotificationStatus Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
notificationIdstringSim
newStatusUpdateUserNotificationStatusNewStatusEnumSim
ssostringNão

Resposta

Retorna: UpdateUserNotificationStatus200Response

Exemplo

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

getUserPresenceStatuses Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdWSstringSim
userIdsstringSim

Resposta

Retorna: GetUserPresenceStatuses200Response

Exemplo

Exemplo de getUserPresenceStatuses
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const urlIdWS: string = 'wss://comments.fastsite.com/ws/tenant_42';
4const userIds: string = 'user_9012,user_3478';
5const includePresenceMetadata: boolean | undefined = true; // exemplo de parâmetro opcional
6const presenceStatuses: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

searchUsers Internal Link

Parâmetros

NameTypeObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
usernameStartsWithstringNão
mentionGroupIdsArrayNão
ssostringNão
searchSectionSearchUsersSearchSectionEnumNão

Resposta

Retorna: SearchUsers200Response

Exemplo

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

getUser Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim

Resposta

Retorna: GetUser200Response

Exemplo

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

createVote Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
commentIdstringSim
directionCreateVoteDirectionEnumSim
userIdstringNão
anonUserIdstringNão

Resposta

Retorna: VoteComment200Response

Exemplo

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

deleteVote Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
idstringSim
editKeystringNão

Resposta

Retorna: DeleteCommentVote200Response

Exemplo

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

getVotes Internal Link

Parâmetros

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim

Resposta

Retorna: GetVotes200Response

Exemplo

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

getVotesForUser Internal Link

Parameters

NomeTipoObrigatórioDescrição
tenantIdstringSim
urlIdstringSim
userIdstringNão
anonUserIdstringNão

Resposta

Retorna: GetVotesForUser200Response

Exemplo

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

Precisa de ajuda?

Se você encontrar algum problema ou tiver dúvidas sobre o JavaScript/TypeScript SDK, por favor:

Contribuindo

Contribuições são bem-vindas! Por favor, visite o repositório no GitHub para diretrizes de contribuição.