FastComments.com

FastComments JavaScript/TypeScript SDK


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

SDK oficial JavaScript/TypeScript para a API do FastComments

Repositório

Ver no GitHub


Instalação Internal Link

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

Agregação 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

Nome Tipo Obrigatório Descrição
tenantId string Sim
aggregationRequest AggregationRequest Sim
parentTenantId string Não
includeStats boolean Não

Resposta

Retorna: AggregationResponse


Obter registros de auditoria Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
limit number Não
skip number Não
order SORTDIR Não
after number Não
before number Não

Resposta

Retorna: GetAuditLogs200Response


Bloquear por comentário (público) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
publicBlockFromCommentParams PublicBlockFromCommentParams Sim
sso string Não

Resposta

Retorna: BlockFromCommentPublic200Response


Desbloquear comentário (público) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
publicBlockFromCommentParams PublicBlockFromCommentParams Sim
sso string Não

Resposta

Retorna: UnBlockCommentPublic200Response

Verificar comentários bloqueados Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentIds string Sim
sso string Não

Resposta

Retorna: CheckedCommentsForBlocked200Response


Bloquear usuário por comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
blockFromCommentParams BlockFromCommentParams Sim
userId string Não
anonUserId string Não

Resposta

Retorna: BlockFromCommentPublic200Response


Criar comentário (público) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim
broadcastId string Sim
commentData CommentData Sim
sessionId string Não
sso string Não

Resposta

Retorna: CreateCommentPublic200Response


Excluir comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
contextUserId string Não
isLive boolean Não

Resposta

Retorna: DeleteComment200Response


Excluir comentário (público) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
broadcastId string Sim
editKey string Não
sso string Não

Resposta

Retorna: DeleteCommentPublic200Response

Remover voto de comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
voteId string Sim
urlId string Sim
broadcastId string Sim
editKey string Não
sso string Não

Resposta

Retorna: DeleteCommentVote200Response


Denunciar comentário Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim
userId string Não
anonUserId string Não

Resposta

Retorna: FlagComment200Response


Obter comentário Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: GetComment200Response


Obter comentários Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
page number Não
limit number Não
skip number Não
asTree boolean Não
skipChildren number Não
limitChildren number Não
maxTreeDepth number Não
urlId string Não
userId string Não
anonUserId string Não
contextUserId string Não
hashTag string Não
parentId string Não
direction SortDirections Não

Resposta

Retorna: GetComments200Response


Obter comentários (públicos) Internal Link

req tenantId urlId

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim
page number Não
direction SortDirections Não
sso string Não
skip number Não
skipChildren number Não
limit number Não
limitChildren number Não
countChildren boolean Não
fetchPageForCommentId string Não
includeConfig boolean Não
countAll boolean Não
includei10n boolean Não
locale string Não
modules string Não
isCrawler boolean Não
includeNotificationCount boolean Não
asTree boolean Não
maxTreeDepth number Não
useFullTranslationIds boolean Não
parentId string Não
searchText string Não
hashTags Array Não
userId string Não
customConfigStr string Não
afterCommentId string Não
beforeCommentId string Não

Resposta

Retorna: GetCommentsPublic200Response


Obter texto do comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
editKey string Não
sso string Não

Resposta

Retorna: GetCommentText200Response

Obter nomes de usuários de votos do comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
dir number Sim
sso string Não

Resposta

Retorna: GetCommentVoteUserNames200Response


Travar comentário Internal Link

Parâmetros

Name Type Obrigatório Descrição
tenantId string Sim
commentId string Sim
broadcastId string Sim
sso string Não

Resposta

Retorna: LockComment200Response


Fixar comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
broadcastId string Sim
sso string Não

Resposta

Retorna: PinComment200Response


Salvar comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createCommentParams CreateCommentParams Sim
isLive boolean Não
doSpamCheck boolean Não
sendEmails boolean Não
populateNotifications boolean Não

Resposta

Retorna: SaveComment200Response


Salvar comentários em massa Internal Link

Parâmetros

Name Type Obrigatório Descrição
tenantId string Sim
createCommentParams Array Sim
isLive boolean Não
doSpamCheck boolean Não
sendEmails boolean Não
populateNotifications boolean Não

Resposta

Retorna: Array<SaveComment200Response


Definir texto do comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
broadcastId string Sim
commentTextUpdateRequest CommentTextUpdateRequest Sim
editKey string Não
sso string Não

Resposta

Retorna: SetCommentText200Response


Desbloquear usuário por comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
unBlockFromCommentParams UnBlockFromCommentParams Sim
userId string Não
anonUserId string Não

Resposta

Retorna: UnBlockCommentPublic200Response


Remover denúncia de comentário Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
userId string Não
anonUserId string Não

Resposta

Retorna: FlagComment200Response


Destravar comentário Internal Link


Parâmetros

Name Type Required Description
tenantId string Sim
commentId string Sim
broadcastId string Sim
sso string Não

Resposta

Retorna: LockComment200Response


Remover fixação do comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
broadcastId string Sim
sso string Não

Resposta

Retorna: PinComment200Response


Atualizar comentário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
body PickAPICommentUpdatableCommentFields Sim
contextUserId string Não
doSpamCheck boolean Não
isLive boolean Não

Resposta

Retorna: FlagCommentPublic200Response


Votar em comentário Internal Link

Parâmetros

Name Type Obrigatório Descrição
tenantId string Sim
commentId string Sim
urlId string Sim
broadcastId string Sim
voteBodyParams VoteBodyParams Sim
sessionId string Não
sso string Não

Resposta

Retorna: VoteComment200Response


Adicionar configuração de domínio Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
addDomainConfigParams AddDomainConfigParams Sim

Resposta

Retorna: AddDomainConfig200Response

Excluir configuração de domínio Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
domain string Sim

Resposta

Retorna: DeleteDomainConfig200Response


