FastComments.com

FastComments JavaScript/TypeScript 开发工具包 (SDK)


这是 FastComments 的官方 JavaScript/TypeScript SDK。

从 Node.js 或浏览器管理评论、用户、单点登录 (SSO) 和审核。

仓库

在 GitHub 上查看


安装 Internal Link

npm

npm install fastcomments-sdk

API 文档 Internal Link


完整的 API 参考: docs/api/README.md

浏览器与服务器兼容性 Internal Link


此 SDK 使用 双入口点 以确保最佳兼容性并防止运行时错误:

  • fastcomments-sdk/browser - 浏览器安全版本,使用原生 fetch
  • fastcomments-sdk/server - 完整的 Node.js 版本,支持 SSO
  • fastcomments-sdk (默认) - 仅类型,可在任何地方安全导入

公开 API 与受保护 API Internal Link

该 SDK 提供以下 API 类:

  • DefaultApi - 需要使用 API 密钥进行身份验证的受保护端点。用于服务器端操作。
  • PublicApi - 无需 API 密钥即可访问的公共端点。可直接从浏览器/移动设备等调用。
  • ModerationApi - 管理员仪表板端点(评论审核、封禁、徽章、信任因子、搜索)。通过管理员的会话进行认证;对于通过 SSO 验证的管理员,可传递 sso 查询参数。
  • HiddenApi - 用于高级用例的内部/管理员端点。

示例:使用 Public API(浏览器安全)

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

const publicApi = new PublicApi();

// Get comments for a page (no API key required)
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

示例:使用 Default API(仅限服务器端)

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

const config = new Configuration({
  apiKey: 'your-api-key' // 请保密!
});
const defaultApi = new DefaultApi(config);

// Get comments with full admin access
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

示例:使用 Moderation API

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

const sdk = createFastCommentsSDK({ /* basePath 等等 */ });

// Moderator-authenticated calls (session cookie, or pass `sso` for an SSO moderator).
const comments = await sdk.moderationApi.getApiComments({
  tenantId: 'your-tenant-id'
});

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

SSO(单点登录)集成 Internal Link

FastComments 支持 SSO,以与您现有的用户认证系统集成。 SSO 功能仅在服务器导出中可用,因为它需要 Node.js crypto 功能。

简单 SSO(仅服务器端)

简单 SSO 应在服务器端生成并发送到客户端:

// 服务器端代码(Node.js/后端)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// 使用内置辅助创建简单 SSO  
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();

// 将 ssoToken 发送到您的客户端代码
// 客户端代码然后可以使用该令牌与浏览器 SDK 一起使用

安全 SSO(服务器端,推荐)

安全 SSO 应在服务器端实现,并提供更好的安全性:

// 服务器端代码(Node.js/后端)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// 使用内置辅助创建安全 SSO
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();

// 在服务器上与 API 调用一起使用
const publicApi = new PublicApi();
const response = await publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id',
  sso: JSON.stringify(ssoConfig)
});

// 或将 ssoConfig 发送到客户端以供浏览器使用

在浏览器中使用 SSO(使用服务器生成的令牌)

// 客户端代码(浏览器)
import { PublicApi } from 'fastcomments-sdk/browser';

// 从您的服务器端点获取 SSO 令牌
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 the server-generated SSO token
});

带评论创建的 SSO

// 服务器端:创建 SSO 和评论
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)
});

常见用例 Internal Link

获取页面的评论

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

创建评论

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

对评论投票

const voteResponse = await sdk.publicApi.voteComment({
  voteBodyParams: {
    commentId: 'comment-id',
    direction: 1 // 1 表示赞成,-1 表示反对
  }
});

用户管理(需要 API 密钥)

// 搜索用户(需要 DefaultApi)
const users = await sdk.defaultApi.searchUsers({
  tenantId: 'your-tenant-id',
  urlId: 'page-id',
  usernameStartsWith: 'john'
});

实时事件(实时更新) Internal Link

订阅实时事件以获取有关评论、投票和其他活动的实时更新。

页面级事件

监听特定页面的实时事件(评论、投票等):

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

订阅用户事件

监听特定于用户的事件(通知、提及等):

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

获取 userIdWS

The userIdWS parameter is required for live events and can be obtained from API responses:

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

广播 ID Internal Link


您会看到在某些 API 调用中需要传递 broadcastId。当您接收事件时,会拿回这个 ID,这样如果您计划在客户端乐观地应用更改(您可能会想这样做,因为它提供了最佳体验),就可以知道是否忽略该事件。在这里传入一个 UUID。该 ID 应足够唯一,以避免在同一浏览器会话中出现两次。

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

错误处理 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);
  }
}

聚合 Internal Link

Aggregates documents by grouping them (if groupBy is provided) and applying multiple operations. Different operations (e.g. sum, countDistinct, avg, etc.) are supported.

参数

名称类型必需描述
tenantIdstringYes
aggregationRequestAggregationRequestYes
parentTenantIdstringNo
includeStatsbooleanNo

响应

返回: AggregateResponse

示例

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

获取审计日志 Internal Link

参数

名称类型必需描述
tenantIdstringYes
limitnumberNo
skipnumberNo
orderSORTDIRNo
afternumberNo
beforenumberNo

响应

返回:GetAuditLogsResponse1

示例

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

从公开评论中屏蔽 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
ssostring

响应

返回: BlockFromCommentPublicResponse

示例

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

取消屏蔽公开评论 Internal Link

参数

名称类型必需描述
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

响应

Returns: UnBlockCommentPublicResponse

示例

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

检查被屏蔽的评论 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdsstring
ssostring

响应

返回:CheckedCommentsForBlockedResponse

示例

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

从评论中屏蔽用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

响应

返回:BlockUserFromCommentResponse

示例

blockUserFromComment 示例
Copy Copy
1
2const tenantId: string = 'tenant_42';
3const commentId: string = 'cmt_20231101';
4
5const blockParams: BlockFromCommentParams = {
6 reason: 'spam',
7 blockDurationHours: 24,
8};
9
10const userId: string = 'user_123'; // 可选参数
11
12const response: BlockUserFromCommentResponse = await blockUserFromComment(
13 tenantId,
14 commentId,
15 blockParams,
16 userId
17);
18

创建公开评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes
broadcastIdstringYes
commentDataCommentDataYes
sessionIdstringNo
ssostringNo

响应

返回: CreateCommentPublicResponse

示例

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

删除评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
contextUserIdstringNo
isLivebooleanNo

响应

返回:DeleteCommentResponse

示例

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

删除公开评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
editKeystringNo
ssostringNo

响应

返回: DeleteCommentPublicResponse

示例

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

删除评论投票 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
voteIdstring
urlIdstring
broadcastIdstring
editKeystring
ssostring

响应

返回:DeleteCommentVoteResponse

示例

deleteCommentVote 示例
Copy Copy
1
2async function removeVote() {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const voteId: string = "vote_abcde";
6 const urlId: string = "url_56789";
7 const broadcastId: string = "brd_001";
8 const editKey: string = "edit_456";
9 // sso 是可选的,已省略
10
11 const response: DeleteCommentVoteResponse = await deleteCommentVote(
12 tenantId,
13 commentId,
14 voteId,
15 urlId,
16 broadcastId,
17 editKey
18 );
19
20 console.log(response);
21}
22
23removeVote();
24

举报评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
userIdstringNo
anonUserIdstringNo

响应

返回: FlagCommentResponse1

示例

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

获取评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回:GetCommentResponse

示例

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

获取评论列表 Internal Link

参数

名称类型必填描述
tenantIdstring
pagenumber
limitnumber
skipnumber
asTreeboolean
skipChildrennumber
limitChildrennumber
maxTreeDepthnumber
urlIdstring
userIdstring
anonUserIdstring
contextUserIdstring
hashTagstring
parentIdstring
directionSortDirections
fromDatenumber
toDatenumber

响应

返回: GetCommentsResponse

示例

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

获取公开评论 Internal Link

req tenantId urlId

参数

