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

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

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

Resposta

Retorna: AggregationResponse


getAuditLogs Internal Link

Parâmetros

Name Type Required Description
tenantId string Yes
limit number No
skip number No
order SORTDIR No
after number No
before number No

Resposta

Retorna: GetAuditLogs200Response

Exemplo

Exemplo de getAuditLogs
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = 'tenant_9b8f6c';
4 const limit: number = 50;
5 const skip: number = 0;
6 const order: SORTDIR = 'desc';
7 const after: number = Date.now() - 7 * 24 * 60 * 60 * 1000;
8 const response: GetAuditLogs200Response = await getAuditLogs(tenantId, limit, skip, order, after);
9 console.log(response);
10}
11main();
12

blockFromCommentPublic 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

Exemplo

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

unBlockCommentPublic Internal Link

Parâmetros

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

Resposta

Retorna: UnBlockCommentPublic200Response

Exemplo

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

checkedCommentsForBlocked Internal Link

Parâmetros

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

Resposta

Retorna: CheckedCommentsForBlocked200Response

Exemplo

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

blockUserFromComment 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

Exemplo

Exemplo de blockUserFromComment
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const id: string = "comment_67890";
4const blockFromCommentParams: BlockFromCommentParams = {
5 reason: "Repeated abusive language",
6 blockDurationHours: 168,
7 blockReplies: true,
8 notifyAuthor: true
9};
10const userId: string = "user_abc123";
11const anonUserId: string = "anon_xyz789";
12const result: BlockFromCommentPublic200Response = await blockUserFromComment(tenantId, id, blockFromCommentParams, userId, anonUserId);
13

createCommentPublic 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

Exemplo

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

deleteComment 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

Exemplo

Exemplo de deleteComment
Copy Copy
1
2const tenantId: string = 'tenant_7b3f2a';
3const commentId: string = 'cmt_8a1f4d2b';
4const contextUserId: string = 'user_102';
5const isLive: boolean = true;
6const result: DeleteComment200Response = await deleteComment(tenantId, commentId, contextUserId, isLive);
7

deleteCommentPublic 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

Exemplo

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

deleteCommentVote 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

Exemplo

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

flagComment 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

Exemplo

Exemplo de flagComment
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const id: string = 'comment_7f3a2b9e';
4const userId: string = 'user_jdoe_1001';
5const anonUserId: string = 'anon_3f2b_visitor';
6const result: FlagComment200Response = await flagComment(tenantId, id, userId, anonUserId);
7

getComment Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: GetComment200Response

Exemplo

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

getComments Internal Link

Parâmetros

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

Resposta

Retorna: GetComments200Response

Exemplo

Exemplo de getComments
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // page
6 20, // limit
7 0, // skip
8 true, // asTree
9 1, // skipChildren
10 3, // limitChildren
11 4, // maxTreeDepth
12 'articles/2026/new-product-launch', // urlId
13 'user_7890', // userId
14 'anon_4f3b2', // anonUserId
15 undefined, // contextUserId
16 '#launch', // hashTag
17 undefined // parentId
18);
19

getCommentsPublic 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

Exemplo

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

getCommentText 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

Exemplo

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

getCommentVoteUserNames 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

Exemplo

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

lockComment 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: LockComment200Response

Exemplo

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

pinComment 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

Exemplo

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

saveComment 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

Exemplo

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

saveCommentsBulk Internal Link

Parâmetros

Nome Tipo 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

Exemplo

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

setCommentText 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

Exemplo

Exemplo de setCommentText
Copy Copy
1
2const tenantId: string = 'tenant_6721f4';
3const commentId: string = 'cmt_9a3b2d';
4const broadcastId: string = 'live_2026_03_25';
5const editKey: string = 'edit_k_4f7b9';
6const sso: string = 'sso_tok_eyJhbGciOiJIUzI1';
7const commentTextUpdateRequest: CommentTextUpdateRequest = {
8 text: 'Updated to clarify the timeline and link the relevant docs.',
9 mentions: [{ userId: 'user_102', displayName: 'Alex Rivera' }],
10 hashtags: [{ tag: 'product-update' }]
11};
12const result: SetCommentText200Response = await setCommentText(tenantId, commentId, broadcastId, commentTextUpdateRequest, editKey, sso);
13

unBlockUserFromComment Internal Link

Parâmetros

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

Resposta

Retorna: UnBlockCommentPublic200Response

Exemplo

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

unFlagComment 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

Exemplo

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

unLockComment Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Yes
commentId string Yes
broadcastId string Yes
sso string No

Resposta

Retorna: LockComment200Response

Exemplo

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

unPinComment Internal Link

Parameters

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

Resposta

Retorna: PinComment200Response

Exemplo

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