Obter configuração de domínio Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
domain string Sim

Resposta

Retorna: GetDomainConfig200Response


Obter configurações de domínio Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim

Resposta

Retorna: GetDomainConfigs200Response


Atualizar parcialmente configuração de domínio Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
domainToUpdate string Sim
patchDomainConfigParams PatchDomainConfigParams Sim

Resposta

Retorna: GetDomainConfig200Response


Substituir configuração de domínio Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
domainToUpdate string Sim
updateDomainConfigParams UpdateDomainConfigParams Sim

Resposta

Retorna: GetDomainConfig200Response


Criar modelo de e-mail Internal Link


Parâmetros

Name Type Required Description
tenantId string Sim
createEmailTemplateBody CreateEmailTemplateBody Sim

Resposta

Retorna: CreateEmailTemplate200Response

Exemplo

Exemplo de createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_7a9f2b3d";
3
4const createEmailTemplateBody: CreateEmailTemplateBody = {
5 name: "Comment Notification",
6 subject: "New comment on your article: ",
7 htmlBody: "<p> left a comment:</p><blockquote></blockquote>",
8 enabled: true,
9 defaultLocale: "en-US",
10 metadata: { createdBy: "admin@example.com", purpose: "notify_comment" } // dados extras opcionais
11};
12
13const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
14

Excluir modelo de e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_4b2f6a-4b2f6a2d";
3const templateId: string = "email_template_9f8b7c3e";
4const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
5const status: APIStatus | undefined = result?.status
6

Excluir erro de renderização do modelo de e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
errorId string Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteEmailTemplateRenderError
Copy Copy
1
2const tenantId: string = "tenant_8f3b2a9c";
3const id: string = "template_4a1c9f7e";
4const errorId: string = "err_20260112_abc123";
5const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
6

Obter modelo de e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetEmailTemplate200Response

Exemplo

Exemplo de getEmailTemplate
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-enterprises-123';
4 const id: string = 'welcome-email-template-v2';
5 const locale: string | undefined = 'en-US'; // exemplo de parâmetro opcional
6 const template: GetEmailTemplate200Response = await getEmailTemplate(tenantId, id);
7 console.log(template, locale);
8})();
9

Obter definições de modelos de e-mail Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim

Resposta

Retorna: GetEmailTemplateDefinitions200Response

Exemplo

Exemplo de getEmailTemplateDefinitions
Copy Copy
1
2const tenantId: string = 'acme-enterprises-78f2';
3const emailTemplates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4

Obter erros de renderização de modelos de e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
skip number Não

Resposta

Retorna: GetEmailTemplateRenderErrors200Response

Exemplo

Exemplo de getEmailTemplateRenderErrors
Copy Copy
1
2const tenantId: string = "tenant_7b3f2a9c";
3const id: string = "tmpl_4f1b2c9e";
4const skip: number = 25;
5const result: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id, skip);
6

Obter modelos de e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
skip number Não

Resposta

Retorna: GetEmailTemplates200Response

Exemplo

Exemplo de getEmailTemplates
Copy Copy
1
2const tenantId: string = 'tenant_8f4d2b7c';
3const responseWithoutSkip: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
4const skip: number = 20;
5const responseWithSkip: GetEmailTemplates200Response = await getEmailTemplates(tenantId, skip);
6

Renderizar modelo de e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
renderEmailTemplateBody RenderEmailTemplateBody Sim
locale string Não

Resposta

Retorna: RenderEmailTemplate200Response

Exemplo

Exemplo de renderEmailTemplate
Copy Copy
1
2const tenantId: string = 'acme-corp-7f3';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'new-comment-notification',
5 recipientEmail: 'jane.doe@acme.com',
6 variables: {
7 commenterName: 'Samir Patel',
8 commentText: 'I found this article really helpful — thanks for sharing!',
9 threadUrl: 'https://acme.com/blog/123#comments'
10 },
11 includeUnsubscribeLink: true
12};
13const locale: string = 'en-US';
14const response: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
15

Atualizar modelo de e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateEmailTemplateBody UpdateEmailTemplateBody Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateEmailTemplate
Copy Copy
1
2const tenantId: string = 'acme-corp-tenant-01';
3const id: string = 'email_tpl_42b7a9';
4const updateEmailTemplateBody: UpdateEmailTemplateBody = {
5 name: 'Comment Flag Notification',
6 subject: 'A comment was flagged on acme.com',
7 html: '<p>A comment by was flagged. Review at </p>',
8 replyTo: 'noreply@acme.com', // campo opcional demonstrado
9 enabled: true,
10 customConfig: { priority: 'high' } // parâmetros personalizados opcionais
11};
12const response: FlagCommentPublic200Response = await updateEmailTemplate(tenantId, id, updateEmailTemplateBody);
13

Obter registro de eventos Internal Link

req tenantId urlId userIdWS

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim
userIdWS string Sim
startTime number Sim
endTime number Sim

Resposta

Retorna: GetEventLog200Response

Obter registro de eventos global Internal Link

req tenantId urlId userIdWS

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim
userIdWS string Sim
startTime number Sim
endTime number Sim

Resposta

Retorna: GetEventLog200Response

Criar publicação de feed Internal Link

Parâmetros

Name Tipo Obrigatório Descrição
tenantId string Sim
createFeedPostParams CreateFeedPostParams Sim
broadcastId string Não
isLive boolean Não
doSpamCheck boolean Não
skipDupCheck boolean Não

Resposta

Retorna: CreateFeedPost200Response


Criar publicação de feed (pública) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createFeedPostParams CreateFeedPostParams Sim
broadcastId string Não
sso string Não

Resposta

Retorna: CreateFeedPostPublic200Response

Excluir publicação de feed (pública) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
postId string Sim
broadcastId string Não
sso string Não

Resposta