名称类型必填描述
tenantIdstring
urlIdstring
pagenumber
directionSortDirections
ssostring
skipnumber
skipChildrennumber
limitnumber
limitChildrennumber
countChildrenboolean
fetchPageForCommentIdstring
includeConfigboolean
countAllboolean
includei10nboolean
localestring
modulesstring
isCrawlerboolean
includeNotificationCountboolean
asTreeboolean
maxTreeDepthnumber
useFullTranslationIdsboolean
parentIdstring
searchTextstring
hashTagsArray
userIdstring
customConfigStrstring
afterCommentIdstring
beforeCommentIdstring

响应

返回:GetCommentsPublicResponse

示例

getCommentsPublic 示例
Copy Copy
1
2async function fetchComments() {
3 const tenantId: string = 'acme-corp';
4 const urlId: string = 'blog/post-789';
5 const page: number = 1;
6 const direction: SortDirections = SortDirections.Desc;
7 const limit: number = 25;
8 const includeConfig: boolean = true;
9 const locale: string = 'en-GB';
10 const modules: string = 'reactions,attachments';
11 const isCrawler: boolean = false;
12 const includeNotificationCount: boolean = true;
13 const asTree: boolean = true;
14 const maxTreeDepth: number = 4;
15 const searchText: string = 'TypeScript';
16 const hashTags: string[] = ['typescript', 'api'];
17 const response: GetCommentsPublicResponse = await getCommentsPublic(
18 tenantId,
19 urlId,
20 page,
21 direction,
22 undefined,
23 undefined,
24 undefined,
25 limit,
26 undefined,
27 undefined,
28 undefined,
29 includeConfig,
30 undefined,
31 undefined,
32 locale,
33 modules,
34 isCrawler,
35 includeNotificationCount,
36 asTree,
37 maxTreeDepth,
38 undefined,
39 undefined,
40 searchText,
41 hashTags,
42 undefined,
43 undefined,
44 undefined,
45 undefined
46 );
47}
48

获取评论文本 Internal Link


参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
editKeystringNo
ssostringNo

响应

返回: GetCommentTextResponse1

示例

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

获取评论投票用户名 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
dirnumber
ssostring

响应

返回:GetCommentVoteUserNamesResponse

示例

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

锁定评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

响应

Returns: LockCommentResponse

示例

lockComment 示例
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4 const commentId: string = "cmt_98765";
5 const broadcastId: string = "brd_54321";
6
7 // 使用可选的 SSO 令牌
8 const ssoToken: string = "user-abc123";
9 const lockedWithSso: LockCommentResponse = await lockComment(tenantId, commentId, broadcastId, ssoToken);
10
11 // 未使用 SSO 令牌
12 const lockedWithoutSso: LockCommentResponse = await lockComment(tenantId, commentId, broadcastId);
13})();
14

置顶评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

响应

返回: PinCommentResponse

示例

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

保存评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
createCommentParamsCreateCommentParamsYes
isLivebooleanNo
doSpamCheckbooleanNo
sendEmailsbooleanNo
populateNotificationsbooleanNo

响应

返回: SaveCommentResponse

示例

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

批量保存评论 Internal Link

参数

名称类型必填描述
tenantIdstring
createCommentParamsArray
isLiveboolean
doSpamCheckboolean
sendEmailsboolean
populateNotificationsboolean

响应

返回: Array<SaveCommentsBulkResponse

示例

saveCommentsBulk 示例
Copy Copy
1
2const tenantId: string = "tenant_9f8b7c6d";
3
4const bulkComments: CreateCommentParams[] = [
5 {
6 content: "Welcome to the new forum thread!",
7 authorId: "user_42",
8 mentions: [{ userId: "user_84", username: "alice" }],
9 hashtags: [{ tag: "intro" }]
10 },
11 {
12 content: "Please review the updated guidelines.",
13 authorId: "moderator_1",
14 mentions: [],
15 hashtags: [{ tag: "guidelines" }, { tag: "update" }]
16 }
17];
18
19const results: SaveCommentsBulkResponse[] = await saveCommentsBulk(
20 tenantId,
21 bulkComments,
22 true, // 是否实时
23 false, // 是否进行垃圾邮件检查
24 true, // 发送电子邮件
25 undefined // populateNotifications(使用默认值)
26);
27

设置评论文本 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
commentTextUpdateRequestCommentTextUpdateRequestYes
editKeystringNo
ssostringNo

响应

返回: SetCommentTextResponse1

示例

setCommentText 示例
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const commentId: string = 'cmt_98765';
5 const broadcastId: string = 'brd_112233';
6 const commentTextUpdateRequest: CommentTextUpdateRequest = {
7 text: 'Updated comment with @john.doe and #important',
8 mentions: [{ userId: 'user_001', username: 'john.doe' }],
9 hashtags: [{ tag: 'important' }],
10 };
11 const editKey: string = 'edit_abc123';
12 const result: SetCommentTextResponse1 = await setCommentText(
13 tenantId,
14 commentId,
15 broadcastId,
16 commentTextUpdateRequest,
17 editKey,
18 );
19 console.log(result);
20})();
21

取消屏蔽评论中的用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
unBlockFromCommentParamsUnBlockFromCommentParamsYes
userIdstringNo
anonUserIdstringNo

响应

返回: UnBlockUserFromCommentResponse

示例

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

取消举报评论 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
userIdstring
anonUserIdstring

响应

返回: UnFlagCommentResponse

示例

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

解锁评论 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回:UnLockCommentResponse

示例

unLockComment 示例
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_9876";
4const broadcastId: string = "brd_001";
5const ssoToken: string | undefined = "sso_token_abc";
6
7async function run() {
8 const unlocked: UnLockCommentResponse = await unLockComment(tenantId, commentId, broadcastId, ssoToken);
9 console.log(unlocked);
10
11 // 在没有可选 sso 参数的情况下调用
12 const unlockedWithoutSso: UnLockCommentResponse = await unLockComment(tenantId, commentId, broadcastId);
13 console.log(unlockedWithoutSso);
14}
15
16run();
17

取消置顶评论 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
broadcastIdstring
ssostring

响应

返回:UnPinCommentResponse

示例

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

更新评论 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updatableCommentParamsUpdatableCommentParams
contextUserIdstring
doSpamCheckboolean
isLiveboolean

响应

返回:UpdateCommentResponse

示例

updateComment 示例
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const commentId: string = "cmt_98765";
4
5const updatableCommentParams: UpdatableCommentParams = {
6 // 示例字段;实际结构取决于 API 定义
7 // 例如,body: "Edited comment content",
8};
9
10const contextUserId: string = "user_abcde";
11const doSpamCheck: boolean = true;
12const isLive: boolean = false;
13
14const result: UpdateCommentResponse = await updateComment(
15 tenantId,
16 commentId,
17 updatableCommentParams,
18 contextUserId,
19 doSpamCheck,
20 isLive
21);
22

评论投票 Internal Link


参数

名称类型必填描述
tenantIdstring
commentIdstring
urlIdstring
broadcastIdstring
voteBodyParamsVoteBodyParams
sessionIdstring
ssostring

响应

返回: VoteCommentResponse

示例

voteComment 示例
Copy Copy
1
2const tenantId: string = "acme-corp";
3const commentId: string = "cmt_9f8e7d6c";
4const urlId: string = "url_123456";
5const broadcastId: string = "bcast_2024_01";
6
7const voteBodyParams: VoteBodyParams = {
8 vote: "up", // 例如,"up" | "down"
9 weight: 1, // 投票的可选权重
10};
11
12const sessionId: string = "sess_abc123def";
13const sso: string = "sso_token_xyz";
14
15const result: VoteCommentResponse = await voteComment(
16 tenantId,
17 commentId,
18 urlId,
19 broadcastId,
20 voteBodyParams,
21 sessionId,
22 sso
23);
24

获取用户的评论 Internal Link

参数

名称类型必需描述
userIdstring
directionSortDirections
repliesToUserIdstring
pagenumber
includei10nboolean
localestring
isCrawlerboolean

响应

返回:GetCommentsForUserResponse1

示例

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

添加域配置 Internal Link

参数

名称类型必填描述
tenantIdstringYes
addDomainConfigParamsAddDomainConfigParamsYes

响应

返回: AddDomainConfigResponse

示例

addDomainConfig 示例
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_12345';
4 const config: AddDomainConfigParams = {
5 domain: 'myblog.example.com',
6 enabled: true,
7 // 描述是可选的,此处省略
8 };
9 const response: AddDomainConfigResponse = await addDomainConfig(tenantId, config);
10 console.log(response);
11})();
12