updateComment Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim
updatableCommentParams UpdatableCommentParams Sim
contextUserId string Não
doSpamCheck boolean Não
isLive boolean Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de updateComment
Copy Copy
1
2const tenantId: string = "tenant_acme_corp_01";
3const id: string = "comment_20260325_4592";
4const updatableCommentParams: UpdatableCommentParams = {
5 body: "Updated the response to include a link to the RFC and fixed a typo in the second paragraph.",
6 editedByUserId: "user_8721",
7 isVisible: true
8};
9const contextUserId: string = "user_8721";
10const doSpamCheck: boolean = true;
11const isLive: boolean = true;
12const result: FlagCommentPublic200Response = await updateComment(tenantId, id, updatableCommentParams, contextUserId, doSpamCheck, isLive);
13

voteComment Internal Link

Parâmetros

Nome Tipo 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

Exemplo

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

addDomainConfig Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
addDomainConfigParams AddDomainConfigParams Sim

Resposta

Retorna: AddDomainConfig200Response

deleteDomainConfig Internal Link


Parâmetros

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

Resposta

Retorna: DeleteDomainConfig200Response


getDomainConfig Internal Link

Parâmetros

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

Resposta

Retorna: GetDomainConfig200Response


getDomainConfigs Internal Link


Parâmetros

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

Resposta

Retorna: GetDomainConfigs200Response


patchDomainConfig Internal Link

Parâmetros

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

Resposta

Retorna: GetDomainConfig200Response


putDomainConfig Internal Link

Parâmetros

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

Resposta

Retorna: GetDomainConfig200Response


createEmailTemplate Internal Link

Parâmetros

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

Resposta

Retorna: CreateEmailTemplate200Response

Exemplo

Exemplo de createEmailTemplate
Copy Copy
1
2const tenantId: string = "tenant_7a9f3c2b";
3const customConfig: CustomConfigParameters = { smtpHost: "smtp.fastmail.com", smtpPort: 587, useTLS: true };
4const createEmailTemplateBody: CreateEmailTemplateBody = {
5 name: "Account Notification",
6 subject: "Your ACME account was updated",
7 fromEmail: "no-reply@acme-corp.com",
8 replyTo: "support@acme-corp.com",
9 html: "<p>Hi {{user.firstName}}, your account settings were changed.</p>",
10 text: "Hi {{user.firstName}}, your account settings were changed.",
11 isActive: true,
12 description: "Used for transactional account update emails",
13 customConfig
14};
15const result: CreateEmailTemplate200Response = await createEmailTemplate(tenantId, createEmailTemplateBody);
16

deleteEmailTemplate 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_7f4c9d1e';
3const templateId: string = 'tmpl_welcome_2024-03';
4const notifyAdmin: boolean | undefined = true; // exemplo de parâmetro opcional
5
6const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
7

deleteEmailTemplateRenderError 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_7f3b4c2a';
3const templateEnvironment: string | undefined = 'production'; // seletor de ambiente opcional
4const id: string = `emailTemplates/${templateEnvironment ?? 'staging'}/welcome_v2`;
5const errorId: string = 'err_5a9d2f1c';
6const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
7console.log(result);
8

getEmailTemplate Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: GetEmailTemplate200Response

Exemplo

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

getEmailTemplateDefinitions 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 = 'tenant_acme_eu_01';
3const templates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4console.log('Email template definitions loaded for', tenantId, templates);
5

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

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

renderEmailTemplate 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 = 'tenant_b6f3c2';
3const renderEmailTemplateBody: RenderEmailTemplateBody = {
4 templateId: 'comment-notification',
5 recipient: { name: 'Ava Thompson', email: 'ava.thompson@publisher.com' },
6 context: {
7 siteName: 'City Gazette',
8 commentText: 'Thanks for the in-depth coverage — very helpful.',
9 articleTitle: 'Downtown Redevelopment Plan Advances',
10 threadUrl: 'https://citygazette.example/articles/2026/redevelopment#comments'
11 }
12};
13const locale: string = 'en-US';
14const result: RenderEmailTemplate200Response = await renderEmailTemplate(tenantId, renderEmailTemplateBody, locale);
15

updateEmailTemplate Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

getEventLog Internal Link

req tenantId urlId userIdWS

Parâmetros

Name Type Required Description
tenantId string Sim
urlId string Sim
userIdWS string Sim
startTime number Sim
endTime number Sim

Resposta

Retorna: GetEventLog200Response

Exemplo

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

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Parâmetros

Name Type Required Description
tenantId string Sim
urlId string Sim
userIdWS string Sim
startTime number Sim
endTime number Sim

Resposta

Retorna: GetEventLog200Response

Exemplo

Exemplo de getGlobalEventLog
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // 7 dias atrás
6const endTimeOptional: number | undefined = undefined; // fim opcional do intervalo de tempo
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