Retorna: DeleteFeedPostPublic200Response

Obter publicações do feed Internal Link


req tenantId afterId

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
afterId string Não
limit number Não
tags Array Não

Resposta

Retorna: GetFeedPosts200Response


Obter publicações do feed (públicas) Internal Link


req tenantId afterId

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
afterId string Não
limit number Não
tags Array Não
sso string Não
isCrawler boolean Não
includeUserInfo boolean Não

Resposta

Retorna: GetFeedPostsPublic200Response


Obter estatísticas de publicações do feed Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
postIds Array Sim
sso string Não

Resposta

Retorna: GetFeedPostsStats200Response


Obter reações de usuário (públicas) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
postIds Array Não
sso string Não

Resposta

Retorna: GetUserReactsPublic200Response


Reagir à publicação do feed (pública) Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
postId string Sim
reactBodyParams ReactBodyParams Sim
isUndo boolean Não
broadcastId string Não
sso string Não

Resposta

Retorna: ReactFeedPostPublic200Response


Atualizar publicação do feed Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
feedPost FeedPost Sim

Resposta

Retorna: FlagCommentPublic200Response

Atualizar publicação do feed (pública) Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
postId string Sim
updateFeedPostParams UpdateFeedPostParams Sim
broadcastId string Não
sso string Não

Resposta

Retorna: CreateFeedPostPublic200Response


Denunciar comentário (público) Internal Link

Parâmetros

Name Type Obrigatório Descrição
tenantId string Sim
commentId string Sim
isFlagged boolean Sim
sso string Não

Resposta

Retorna: FlagCommentPublic200Response

Adicionar hashtag Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Não
createHashTagBody CreateHashTagBody Não

Resposta

Retorna: AddHashTag200Response

Exemplo

Exemplo de addHashTag
Copy Copy
1
2const tenantId: string = 'tenant_7b2f6c2b';
3const createBody: CreateHashTagBody = {
4 tag: 'feature-request',
5 label: 'Feature Request',
6 description: 'Requests for new functionality in the web client',
7 isActive: true,
8 visibility: 'public',
9 allowedDomains: ['example.com', 'internal.example.com']
10};
11const result: AddHashTag200Response = await addHashTag(tenantId, createBody);
12const resultWithoutTenant: AddHashTag200Response = await addHashTag(undefined, {
13 tag: 'bug',
14 label: 'Bug',
15 description: 'Use for reproducible bugs reported by users',
16 isActive: true,
17 visibility: 'public'
18});
19

Adicionar hashtags em massa Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Não
bulkCreateHashTagsBody BulkCreateHashTagsBody Não

Resposta

Retorna: AddHashTagsBulk200Response

Exemplo

Exemplo de addHashTagsBulk
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_3f2b9a';
4 const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
5 tags: [
6 { name: 'performance', description: 'Comments about site performance', visibleToModeratorsOnly: false },
7 { name: 'feature-request', description: 'Requests for new features', visibleToModeratorsOnly: true }
8 ]
9 };
10 const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
11 const resultWithNoTenant: AddHashTagsBulk200Response = await addHashTagsBulk(undefined, bulkCreateHashTagsBody);
12 console.log(result, resultWithNoTenant);
13})();
14

Excluir hashtag Internal Link

Parâmetros

Name Type Required Description
tag string Sim
tenantId string Não
deleteHashTagRequest DeleteHashTagRequest Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteHashTag
Copy Copy
1
2const tag: string = 'breaking-news';
3const tenantId: string = 'tenant_42';
4const deleteReq: DeleteHashTagRequest = { removedBy: 'moderator_jane', reason: 'off-topic for this community', deleteAssociatedComments: true } as DeleteHashTagRequest;
5const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteReq);
6

Obter hashtags Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
page number Não

Resposta

Retorna: GetHashTags200Response

Exemplo

Exemplo de getHashTags
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-7a9f";
4 const tagsPage1: GetHashTags200Response = await getHashTags(tenantId);
5 const tagsPage2: GetHashTags200Response = await getHashTags(tenantId, 2);
6 console.log(tagsPage1, tagsPage2);
7})();
8

Atualizar parcialmente hashtag Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tag string Sim
tenantId string Não
updateHashTagBody UpdateHashTagBody Não

Resposta

Retorna: PatchHashTag200Response

Exemplo

Exemplo de patchHashTag
Copy Copy
1
2const tag: string = 'release-2026';
3const tenantId: string = 'tenant_42';
4const updateHashTagBody: UpdateHashTagBody = {
5 displayName: 'Release 2026',
6 description: 'Discussions and notes for the 2026 product release',
7 isActive: true
8};
9const result: PatchHashTag200Response = await patchHashTag(tag, tenantId, updateHashTagBody);
10

Criar moderador Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createModeratorBody CreateModeratorBody Sim

Resposta

Retorna: CreateModerator200Response

Exemplo

Exemplo de createModerator
Copy Copy
1
2const tenantId: string = "tenant_prod_us-east_01";
3const createModeratorBody: CreateModeratorBody = {
4 email: "maria.lopez+mod@fastcompany.com",
5 username: "mlopez_mod",
6 displayName: "Maria Lopez",
7 roles: ["content_moderator"],
8 notifyOnReports: true,
9 metadata: { region: "us-east", team: "community" }
10};
11const result: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
12

Excluir moderador Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
sendEmail string Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteModerator
Copy Copy
1
2const tenantId: string = 'acme-tenant-987';
3const moderatorId: string = 'mod-78b2c9a4-3f1e-4d6a';
4const sendEmail: string = 'true';
5const result: FlagCommentPublic200Response = await deleteModerator(tenantId, moderatorId, sendEmail);
6

Obter moderador Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetModerator200Response

Exemplo