删除域配置 Internal Link

参数

名称类型必填描述
tenantIdstring
domainstring

响应

返回: DeleteDomainConfigResponse

示例

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

获取域配置 Internal Link

参数

名称类型必填描述
tenantIdstring
domainstring

响应

Returns: GetDomainConfigResponse

示例

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

获取域配置列表 Internal Link

参数

名称类型必填描述
tenantIdstring

响应

返回: GetDomainConfigsResponse

示例

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

部分更新域配置 Internal Link

参数

名称类型必填描述
tenantIdstring
domainToUpdatestring
patchDomainConfigParamsPatchDomainConfigParams

响应

返回: PatchDomainConfigResponse

示例

patchDomainConfig 示例
Copy Copy
1
2async function updateDomainConfig() {
3 const tenantId: string = "tenant_98765";
4 const domainToUpdate: string = "forum.mycompany.com";
5 const patchParams: PatchDomainConfigParams = {
6 enableComments: true,
7 moderationLevel: "strict",
8 allowAnonymous: false, // 演示的可选参数
9 };
10 const response: PatchDomainConfigResponse = await patchDomainConfig(tenantId, domainToUpdate, patchParams);
11 console.log(response);
12}
13
14updateDomainConfig();
15

替换域配置 Internal Link

参数

名称类型必填描述
tenantIdstring
domainToUpdatestring
updateDomainConfigParamsUpdateDomainConfigParams

响应

返回: PutDomainConfigResponse

示例

putDomainConfig 示例
Copy Copy
1
2async function runExample() {
3 const tenantId: string = 'tenant-9f8c7b1a';
4 const domainToUpdate: string = 'comments.mywebsite.org';
5 const updateDomainConfigParams: UpdateDomainConfigParams = {
6 enableModeration: true,
7 // 可选字段已省略,例如,maxCommentLength?: number
8 };
9 const result: PutDomainConfigResponse = await putDomainConfig(
10 tenantId,
11 domainToUpdate,
12 updateDomainConfigParams,
13 );
14 console.log(result);
15}
16runExample();
17

创建邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
createEmailTemplateBodyCreateEmailTemplateBody

响应

返回:CreateEmailTemplateResponse1

示例

createEmailTemplate 示例
Copy Copy
1
2const tenantId: string = "tenant_9f8e7d6c";
3
4const emailTemplate: CreateEmailTemplateBody = {
5 name: "Account Activation",
6 subject: "Activate Your New Account",
7 htmlContent: "<p>Welcome! Please click <a href=\"\{{activationLink}}\">here</a> to activate.</p>",
8 // 可选字段如 textContent、isActive 被省略,以演示可选参数
9};
10
11const result: CreateEmailTemplateResponse1 = await createEmailTemplate(
12 tenantId,
13 emailTemplate
14);
15
16console.log(result);
17

删除邮件模板 Internal Link


参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:DeleteEmailTemplateResponse

示例

deleteEmailTemplate 示例
Copy Copy
1
2async () => {
3 const tenantId: string = "tenant_12345";
4 const templateId: string = "template_abcde";
5
6 const response: DeleteEmailTemplateResponse = await deleteEmailTemplate(tenantId, templateId);
7
8 // 示例:访问响应中的可选属性
9 const statusCode: number | undefined = response.status?.code;
10}();
11

删除邮件模板渲染错误 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
errorIdstringYes

响应

返回: DeleteEmailTemplateRenderErrorResponse

示例

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

获取邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:GetEmailTemplateResponse1

示例

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

获取邮件模板定义 Internal Link

参数

名称类型必填描述
tenantIdstringYes

响应

返回:GetEmailTemplateDefinitionsResponse1

示例

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

获取邮件模板渲染错误 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
skipnumberNo

响应

返回:GetEmailTemplateRenderErrorsResponse1

示例

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

获取邮件模板列表 Internal Link

参数

名称类型必填描述
tenantIdstring
skipnumber

响应

返回: GetEmailTemplatesResponse1

示例

getEmailTemplates 示例
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_12345";
4
5 // 调用时不包含可选的 'skip'
6 const templates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId);
7
8 // 调用时包含可选的 'skip' 参数
9 const pagedTemplates: GetEmailTemplatesResponse1 = await getEmailTemplates(tenantId, 20);
10})();
11

渲染邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
localestring

响应

返回:RenderEmailTemplateResponse1

示例

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

更新邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateEmailTemplateBodyUpdateEmailTemplateBody

响应

返回: UpdateEmailTemplateResponse

示例

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

获取事件日志 Internal Link

req
请求
tenantId
urlId
userIdWS

参数

名称类型必需描述
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumber

响应

返回: GetEventLogResponse1

示例

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

获取全局事件日志 Internal Link

请求
tenantId
urlId
userIdWS

参数

名称类型必需描述
tenantIdstring
urlIdstring
userIdWSstring
startTimenumber
endTimenumber

响应

返回:GetGlobalEventLogResponse

示例

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

创建动态帖子 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
isLivebooleanNo
doSpamCheckbooleanNo
skipDupCheckbooleanNo

响应

返回:CreateFeedPostResponse1

示例

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

创建公开动态帖子 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
broadcastIdstringNo
ssostringNo

响应

返回:CreateFeedPostPublicResponse

示例

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

删除公开动态帖子 Internal Link

参数

名称类型必需描述
tenantIdstringYes
postIdstringYes
broadcastIdstringNo
ssostringNo

响应

返回:DeleteFeedPostPublicResponse

示例

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

获取动态帖子 Internal Link

req tenantId afterId

参数

名称类型必填描述
tenantIdstring
afterIdstring
limitnumber
tagsArray

响应

返回:GetFeedPostsResponse1

示例

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

获取公开动态帖子 Internal Link

req tenantId afterId

参数

名称类型必填描述
tenantIdstring
afterIdstring
limitnumber
tagsArray
ssostring
isCrawlerboolean
includeUserInfoboolean

响应

返回: GetFeedPostsPublicResponse

示例

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

获取动态帖子统计 Internal Link

参数

名称类型必需描述
tenantIdstringYes
postIdsArrayYes
ssostringNo

响应

Returns: GetFeedPostsStatsResponse

示例

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

获取公开用户互动 Internal Link

参数

名称类型必需描述
tenantIdstringYes
postIdsArrayNo
ssostringNo

响应

返回:GetUserReactsPublicResponse

示例

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

对公开动态帖子互动 Internal Link

参数

名称类型必填描述
tenantIdstringYes
postIdstringYes
reactBodyParamsReactBodyParamsYes
isUndobooleanNo
broadcastIdstringNo
ssostringNo

响应

返回:ReactFeedPostPublicResponse

示例

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

更新动态帖子 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
feedPostFeedPost

响应

返回:UpdateFeedPostResponse

示例

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

更新公开动态帖子 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
postIdstringYes
updateFeedPostParamsUpdateFeedPostParamsYes
broadcastIdstringNo
ssostringNo

响应

返回:UpdateFeedPostPublicResponse

示例

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

举报公开评论 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
isFlaggedboolean
ssostring

响应

返回: FlagCommentPublicResponse

示例

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

获取大尺寸 GIF Internal Link

参数

名称类型必填描述
tenantIdstringYes
largeInternalURLSanitizedstringYes

响应

返回: GetGifLargeResponse

示例

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

搜索 GIF Internal Link

参数

名称类型必填描述
tenantIdstring
searchstring
localestring
ratingstring
pagenumber

响应

返回:GetGifsSearchResponse

示例

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

获取热门 GIF Internal Link

参数

名称类型必需描述
tenantIdstringYes
localestringNo
ratingstringNo
pagenumberNo

响应

返回: GetGifsTrendingResponse

示例

getGifsTrending 示例
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_9f8b7c6d";
4 const locale: string = "en-US";
5 const rating: string = "PG-13";
6 const page: number = 1;
7
8 const trendingAll: GetGifsTrendingResponse = await getGifsTrending(tenantId, locale, rating, page);
9 console.log(trendingAll);
10
11 // 仅使用必需的参数
12 const trendingMinimal: GetGifsTrendingResponse = await getGifsTrending(tenantId);
13 console.log(trendingMinimal);
14}
15
16runExample();
17

添加话题标签 Internal Link