createFeedPost Internal Link

Parâmetros

Nome 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

Exemplo

Exemplo de createFeedPost
Copy Copy
1
2const tenantId: string = "tenant_7f3b9a";
3const createFeedPostParams: CreateFeedPostParams = {
4 title: "Weekly Product Update — March 2026",
5 body: "We've shipped performance improvements and bug fixes across the web client. See the release notes for details.",
6 authorId: "user_86fa2b",
7 allowComments: true,
8 media: [
9 {
10 url: "https://cdn.example.com/images/update-march.png",
11 mimeType: "image/png",
12 caption: "Performance graph",
13 assets: [{ url: "https://cdn.example.com/images/update-march@2x.png", width: 1600, height: 900 }]
14 }
15 ],
16 links: [{ url: "https://www.example.com/release-notes/march-2026", title: "Release notes" }]
17};
18const broadcastId: string = "broadcast_prod_updates_202603";
19const isLive: boolean = false;
20const doSpamCheck: boolean = true;
21const skipDupCheck: boolean = false;
22const result: CreateFeedPost200Response = await createFeedPost(tenantId, createFeedPostParams, broadcastId, isLive, doSpamCheck, skipDupCheck);
23

createFeedPostPublic 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

Exemplo

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

deleteFeedPostPublic 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

Exemplo

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

getFeedPosts Internal Link

req tenantId afterId

Parâmetros

Name Type Required Description
tenantId string Sim
afterId string Não
limit number Não
tags Array Não

Resposta

Retorna: GetFeedPosts200Response

Exemplo

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

getFeedPostsPublic Internal Link

req tenantId afterId

Parâmetros

Name Type Required Description
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

Exemplo

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

getFeedPostsStats Internal Link


Parameters

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

Resposta

Retorna: GetFeedPostsStats200Response

Exemplo

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

getUserReactsPublic Internal Link

Parâmetros

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

Resposta

Retorna: GetUserReactsPublic200Response

Exemplo

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

reactFeedPostPublic Internal Link

Parâmetros

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

Resposta

Retorna: ReactFeedPostPublic200Response

Exemplo

Exemplo de reactFeedPostPublic
Copy Copy
1
2const tenantId: string = 'd290f1ee-6c54-4b01-90e6-d701748f0851';
3const postId: string = 'c1a2b3d4-5678-90ab-cdef-1234567890ab';
4const reactBodyParams: ReactBodyParams = { reaction: 'like', emoji: '👍', source: 'web' };
5const isUndo: boolean = false;
6const broadcastId: string = 'broadcast-2026-03-25-001';
7const sso: string = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
8const result: ReactFeedPostPublic200Response = await reactFeedPostPublic(tenantId, postId, reactBodyParams, isUndo, broadcastId, sso);
9

updateFeedPost Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim
feedPost FeedPost Sim

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

updateFeedPostPublic Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
postId string Sim
updateFeedPostParams UpdateFeedPostParams Sim
broadcastId string Não
sso string Não

Resposta

Retorna: CreateFeedPostPublic200Response

Exemplo

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

flagCommentPublic Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

addHashTag Internal Link

Parâmetros

Name Type Required Description
tenantId string No
createHashTagBody CreateHashTagBody No

Resposta

Retorna: AddHashTag200Response

Exemplo

Exemplo de addHashTag
Copy Copy
1
2const tenantId: string = 'tenant_acme_01';
3const createHashTagBody: CreateHashTagBody = {
4 name: 'feature-request',
5 label: 'Feature Request',
6 color: '#FF5722',
7 enabled: true
8};
9const response: AddHashTag200Response = await addHashTag(tenantId, createHashTagBody);
10const responseWithoutTenant: AddHashTag200Response = await addHashTag(undefined, createHashTagBody);
11

addHashTagsBulk 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// Cria identificador do tenant (parâmetro opcional)
3const tenantId: string = "tenant_9f8c2b7a";
4
5// Prepara entradas individuais de tags
6const tag1: BulkCreateHashTagsBodyTagsInner = {
7 name: "product-feedback",
8 label: "Product Feedback",
9 color: "#1f8a70",
10 description: "User suggestions and enhancement requests",
11 isActive: true
12};
13
14const tag2: BulkCreateHashTagsBodyTagsInner = {
15 name: "bug-report",
16 label: "Bug Report",
17 color: "#d64545",
18 description: "User-reported defects and issues",
19 isActive: true
20};
21
22// Corpo para criação em lote (parâmetro opcional)
23const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
24 tags: [tag1, tag2]
25};
26
27// Chama a função assíncrona global e atribui o resultado tipado
28const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
29

deleteHashTag Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
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_12345";
4const deleteRequest: DeleteHashTagRequest = { initiatedBy: "moderator@newsorg.com", purgeAllOccurrences: true };
5const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteRequest);
6