Exemplo de getModerator
Copy Copy
1
2const tenantId: string = "tenant_eu_4f8d2b9e";
3const maybeModeratorId: string | undefined = "mod_91c3b7a2"; // origem opcional (pode ser undefined)
4const moderator: GetModerator200Response = await getModerator(tenantId, maybeModeratorId!);
5

Obter moderadores Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
skip number Não

Resposta

Retorna: GetModerators200Response

Exemplo

Exemplo de getModerators
Copy Copy
1
2const tenantId: string = "tenant_corp_7f9b2a";
3const moderatorsPage1: GetModerators200Response = await getModerators(tenantId);
4const skip: number = 50;
5const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, skip);
6

Enviar convite Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
fromName string Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de sendInvite
Copy Copy
1
2const tenantId: string = 'acme-tenant-004';
3const id: string = 'comment_9b7f3a2c';
4const fromName: string = 'María Hernández';
5const response: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName);
6

Atualizar moderador Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateModeratorBody UpdateModeratorBody Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateModerator
Copy Copy
1
2const tenantId: string = '4f8a9c2e-3b6d-4d9e-8c2f-1a2b3c4d5e6f';
3const id: string = 'mod_92a7c4';
4const updateModeratorBodyMinimal: UpdateModeratorBody = { displayName: 'Sophia Patel' };
5const updateModeratorBodyWithOptional: UpdateModeratorBody = {
6 displayName: 'Sophia Patel',
7 email: 'sophia.patel@newsroom.example',
8 permissions: ['remove_comments', 'ban_user'],
9 notifyOnFlag: true // parâmetro opcional demonstrado
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBodyWithOptional);
12

Excluir contagem de notificações Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_7f3a1b2c4d9e';
3const notificationId: string = 'notif_8c9d0a1b2f3e4b7';
4const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, notificationId);
5

Obter contagem de notificações em cache Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetCachedNotificationCount200Response

Exemplo

Exemplo de getCachedNotificationCount
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const baseNotificationId: string = 'notif-000123';
4const idSuffix: string | undefined = undefined; // exemplo de parâmetro opcional
5const notificationId: string = idSuffix ? `${baseNotificationId}-${idSuffix}` : baseNotificationId;
6const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, notificationId);
7console.log(result);
8

Obter contagem de notificações Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
userId string Não
urlId string Não
fromCommentId string Não
viewed boolean Não
type string Não

Resposta

Retorna: GetNotificationCount200Response

Exemplo

Exemplo de getNotificationCount
Copy Copy
1
2const tenantId: string = 'tenant_8a9b7c';
3const userId: string = 'user_42b3c';
4const urlId: string = 'https://blog.example.com/posts/introducing-new-editor';
5const fromCommentId: string | undefined = undefined;
6const viewed: boolean = false;
7const type: string = 'mention';
8const result: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, fromCommentId, viewed, type);
9

Obter notificações Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Yes
userId string No
urlId string No
fromCommentId string No
viewed boolean No
type string No
skip number No

Resposta

Retorna: GetNotifications200Response

Exemplo

Exemplo de getNotifications
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_8f3b1a2c';
4 const userId: string = 'user_42';
5 const urlId: string = 'https://news.example.com/articles/2026/01/11/comment-thread';
6 const fromCommentId: string = 'cmt_9a7b';
7 const viewed: boolean = false;
8 const type: string = 'mention';
9 const skip: number = 0;
10 const response: GetNotifications200Response = await getNotifications(tenantId, userId, urlId, fromCommentId, viewed, type, skip);
11 console.log(response);
12})();
13

Atualizar notificação Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateNotificationBody UpdateNotificationBody Sim
userId string Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateNotification
Copy Copy
1
2const tenantId: string = "tenant_86a7b3";
3const id: string = "notif_20260112_01";
4const userId: string = "moderator_42";
5const updateNotificationBody: UpdateNotificationBody = {
6 name: "Flagged comment alert",
7 enabled: true,
8 channels: ["email"],
9 recipients: ["mod-team@news-site.com"],
10 threshold: 1
11};
12
13(async () => {
14 const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
15 console.log(result);
16})();
17

Adicionar página Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createAPIPageData CreateAPIPageData Sim

Resposta

Retorna: AddPageAPIResponse


Excluir página Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: DeletePageAPIResponse


Obter página por ID de URL Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim

Resposta

Retorna: GetPageByURLIdAPIResponse


Obter páginas Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim

Resposta

Retorna: GetPagesAPIResponse


Atualizar parcialmente página Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim
updateAPIPageData UpdateAPIPageData Sim

Resposta

Retorna: PatchPageAPIResponse

Excluir evento de webhook pendente Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deletePendingWebhookEvent
Copy Copy
1
2const tenantId: string = 'tenant_7f4e2b';
3const pendingEventId: string = '9f7b6a8c-3b2a-4c0d-a8e5-1234567890ab';
4const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, pendingEventId);
5console.log(result);
6

Obter contagem de eventos de webhook pendentes Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Não
externalId string Não
eventType string Não
type string Não
domain string Não
attemptCountGT number Não

Resposta

Retorna: GetPendingWebhookEventCount200Response

Exemplo

Exemplo de getPendingWebhookEventCount
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9c3b2b';
4 const commentId: string = 'cmt_f4a1b2';
5 const externalId: string = 'ext-789';
6 const eventType: string = 'comment.created';
7 const type: string = 'delivery';
8 const domain: string = 'app.example.com';
9 const attemptCountGT: number = 2;
10
11 const result: GetPendingWebhookEventCount200Response = await getPendingWebhookEventCount(
12 tenantId,
13 commentId,
14 externalId,
15 eventType,
16 type,
17 domain,
18 attemptCountGT
19 );
20
21 console.log(result);
22})();
23

Obter eventos de webhook pendentes Internal Link


Parâmetros

Name Type Required Description
tenantId string Sim
commentId string Não
externalId string Não
eventType string Não
type string Não
domain string Não
attemptCountGT number Não
skip number Não