参数

名称类型必填描述
tenantIdstring
createHashTagBodyCreateHashTagBody

响应

返回: AddHashTagResponse

示例

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

批量添加话题标签 Internal Link

参数

名称类型必填描述
tenantIdstringNo
bulkCreateHashTagsBodyBulkCreateHashTagsBodyNo

响应

返回: AddHashTagsBulkResponse

示例

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

删除话题标签 Internal Link

参数

名称类型必填描述
tagstring
tenantIdstring
deleteHashTagRequestBodyDeleteHashTagRequestBody

响应

返回: DeleteHashTagResponse

示例

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

获取话题标签 Internal Link

参数

名称类型必需描述
tenantIdstring
pagenumber

响应

返回: GetHashTagsResponse1

示例

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

部分更新话题标签 Internal Link

参数

名称类型必填描述
tagstring
tenantIdstring
updateHashTagBodyUpdateHashTagBody

响应

返回: PatchHashTagResponse

示例

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

删除审核投票 Internal Link

参数

名称类型必填描述
commentIdstringYes
voteIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回:DeleteModerationVoteResponse

示例

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

获取 API 评论 Internal Link

参数

NameTypeRequiredDescription
pagenumber
countnumber
textSearchstring
byIPFromCommentstring
filtersstring
searchFiltersstring
sortsstring
demoboolean
tenantIdstring
ssostring

响应

返回: GetApiCommentsResponse

示例

getApiComments 示例
Copy Copy
1
2async function loadComments() {
3 const fullResult: GetApiCommentsResponse = await getApiComments(
4 2, // 页码
5 25, // 条数
6 "feedback", // 文本搜索
7 "192.168.1.100", // 来自评论的IP
8 "approved", // 过滤器
9 "hasReplies", // 搜索过滤器
10 "dateDesc", // 排序
11 false, // 演示
12 "tenant-abc123", // 租户ID
13 "sso-token-xyz" // 单点登录
14 );
15
16 const minimalResult: GetApiCommentsResponse = await getApiComments(undefined, 5);
17}
18

获取 API 导出状态 Internal Link

参数

名称类型必填描述
batchJobIdstringNo
tenantIdstringNo
ssostringNo

响应

返回:GetApiExportStatusResponse

示例

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

获取 API ID Internal Link

参数

名称类型必填描述
textSearchstring
byIPFromCommentstring
filtersstring
searchFiltersstring
afterIdstring
demoboolean
tenantIdstring
ssostring

响应

返回: GetApiIdsResponse

示例

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

获取因评论被封禁的用户 Internal Link

参数

名称类型必填描述
commentIdstringYes
tenantIdstringNo
ssostringNo

响应

返回: GetBanUsersFromCommentResponse

示例

getBanUsersFromComment 示例
Copy Copy
1
2async function demoGetBanUsers() {
3 const commentId: string = "cmt_5f8e3a9b2d";
4 const tenantId: string = "tenant_42";
5 const sso: string = "sso_token_abc123";
6
7 // 使用所有参数调用
8 const fullResult: GetBanUsersFromCommentResponse = await getBanUsersFromComment(commentId, tenantId, sso);
9 console.log(fullResult);
10
11 // 仅使用必需参数调用
12 const minimalResult: GetBanUsersFromCommentResponse = await getBanUsersFromComment(commentId);
13 console.log(minimalResult);
14}
15
16demoGetBanUsers();
17

获取评论封禁状态 Internal Link

参数

名称类型必填描述
commentIdstring
tenantIdstring
ssostring

响应

返回:GetCommentBanStatusResponse1

示例

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

获取评论子项 Internal Link

参数

NameTypeRequiredDescription
commentIdstringYes
tenantIdstringNo
ssostringNo

响应

返回: GetCommentChildrenResponse

示例

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

获取计数 Internal Link

参数

名称类型必需描述
textSearchstringNo
byIPFromCommentstringNo
filterstringNo
searchFiltersstringNo
demobooleanNo
tenantIdstringNo
ssostringNo

响应

返回:GetCountResponse

示例

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

获取多个计数 Internal Link

参数

名称类型必填描述
tenantIdstring
ssostring

响应

返回:GetCountsResponse

示例

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

获取日志 Internal Link

参数

名称类型必需描述
commentIdstringYes
tenantIdstringNo
ssostringNo

响应

返回:GetLogsResponse

示例

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

获取手动徽章 Internal Link

参数

名称类型必填描述
tenantIdstring
ssostring

响应

返回:GetManualBadgesResponse

示例

getManualBadges 示例
Copy Copy
1
2async function fetchBadges() {
3 const tenantId: string = "tenant_987654321";
4 const ssoToken: string = "sso_ABCdef123456";
5
6 // 使用两个可选参数调用
7 const responseFull: GetManualBadgesResponse = await getManualBadges(tenantId, ssoToken);
8 console.log(responseFull);
9
10 // 仅使用tenantId调用
11 const responseTenantOnly: GetManualBadgesResponse = await getManualBadges(tenantId);
12 console.log(responseTenantOnly);
13}
14
15fetchBadges();
16

获取用户的手动徽章 Internal Link

参数

名称类型必填描述
badgesUserIdstringNo
commentIdstringNo
tenantIdstringNo
ssostringNo

响应

返回:GetManualBadgesForUserResponse

示例

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

获取审核评论 Internal Link

参数

NameTypeRequiredDescription
commentIdstringYes
includeEmailbooleanNo
includeIPbooleanNo
tenantIdstringNo
ssostringNo

响应

返回: GetModerationCommentResponse

示例

getModerationComment 示例
Copy Copy
1
2async function fetchCommentDetails() {
3 // 完整参数集
4 const commentId: string = "cmt_12345abc";
5 const includeEmail: boolean = true;
6 const includeIP: boolean = false;
7 const tenantId: string = "tenant_9876";
8 const sso: string = "sso_token_xyz";
9
10 const fullResult: GetModerationCommentResponse = await getModerationComment(
11 commentId,
12 includeEmail,
13 includeIP,
14 tenantId,
15 sso
16 );
17
18 // 仅使用必需参数的最小调用
19 const minimalResult: GetModerationCommentResponse = await getModerationComment("cmt_67890def");
20
21 // 根据需要使用结果...
22}
23

获取审核评论文本 Internal Link

参数

名称类型必填描述
commentIdstring
tenantIdstring
ssostring

响应

返回:GetModerationCommentTextResponse

示例

getModerationCommentText 示例
Copy Copy
1
2async function exampleUsage(): Promise<void> {
3 const commentId: string = "cmt_9f8e7d6c5b4a3b2c1d0e";
4 const tenantId: string = "tenant_67890";
5 const sso: string = "sso_token_abc123";
6
7 // 仅使用必需参数进行调用
8 const result1: GetModerationCommentTextResponse = await getModerationCommentText(commentId);
9
10 // 使用可选参数进行调用
11 const result2: GetModerationCommentTextResponse = await getModerationCommentText(commentId, tenantId, sso);
12}
13

获取预封禁摘要 Internal Link

参数

名称类型必需描述
commentIdstringYes
includeByUserIdAndEmailbooleanNo
includeByIPbooleanNo
includeByEmailDomainbooleanNo
tenantIdstringNo
ssostringNo

响应

返回:GetPreBanSummaryResponse

示例

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

获取搜索评论摘要 Internal Link

参数

NameTypeRequiredDescription
valuestringNo
filtersstringNo
searchFiltersstringNo
tenantIdstringNo
ssostringNo

响应

返回:GetSearchCommentsSummaryResponse

示例

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

获取搜索页面 Internal Link

参数

名称类型必填描述
valuestringNo
tenantIdstringNo
ssostringNo

响应

返回: GetSearchPagesResponse

示例

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

获取搜索站点 Internal Link

参数

名称类型必需描述
valuestring
tenantIdstring
ssostring

响应

返回: GetSearchSitesResponse

示例

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

获取搜索建议 Internal Link

参数

NameTypeRequiredDescription
textSearchstring
tenantIdstring
ssostring

响应

返回: GetSearchSuggestResponse

示例

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

获取搜索用户 Internal Link

参数

名称类型必需描述
valuestringNo
tenantIdstringNo
ssostringNo

响应

返回:GetSearchUsersResponse

示例

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