getHashTags 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
2const tenantId: string = 'acme-tenant-42';
3const pageNumber: number = 2;
4const responseWithPage: GetHashTags200Response = await getHashTags(tenantId, pageNumber);
5const responseWithoutPage: GetHashTags200Response = await getHashTags(tenantId);
6

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

createModerator 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_7d9f2b4a';
3const customConfig: CustomConfigParameters = { timezone: 'UTC', moderationQueueEnabled: true };
4const createModeratorBody: CreateModeratorBody = {
5 email: 'jane.martin@publisher.com',
6 displayName: 'Jane Martin',
7 roles: ['moderator'],
8 sendWelcomeEmail: true,
9 customConfig
10};
11const response: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
12

deleteModerator Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteModerator
Copy Copy
1
2const tenantId: string = 'tenant_9f3b2d4a6c';
3const moderatorId: string = 'moderator_84a1b9c2';
4const sendEmail: string = 'true';
5const result: FlagCommentPublic200Response = await deleteModerator(tenantId, moderatorId, sendEmail);
6

getModerator Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: GetModerator200Response

Exemplo

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

getModerators 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-12345-prod';
3const moderatorsPage1: GetModerators200Response = await getModerators(tenantId);
4const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, 50);
5

sendInvite Internal Link

Parâmetros

Name Type Required Description
tenantId string Yes
id string Yes
fromName string Yes

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de sendInvite
Copy Copy
1
2const tenantId: string = 'tenant_acme-42';
3const id: string = 'comment_8f3b21a7';
4const fromName: string = 'Elena Morales';
5const replyToEmail: string | undefined = undefined;
6
7const result: FlagCommentPublic200Response = await sendInvite(tenantId, id, fromName, replyToEmail);
8

updateModerator Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim
updateModeratorBody UpdateModeratorBody Sim

Response

Retorna: FlagCommentPublic200Response

Exemplo

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

deleteNotificationCount 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 tenantSuffix: string | undefined = undefined;
3const tenantId: string = tenantSuffix ? `tenant-${tenantSuffix}` : 'tenant-9142a7';
4const id: string = '3f9b2a44-1c2e-4d3b-9f6a-8e7c6d5b2a1f';
5const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
6console.log(result);
7

getCachedNotificationCount Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: GetCachedNotificationCount200Response

Exemplo

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

getNotificationCount 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_abc123';
3const userId: string = 'user_987654321';
4const urlId: string = 'https://example.com/news/2026/new-features';
5const viewed: boolean = false;
6const type: string = 'reply';
7const notificationCountResponse: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, undefined, viewed, type);
8

getNotifications 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
skip number Não

Resposta

Retorna: GetNotifications200Response

Exemplo

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

updateNotification 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_prod_8f4b2c';
3const id: string = 'notification_61a2e9';
4const userId: string = 'moderator_107';
5const updateNotificationBody: UpdateNotificationBody = {
6 name: 'Flagged Comment Notification',
7 enabled: true,
8 channels: ['email', 'inbox'],
9 templateId: 'tmpl_mod_alerts_01',
10 severity: 'high'
11};
12const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
13

addPage Internal Link

Parâmetros

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

Resposta

Retorna: AddPageAPIResponse


deletePage Internal Link


Parâmetros

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

Resposta

Retorna: DeletePageAPIResponse


getPageByURLId Internal Link

Parâmetros

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

Resposta

Retorna: GetPageByURLIdAPIResponse


getPages Internal Link


Parâmetros

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

Resposta

Retorna: GetPagesAPIResponse


patchPage Internal Link

Parâmetros

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

Resposta

Retorna: PatchPageAPIResponse

deletePendingWebhookEvent Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deletePendingWebhookEvent
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42f7c9b1';
4 const id: string = 'pending_webhook_ev_8f3b9a2d';
5 const reason?: string = undefined; // exemplo de parâmetro opcional (não exigido pela função)
6 const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
7 console.log(result);
8})();
9

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

getPendingWebhookEvents 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
skip number Não

Resposta

Retorna: GetPendingWebhookEvents200Response

Exemplo

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

createQuestionConfig Internal Link

Parâmetros

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

Resposta

Retorna: CreateQuestionConfig200Response

Exemplo

Exemplo de createQuestionConfig
Copy Copy
1
2const tenantId: string = "tenant_9f8b2c";
3const option: QuestionConfigCustomOptionsInner = { id: "opt_yes", label: "Yes, helpful", value: "yes" };
4const createQuestionConfigBody: CreateQuestionConfigBody = {
5 title: "Article usefulness",
6 prompt: "Was this article helpful?",
7 type: "singleChoice",
8 required: false, // parâmetro opcional demonstrado
9 options: [option],
10 saveBehavior: "immediate"
11};
12const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
13