Resposta

Retorna: GetPendingWebhookEvents200Response

Exemplo

Exemplo de getPendingWebhookEvents
Copy Copy
1
2const tenantId: string = "tenant_78b2f1";
3const commentId: string = "cmt_0042";
4const eventType: string = "comment.created";
5const domain: string = "blog.example.com";
6const attemptCountGT: number = 1;
7const skip: number = 0;
8
9const pending: GetPendingWebhookEvents200Response = await getPendingWebhookEvents(
10 tenantId,
11 commentId,
12 undefined, // externalId (não definido)
13 eventType,
14 undefined, // type (não definido)
15 domain,
16 attemptCountGT,
17 skip
18);
19

Criar configuração de pergunta Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createQuestionConfigBody CreateQuestionConfigBody Sim

Resposta

Retorna: CreateQuestionConfig200Response

Exemplo

createQuestionConfig Exemplo
Copy Copy
1
2const tenantId: string = "tenant_live_7f8b3c2a";
3const customOptions: QuestionConfigCustomOptionsInner[] = [
4 { value: "under18", label: "Under 18" },
5 { value: "18-24", label: "18-24" },
6 { value: "25-34", label: "25-34", defaultSelected: true }
7];
8const createQuestionConfigBody: CreateQuestionConfigBody = {
9 key: "age_range",
10 label: "What is your age range?",
11 required: false, // opcional: demonstrar campos opcionais omitidos vs incluídos
12 renderingType: QuestionRenderingType.Dropdown,
13 options: customOptions,
14 whenSave: QuestionWhenSave.Always
15};
16const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
17

Excluir configuração de pergunta Internal Link

Parameters

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteQuestionConfig
Copy Copy
1
2async function deleteIfPresent(tenantId: string, id?: string): Promise<FlagCommentPublic200Response | null> {
3 if (!id) return null;
4 const result: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
5 return result;
6}
7const tenantId: string = 'tenant_acme_001';
8const optionalConfigId: string | undefined = 'qcfg_20260112_01';
9(async (): Promise<void> => {
10 const deleted: FlagCommentPublic200Response | null = await deleteIfPresent(tenantId, optionalConfigId);
11 void deleted;
12})();
13

Obter configuração de pergunta Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetQuestionConfig200Response

Exemplo

Exemplo de getQuestionConfig
Copy Copy
1
2const tenantId: string = 'acme-corp-47';
3const questionId: string = 'q-2026-01-12-01';
4const result: GetQuestionConfig200Response = await getQuestionConfig(tenantId, questionId);
5function summarizeConfig(cfg: GetQuestionConfig200Response, includeMetadata?: boolean): QuestionConfig | undefined {
6 // includeMetadata é opcional; implementação omitida por brevidade
7 return undefined;
8}
9const summarizedWithMeta: QuestionConfig | undefined = summarizeConfig(result, true);
10const summarizedDefault: QuestionConfig | undefined = summarizeConfig(result);
11

Obter configurações de pergunta Internal Link

Parameters

Name Type Required Description
tenantId string Sim
skip number Não

Response

Retorna: GetQuestionConfigs200Response

Example

Exemplo de getQuestionConfigs
Copy Copy
1
2const tenantId: string = 'tenant-42a7b9';
3const firstPage: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const secondPage: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, 50);
5

Atualizar configuração de pergunta Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateQuestionConfigBody UpdateQuestionConfigBody Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateQuestionConfig
Copy Copy
1
2const tenantId: string = 'tenant-82b3a';
3const id: string = 'qst-20260112';
4const updateQuestionConfigBody: UpdateQuestionConfigBody = { label: 'Age verification', required: true, renderingType: 'singleChoice', customOptions: [{ value: '18-24', label: '18–24' }] } as UpdateQuestionConfigBody;
5const result: FlagCommentPublic200Response = await updateQuestionConfig(tenantId, id, updateQuestionConfigBody);
6

Criar resultado de pergunta Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createQuestionResultBody CreateQuestionResultBody Sim

Resposta

Retorna: CreateQuestionResult200Response

Exemplo

Exemplo de createQuestionResult
Copy Copy
1
2const tenantId: string = "fc_tenant_7a3c_us-east-1";
3const metaItem: MetaItem = { key: "referrer", value: "/blog/how-to-comment" };
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "q_42",
6 commenterId: "user_1984",
7 answer: "yes",
8 score: 4,
9 meta: [metaItem] // metadados opcionais demonstrados
10} as CreateQuestionResultBody;
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

Excluir resultado de pergunta Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Yes
id string Yes

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteQuestionResult
Copy Copy
1
2const tenantId: string = 'acme-tenant-01';
3const questionResultId: string = '6f1a2b3c-4d5e-6789-abcd-ef0123456789';
4const deletedResult: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, questionResultId);
5console.log(deletedResult);
6

Obter resultado de pergunta Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetQuestionResult200Response

Exemplo

Exemplo de getQuestionResult
Copy Copy
1
2const tenantId: string = "3fa85f64-5717-4562-b3fc-2c963f66afa6";
3const questionId: string = "question_72f1b9c3a4";
4const result: GetQuestionResult200Response = await getQuestionResult(tenantId, questionId);
5console.log(result);
6

Obter resultados de perguntas Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Não
userId string Não
startDate string Não
questionId string Não
questionIds string Não
skip number Não

Resposta

Retorna: GetQuestionResults200Response

Exemplo

Exemplo de getQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const urlId: string = 'news/2025/fastcomments-release';
4const userId: string = 'user_8b7f3c';
5const startDate: string = '2025-01-01T00:00:00Z';
6const questionIds: string = 'q123,q124';
7const skip: number = 20;
8const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, undefined, questionIds, skip);
9