获取信任因子 Internal Link

参数

名称类型必填描述
userIdstring
tenantIdstring
ssostring

响应

返回: GetTrustFactorResponse

示例

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

获取用户封禁偏好 Internal Link

参数

名称类型必需描述
tenantIdstringNo
ssostringNo

响应

返回: GetUserBanPreferenceResponse

示例

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

获取用户内部资料 Internal Link

参数

名称类型必填描述
commentIdstring
tenantIdstring
ssostring

响应

返回:GetUserInternalProfileResponse1

示例

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

调整评论投票 Internal Link

参数

名称类型必填描述
commentIdstring
adjustCommentVotesParamsAdjustCommentVotesParams
broadcastIdstring
tenantIdstring
ssostring

响应

返回:PostAdjustCommentVotesResponse

示例

postAdjustCommentVotes 示例
Copy Copy
1
2const commentId: string = "cmt_9f8b7a6d";
3
4const adjustParams: AdjustCommentVotesParams = {
5 voteDelta: 1,
6 // AdjustCommentVotesParams 所需的其他字段
7};
8
9const broadcastId: string = "brd_20230915";
10const tenantId: string = "tenant_42";
11const sso: string = "sso-token-abc123";
12
13const result: PostAdjustCommentVotesResponse = await postAdjustCommentVotes(
14 commentId,
15 adjustParams,
16 broadcastId,
17 tenantId,
18 sso
19);
20

发送 API 导出请求 Internal Link

参数

名称类型必填描述
textSearchstring
byIPFromCommentstring
filtersstring
searchFiltersstring
sortsstring
tenantIdstring
ssostring

响应

返回: PostApiExportResponse

示例

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

基于评论封禁用户 Internal Link

参数

名称类型必填描述
commentIdstring
banEmailboolean
banEmailDomainboolean
banIPboolean
deleteAllUsersCommentsboolean
bannedUntilstring
isShadowBanboolean
updateIdstring
banReasonstring
tenantIdstring
ssostring

响应

返回:PostBanUserFromCommentResponse

示例

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

撤销用户封禁 Internal Link

参数

名称类型必填描述
banUserUndoParamsBanUserUndoParamsYes
tenantIdstringNo
ssostringNo

响应

返回: PostBanUserUndoResponse

示例

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

批量获取预封禁摘要 Internal Link

参数

名称类型必需描述
bulkPreBanParamsBulkPreBanParams
includeByUserIdAndEmailboolean
includeByIPboolean
includeByEmailDomainboolean
tenantIdstring
ssostring

响应

返回: PostBulkPreBanSummaryResponse

示例

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

按 ID 获取评论 Internal Link

参数

名称类型必需描述
commentsByIdsParamsCommentsByIdsParamsYes
tenantIdstringNo
ssostringNo

响应

返回: PostCommentsByIdsResponse

示例

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

举报评论(审核) Internal Link

参数

NameTypeRequiredDescription
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回: PostFlagCommentResponse

示例

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

移除评论(审核) Internal Link

参数

名称类型必填描述
commentIdstring
broadcastIdstring
tenantIdstring
ssostring

响应

返回:PostRemoveCommentResponse

示例

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

恢复已删除评论 Internal Link


参数

名称类型必填描述
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回:PostRestoreDeletedCommentResponse

示例

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

设置评论审批状态 Internal Link

参数

名称类型必填描述
commentIdstringYes
approvedbooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回:PostSetCommentApprovalStatusResponse

示例

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

设置评论审核状态 Internal Link

参数

名称类型必填描述
commentIdstringYes
reviewedbooleanNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回:PostSetCommentReviewStatusResponse

示例

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

设置评论垃圾状态 Internal Link

参数

名称类型必填描述
commentIdstring
spamboolean
permNotSpamboolean
broadcastIdstring
tenantIdstring
ssostring

响应

返回: PostSetCommentSpamStatusResponse

示例

postSetCommentSpamStatus 示例
Copy Copy
1
2async function demoSpamStatus(): Promise<void> {
3 const commentId: string = "cmt_5f2a1b3c4d6e7f8g9h0i";
4
5 // 仅必需参数
6 const resultSimple: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(commentId, true);
7
8 // 提供了全部可选参数
9 const resultFull: PostSetCommentSpamStatusResponse = await postSetCommentSpamStatus(
10 commentId,
11 false,
12 true,
13 "brd_1234abcd",
14 "tenant_42",
15 "sso_9876xyz"
16 );
17
18 console.log(resultSimple, resultFull);
19}
20

设置评论文本(审核) Internal Link

参数

名称类型必填描述
commentIdstring
setCommentTextParamsSetCommentTextParams
broadcastIdstring
tenantIdstring
ssostring

响应

返回: PostSetCommentTextResponse

示例

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

取消举报评论(审核) Internal Link

参数

名称类型必填描述
commentIdstringYes
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回:PostUnFlagCommentResponse

示例

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

提交投票 Internal Link

参数

名称类型必需描述
commentIdstringYes
directionstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回: PostVoteResponse

示例

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

授予徽章 Internal Link

参数

名称类型必需描述
badgeIdstring
userIdstring
commentIdstring
broadcastIdstring
tenantIdstring
ssostring

响应

返回:PutAwardBadgeResponse

示例

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

关闭讨论串 Internal Link

参数

名称类型必填描述
urlIdstring
tenantIdstring
ssostring

响应

返回:PutCloseThreadResponse

示例

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

移除徽章 Internal Link

参数

名称类型必填描述
badgeIdstringYes
userIdstringNo
commentIdstringNo
broadcastIdstringNo
tenantIdstringNo
ssostringNo

响应

返回: PutRemoveBadgeResponse

示例

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

重新打开讨论串 Internal Link

参数

名称类型必需描述
urlIdstringYes
tenantIdstringNo
ssostringNo

响应

返回: PutReopenThreadResponse

示例

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

设置信任因子 Internal Link

参数

名称类型必填描述
userIdstring
trustFactorstring
tenantIdstring
ssostring

响应

返回: SetTrustFactorResponse

示例

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

创建版主 Internal Link

参数

名称类型必填描述
tenantIdstring
createModeratorBodyCreateModeratorBody

响应

返回: CreateModeratorResponse1

示例

createModerator 示例
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_9876";
4 const moderatorPayload: CreateModeratorBody = {
5 name: "Alice Johnson",
6 email: "alice.johnson@example.com"
7 // 可选字段如 description 已省略
8 };
9 const result: CreateModeratorResponse1 = await createModerator(tenantId, moderatorPayload);
10 console.log(result);
11}
12
13runExample();
14

删除版主 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
sendEmailstring

响应

返回: DeleteModeratorResponse

示例

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

获取版主 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:GetModeratorResponse1

示例

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

获取版主列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipnumber

响应

返回:GetModeratorsResponse1

示例

getModerators 示例
Copy Copy
1
2async function fetchModerators(): Promise<void> {
3 const tenantId: string = "tenant-9876";
4 const skip: number = 30; // 可选的分页偏移量
5 const moderators: GetModeratorsResponse1 = await getModerators(tenantId, skip);
6 // 示例(无分页):
7 // const allModerators: GetModeratorsResponse1 = await getModerators(tenantId);
8}
9

发送邀请 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
fromNamestringYes

响应

返回:SendInviteResponse

示例

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

更新版主 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateModeratorBodyUpdateModeratorBody

响应

返回:UpdateModeratorResponse

示例

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

删除通知计数 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: DeleteNotificationCountResponse

示例

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

获取缓存的通知计数 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回: GetCachedNotificationCountResponse1

示例

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

获取通知计数 Internal Link

参数

名称类型必填描述
tenantIdstring
userIdstring
urlIdstring
fromCommentIdstring
viewedboolean
typestring

响应

返回:GetNotificationCountResponse1

示例

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

获取通知 Internal Link

参数

名称类型必需描述
tenantIdstringYes
userIdstringNo
urlIdstringNo
fromCommentIdstringNo
viewedbooleanNo
typestringNo
skipnumberNo

响应

返回: GetNotificationsResponse1

示例

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

更新通知 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateNotificationBodyUpdateNotificationBodyYes
userIdstringNo

响应

返回:UpdateNotificationResponse

示例

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

创建 V1 页面互动 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
titlestring

响应