deleteQuestionConfig Internal Link


Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteQuestionConfig
Copy Copy
1
2const tenantId: string = "acme-enterprises-01";
3const idOptional: string | undefined = "f47ac10b-58cc-4372-a567-0e02b2c3d479";
4const id: string = idOptional ?? "11111111-1111-1111-1111-111111111111";
5const response: FlagCommentPublic200Response = await deleteQuestionConfig(tenantId, id);
6

getQuestionConfig 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-tenant-92';
3const id: string = 'question-2026-07-42';
4const response: GetQuestionConfig200Response = await getQuestionConfig(tenantId, id);
5
6function summarize(cfg: GetQuestionConfig200Response, includeDetails?: boolean): string {
7 return includeDetails ? 'Question config (detailed)' : 'Question config (summary)';
8}
9
10const summary: string = summarize(response);
11

getQuestionConfigs Internal Link

Parâmetros

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

Resposta

Retorna: GetQuestionConfigs200Response

Exemplo

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

updateQuestionConfig Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

createQuestionResult Internal Link

Parâmetros

Name Type Required Description
tenantId string Yes
createQuestionResultBody CreateQuestionResultBody Yes

Resposta

Retorna: CreateQuestionResult200Response

Exemplo

Exemplo de createQuestionResult
Copy Copy
1
2const tenantId: string = "tenant-72b1f4";
3const meta: MetaItem[] = [{ key: "platform", value: "web" }];
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "question-83472",
6 commenterId: "user-5521",
7 answers: [{ subQuestionId: "sq-1", value: "Yes" }],
8 meta, // metadados opcionais
9 note: "Follow-up requested" // parâmetro opcional demonstrado
10};
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

deleteQuestionResult Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteQuestionResult
Copy Copy
1
2const tenantId: string = "org-82479";
3const questionId: string = "q-6a3d2e1f";
4const includeArchived?: boolean = false; // parâmetro opcional demonstrando seleção alternativa de destino
5const targetId: string = includeArchived ? "q-archived-112233" : questionId;
6const result: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, targetId);
7

getQuestionResult 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 post: { title: string; questionId?: string } = { title: 'Product feedback' };
3const tenantId: string = 'acme-corp-tenant-01';
4const id: string = post.questionId ?? 'q-8f3a7b2c4d9e';
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, id);
6

getQuestionResults 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_acme_001";
3const urlId: string = "articles/product-launch-2026";
4const userId: string = "user_2048";
5const startDate: string = "2026-03-01T00:00:00Z";
6const questionId: string | undefined = undefined;
7const questionIds: string | undefined = "q_101,q_102";
8const skip: number | undefined = 0;
9
10const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, questionId, questionIds, skip);
11

updateQuestionResult 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_7f8b3c';
3const id: string = 'questionResult_4621';
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 questionId: 'q_1024',
6 result: 'flagged',
7 score: 0.92,
8 notes: 'Automated moderation flagged for review',
9 meta: [{ key: 'source', value: 'ai-moderator' }] as MetaItem[], // metadados opcionais
10 status: { code: 'review_pending' } as APIStatus
11} as UpdateQuestionResultBody;
12const result: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
13

aggregateQuestionResults Internal Link

Parâmetros

Nome Type 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

Exemplo

Exemplo de aggregateQuestionResults
Copy Copy
1
2const tenantId: string = 'tenant_acme_98765';
3const questionIds: Array<string> = ['q-102', 'q-103'];
4const urlId: string = 'url_55b3';
5const timeBucket: AggregateTimeBucket = { unit: 'day', size: 7 };
6const startDate: Date = new Date('2026-01-01T00:00:00Z');
7const forceRecalculate: boolean = true;
8
9const result: AggregateQuestionResults200Response = await aggregateQuestionResults(
10 tenantId,
11 undefined, // questionId omitido, usando questionIds em seu lugar
12 questionIds,
13 urlId,
14 timeBucket,
15 startDate,
16 forceRecalculate
17);
18

bulkAggregateQuestionResults Internal Link

Parâmetros

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

Resposta

Retorna: BulkAggregateQuestionResults200Response

Exemplo

Exemplo de bulkAggregateQuestionResults
Copy Copy
1
2const tenantId: string = "tenant_live_7c9d";
3const bulkAggregateQuestionResultsRequest: BulkAggregateQuestionResultsRequest = {
4 items: [
5 { questionId: "q_feedback_rating", includeSubQuestions: false, filters: { locale: "en-US" } }
6 ],
7 timeBuckets: [
8 { granularity: "day", startUtc: "2026-03-01T00:00:00Z", endUtc: "2026-03-15T00:00:00Z" }
9 ]
10};
11const forceRecalculate: boolean = true;
12const result: BulkAggregateQuestionResults200Response = await bulkAggregateQuestionResults(tenantId, bulkAggregateQuestionResultsRequest, forceRecalculate);
13