Atualizar resultado de pergunta Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim
updateQuestionResultBody UpdateQuestionResultBody Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateQuestionResult
Copy Copy
1
2const tenantId: string = 'tenant_84f2b9';
3const id: string = 'question_3a7c1d';
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 result: { verdict: 'helpful', confidence: 0.92 },
6 reviewer: { id: 'mod_102', name: 'Aisha Rahman' },
7 notifyUser: true // parâmetro opcional incluído
8};
9const response: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
10

Agregação de resultados de perguntas Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
questionId string Não
questionIds Array Não
urlId string Não
timeBucket AggregateTimeBucket Não
startDate Date Não
forceRecalculate boolean Não

Resposta

Retorna: AggregateQuestionResults200Response


Agregação em massa de resultados de perguntas Internal Link

Parâmetros

Name Tipo Obrigatório Descrição
tenantId string Sim
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest Sim
forceRecalculate boolean Não

Resposta

Retorna: BulkAggregateQuestionResults200Response


Combinar comentários com resultados de perguntas Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
questionId string Não
questionIds Array Não
urlId string Não
startDate Date Não
forceRecalculate boolean Não
minValue number Não
maxValue number Não
limit number Não

Resposta

Retorna: CombineCommentsWithQuestionResults200Response


Adicionar usuário SSO Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createAPISSOUserData CreateAPISSOUserData Sim

Resposta

Retorna: AddSSOUserAPIResponse


Excluir usuário SSO Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
deleteComments boolean Não
commentDeleteMode string Não

Resposta

Retorna: DeleteSSOUserAPIResponse


Obter usuário SSO por e-mail Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
email string Sim

Resposta

Retorna: GetSSOUserByEmailAPIResponse


Obter usuário SSO por ID Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetSSOUserByIdAPIResponse


Obter usuários SSO Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
skip number Não

Resposta

Retorna: GetSSOUsers200Response


Atualizar parcialmente usuário SSO Internal Link

Parâmetros

Name Type Obrigatório Descrição
tenantId string Sim
id string Sim
updateAPISSOUserData UpdateAPISSOUserData Sim
updateComments boolean Não

Resposta

Retorna: PatchSSOUserAPIResponse


Substituir usuário SSO Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateAPISSOUserData UpdateAPISSOUserData Sim
updateComments boolean Não

Resposta

Retorna: PutSSOUserAPIResponse


Criar assinatura Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createAPIUserSubscriptionData CreateAPIUserSubscriptionData Sim

Resposta

Retorna: CreateSubscriptionAPIResponse

Excluir assinatura Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
userId string Não

Resposta

Retorna: DeleteSubscriptionAPIResponse


Obter assinaturas Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
userId string Não

Resposta

Retorna: GetSubscriptionsAPIResponse


Obter usos diários do locatário Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
yearNumber number Não
monthNumber number Não
dayNumber number Não
skip number Não

Resposta

Retorna: GetTenantDailyUsages200Response

Exemplo

Exemplo de getTenantDailyUsages
Copy Copy
1
2const tenantId: string = "tenant_89f3c2-prod";
3const yearNumber: number = 2026;
4const monthNumber: number = 1;
5const skip: number = 0;
6const usages: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, undefined, skip);
7

Criar pacote do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createTenantPackageBody CreateTenantPackageBody Sim

Resposta

Retorna: CreateTenantPackage200Response

Exemplo

Exemplo de createTenantPackage
Copy Copy
1
2const tenantId: string = "tenant_7f3b1a9c";
3const tenantPackage: TenantPackage = { id: "pkg_001", name: "Premium Plan", seats: 100 };
4const customConfig: CustomConfigParameters = { enableImages: true, maxImageSizeMb: 10 };
5const createTenantPackageBody: CreateTenantPackageBody = {
6 packageName: "Premium Plus",
7 tenantPackage,
8 customConfig,
9 notes: "Enable advanced moderation and image uploads" // parâmetro opcional demonstrado
10};
11const result: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
12

Excluir pacote do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'fc-tenant-8a9c2b';
3const packageId: string = 'pkg-47f3c9';
4const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
5

Obter pacote do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetTenantPackage200Response

Exemplo

Exemplo de getTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_westus_01';
3const packageId: string = 'pkg_premium_annual_2026';
4interface FetchOptions { includeArchived?: boolean }
5const options: FetchOptions = { includeArchived: false };
6const result: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
7

Obter pacotes do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
skip number Não

Resposta

Retorna: GetTenantPackages200Response

Exemplo

Exemplo de getTenantPackages
Copy Copy
1
2const tenantId: string = 'tenant_4f3a9c2d';
3const skip: number = 25;
4const packagesResponse: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const pagedPackagesResponse: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

Substituir pacote do locatário Internal Link

Parameters

Name Type Required Description
tenantId string Sim
id string Sim
replaceTenantPackageBody ReplaceTenantPackageBody Sim

Response

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de replaceTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant-9b72f2';
3const packageId: string = 'pkg-prod-v2';
4const replaceTenantPackageBody: ReplaceTenantPackageBody = {
5 name: 'Premium Moderation Bundle',
6 enabled: true,
7 maxModerators: 4,
8 // campos opcionais como "notes" ou "trialExpiry" foram intencionalmente omitidos aqui
9} as ReplaceTenantPackageBody;
10const result: FlagCommentPublic200Response = await replaceTenantPackage(
11 tenantId,
12 packageId,
13 replaceTenantPackageBody
14);
15

Atualizar pacote do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateTenantPackageBody UpdateTenantPackageBody Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_8a4f1c9b';
3const packageId: string = 'pkg_premium_v2';
4const customConfig: CustomConfigParameters = { enableRichText: true, maxImagesPerComment: 5 };
5const updateTenantPackageBody: UpdateTenantPackageBody = {
6 name: 'Premium Moderation Package',
7 enabled: true,
8 description: 'Adds advanced spam rules, image moderation and priority support',
9 customConfigParameters: customConfig
10};
11const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, packageId, updateTenantPackageBody);
12