返回:CreateV1PageReactResponse

示例

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

创建 V2 页面互动 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
idstring
titlestring

响应

返回: CreateV2PageReactResponse

示例

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

删除 V1 页面互动 Internal Link

参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes

响应

返回: DeleteV1PageReactResponse

示例

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

删除 V2 页面互动 Internal Link


参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes
idstringYes

响应

返回: DeleteV2PageReactResponse

示例

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

获取 V1 页面点赞 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring

响应

返回: GetV1PageLikesResponse

示例

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

获取 V2 页面互动 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring

响应

返回:GetV2PageReactsResponse

示例

getV2PageReacts 示例
Copy Copy
1
2async function demoGetPageReacts(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant";
4 const urlId: string = "article-2024-06-01";
5
6 const reacts: GetV2PageReactsResponse = await getV2PageReacts(tenantId, urlId);
7
8 // 可选属性访问示例
9 const customConfig: CustomConfigParameters | undefined = reacts.customConfig;
10 console.log(reacts);
11}
12
13demoGetPageReacts();
14

获取 V2 页面互动用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
idstringYes

响应

返回: GetV2PageReactUsersResponse1

示例

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

添加页面 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
createAPIPageDataCreateAPIPageDataYes

响应

Returns: AddPageAPIResponse

示例

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

删除页面 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: DeletePageAPIResponse

示例

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

获取离线用户 Internal Link


页面上过去的评论者(当前不在线)。按 displayName 排序。
在使用完 /users/online 后使用,以渲染“成员”部分。
在 commenterName 上进行光标分页:服务器遍历部分 {tenantId, urlId, commenterName},从 afterName 开始向前使用 $gt 索引,无需 $skip 开销。

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
afterNamestringNo
afterUserIdstringNo

Response

返回:GetOfflineUsersResponse

Example

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

获取在线用户 Internal Link


当前在线的页面观看者:当前通过 WebSocket 会话订阅该页面的用户。
返回 anonCount + totalCount(整个房间的订阅者数量,包括我们未列出的匿名观看者)。

参数

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
afterNamestringNo
afterUserIdstringNo

响应

返回:GetOnlineUsersResponse

示例

getOnlineUsers 示例
Copy Copy
1
2async function demoOnlineUsers() {
3 const tenantId: string = "tenant_12345";
4 const urlId: string = "url_98765";
5
6 // 包含可选的分页参数
7 const pagedResult: GetOnlineUsersResponse = await getOnlineUsers(
8 tenantId,
9 urlId,
10 "alice_smith",
11 "user_9"
12 );
13
14 // 不包含可选的分页参数
15 const fullResult: GetOnlineUsersResponse = await getOnlineUsers(tenantId, urlId);
16}
17

通过 URL ID 获取页面 Internal Link

参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes

响应

返回: GetPageByURLIdAPIResponse

示例

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

获取页面列表 Internal Link

参数

名称类型必填描述
tenantIdstring

响应

返回:GetPagesAPIResponse

示例

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

获取公开页面 Internal Link


列出租户的页面。由 FChat 桌面客户端使用,以填充其房间列表。每个页面的解析自定义配置中 enableFChat 必须为 true。需要 SSO 的页面会根据请求用户的组访问权限进行过滤。

参数

NameTypeRequiredDescription
tenantIdstringYes
cursorstringNo
limitnumberNo
qstringNo
sortByPagesSortByNo
hasCommentsbooleanNo

响应

返回:GetPagesPublicResponse

示例

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

获取用户信息 Internal Link


针对租户的大批量用户信息。给定 userIds,返回来自 User / SSOUser 的显示信息。由评论小部件使用,以丰富通过存在事件刚出现的用户。没有页面上下文:隐私被统一强制执行(私有个人资料会被屏蔽)。

参数

名称类型必填描述
tenantIdstringYes
idsstringYes

响应

返回: GetUsersInfoResponse

示例

getUsersInfo 示例
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3const ids: string = "user-1001,user-1002";
4
5const usersInfo: GetUsersInfoResponse = await getUsersInfo(tenantId, ids);
6
7// Optional fields in the response may be undefined
8const firstUser: PageUserEntry | undefined = usersInfo?.users?.[0];
9

部分更新页面 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateAPIPageDataUpdateAPIPageData

响应

返回: PatchPageAPIResponse

示例

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

删除待处理 Webhook 事件 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: DeletePendingWebhookEventResponse

示例

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

获取待处理 Webhook 事件计数 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringNo
externalIdstringNo
eventTypestringNo
typestringNo
domainstringNo
attemptCountGTnumberNo

响应

返回: GetPendingWebhookEventCountResponse1

示例

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

获取待处理 Webhook 事件 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
externalIdstring
eventTypestring
typestring
domainstring
attemptCountGTnumber
skipnumber

响应

返回: GetPendingWebhookEventsResponse1

示例

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

创建问答配置 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createQuestionConfigBodyCreateQuestionConfigBodyYes

响应

返回: CreateQuestionConfigResponse1

示例

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

删除问答配置 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:DeleteQuestionConfigResponse

示例

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

获取问答配置 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes

响应

返回:GetQuestionConfigResponse1

示例

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

获取问答配置列表 Internal Link

参数

名称类型必填描述
tenantIdstringYes
skipnumberNo

响应

返回: GetQuestionConfigsResponse1

示例

getQuestionConfigs 示例
Copy Copy
1
2async function fetchQuestionConfigs() {
3 const tenantId: string = "tenant-9876";
4
5 // 在未提供可选的 'skip' 参数的情况下调用
6 const configsWithoutSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId);
7
8 // 在提供可选的 'skip' 参数的情况下调用
9 const skip: number = 10;
10 const configsWithSkip: GetQuestionConfigsResponse1 = await getQuestionConfigs(tenantId, skip);
11
12 console.log(configsWithoutSkip, configsWithSkip);
13}
14

更新问答配置 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateQuestionConfigBodyUpdateQuestionConfigBody

响应

返回: UpdateQuestionConfigResponse

示例

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

创建问答结果 Internal Link

参数

名称类型必需描述
tenantIdstringYes
createQuestionResultBodyCreateQuestionResultBodyYes

响应

返回:CreateQuestionResultResponse1

示例

createQuestionResult 示例
Copy Copy
1
2const tenantId: string = "acme-corp-tenant";
3
4const metaItem: MetaItem = {
5 key: "campaign",
6 value: "spring-launch"
7};
8
9const questionResultBody: CreateQuestionResultBody = {
10 questionId: "question-42",
11 answer: "Positive",
12 metadata: [metaItem]
13 // 可选字段如备注已省略
14};
15
16const result: CreateQuestionResultResponse1 = await createQuestionResult(tenantId, questionResultBody);
17

删除问答结果 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:DeleteQuestionResultResponse

示例

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

获取问答结果 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:GetQuestionResultResponse1

示例

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

获取问答结果列表 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
userIdstring
startDatestring
questionIdstring
questionIdsstring
skipnumber

响应

返回: GetQuestionResultsResponse1

示例

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

更新问答结果 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateQuestionResultBodyUpdateQuestionResultBody

响应

返回: UpdateQuestionResultResponse

示例

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

聚合问答结果 Internal Link

参数

名称类型必填描述
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
timeBucketAggregateTimeBucketNo
startDateDateNo
forceRecalculatebooleanNo

响应

返回:AggregateQuestionResultsResponse1

示例

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

批量聚合问答结果 Internal Link

参数

名称类型必填描述
tenantIdstring
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequest
forceRecalculateboolean

响应

返回: BulkAggregateQuestionResultsResponse1

示例

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

将评论与问答结果合并 Internal Link

参数

名称类型必需描述
tenantIdstringYes
questionIdstringNo
questionIdsArrayNo
urlIdstringNo
startDateDateNo
forceRecalculatebooleanNo
minValuenumberNo
maxValuenumberNo
limitnumberNo

响应

返回:CombineCommentsWithQuestionResultsResponse

示例

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

添加 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

响应

返回:AddSSOUserAPIResponse

示例

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

删除 SSO 用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
deleteCommentsboolean
commentDeleteModestring

响应

返回:DeleteSSOUserAPIResponse

示例

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

通过邮箱获取 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
emailstringYes

响应

返回: GetSSOUserByEmailAPIResponse