combineCommentsWithQuestionResults 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

Exemplo

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

addSSOUser Internal Link

Parâmetros

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

Resposta

Retorna: AddSSOUserAPIResponse


deleteSSOUser 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


getSSOUserByEmail Internal Link

Parâmetros

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

Resposta

Retorna: GetSSOUserByEmailAPIResponse


getSSOUserById Internal Link


Parâmetros

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

Resposta

Retorna: GetSSOUserByIdAPIResponse


getSSOUsers Internal Link


Parâmetros

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

Resposta

Retorna: GetSSOUsers200Response


patchSSOUser 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


putSSOUser 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


createSubscription Internal Link

Parâmetros

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

Resposta

Retorna: CreateSubscriptionAPIResponse

Exemplo

Exemplo de createSubscription
Copy Copy
1
2const tenantId: string = "acme-corp-123";
3const createAPIUserSubscriptionData: CreateAPIUserSubscriptionData = {
4 userId: "u_987654",
5 planId: "pro_monthly",
6 startDate: new Date().toISOString(),
7 trialDays: 14, // parâmetro opcional demonstrado
8 metadata: { source: "marketing-email" } // parâmetro opcional demonstrado
9};
10const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
11const subscription: APIUserSubscription = result.subscription;
12

deleteSubscription Internal Link


Parâmetros

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

Resposta

Retorna: DeleteSubscriptionAPIResponse


getSubscriptions Internal Link

Parâmetros

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

Resposta

Retorna: GetSubscriptionsAPIResponse

Exemplo

Exemplo de getSubscriptions
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_01';
3const userId: string = 'user_76a3b9f2';
4const subscriptionsForUser: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId, userId);
5const subscriptionsForTenant: GetSubscriptionsAPIResponse = await getSubscriptions(tenantId);
6

updateSubscription Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
updateAPIUserSubscriptionData UpdateAPIUserSubscriptionData Sim
userId string Nã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

Nome Tipo Obrigatório Descrição
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_5f4a3b2c-1d6e-4f9a-b9d8-123456789abc';
3const yearNumber: number = 2026;
4const monthNumber: number = 3;
5const dayNumber: number = 24;
6const skip: number = 0;
7
8const result: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, dayNumber, skip);
9

createTenantPackage 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_acme_001';
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: 'Standard Moderation',
5 description: 'Suitable for small-to-medium sites: basic moderation, spam rules, and analytics',
6 maxCommentsPerMinute: 50,
7 allowAnonymousComments: false, // parâmetro opcional fornecido
8 // campos opcionais omitidos: por exemplo, regras de moderação avançadas, CSS personalizado
9 customConfigParameters: {
10 enableProfanityFilter: true,
11 imageContentProfanityLevel: 'medium' // valor ilustrativo; usa a forma CustomConfigParameters
12 }
13};
14const response: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
15console.log(response);
16

deleteTenantPackage Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de deleteTenantPackage
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_987';
3const packageId: string = 'pkg_pro_2026_01';
4type DeleteOptions = { force?: boolean; notify?: boolean };
5const options: DeleteOptions = { force: true }; // optional parameters demonstrated
6const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
7

getTenantPackage 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_7f3b2c8';
3const packageId: string = 'pkg_standard_2026';
4const requestOptions: { includeConfig?: boolean } = { includeConfig: true };
5const packageResponse: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
6

getTenantPackages 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_7f8e3b4c";
3const skip: number = 20;
4const packagesDefault: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const packagesWithSkip: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

replaceTenantPackage Internal Link

Parâmetros

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

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

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

updateTenantPackage 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_3b7f9d-prod";
3const id: string = "pkg_enterprise_2026";
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: "Enterprise Plus",
6 isActive: true,
7 // campos opcionais omitidos intencionalmente (por exemplo, description, limits)
8} as UpdateTenantPackageBody;
9const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
10

createTenantUser Internal Link

Parâmetros

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

Resposta

Retorna: CreateTenantUser200Response

Exemplo

Exemplo de createTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_6f4b2c';
3const createTenantUserBody: CreateTenantUserBody = {
4 email: 'sara.kim@example.com',
5 displayName: 'Sara Kim',
6 role: 'moderator',
7 notifyOnMentions: true
8};
9const result: CreateTenantUser200Response = await createTenantUser(tenantId, createTenantUserBody);
10

deleteTenantUser 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 = '4f3a9b2e-1c6a-4f7b-9e2a-0b8d6f1c2a3e';
3const userId: string = '9d2f7b3a-5c4e-48a2-b1f0-6c7d8e9f0a12';
4const deleteComments: string = 'true';
5const commentDeleteMode: string = 'permanent';
6const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, userId, deleteComments, commentDeleteMode);
7