Criar usuário do locatário Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
createTenantUserBody CreateTenantUserBody Sim

Resposta

Retorna: CreateTenantUser200Response

Exemplo

Exemplo de createTenantUser
Copy Copy
1
2const tenantId: string = "tenant_9a8c7e4b";
3const createTenantUserBody: CreateTenantUserBody = {
4 email: "julia.smith@acme-corp.com",
5 displayName: "Julia Smith",
6 role: "moderator",
7 password: "Str0ngP@ssword!23",
8 sendInviteEmail: true, // parâmetro opcional demonstrado
9 locale: "en-US",
10 metadata: { department: "Customer Success" }
11};
12const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
13

Excluir usuário do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
deleteComments string Não
commentDeleteMode string Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2a9c';
3const id: string = 'user_4e5f6a7b';
4const deleteComments: string = 'true';
5const commentDeleteMode: string = 'hard';
6
7const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, id, deleteComments, commentDeleteMode);
8

Obter usuário do locatário Internal Link


Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: GetTenantUser200Response

Exemplo

Exemplo de getTenantUser
Copy Copy
1
2const tenantId: string = "tenant_9f7d4b2a-1c3e";
3const id: string = "user_6a12b3c4d5";
4const includeProfile: boolean | undefined = true; // exemplo de parâmetro opcional
5const response: GetTenantUser200Response = await getTenantUser(tenantId, id);
6console.log("Tenant user fetched", response);
7

Obter usuários do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
skip number Não

Resposta

Retorna: GetTenantUsers200Response

Exemplo

Exemplo de getTenantUsers
Copy Copy
1
2const tenantId: string = 'tenant_8f3b2c1a';
3const skip: number = 50;
4const firstPage: GetTenantUsers200Response = await getTenantUsers(tenantId);
5const nextPage: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
6

Substituir usuário do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Yes
id string Yes
replaceTenantUserBody ReplaceTenantUserBody Yes
updateComments string No

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de replaceTenantUser
Copy Copy
1
2const tenantId: string = "tenant_5f8b9a";
3const id: string = "user_92bf21";
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 email: "jane.doe@acme-corp.com",
6 displayName: "Jane Doe",
7 externalId: "acme|12345",
8 roles: ["commenter", "moderator"],
9 isActive: true,
10 metadata: { team: "product", location: "NYC" }
11};
12const updateComments: string = "Update historical comments to reflect new display name";
13const result: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
14

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
redirectURL string Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de sendLoginLink
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const id: string = 'user_9f3b2a';
4const redirectURL: string = 'https://app.example.com/onboard?source=login-email';
5const result: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
6

Atualizar usuário do locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateTenantUserBody UpdateTenantUserBody Sim
updateComments string Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_84f3b2';
3const id: string = 'user_7a9d1c';
4const updateComments: string = 'Promoted to moderator and updated contact email';
5const updateTenantUserBody: UpdateTenantUserBody = {
6 email: 'jane.doe+mod@example.com',
7 displayName: 'Jane D.',
8 roles: ['moderator'],
9 isBanned: false,
10 metadata: { department: 'community' }
11};
12const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, id, updateTenantUserBody, updateComments);
13

Criar locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createTenantBody CreateTenantBody Sim

Resposta

Retorna: CreateTenant200Response

Exemplo

Exemplo de createTenant
Copy Copy
1
2const tenantId: string = "acme-corporation";
3const billing: BillingInfo = { planId: "pro", billingContactEmail: "finance@acme-corp.com", currency: "USD" };
4const domainConfig: APIDomainConfiguration = { primaryDomain: "comments.acme-corp.com", allowedDomains: ["acme-corp.com", "www.acme-corp.com"], enforceHttps: true };
5const importedSites: ImportedSiteType[] = [{ siteId: "site-001", url: "https://blog.acme-corp.com", name: "Acme Blog" }]; // optional
6const createBody: CreateTenantBody = { tenantName: "Acme Corporation", adminEmail: "admin@acme-corp.com", billingInfo: billing, domainConfiguration: domainConfig, importedSites, enableModeration: true };
7const response: CreateTenant200Response = await createTenant(tenantId, createBody);
8

Excluir locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
sure string Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteTenant
Copy Copy
1
2const tenantId: string = "tenant_7b3f1a9e";
3const id: string = "flag_9c4d2b1a";
4const sure: string = "yes_confirm_delete";
5
6const result: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
7console.log(result);
8

Obter locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetTenant200Response

Exemplo

Exemplo de getTenant
Copy Copy
1
2const tenantId: string = "tenant_acme_corp";
3const id: string = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
4interface GetOptions { includeDeleted?: boolean; locale?: string; }
5const options: GetOptions = { locale: "en-US" };
6const result: GetTenant200Response = await getTenant(tenantId, id);
7

Obter locatários Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
meta string Não
skip number Não

Resposta

Retorna: GetTenants200Response

Exemplo

Exemplo de getTenants
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_9f2d1b7c';
4 const meta: string = 'include=domains,billing,customConfig';
5 const skip: number = 20;
6 const response: GetTenants200Response = await getTenants(tenantId, meta, skip);
7 console.log(response);
8})();
9

Atualizar locatário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateTenantBody UpdateTenantBody Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateTenant
Copy Copy
1
2const tenantId: string = "tenant_01H4ZQ7KABCD";
3const id: string = "site_9f8e7d6c";
4const apiDomainConfiguration: APIDomainConfiguration = {
5 primaryDomain: "comments.acme.com",
6 allowSubdomains: true
7};
8const billingInfo: BillingInfo = {
9 planName: "Business",
10 billingContactEmail: "billing@acme.com",
11 seats: 25
12};
13const updateTenantBody: UpdateTenantBody = {
14 displayName: "Acme Corporation Comments",
15 apiDomainConfiguration,
16 billingInfo, // parâmetro opcional demonstrado
17 enableModeration: true
18};
19const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
20