示例

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

通过 ID 获取 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回:GetSSOUserByIdAPIResponse

示例

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

获取 SSO 用户列表 Internal Link

参数

名称类型必填描述
tenantIdstring
skipnumber

响应

返回: GetSSOUsersResponse

示例

getSSOUsers 示例
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4
5 // 调用时不使用可选的 `skip`
6 const firstPage: GetSSOUsersResponse = await getSSOUsers(tenantId);
7
8 // 调用时使用可选的 `skip`
9 const secondPage: GetSSOUsersResponse = await getSSOUsers(tenantId, 100);
10
11 console.log(firstPage, secondPage);
12}
13
14runExample();
15

部分更新 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsbooleanNo

响应

返回:PatchSSOUserAPIResponse

示例

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

替换 SSO 用户 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsbooleanNo

响应

返回: PutSSOUserAPIResponse

示例

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

创建订阅 Internal Link

参数

名称类型必填描述
tenantIdstring
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData

响应

返回:CreateSubscriptionAPIResponse

示例

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

删除订阅 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
userIdstring

响应

返回: DeleteSubscriptionAPIResponse

示例

deleteSubscription 示例
Copy Copy
1
2(async () => {
3 const tenantId: string = "tenant_9876";
4 const subscriptionId: string = "sub_54321";
5 const userId: string = "user_abc123";
6
7 // 使用可选的 userId
8 const responseWithUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId, userId);
9
10 // 未使用可选的 userId
11 const responseWithoutUser: DeleteSubscriptionAPIResponse = await deleteSubscription(tenantId, subscriptionId);
12})();
13

获取订阅 Internal Link

参数

名称类型必填描述
tenantIdstringYes
userIdstringNo

响应

返回: GetSubscriptionsAPIResponse

示例

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

更新订阅 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionData
userIdstring

响应

返回: UpdateSubscriptionAPIResponse

示例

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

获取租户每日使用情况 Internal Link

参数

名称类型必填描述
tenantIdstring
yearNumbernumber
monthNumbernumber
dayNumbernumber
skipnumber

响应

返回: GetTenantDailyUsagesResponse1

示例

getTenantDailyUsages 示例
Copy Copy
1
2async function fetchDailyUsage() {
3 const tenantId: string = "tenant-9876";
4 const yearNumber: number = 2024;
5 const monthNumber: number = 5; // 5月
6 const dayNumber: number = 12;
7 const skip: number = 0;
8
9 const fullResult: GetTenantDailyUsagesResponse1 = await getTenantDailyUsages(
10 tenantId,
11 yearNumber,
12 monthNumber,
13 dayNumber,
14 skip
15 );
16
17 // 仅使用必需参数和一个可选参数
18 const partialResult: GetTenantDailyUsagesResponse1 = await getTenantDailyUsages(
19 tenantId,
20 yearNumber
21 );
22
23 console.log(fullResult, partialResult);
24}
25
26fetchDailyUsage();
27

创建租户套餐 Internal Link

参数

名称类型必填描述
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

响应

返回:CreateTenantPackageResponse1

示例

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

删除租户套餐 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:DeleteTenantPackageResponse

示例

deleteTenantPackage 示例
Copy Copy
1
2async function removeTenantPackage(): Promise<void> {
3 const tenantId: string = "tenant_12345";
4 const packageId: string = "pkg_67890";
5
6 const result: DeleteTenantPackageResponse = await deleteTenantPackage(tenantId, packageId);
7 // 根据需要使用结果
8}
9
10removeTenantPackage();
11

获取租户套餐 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: GetTenantPackageResponse1

示例

getTenantPackage 示例
Copy Copy
1
2async function fetchTenantPackage(): Promise<void> {
3 const tenantId: string = "acme-tenant-2024";
4 const packageId: string = "premium-package-01";
5 const response: GetTenantPackageResponse1 = await getTenantPackage(tenantId, packageId);
6
7 // 响应中的可选字段
8 const tenantPackage: TenantPackage | undefined = response.tenantPackage;
9 const customConfig: CustomConfigParameters | undefined = response.customConfigParameters;
10}
11

获取租户套餐列表 Internal Link


参数

名称类型必填描述
tenantIdstring
skipnumber

响应

返回:GetTenantPackagesResponse1

示例

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

替换租户套餐 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

响应

返回:ReplaceTenantPackageResponse

示例

replaceTenantPackage 示例
Copy Copy
1
2(async () => {
3 const tenantId: string = "acme-corp-tenant-01";
4 const packageId: string = "pkg-2024-annual";
5
6 const config: CustomConfigParameters = {
7 // 在此处添加自定义配置字段
8 };
9
10 const body: ReplaceTenantPackageBody = {
11 name: "Enterprise Package",
12 // 可选的自定义配置
13 customConfig: config,
14 };
15
16 const response: ReplaceTenantPackageResponse = await replaceTenantPackage(tenantId, packageId, body);
17 console.log(response);
18})();
19

更新租户套餐 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateTenantPackageBodyUpdateTenantPackageBody

响应

返回: UpdateTenantPackageResponse

示例

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

创建租户用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

响应

返回:CreateTenantUserResponse1

示例

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

删除租户用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
deleteCommentsstring
commentDeleteModestring

响应

返回: DeleteTenantUserResponse

示例

deleteTenantUser 示例
Copy Copy
1
2async function demoDeleteTenantUser() {
3 const tenantId: string = "acme-corp-tenant";
4 const userId: string = "user-9876";
5
6 // 删除用户及其所有评论,使用硬删除模式
7 const resultWithOptions: DeleteTenantUserResponse = await deleteTenantUser(
8 tenantId,
9 userId,
10 "true",
11 "hard"
12 );
13
14 // 删除用户但不移除评论(默认行为)
15 const resultBasic: DeleteTenantUserResponse = await deleteTenantUser(tenantId, userId);
16}
17

获取租户用户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:GetTenantUserResponse1

示例

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

获取租户用户列表 Internal Link

参数

名称类型必填描述
tenantIdstring
skipnumber

响应

返回: GetTenantUsersResponse1

示例

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

替换租户用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

响应

返回:ReplaceTenantUserResponse

示例

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

参数

名称类型必需描述
tenantIdstringYes
idstringYes
redirectURLstringNo

响应

返回:SendLoginLinkResponse

示例

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

更新租户用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateTenantUserBodyUpdateTenantUserBodyYes
updateCommentsstringNo

响应

返回: UpdateTenantUserResponse

示例

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

创建租户 Internal Link

参数

名称类型必需描述
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

响应

返回:CreateTenantResponse1

示例

createTenant 示例
Copy Copy
1
2async function example() {
3 const tenantId: string = 'tenant-2024-01';
4 const createTenantBody: CreateTenantBody = {
5 // 必填字段
6 name: 'Acme International',
7 // 可选字段可根据需要添加,例如:
8 // billingInfo: { address: '123 Main St', city: 'Metropolis' } as BillingInfo,
9 };
10 const response: CreateTenantResponse1 = await createTenant(tenantId, createTenantBody);
11 console.log(response);
12}
13

删除租户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
surestring

响应

返回: DeleteTenantResponse

示例

deleteTenant 示例
Copy Copy
1
2async function runExample() {
3 const tenantId: string = "tenant_12345";
4 const id: string = "resource_98765";
5 const sure: string = "confirm";
6
7 // 使用可选的 'sure' 参数进行调用
8 const responseWithSure: DeleteTenantResponse = await deleteTenant(tenantId, id, sure);
9 console.log(responseWithSure);
10
11 // 在不使用可选的 'sure' 参数的情况下调用
12 const responseWithoutSure: DeleteTenantResponse = await deleteTenant(tenantId, id);
13 console.log(responseWithoutSure);
14}
15
16runExample();
17

获取租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: GetTenantResponse1

示例

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

获取租户列表 Internal Link

参数

名称类型必需描述
tenantIdstringYes
metastringNo
skipnumberNo

响应

返回:GetTenantsResponse1

示例

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

更新租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateTenantBodyUpdateTenantBody

响应

返回:UpdateTenantResponse

示例

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

更改工单状态 Internal Link

参数

名称类型必需描述
tenantIdstring
userIdstring
idstring
changeTicketStateBodyChangeTicketStateBody