getTenantUser Internal Link

Parâmetros

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

Resposta

Retorna: GetTenantUser200Response

Exemplo

Exemplo de getTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_fc5a9b2c';
3const userId: string = 'user_0a12b3';
4const result: GetTenantUser200Response = await getTenantUser(tenantId, userId);
5const user: User | undefined = (result as any).user; // acessando o payload
6const userEmail: string | undefined = user?.email;
7console.log('Fetched user email:', userEmail);
8

getTenantUsers 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_prod_8a3f2c';
3const skip: number = 50;
4const usersWithSkip: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
5const usersNoSkip: GetTenantUsers200Response = await getTenantUsers(tenantId);
6

replaceTenantUser Internal Link

Parâmetros

Nome Tipo Obrigatório Descrição
tenantId string Sim
id string Sim
replaceTenantUserBody ReplaceTenantUserBody Sim
updateComments string Não

Resposta

Retorna: FlagCommentPublic200Response

Exemplo

Exemplo de replaceTenantUser
Copy Copy
1
2const tenantId: string = 'tenant_9d8f4b2c';
3const id: string = 'user_f47ac10b';
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 externalId: 'ext-5234',
6 email: 'jane.doe@acme.com',
7 displayName: 'Jane Doe',
8 roles: ['moderator'],
9 metadata: { department: 'product', region: 'us-east-1' }
10};
11const updateComments: string = 'propagate-display-name-to-comments';
12
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_12a9f3b7";
3const id: string = "user_84b2c7d1";
4const redirectURL: string = "https://app.mycompany.com/welcome?ref=login_email";
5const resultWithoutRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id);
6const resultWithRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
7

updateTenantUser Internal Link

Parâmetros

Name Type Required Description
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_8f3b2a9d";
3const id: string = "user_52c9f1ab";
4const updateTenantUserBody: UpdateTenantUserBody = {
5 email: "jane.doe@example.com",
6 displayName: "Jane Doe",
7 roles: ["moderator"],
8 isActive: true,
9 metadata: { signupSource: "sso", locale: "en-US" }
10};
11const updateComments: string = "Promoted to moderator and updated display name";
12const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, id, updateTenantUserBody, updateComments);
13

createTenant 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-corp-001";
3const createTenantBody: CreateTenantBody = {
4 name: "Acme Corporation",
5 domain: "comments.acme.com",
6 adminContact: { name: "Jane Doe", email: "jane.doe@acme.com" },
7 billingInfo: { planId: "pro-monthly", billingContactEmail: "billing@acme.com" },
8 importedSite: { siteId: "site-123", siteName: "Acme Blog" } // site importado opcional
9};
10const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
11

deleteTenant 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_7f3d2c";
3const id: string = "flag_8392b1a7";
4const sure: string = "confirmed";
5
6const responseWithoutSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id);
7const responseWithSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
8

getTenant 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_9f4b2c1a";
3const idOverride: string | undefined = undefined; // sobrescrita opcional, se disponível
4const id: string = idOverride ?? "site_3e7a6b2f";
5const response: GetTenant200Response = await getTenant(tenantId, id);
6console.log(response);
7

getTenants 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
2const tenantId: string = 'tenant_8421e7';
3const meta: string = 'include=domains,billing,customConfig';
4const skip: number = 20;
5
6const tenantsBasic: GetTenants200Response = await getTenants(tenantId);
7const tenantsWithOptions: GetTenants200Response = await getTenants(tenantId, meta, skip);
8

updateTenant 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_4821";
3const id: string = "flag_7b9e";
4const billingInfo: BillingInfo | undefined = undefined; // opcional, omita para manter a cobrança atual
5const updateTenantBody: UpdateTenantBody = {
6 name: "Acme News Comments",
7 defaultDomain: "comments.acme.com",
8 ...(billingInfo ? { billingInfo } : {})
9};
10const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
11

changeTicketState Internal Link

Parâmetros

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

Resposta

Retorna: ChangeTicketState200Response

Exemplo

Exemplo de changeTicketState
Copy Copy
1
2const tenantId: string = 'tenant_82f9b3';
3const userId: string = 'user_9472';
4const id: string = 'ticket_550e8400-e29b-41d4-a716-446655440000';
5const changeTicketStateBody: ChangeTicketStateBody = {
6 state: 'resolved',
7 comment: 'Confirmed fix deployed to production; closing ticket.',
8 notifySubscribers: true
9};
10const result: ChangeTicketState200Response = await changeTicketState(tenantId, userId, id, changeTicketStateBody);
11

createTicket Internal Link

Parâmetros

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

Resposta

Retorna: CreateTicket200Response

Exemplo