Enviar imagem Internal Link


Enviar e redimensionar uma imagem

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
file Blob Sim
sizePreset SizePreset Não
urlId string Não

Resposta

Retorna: UploadImageResponse


Obter progresso de insígnia do usuário por ID Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetUserBadgeProgressById200Response


Obter progresso de insígnia do usuário por ID do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
userId string Sim

Resposta

Retorna: GetUserBadgeProgressById200Response

Obter lista de progresso de insígnias do usuário Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
userId string Não
limit number Não
skip number Não

Resposta

Retorna: GetUserBadgeProgressList200Response


Criar insígnia do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
createUserBadgeParams CreateUserBadgeParams Sim

Resposta

Retorna: CreateUserBadge200Response


Excluir insígnia do usuário Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: UpdateUserBadge200Response


Obter insígnia do usuário Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim

Resposta

Retorna: GetUserBadge200Response


Obter insígnias do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
userId string Não
badgeId string Não
type number Não
displayedOnComments boolean Não
limit number Não
skip number Não

Resposta

Retorna: GetUserBadges200Response


Atualizar insígnia do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateUserBadgeParams UpdateUserBadgeParams Sim

Resposta

Retorna: UpdateUserBadge200Response

Obter contagem de notificações do usuário Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
sso string Não

Resposta

Retorna: GetUserNotificationCount200Response


Obter notificações do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
pageSize number Não
afterId string Não
includeContext boolean Não
afterCreatedAt number Não
unreadOnly boolean Não
dmOnly boolean Não
noDm boolean Não
includeTranslations boolean Não
sso string Não

Resposta

Retorna: GetUserNotifications200Response


Redefinir contagem de notificações do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
sso string Não

Resposta

Retorna: ResetUserNotifications200Response


Redefinir notificações do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
afterId string Não
afterCreatedAt number Não
unreadOnly boolean Não
dmOnly boolean Não
noDm boolean Não
sso string Não

Resposta

Retorna: ResetUserNotifications200Response


Atualizar status de assinatura de notificações por comentários do usuário Internal Link


Ativar ou desativar notificações para um comentário específico.

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
notificationId string Sim
optedInOrOut UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum Sim
commentId string Sim
sso string Não

Resposta

Retorna: UpdateUserNotificationStatus200Response


Atualizar status de assinatura de notificações por página do usuário Internal Link

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

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim
url string Sim
pageTitle string Sim
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum Sim
sso string Não

Resposta

Retorna: UpdateUserNotificationStatus200Response

Atualizar status de notificação do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
notificationId string Sim
newStatus UpdateUserNotificationStatusNewStatusEnum Sim
sso string Não

Resposta

Retorna: UpdateUserNotificationStatus200Response


Obter status de presença do usuário Internal Link


Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlIdWS string Sim
userIds string Sim

Resposta

Retorna: GetUserPresenceStatuses200Response


Pesquisar usuários Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim
usernameStartsWith string Sim
mentionGroupIds Array Não
sso string Não

Resposta

Retorna: SearchUsers200Response


Obter usuário Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: GetUser200Response

Exemplo

Exemplo de getUser
Copy Copy
1
2const tenantId: string = "acme-publishing-42";
3const userIdOptional: string | undefined = "user_9d7b4c"; // pode ser indefinido em alguns fluxos (opcional)
4const id: string = userIdOptional ?? "user_default_0001";
5const result: GetUser200Response = await getUser(tenantId, id);
6console.log(result);
7

Criar voto Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
commentId string Sim
direction CreateVoteDirectionEnum Sim
userId string Não
anonUserId string Não

Resposta

Retorna: VoteComment200Response

Exemplo

Exemplo de createVote
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-tenant-812';
4 const commentId: string = '5e8f8b7a-3d4b-4f1b-9a2e-1c9f2d6a7b8c';
5 const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.UP;
6 const anonUserId: string = 'anon-84b9c2d';
7 const voteResult: VoteComment200Response = await createVote(tenantId, commentId, direction, undefined, anonUserId);
8 console.log(voteResult);
9})();
10

Excluir voto Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim
editKey string Não

Resposta

Retorna: DeleteCommentVote200Response

Exemplo

Exemplo de deleteVote
Copy Copy
1
2const tenantId: string = 'tenant_7f3b21c9';
3const id: string = 'vote_4a2d9f1b';
4const editKey: string = 'edit_92b7c6a1';
5
6const resultWithoutEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id);
7const resultWithEditKey: DeleteCommentVote200Response = await deleteVote(tenantId, id, editKey);
8

Obter votos Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim

Resposta

Retorna: GetVotes200Response

Exemplo

Exemplo de getVotes
Copy Copy
1
2const tenantId: string = 'tenant_9f8b3c_prod';
3const urlId: string = '/news/2026/typescript-ecosystem-update';
4const votes: GetVotes200Response = await getVotes(tenantId, urlId);
5// Se existisse um parâmetro opcional, por exemplo includeHidden, ele poderia ser usado assim:
6// const votesWithHidden: GetVotes200Response = await getVotes(tenantId, urlId, { includeHidden: true });
7

Obter votos do usuário Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
urlId string Sim
userId string Não
anonUserId string Não

Resposta

Retorna: GetVotesForUser200Response

Exemplo

Exemplo de getVotesForUser
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const urlId: string = 'news/2026/01/12/product-launch';
4const userId: string = 'user_9c3f2b';
5const anonUserId: string = 'anon_d4e7a1';
6
7const votesForUser: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, userId);
8const votesForAnon: GetVotesForUser200Response = await getVotesForUser(tenantId, urlId, undefined, anonUserId);
9

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.