响应

返回: ChangeTicketStateResponse1

示例

changeTicketState 示例
Copy Copy
1
2const tenantId: string = "acme-corp";
3const userId: string = "user-97123";
4const ticketId: string = "ticket-45001";
5
6const changeTicketStateBody: ChangeTicketStateBody = {
7 state: "closed",
8 // 主体中的可选字段
9 comment: "Issue resolved after code fix"
10};
11
12const response: ChangeTicketStateResponse1 = await changeTicketState(
13 tenantId,
14 userId,
15 ticketId,
16 changeTicketStateBody
17);
18

创建工单 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
userIdstring
createTicketBodyCreateTicketBody

响应

返回:CreateTicketResponse1

示例

createTicket 示例
Copy Copy
1
2const tenantId: string = "tenant_12345";
3const userId: string = "user_98765";
4
5const ticketBody: CreateTicketBody = {
6 subject: "Issue with payment processing"
7 // description?: string 是可选的,已省略
8};
9
10const response: CreateTicketResponse1 = await createTicket(tenantId, userId, ticketBody);
11// 示例:使用响应中的可选字段
12// console.log(response.ticket?.id);
13

获取工单 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
userIdstring

响应

返回: GetTicketResponse1

示例

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

获取工单列表 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
userIdstringNo
statenumberNo
skipnumberNo
limitnumberNo

响应

返回: GetTicketsResponse1

示例

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

获取翻译 Internal Link

参数

名称类型必填描述
namespacestringYes
componentstringYes
localestringNo
useFullTranslationIdsbooleanNo

响应

Returns: GetTranslationsResponse1

示例

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

上传图片 Internal Link

上传和调整图像大小

参数

名称类型必填描述
tenantIdstringYes
fileBlobYes
sizePresetSizePresetNo
urlIdstringNo

响应

返回:UploadImageResponse

示例

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

通过 ID 获取用户徽章进度 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:GetUserBadgeProgressByIdResponse

示例

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

通过用户 ID 获取用户徽章进度 Internal Link

参数

名称类型必需描述
tenantIdstring
userIdstring

响应

返回:GetUserBadgeProgressByUserIdResponse

示例

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

获取用户徽章进度列表 Internal Link

参数

名称类型必填描述
tenantIdstring
userIdstring
limitnumber
skipnumber

响应

返回:GetUserBadgeProgressListResponse

示例

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

创建用户徽章 Internal Link

参数

名称类型必填描述
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

响应

返回: CreateUserBadgeResponse

示例

createUserBadge 示例
Copy Copy
1
2const tenantId: string = "company-42";
3
4const badgeParams: CreateUserBadgeParams = {
5 name: "Community Champion",
6 iconUrl: "https://assets.example.com/badges/champion.png",
7 // 描述是可选的,此处省略
8};
9
10const result: CreateUserBadgeResponse = await createUserBadge(tenantId, badgeParams);
11

删除用户徽章 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:DeleteUserBadgeResponse

示例

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

获取用户徽章 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回: GetUserBadgeResponse

示例

getUserBadge 示例
Copy Copy
1
2async function runExample(): Promise<void> {
3 const tenantId: string = "acme-corp-tenant-001";
4 const badgeId: string = "badge-5f9d3a2b";
5
6 const badgeResponse: GetUserBadgeResponse = await getUserBadge(tenantId, badgeId);
7
8 // 安全访问可选字段
9 const badgeName: string | undefined = badgeResponse.userBadge?.name;
10 console.log(`Badge ID: ${badgeId}, Name: ${badgeName ?? "Unnamed"}`);
11}
12
13runExample();
14

获取用户徽章列表 Internal Link

参数

名称类型必需描述
tenantIdstring
userIdstring
badgeIdstring
typenumber
displayedOnCommentsboolean
limitnumber
skipnumber

响应

返回:GetUserBadgesResponse

示例

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

更新用户徽章 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updateUserBadgeParamsUpdateUserBadgeParams

响应

返回: UpdateUserBadgeResponse

示例

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

获取用户通知计数 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

响应

Returns: GetUserNotificationCountResponse1

示例

getUserNotificationCount 示例
Copy Copy
1
2async function demoGetUserNotificationCount() {
3 const tenantId: string = "acme-corp-01";
4
5 // 使用可选的 SSO 令牌调用
6 const countWithSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
7 tenantId,
8 "sso-token-abc123"
9 );
10
11 // 调用时不使用 SSO 令牌
12 const countWithoutSSO: GetUserNotificationCountResponse1 = await getUserNotificationCount(
13 tenantId
14 );
15
16 console.log(countWithSSO, countWithoutSSO);
17}
18

获取用户通知 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
pageSizenumber
afterIdstring
includeContextboolean
afterCreatedAtnumber
unreadOnlyboolean
dmOnlyboolean
noDmboolean
includeTranslationsboolean
includeTenantNotificationsboolean
ssostring

响应

返回: GetUserNotificationsResponse

示例

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

重置用户通知计数 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
ssostring

响应

返回: ResetUserNotificationCountResponse

示例

resetUserNotificationCount 示例
Copy Copy
1
2async function demoResetCount() {
3 const tenantId: string = "acme-corp-tenant";
4 const sso: string = "sso-user-9876";
5
6 // 使用可选的 sso 参数调用
7 const resultWithSso: ResetUserNotificationCountResponse = await resetUserNotificationCount(tenantId, sso);
8
9 // 不使用可选的 sso 参数调用
10 const resultWithoutSso: ResetUserNotificationCountResponse = await resetUserNotificationCount(tenantId);
11
12 console.log(resultWithSso, resultWithoutSso);
13}
14

重置用户通知 Internal Link

参数

名称类型必填描述
tenantIdstringYes
afterIdstringNo
afterCreatedAtnumberNo
unreadOnlybooleanNo
dmOnlybooleanNo
noDmbooleanNo
ssostringNo

响应

返回:ResetUserNotificationsResponse1

示例

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

更新用户评论订阅状态 Internal Link

Enable or disable notifications for a specific comment.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
notificationIdstringYes
optedInOrOutUpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnumYes
commentIdstringYes
ssostringNo

Response

返回:UpdateUserNotificationCommentSubscriptionStatusResponse

Example

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

更新用户页面订阅状态 Internal Link

Enable or disable notifications for a page. When users are subscribed to a page, notifications are created for new root comments, and also

参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedUpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnumYes
ssostringNo

响应

返回: UpdateUserNotificationPageSubscriptionStatusResponse

示例

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

更新用户通知状态 Internal Link

参数

名称类型必需描述
tenantIdstringYes
notificationIdstringYes
newStatusUpdateUserNotificationStatusNewStatusEnumYes
ssostringNo

响应

返回:UpdateUserNotificationStatusResponse

示例

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

获取用户在线状态 Internal Link

参数

名称类型必需描述
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

响应

Returns: GetUserPresenceStatusesResponse1

示例

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

搜索用户 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
usernameStartsWithstringNo
mentionGroupIdsArrayNo
ssostringNo
searchSectionSearchUsersSearchSectionEnumNo

响应

返回:SearchUsersResponse1

示例

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

获取用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: GetUserResponse1

示例

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

创建投票 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
directionCreateVoteDirectionEnumYes
userIdstringNo
anonUserIdstringNo

响应

返回: CreateVoteResponse

示例

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

删除投票 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
editKeystringNo

响应

返回: DeleteVoteResponse

示例

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

获取投票 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring

响应

返回: GetVotesResponse1

示例

getVotes 示例
Copy Copy
1
2async function fetchVotes(): Promise<void> {
3 const tenantId: string = "acme-corp-01";
4 const urlId: string = "article-2024-05-15";
5
6 const response: GetVotesResponse1 = await getVotes(tenantId, urlId);
7
8 // 示例:访问响应中的可选字段
9 const firstVoteId: string | undefined = response?.votes?.[0]?.id;
10}
11

获取用户的投票 Internal Link


参数

名称类型必填描述
tenantIdstring
urlIdstring
userIdstring
anonUserIdstring

响应

返回:GetVotesForUserResponse1

示例

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

需要帮助?

如果您在使用 JavaScript/TypeScript SDK 时遇到任何问题或有疑问,请:

贡献

欢迎贡献!请访问 GitHub 仓库 获取贡献指南。