Exemplo de createTicket
Copy Copy
1
2const tenantId: string = "acme-corp-001";
3const userId: string = "user_72b9f4";
4const createTicketBody: CreateTicketBody = {
5 subject: "Subscription renewal failed for card on file",
6 description: "Customer's card was declined by the payment processor during automatic renewal. Transaction ID: txn_9a8b7c. Please review gateway logs and retry.",
7 priority: "high", // exemplo de campo opcional
8 contactEmail: "billing@acme-corp.com", // informação de contato opcional
9 relatedUrl: "https://acme-corp.com/account/billing"
10};
11const ticketResponse: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
12

getTicket Internal Link

Parâmetros

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

Resposta

Retorna: GetTicket200Response

Exemplo

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

getTickets Internal Link

Parâmetros

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

Resposta

Retorna: GetTickets200Response

Exemplo

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

uploadImage 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


getUserBadgeProgressById Internal Link

Parâmetros

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

Resposta

Retorna: GetUserBadgeProgressById200Response

Exemplo

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

getUserBadgeProgressByUserId Internal Link

Parâmetros

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

Resposta

Retorna: GetUserBadgeProgressById200Response

Exemplo

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

getUserBadgeProgressList 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

Exemplo

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

createUserBadge Internal Link


Parâmetros

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

Resposta

Retorna: CreateUserBadge200Response

Exemplo

Exemplo de createUserBadge
Copy Copy
1
2const tenantId: string = 'tenant_84f3b2';
3const createUserBadgeParams: CreateUserBadgeParams = {
4 name: 'Top Contributor',
5 slug: 'top-contributor',
6 imageUrl: 'https://assets.fastcomments.com/badges/top-contributor.png',
7 description: 'Awarded for 100 helpful comments',
8 active: true,
9 criteria: { commentsCount: 100 }, // critérios opcionais
10 displayOrder: 10,
11 metadata: { featured: true } // metadados opcionais
12};
13const result: CreateUserBadge200Response = await createUserBadge(tenantId, createUserBadgeParams);
14console.log(result);
15

deleteUserBadge Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
id string Sim

Resposta

Retorna: UpdateUserBadge200Response

Exemplo

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

getUserBadge Internal Link

Parâmetros

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

Resposta

Retorna: GetUserBadge200Response

Exemplo

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

getUserBadges Internal Link

Parâmetros

Name Type Required Description
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

Exemplo

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

updateUserBadge Internal Link

Parâmetros

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

Resposta

Retorna: UpdateUserBadge200Response

Exemplo

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

getUserNotificationCount Internal Link

Parâmetros

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

Resposta

Retorna: GetUserNotificationCount200Response

Exemplo

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

getUserNotifications 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

Exemplo

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

resetUserNotificationCount Internal Link

Parâmetros

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

Resposta

Retorna: ResetUserNotifications200Response

Exemplo

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

resetUserNotifications 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

Exemplo

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

updateUserNotificationCommentSubscriptionStatus 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

Exemplo

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

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

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

Exemplo

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

updateUserNotificationStatus 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

Exemplo

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

getUserPresenceStatuses Internal Link

Parâmetros

Name Type Required Description
tenantId string Sim
urlIdWS string Sim
userIds string Sim

Resposta

Retorna: GetUserPresenceStatuses200Response

Exemplo

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

searchUsers Internal Link

Parâmetros

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

Resposta

Retorna: SearchUsers200Response

Exemplo

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

getUser Internal Link

Parâmetros

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

Resposta

Retorna: GetUser200Response

Exemplo

Exemplo de getUser
Copy Copy
1
2const tenantId: string = 'tenant_7b3f42';
3const id: string = 'user_9c4d2a';
4const userResponse: GetUser200Response = await getUser(tenantId, id);
5console.log(userResponse);
6

createVote 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
2const tenantId: string = 'tenant_9f8b6a';
3const commentId: string = 'comment_3b7d2e';
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Up;
5const anonUserId: string = 'anon_4c2a1f';
6
7const voteResult: VoteComment200Response = await createVote(tenantId, commentId, direction, undefined, anonUserId);
8

deleteVote 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_7c3f2b4a";
3const voteId: string = "vote_4f8d9a11";
4const editKey: string = "edit_2b9f8c";
5const resultWithoutKey: DeleteCommentVote200Response = await deleteVote(tenantId, voteId);
6const resultWithKey: DeleteCommentVote200Response = await deleteVote(tenantId, voteId, editKey);
7

getVotes 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 = 'acme-corp-8f3b';
3const refCampaign: string | undefined = 'newsletter-march2026'; // parâmetro de consulta opcional
4const urlId: string = `https://www.example.com/articles/2026/03/25/fastcomments-integration${refCampaign ? `?ref=${refCampaign}` : ''}`;
5
6const votes: GetVotes200Response = await getVotes(tenantId, urlId);
7

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

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.