FastComments.com

FastComments JavaScript/TypeScript SDK


์ด๊ฒƒ์€ FastComments์šฉ ๊ณต์‹ JavaScript/TypeScript SDK์ž…๋‹ˆ๋‹ค.

FastComments API์šฉ ๊ณต์‹ JavaScript/TypeScript SDK

์ €์žฅ์†Œ

GitHub์—์„œ ๋ณด๊ธฐ


์„ค์น˜ Internal Link

npm install fastcomments-sdk

API ๋ฌธ์„œ Internal Link


์ „์ฒด API ์ฐธ์กฐ: docs/api/README.md

๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„ ํ˜ธํ™˜์„ฑ Internal Link

์ด SDK๋Š” ์ตœ์ ์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ค‘ ์ง„์ž…์ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

  • fastcomments-sdk/browser - ๋„ค์ดํ‹ฐ๋ธŒ fetch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์•ˆ์ „ ๋ฒ„์ „
  • fastcomments-sdk/server - SSO๋ฅผ ์ง€์›ํ•˜๋Š” ์ „์ฒด Node.js ๋ฒ„์ „
  • fastcomments-sdk (๊ธฐ๋ณธ) - ํƒ€์ž… ์ „์šฉ, ์–ด๋””์„œ๋‚˜ ์•ˆ์ „ํ•˜๊ฒŒ ์ž„ํฌํŠธ ๊ฐ€๋Šฅ

๊ณต๊ฐœ์™€ ๋ณด์•ˆ API Internal Link

The SDK๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” API ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • DefaultApi - ์ธ์ฆ์„ ์œ„ํ•ด API ํ‚ค๊ฐ€ ํ•„์š”ํ•œ ๋ณด์•ˆ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก ์ž‘์—…์— ์‚ฌ์šฉํ•˜์„ธ์š”.
  • PublicApi - API ํ‚ค ์—†์ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐœ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €/๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ ๋“ฑ์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • HiddenApi - ๊ณ ๊ธ‰ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์œ„ํ•œ ๋‚ด๋ถ€/๊ด€๋ฆฌ์ž์šฉ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ: Public API ์‚ฌ์šฉ (๋ธŒ๋ผ์šฐ์ €์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ)

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

const publicApi = new PublicApi();

// ํŽ˜์ด์ง€์˜ ๋Œ“๊ธ€์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค (API ํ‚ค ํ•„์š” ์—†์Œ)
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);

// ์ „์ฒด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ๋Œ“๊ธ€์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค
const response = await defaultApi.getComments({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

SSO(์‹ฑ๊ธ€ ์‚ฌ์ธ์˜จ) ํ†ตํ•ฉ Internal Link

FastComments๋Š” ๊ธฐ์กด ์‚ฌ์šฉ์ž ์ธ์ฆ ์‹œ์Šคํ…œ๊ณผ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด SSO๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. SSO ๊ธฐ๋Šฅ์€ Node.js์˜ crypto ๊ธฐ๋Šฅ์„ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋‚ด๋ณด๋‚ด๊ธฐ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ SSO (์„œ๋ฒ„ ์ „์šฉ)

๊ฐ„๋‹จํ•œ SSO๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ์ƒ์„ฑ๋˜์–ด ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

// ์„œ๋ฒ„ ์ธก ์ฝ”๋“œ (Node.js/๋ฐฑ์—”๋“œ)
import { FastCommentsSSO, PublicApi } from 'fastcomments-sdk/server';

// Create simple SSO using the built-in helper  
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';

// Create secure SSO using the built-in helper
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 // ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋œ SSO ํ† ํฐ ์‚ฌ์šฉ
});

๋Œ“๊ธ€ ์ƒ์„ฑ๊ณผ ํ•จ๊ป˜ํ•˜๋Š” 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',
};

// ํŠน์ • ํŽ˜์ด์ง€์˜ ๋ผ์ด๋ธŒ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค
const subscription = subscribeToChanges(
  config,
  'your-tenant-id', // tenantIdWS
  'page-url-id',    // urlIdWS  
  'user-session-id', // userIdWS (getComments ์‘๋‹ต์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค)
  (event: LiveEvent) => {
    console.log('Live event received:', event);

    switch (event.type) {
      case LiveEventType.new_comment:
        console.log('New comment:', event.comment);
        // ์ƒˆ ๋Œ“๊ธ€๋กœ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค
        break;
      case LiveEventType.new_vote:
        console.log('New vote:', event.vote);
        // UI์˜ ํˆฌํ‘œ ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค
        break;
      case LiveEventType.updated_comment:
        console.log('Comment updated:', event.comment);
        break;
      default:
        console.log('Other event type:', event.type);
    }

    return true; // ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜์—ˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค
  },
  (isConnected: boolean) => {
    console.log('Connection status:', isConnected ? 'Connected' : 'Disconnected');
  }
);

// ์™„๋ฃŒ๋˜๋ฉด ๊ตฌ๋…์„ ๋‹ซ์Šต๋‹ˆ๋‹ค
subscription.close();

์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ๊ตฌ๋…

์‚ฌ์šฉ์ž๋ณ„ ์ด๋ฒคํŠธ(์•Œ๋ฆผ, ๋ฉ˜์…˜ ๋“ฑ)๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค:

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

const userConfig = {
  userIdWS: 'user-session-id', // getComments ์‘๋‹ต์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค
};

// ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ ํ”ผ๋“œ๋ฅผ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค
const userSubscription = subscribeToUserFeed(
  userConfig,
  (event: LiveEvent) => {
    console.log('User event received:', event);

    switch (event.type) {
      case LiveEventType.notification:
        console.log('New notification:', event.notification);
        // 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');
  }
);

// ์™„๋ฃŒ๋˜๋ฉด ๋‹ซ์Šต๋‹ˆ๋‹ค
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'
});

// ์‘๋‹ต์—์„œ userIdWS๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค
const userIdWS = response.data?.userSessionInfo?.userIdWS;

if (userIdWS) {
  // ์ด์ œ ๋ผ์ด๋ธŒ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  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

๋ฌธ์„œ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ (groupBy๊ฐ€ ์ œ๊ณต๋œ ๊ฒฝ์šฐ) ์—ฌ๋Ÿฌ ์—ฐ์‚ฐ์„ ์ ์šฉํ•ด ์ง‘๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ(์˜ˆ: sum, countDistinct, avg ๋“ฑ)์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
aggregationRequest AggregationRequest ์˜ˆ
parentTenantId string ์•„๋‹ˆ์š”
includeStats boolean ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: AggregationResponse


๊ฐ์‚ฌ ๋กœ๊ทธ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string Yes
limit number No
skip number No
order SORTDIR No
after number No
before number No

์‘๋‹ต

๋ฐ˜ํ™˜: GetAuditLogs200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ๋Œ“๊ธ€์—์„œ ์ฐจ๋‹จ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
publicBlockFromCommentParams PublicBlockFromCommentParams ์˜ˆ
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: BlockFromCommentPublic200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ๋Œ“๊ธ€ ์ฐจ๋‹จ ํ•ด์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
publicBlockFromCommentParams PublicBlockFromCommentParams ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: UnBlockCommentPublic200Response

์˜ˆ์ œ

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

์ฐจ๋‹จ๋œ ๋Œ“๊ธ€ ํ™•์ธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
commentIds string ์˜ˆ
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: CheckedCommentsForBlocked200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€์—์„œ ์‚ฌ์šฉ์ž ์ฐจ๋‹จ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
blockFromCommentParams BlockFromCommentParams ์˜ˆ
userId string ์•„๋‹ˆ์š”
anonUserId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: BlockFromCommentPublic200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ๋Œ“๊ธ€ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlId string ์˜ˆ
broadcastId string ์˜ˆ
commentData CommentData ์˜ˆ
sessionId string ์•„๋‹ˆ์˜ค
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: CreateCommentPublic200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
contextUserId string ์•„๋‹ˆ์˜ค
isLive boolean ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜๊ฐ’: DeleteComment200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ๋Œ“๊ธ€ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
broadcastId string ์˜ˆ
editKey string ์•„๋‹ˆ์˜ค
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteCommentPublic200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ํˆฌํ‘œ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
commentId string ์˜ˆ
voteId string ์˜ˆ
urlId string ์˜ˆ
broadcastId string ์˜ˆ
editKey string ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteCommentVote200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์‹ ๊ณ  Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
userId string ์•„๋‹ˆ์š”
anonUserId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: FlagComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
page number ์•„๋‹ˆ์š”
limit number ์•„๋‹ˆ์š”
skip number ์•„๋‹ˆ์š”
asTree boolean ์•„๋‹ˆ์š”
skipChildren number ์•„๋‹ˆ์š”
limitChildren number ์•„๋‹ˆ์š”
maxTreeDepth number ์•„๋‹ˆ์š”
urlId string ์•„๋‹ˆ์š”
userId string ์•„๋‹ˆ์š”
anonUserId string ์•„๋‹ˆ์š”
contextUserId string ์•„๋‹ˆ์š”
hashTag string ์•„๋‹ˆ์š”
parentId string ์•„๋‹ˆ์š”
direction SortDirections ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetComments200Response

์˜ˆ์ œ

getComments ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const response: GetComments200Response = await getComments(
4 tenantId,
5 1, // ํŽ˜์ด์ง€
6 20, // ํŽ˜์ด์ง€๋‹น ํ•ญ๋ชฉ ์ˆ˜
7 0, // ๊ฑด๋„ˆ๋›ธ ํ•ญ๋ชฉ ์ˆ˜
8 true, // ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ฐ˜ํ™˜
9 1, // ๊ฑด๋„ˆ๋›ธ ์ž์‹ ๊ฐœ์ˆ˜
10 3, // ์ž์‹ ์ œํ•œ
11 4, // ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๊นŠ์ด
12 'articles/2026/new-product-launch', // urlId
13 'user_7890', // ์‚ฌ์šฉ์ž ID
14 'anon_4f3b2', // ์ต๋ช… ์‚ฌ์šฉ์ž ID
15 undefined, // contextUserId
16 '#launch', // ํ•ด์‹œํƒœ๊ทธ
17 undefined // ๋ถ€๋ชจ ID
18);
19

๊ณต๊ฐœ ๋Œ“๊ธ€ ์กฐํšŒ Internal Link


req tenantId urlId

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
urlId string ์˜ˆ
page number ์•„๋‹ˆ์š”
direction SortDirections ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”
skip number ์•„๋‹ˆ์š”
skipChildren number ์•„๋‹ˆ์š”
limit number ์•„๋‹ˆ์š”
limitChildren number ์•„๋‹ˆ์š”
countChildren boolean ์•„๋‹ˆ์š”
fetchPageForCommentId string ์•„๋‹ˆ์š”
includeConfig boolean ์•„๋‹ˆ์š”
countAll boolean ์•„๋‹ˆ์š”
includei10n boolean ์•„๋‹ˆ์š”
locale string ์•„๋‹ˆ์š”
modules string ์•„๋‹ˆ์š”
isCrawler boolean ์•„๋‹ˆ์š”
includeNotificationCount boolean ์•„๋‹ˆ์š”
asTree boolean ์•„๋‹ˆ์š”
maxTreeDepth number ์•„๋‹ˆ์š”
useFullTranslationIds boolean ์•„๋‹ˆ์š”
parentId string ์•„๋‹ˆ์š”
searchText string ์•„๋‹ˆ์š”
hashTags Array ์•„๋‹ˆ์š”
userId string ์•„๋‹ˆ์š”
customConfigStr string ์•„๋‹ˆ์š”
afterCommentId string ์•„๋‹ˆ์š”
beforeCommentId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetCommentsPublic200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ๋‚ด์šฉ ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

Name Type ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
editKey string ์•„๋‹ˆ์˜ค
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetCommentText200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ํˆฌํ‘œ ์‚ฌ์šฉ์ž๋ช… ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
dir number ์˜ˆ
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetCommentVoteUserNames200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์ž ๊ธˆ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
commentId string ์˜ˆ
broadcastId string ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: LockComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ๊ณ ์ • Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
broadcastId string ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: PinComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์ €์žฅ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createCommentParams CreateCommentParams ์˜ˆ
isLive boolean ์•„๋‹ˆ์š”
doSpamCheck boolean ์•„๋‹ˆ์š”
sendEmails boolean ์•„๋‹ˆ์š”
populateNotifications boolean ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜๊ฐ’: SaveComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์ผ๊ด„ ์ €์žฅ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createCommentParams Array ์˜ˆ
isLive boolean ์•„๋‹ˆ์š”
doSpamCheck boolean ์•„๋‹ˆ์š”
sendEmails boolean ์•„๋‹ˆ์š”
populateNotifications boolean ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: Array<SaveComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ๋‚ด์šฉ ์„ค์ • Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
broadcastId string ์˜ˆ
commentTextUpdateRequest CommentTextUpdateRequest ์˜ˆ
editKey string ์•„๋‹ˆ์˜ค
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: SetCommentText200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€์—์„œ ์‚ฌ์šฉ์ž ์ฐจ๋‹จ ํ•ด์ œ Internal Link

Parameters

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
unBlockFromCommentParams UnBlockFromCommentParams ์˜ˆ
userId string ์•„๋‹ˆ์˜ค
anonUserId string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: UnBlockCommentPublic200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์‹ ๊ณ  ์ทจ์†Œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
userId string ์•„๋‹ˆ์š”
anonUserId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: FlagComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์ž ๊ธˆ ํ•ด์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
broadcastId string ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: LockComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ๊ณ ์ • ํ•ด์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
commentId string ์˜ˆ
broadcastId string ์˜ˆ
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: PinComment200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
updatableCommentParams UpdatableCommentParams ์˜ˆ
contextUserId string ์•„๋‹ˆ์š”
doSpamCheck boolean ์•„๋‹ˆ์š”
isLive boolean ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€ ํˆฌํ‘œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string Yes
commentId string Yes
urlId string Yes
broadcastId string Yes
voteBodyParams VoteBodyParams Yes
sessionId string No
sso string No

์‘๋‹ต

๋ฐ˜ํ™˜: VoteComment200Response

์˜ˆ์ œ

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

๋„๋ฉ”์ธ ๊ตฌ์„ฑ ์ถ”๊ฐ€ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
addDomainConfigParams AddDomainConfigParams ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: AddDomainConfig200Response


๋„๋ฉ”์ธ ๊ตฌ์„ฑ ์‚ญ์ œ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
domain string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteDomainConfig200Response


๋„๋ฉ”์ธ ๊ตฌ์„ฑ ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
domain string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetDomainConfig200Response


๋„๋ฉ”์ธ ๊ตฌ์„ฑ ๋ชฉ๋ก ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetDomainConfigs200Response


๋„๋ฉ”์ธ ๊ตฌ์„ฑ ๋ถ€๋ถ„ ์ˆ˜์ • Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
domainToUpdate string ์˜ˆ
patchDomainConfigParams PatchDomainConfigParams ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetDomainConfig200Response


๋„๋ฉ”์ธ ๊ตฌ์„ฑ ๊ต์ฒด Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
domainToUpdate string ์˜ˆ
updateDomainConfigParams UpdateDomainConfigParams ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetDomainConfig200Response


์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createEmailTemplateBody CreateEmailTemplateBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateEmailTemplate200Response

์˜ˆ์ œ

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

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteEmailTemplate ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_7f4c9d1e';
3const templateId: string = 'tmpl_welcome_2024-03';
4const notifyAdmin: boolean | undefined = true; // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ˆ์‹œ
5
6const result: FlagCommentPublic200Response = await deleteEmailTemplate(tenantId, templateId);
7

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง ์˜ค๋ฅ˜ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
errorId string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteEmailTemplateRenderError ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_7f3b4c2a';
3const templateEnvironment: string | undefined = 'production'; // ์„ ํƒ์  ํ™˜๊ฒฝ ์„ ํƒ๊ธฐ
4const id: string = `emailTemplates/${templateEnvironment ?? 'staging'}/welcome_v2`;
5const errorId: string = 'err_5a9d2f1c';
6const result: FlagCommentPublic200Response = await deleteEmailTemplateRenderError(tenantId, id, errorId);
7console.log(result);
8

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplate200Response

์˜ˆ์ œ

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

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์ •์˜ ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplateDefinitions200Response

์˜ˆ์ œ

getEmailTemplateDefinitions ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_acme_eu_01';
3const templates: GetEmailTemplateDefinitions200Response = await getEmailTemplateDefinitions(tenantId);
4console.log('Email template definitions loaded for', tenantId, templates);
5

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง ์˜ค๋ฅ˜ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplateRenderErrors200Response

์˜ˆ์ œ

getEmailTemplateRenderErrors ์˜ˆ์ œ
Copy Copy
1
2(async () => {
3 const tenantId: string = 'acme-tenant-42';
4 const id: string = 'tmpl_3fa85f64-5717-4562-b3fc-2c963f66afa6';
5 const skip: number = 20;
6 const result: GetEmailTemplateRenderErrors200Response = await getEmailTemplateRenderErrors(tenantId, id, skip);
7 console.log(result);
8})();
9

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
skip number ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplates200Response

์˜ˆ์ œ

getEmailTemplates ์˜ˆ์ œ
Copy Copy
1
2async function main(): Promise<void> {
3 const tenantId: string = 'tenant_5f3a9c2b';
4 const templates: GetEmailTemplates200Response = await getEmailTemplates(tenantId);
5 const skip: number = 20;
6 const pagedTemplates: GetEmailTemplates200Response = await getEmailTemplates(tenantId, skip);
7 console.log(templates, pagedTemplates);
8}
9main();
10

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ๋ Œ๋”๋ง Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
renderEmailTemplateBody RenderEmailTemplateBody ์˜ˆ
locale string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: RenderEmailTemplate200Response

์˜ˆ์ œ

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

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateEmailTemplateBody UpdateEmailTemplateBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

์ด๋ฒคํŠธ ๋กœ๊ทธ ์กฐํšŒ Internal Link

req tenantId urlId userIdWS

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlId string ์˜ˆ
userIdWS string ์˜ˆ
startTime number ์˜ˆ
endTime number ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetEventLog200Response

์˜ˆ์ œ

getEventLog ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'fastcomments-tenant-01';
3const urlId: string = 'article-2026-03-25';
4const userIdWS: string | undefined = undefined; // ์„ ํƒ์  ์—…์ŠคํŠธ๋ฆผ ๊ฐ’
5const startTime: number = Date.parse('2026-03-01T00:00:00Z');
6const endTime: number = Date.parse('2026-03-25T23:59:59Z');
7
8const eventLogResponse: GetEventLog200Response = await getEventLog(
9 tenantId,
10 urlId,
11 userIdWS ?? 'ws_user_8b1f',
12 startTime,
13 endTime
14);
15

๊ธ€๋กœ๋ฒŒ ์ด๋ฒคํŠธ ๋กœ๊ทธ ์กฐํšŒ Internal Link

์š”์ฒญ tenantId urlId userIdWS

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
urlId string ์˜ˆ
userIdWS string ์˜ˆ
startTime number ์˜ˆ
endTime number ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetEventLog200Response

์˜ˆ์ œ

getGlobalEventLog ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant-84b2f1";
3const urlId: string = "article-6721";
4const userIdWS: string = "ws-conn-9a3c";
5const startTime: number = Date.now() - 7 * 24 * 60 * 60 * 1000; // 7์ผ ์ „
6const endTimeOptional: number | undefined = undefined; // ์„ ํƒ์  ๊ธฐ๊ฐ„ ์ข…๋ฃŒ
7const endTime: number = endTimeOptional ?? Date.now();
8const eventLog: GetEventLog200Response = await getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime);
9

ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
createFeedPostParams CreateFeedPostParams ์˜ˆ
broadcastId string ์•„๋‹ˆ์š”
isLive boolean ์•„๋‹ˆ์š”
doSpamCheck boolean ์•„๋‹ˆ์š”
skipDupCheck boolean ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: CreateFeedPost200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createFeedPostParams CreateFeedPostParams ์˜ˆ
broadcastId string ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: CreateFeedPostPublic200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
postId string ์˜ˆ
broadcastId string ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteFeedPostPublic200Response

์˜ˆ์ œ

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

ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ Internal Link

req tenantId afterId

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
afterId string ์•„๋‹ˆ์š”
limit number ์•„๋‹ˆ์š”
tags Array ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetFeedPosts200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ Internal Link

req tenantId afterId

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
afterId string ์•„๋‹ˆ์˜ค
limit number ์•„๋‹ˆ์˜ค
tags Array ์•„๋‹ˆ์˜ค
sso string ์•„๋‹ˆ์˜ค
isCrawler boolean ์•„๋‹ˆ์˜ค
includeUserInfo boolean ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetFeedPostsPublic200Response

์˜ˆ์ œ

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

ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ํ†ต๊ณ„ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
postIds Array ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetFeedPostsStats200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ์‚ฌ์šฉ์ž ๋ฐ˜์‘ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
postIds Array ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserReactsPublic200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ์— ๋ฐ˜์‘ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
postId string ์˜ˆ
reactBodyParams ReactBodyParams ์˜ˆ
isUndo boolean ์•„๋‹ˆ์š”
broadcastId string ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: ReactFeedPostPublic200Response

์˜ˆ์ œ

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

ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
feedPost FeedPost ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

updateFeedPost ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'acme-global-tenant-42';
3const id: string = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
4
5const asset: FeedPostMediaItemAsset = {
6 url: 'https://cdn.acme.com/images/product-launch.jpg',
7 mimeType: 'image/jpeg',
8 width: 1200,
9 height: 630
10};
11
12const mediaItem: FeedPostMediaItem = {
13 id: 'media-001',
14 type: 'image',
15 asset
16};
17
18const link: FeedPostLink = {
19 url: 'https://acme.com/blog/product-launch',
20 title: 'Product Launch Details'
21};
22
23const feedPost: FeedPost = {
24 title: 'Introducing the Q3 Product Suite',
25 body: 'We are excited to unveil our new lineup for Q3, focusing on performance and security improvements.',
26 media: [mediaItem], // ์„ ํƒ์  ๋ฐฐ์—ด ํฌํ•จ
27 links: [link], // ์„ ํƒ์  ๋งํฌ ํฌํ•จ
28 isPublished: true // ์—ฌ๊ธฐ์„œ๋Š” ์„ ํƒ์  ๊ฒŒ์‹œ ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ๋จ
29};
30
31const result: FlagCommentPublic200Response = await updateFeedPost(tenantId, id, feedPost);
32

๊ณต๊ฐœ ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
postId string ์˜ˆ
updateFeedPostParams UpdateFeedPostParams ์˜ˆ
broadcastId string ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: CreateFeedPostPublic200Response

์˜ˆ์ œ

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

๊ณต๊ฐœ ๋Œ“๊ธ€ ์‹ ๊ณ  Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string Yes
commentId string Yes
isFlagged boolean Yes
sso string No

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

ํ•ด์‹œํƒœ๊ทธ ์ถ”๊ฐ€ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์•„๋‹ˆ์š”
createHashTagBody CreateHashTagBody ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: AddHashTag200Response

์˜ˆ์ œ

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

ํ•ด์‹œํƒœ๊ทธ ์ผ๊ด„ ์ถ”๊ฐ€ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์•„๋‹ˆ์˜ค
bulkCreateHashTagsBody BulkCreateHashTagsBody ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: AddHashTagsBulk200Response

์˜ˆ์‹œ

addHashTagsBulk ์˜ˆ์‹œ
Copy Copy
1
2// ํ…Œ๋„ŒํŠธ ์‹๋ณ„์ž ์ƒ์„ฑ (์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜)
3const tenantId: string = "tenant_9f8c2b7a";
4
5// ๊ฐœ๋ณ„ ํƒœ๊ทธ ํ•ญ๋ชฉ ์ค€๋น„
6const tag1: BulkCreateHashTagsBodyTagsInner = {
7 name: "product-feedback",
8 label: "Product Feedback",
9 color: "#1f8a70",
10 description: "User suggestions and enhancement requests",
11 isActive: true
12};
13
14const tag2: BulkCreateHashTagsBodyTagsInner = {
15 name: "bug-report",
16 label: "Bug Report",
17 color: "#d64545",
18 description: "User-reported defects and issues",
19 isActive: true
20};
21
22// ์ผ๊ด„ ์ƒ์„ฑ ๋ณธ๋ฌธ (์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜)
23const bulkCreateHashTagsBody: BulkCreateHashTagsBody = {
24 tags: [tag1, tag2]
25};
26
27// ์ „์—ญ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ํƒ€์ž…์ด ์ง€์ •๋œ ๊ฒฐ๊ณผ๋ฅผ ํ• ๋‹น
28const result: AddHashTagsBulk200Response = await addHashTagsBulk(tenantId, bulkCreateHashTagsBody);
29

ํ•ด์‹œํƒœ๊ทธ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tag string ์˜ˆ
tenantId string ์•„๋‹ˆ์˜ค
deleteHashTagRequest DeleteHashTagRequest ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteHashTag ์˜ˆ์ œ
Copy Copy
1
2const tag: string = "breaking-news";
3const tenantId: string = "tenant_12345";
4const deleteRequest: DeleteHashTagRequest = { initiatedBy: "moderator@newsorg.com", purgeAllOccurrences: true };
5const result: FlagCommentPublic200Response = await deleteHashTag(tag, tenantId, deleteRequest);
6

ํ•ด์‹œํƒœ๊ทธ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
page number ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetHashTags200Response

์˜ˆ์ œ

getHashTags ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'acme-tenant-42';
3const pageNumber: number = 2;
4const responseWithPage: GetHashTags200Response = await getHashTags(tenantId, pageNumber);
5const responseWithoutPage: GetHashTags200Response = await getHashTags(tenantId);
6

ํ•ด์‹œํƒœ๊ทธ ๋ถ€๋ถ„ ์ˆ˜์ • Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tag string ์˜ˆ
tenantId string ์•„๋‹ˆ์˜ค
updateHashTagBody UpdateHashTagBody ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: PatchHashTag200Response

์˜ˆ์ œ

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

๋ชจ๋”๋ ˆ์ดํ„ฐ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createModeratorBody CreateModeratorBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateModerator200Response

์˜ˆ์ œ

createModerator ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_7d9f2b4a';
3const customConfig: CustomConfigParameters = { timezone: 'UTC', moderationQueueEnabled: true };
4const createModeratorBody: CreateModeratorBody = {
5 email: 'jane.martin@publisher.com',
6 displayName: 'Jane Martin',
7 roles: ['moderator'],
8 sendWelcomeEmail: true,
9 customConfig
10};
11const response: CreateModerator200Response = await createModerator(tenantId, createModeratorBody);
12

๋ชจ๋”๋ ˆ์ดํ„ฐ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
sendEmail string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

๋ชจ๋”๋ ˆ์ดํ„ฐ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetModerator200Response

์˜ˆ์ œ

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

๋ชจ๋”๋ ˆ์ดํ„ฐ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetModerators200Response

์˜ˆ์ œ

getModerators ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant-12345-prod';
3const moderatorsPage1: GetModerators200Response = await getModerators(tenantId);
4const moderatorsPage2: GetModerators200Response = await getModerators(tenantId, 50);
5

์ดˆ๋Œ€ ์ „์†ก Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
fromName string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

๋ชจ๋”๋ ˆ์ดํ„ฐ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
updateModeratorBody UpdateModeratorBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

updateModerator ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "acme-enterprises-42";
3const id: string = "moderator_517";
4const updateModeratorBody: UpdateModeratorBody = {
5 displayName: "Sofia Martinez",
6 email: "sofia.martinez@acme.com",
7 permissions: ["approve_comments", "flag_spam", "suspend_users"],
8 active: true,
9 avatarUrl: "https://cdn.acme.com/avatars/sofia.jpg" // ์„ ํƒ์  ํ•„๋“œ ์˜ˆ์‹œ
10};
11const result: FlagCommentPublic200Response = await updateModerator(tenantId, id, updateModeratorBody);
12

์•Œ๋ฆผ ์ˆ˜ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteNotificationCount ์˜ˆ์ œ
Copy Copy
1
2const tenantSuffix: string | undefined = undefined;
3const tenantId: string = tenantSuffix ? `tenant-${tenantSuffix}` : 'tenant-9142a7';
4const id: string = '3f9b2a44-1c2e-4d3b-9f6a-8e7c6d5b2a1f';
5const result: FlagCommentPublic200Response = await deleteNotificationCount(tenantId, id);
6console.log(result);
7

์บ์‹œ๋œ ์•Œ๋ฆผ ์ˆ˜ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string Yes
id string Yes

์‘๋‹ต

Returns: GetCachedNotificationCount200Response

์˜ˆ์ œ

getCachedNotificationCount ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_acme_42';
3const id: string = 'user_00012345';
4const includeUnreadOnly: boolean | undefined = true; // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ํ”Œ๋ž˜๊ทธ (์˜ˆ์‹œ)
5const result: GetCachedNotificationCount200Response = await getCachedNotificationCount(tenantId, id);
6

์•Œ๋ฆผ ์ˆ˜ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์•„๋‹ˆ์š”
urlId string ์•„๋‹ˆ์š”
fromCommentId string ์•„๋‹ˆ์š”
viewed boolean ์•„๋‹ˆ์š”
type string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetNotificationCount200Response

์˜ˆ์ œ

getNotificationCount ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_abc123';
3const userId: string = 'user_987654321';
4const urlId: string = 'https://example.com/news/2026/new-features';
5const viewed: boolean = false;
6const type: string = 'reply';
7const notificationCountResponse: GetNotificationCount200Response = await getNotificationCount(tenantId, userId, urlId, undefined, viewed, type);
8

์•Œ๋ฆผ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์•„๋‹ˆ์˜ค
urlId string ์•„๋‹ˆ์˜ค
fromCommentId string ์•„๋‹ˆ์˜ค
viewed boolean ์•„๋‹ˆ์˜ค
type string ์•„๋‹ˆ์˜ค
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetNotifications200Response

์˜ˆ์ œ

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

์•Œ๋ฆผ ์—…๋ฐ์ดํŠธ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
updateNotificationBody UpdateNotificationBody ์˜ˆ
userId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

updateNotification ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_prod_8f4b2c';
3const id: string = 'notification_61a2e9';
4const userId: string = 'moderator_107';
5const updateNotificationBody: UpdateNotificationBody = {
6 name: 'Flagged Comment Notification',
7 enabled: true,
8 channels: ['email', 'inbox'],
9 templateId: 'tmpl_mod_alerts_01',
10 severity: 'high'
11};
12const result: FlagCommentPublic200Response = await updateNotification(tenantId, id, updateNotificationBody, userId);
13

ํŽ˜์ด์ง€ ์ถ”๊ฐ€ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createAPIPageData CreateAPIPageData ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: AddPageAPIResponse

ํŽ˜์ด์ง€ ์‚ญ์ œ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: DeletePageAPIResponse


URL ID๋กœ ํŽ˜์ด์ง€ ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlId string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetPageByURLIdAPIResponse


ํŽ˜์ด์ง€ ๋ชฉ๋ก ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetPagesAPIResponse


ํŽ˜์ด์ง€ ๋ถ€๋ถ„ ์ˆ˜์ • Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateAPIPageData UpdateAPIPageData ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: PatchPageAPIResponse


๋Œ€๊ธฐ ์ค‘์ธ ์›นํ›… ์ด๋ฒคํŠธ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deletePendingWebhookEvent ์˜ˆ์ œ
Copy Copy
1
2(async () => {
3 const tenantId: string = 'tenant_42f7c9b1';
4 const id: string = 'pending_webhook_ev_8f3b9a2d';
5 const reason?: string = undefined; // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ˆ์‹œ (ํ•จ์ˆ˜์—์„œ ์š”๊ตฌ๋˜์ง€ ์•Š์Œ)
6 const result: FlagCommentPublic200Response = await deletePendingWebhookEvent(tenantId, id);
7 console.log(result);
8})();
9

๋Œ€๊ธฐ ์ค‘์ธ ์›นํ›… ์ด๋ฒคํŠธ ์ˆ˜ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์•„๋‹ˆ์š”
externalId string ์•„๋‹ˆ์š”
eventType string ์•„๋‹ˆ์š”
type string ์•„๋‹ˆ์š”
domain string ์•„๋‹ˆ์š”
attemptCountGT number ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetPendingWebhookEventCount200Response

์˜ˆ์ œ

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

๋Œ€๊ธฐ ์ค‘์ธ ์›นํ›… ์ด๋ฒคํŠธ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์•„๋‹ˆ์˜ค
externalId string ์•„๋‹ˆ์˜ค
eventType string ์•„๋‹ˆ์˜ค
type string ์•„๋‹ˆ์˜ค
domain string ์•„๋‹ˆ์˜ค
attemptCountGT number ์•„๋‹ˆ์˜ค
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetPendingWebhookEvents200Response

์˜ˆ์ œ

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

์งˆ๋ฌธ ์„ค์ • ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createQuestionConfigBody CreateQuestionConfigBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateQuestionConfig200Response

์˜ˆ์ œ

createQuestionConfig ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_9f8b2c";
3const option: QuestionConfigCustomOptionsInner = { id: "opt_yes", label: "Yes, helpful", value: "yes" };
4const createQuestionConfigBody: CreateQuestionConfigBody = {
5 title: "Article usefulness",
6 prompt: "Was this article helpful?",
7 type: "singleChoice",
8 required: false, // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ˆ์‹œ
9 options: [option],
10 saveBehavior: "immediate"
11};
12const result: CreateQuestionConfig200Response = await createQuestionConfig(tenantId, createQuestionConfigBody);
13

์งˆ๋ฌธ ์„ค์ • ์‚ญ์ œ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

์งˆ๋ฌธ ์„ค์ • ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionConfig200Response

์˜ˆ์ œ

getQuestionConfig ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'acme-tenant-92';
3const id: string = 'question-2026-07-42';
4const response: GetQuestionConfig200Response = await getQuestionConfig(tenantId, id);
5
6function summarize(cfg: GetQuestionConfig200Response, includeDetails?: boolean): string {
7 return includeDetails ? 'Question config (detailed)' : 'Question config (summary)';
8}
9
10const summary: string = summarize(response);
11

์งˆ๋ฌธ ์„ค์ • ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
skip number ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionConfigs200Response

์˜ˆ์ œ

getQuestionConfigs ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_acme_9876";
3const configsWithoutSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId);
4const configsWithSkip: GetQuestionConfigs200Response = await getQuestionConfigs(tenantId, 20);
5

์งˆ๋ฌธ ์„ค์ • ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateQuestionConfigBody UpdateQuestionConfigBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

์งˆ๋ฌธ ๊ฒฐ๊ณผ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createQuestionResultBody CreateQuestionResultBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateQuestionResult200Response

์˜ˆ์ œ

createQuestionResult ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant-72b1f4";
3const meta: MetaItem[] = [{ key: "platform", value: "web" }];
4const createQuestionResultBody: CreateQuestionResultBody = {
5 questionId: "question-83472",
6 commenterId: "user-5521",
7 answers: [{ subQuestionId: "sq-1", value: "Yes" }],
8 meta, // ์„ ํƒ์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
9 note: "Follow-up requested" // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ˆ์‹œ
10};
11const result: CreateQuestionResult200Response = await createQuestionResult(tenantId, createQuestionResultBody);
12

์งˆ๋ฌธ ๊ฒฐ๊ณผ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteQuestionResult ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "org-82479";
3const questionId: string = "q-6a3d2e1f";
4const includeArchived?: boolean = false; // ๋Œ€์ฒด ๋Œ€์ƒ ์„ ํƒ์„ ์‹œ์—ฐํ•˜๋Š” ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜
5const targetId: string = includeArchived ? "q-archived-112233" : questionId;
6const result: FlagCommentPublic200Response = await deleteQuestionResult(tenantId, targetId);
7

์งˆ๋ฌธ ๊ฒฐ๊ณผ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionResult200Response

์˜ˆ์ œ

getQuestionResult ์˜ˆ์ œ
Copy Copy
1
2const post: { title: string; questionId?: string } = { title: 'Product feedback' };
3const tenantId: string = 'acme-corp-tenant-01';
4const id: string = post.questionId ?? 'q-8f3a7b2c4d9e';
5const result: GetQuestionResult200Response = await getQuestionResult(tenantId, id);
6

์งˆ๋ฌธ ๊ฒฐ๊ณผ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlId string ์•„๋‹ˆ์š”
userId string ์•„๋‹ˆ์š”
startDate string ์•„๋‹ˆ์š”
questionId string ์•„๋‹ˆ์š”
questionIds string ์•„๋‹ˆ์š”
skip number ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionResults200Response

์˜ˆ์ œ

getQuestionResults ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_acme_001";
3const urlId: string = "articles/product-launch-2026";
4const userId: string = "user_2048";
5const startDate: string = "2026-03-01T00:00:00Z";
6const questionId: string | undefined = undefined;
7const questionIds: string | undefined = "q_101,q_102";
8const skip: number | undefined = 0;
9
10const result: GetQuestionResults200Response = await getQuestionResults(tenantId, urlId, userId, startDate, questionId, questionIds, skip);
11

์งˆ๋ฌธ ๊ฒฐ๊ณผ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateQuestionResultBody UpdateQuestionResultBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

updateQuestionResult ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_7f8b3c';
3const id: string = 'questionResult_4621';
4const updateQuestionResultBody: UpdateQuestionResultBody = {
5 questionId: 'q_1024',
6 result: 'flagged',
7 score: 0.92,
8 notes: 'Automated moderation flagged for review',
9 meta: [{ key: 'source', value: 'ai-moderator' }] as MetaItem[], // ์„ ํƒ์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
10 status: { code: 'review_pending' } as APIStatus
11} as UpdateQuestionResultBody;
12const result: FlagCommentPublic200Response = await updateQuestionResult(tenantId, id, updateQuestionResultBody);
13

์งˆ๋ฌธ ๊ฒฐ๊ณผ ์ง‘๊ณ„ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
questionId string ์•„๋‹ˆ์˜ค
questionIds Array ์•„๋‹ˆ์˜ค
urlId string ์•„๋‹ˆ์˜ค
timeBucket AggregateTimeBucket ์•„๋‹ˆ์˜ค
startDate Date ์•„๋‹ˆ์˜ค
forceRecalculate boolean ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: AggregateQuestionResults200Response

์˜ˆ์ œ

aggregateQuestionResults ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_acme_98765';
3const questionIds: Array<string> = ['q-102', 'q-103'];
4const urlId: string = 'url_55b3';
5const timeBucket: AggregateTimeBucket = { unit: 'day', size: 7 };
6const startDate: Date = new Date('2026-01-01T00:00:00Z');
7const forceRecalculate: boolean = true;
8
9const result: AggregateQuestionResults200Response = await aggregateQuestionResults(
10 tenantId,
11 undefined, // questionId๋Š” ์ƒ๋žต๋จ, ๋Œ€์‹  questionIds ์‚ฌ์šฉ
12 questionIds,
13 urlId,
14 timeBucket,
15 startDate,
16 forceRecalculate
17);
18

์งˆ๋ฌธ ๊ฒฐ๊ณผ ์ผ๊ด„ ์ง‘๊ณ„ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
bulkAggregateQuestionResultsRequest BulkAggregateQuestionResultsRequest ์˜ˆ
forceRecalculate boolean ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: BulkAggregateQuestionResults200Response

์˜ˆ์ œ

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

๋Œ“๊ธ€๊ณผ ์งˆ๋ฌธ ๊ฒฐ๊ณผ ๊ฒฐํ•ฉ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
questionId string ์•„๋‹ˆ์š”
questionIds Array ์•„๋‹ˆ์š”
urlId string ์•„๋‹ˆ์š”
startDate Date ์•„๋‹ˆ์š”
forceRecalculate boolean ์•„๋‹ˆ์š”
minValue number ์•„๋‹ˆ์š”
maxValue number ์•„๋‹ˆ์š”
limit number ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: CombineCommentsWithQuestionResults200Response

์˜ˆ์ œ

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

SSO ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createAPISSOUserData CreateAPISSOUserData ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: AddSSOUserAPIResponse


SSO ์‚ฌ์šฉ์ž ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
deleteComments boolean ์•„๋‹ˆ์˜ค
commentDeleteMode string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteSSOUserAPIResponse


์ด๋ฉ”์ผ๋กœ SSO ์‚ฌ์šฉ์ž ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
email string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetSSOUserByEmailAPIResponse


ID๋กœ SSO ์‚ฌ์šฉ์ž ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetSSOUserByIdAPIResponse


SSO ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetSSOUsers200Response


SSO ์‚ฌ์šฉ์ž ๋ถ€๋ถ„ ์ˆ˜์ • Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateAPISSOUserData UpdateAPISSOUserData ์˜ˆ
updateComments boolean ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: PatchSSOUserAPIResponse

SSO ์‚ฌ์šฉ์ž ๊ต์ฒด Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateAPISSOUserData UpdateAPISSOUserData ์˜ˆ
updateComments boolean ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: PutSSOUserAPIResponse


๊ตฌ๋… ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createAPIUserSubscriptionData CreateAPIUserSubscriptionData ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateSubscriptionAPIResponse

์˜ˆ์ œ

createSubscription ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "acme-corp-123";
3const createAPIUserSubscriptionData: CreateAPIUserSubscriptionData = {
4 userId: "u_987654",
5 planId: "pro_monthly",
6 startDate: new Date().toISOString(),
7 trialDays: 14, // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ˆ์‹œ
8 metadata: { source: "marketing-email" } // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ˆ์‹œ
9};
10const result: CreateSubscriptionAPIResponse = await createSubscription(tenantId, createAPIUserSubscriptionData);
11const subscription: APIUserSubscription = result.subscription;
12

๊ตฌ๋… ์‚ญ์ œ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
userId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteSubscriptionAPIResponse


๊ตฌ๋… ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetSubscriptionsAPIResponse

์˜ˆ์ œ

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

๊ตฌ๋… ์—…๋ฐ์ดํŠธ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateAPIUserSubscriptionData UpdateAPIUserSubscriptionData ์˜ˆ
userId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: UpdateSubscriptionAPIResponse

์˜ˆ์ œ

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

ํ…Œ๋„ŒํŠธ ์ผ์ผ ์‚ฌ์šฉ๋Ÿ‰ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
yearNumber number ์•„๋‹ˆ์˜ค
monthNumber number ์•„๋‹ˆ์˜ค
dayNumber number ์•„๋‹ˆ์˜ค
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantDailyUsages200Response

์˜ˆ์ œ

getTenantDailyUsages ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_5f4a3b2c-1d6e-4f9a-b9d8-123456789abc';
3const yearNumber: number = 2026;
4const monthNumber: number = 3;
5const dayNumber: number = 24;
6const skip: number = 0;
7
8const result: GetTenantDailyUsages200Response = await getTenantDailyUsages(tenantId, yearNumber, monthNumber, dayNumber, skip);
9

ํ…Œ๋„ŒํŠธ ํŒจํ‚ค์ง€ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
createTenantPackageBody CreateTenantPackageBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTenantPackage200Response

์˜ˆ์ œ

createTenantPackage ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_acme_001';
3const createTenantPackageBody: CreateTenantPackageBody = {
4 packageName: 'Standard Moderation',
5 description: 'Suitable for small-to-medium sites: basic moderation, spam rules, and analytics',
6 maxCommentsPerMinute: 50,
7 allowAnonymousComments: false, // ์ œ๊ณต๋œ ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜
8 // ์„ ํƒ์  ํ•„๋“œ ์ƒ๋žต: ์˜ˆ: ๊ณ ๊ธ‰ ์ค‘์žฌ ๊ทœ์น™, custom CSS
9 customConfigParameters: {
10 enableProfanityFilter: true,
11 imageContentProfanityLevel: 'medium' // ์˜ˆ์‹œ ๊ฐ’; CustomConfigParameters ํ˜•ํƒœ ์‚ฌ์šฉ
12 }
13};
14const response: CreateTenantPackage200Response = await createTenantPackage(tenantId, createTenantPackageBody);
15console.log(response);
16

ํ…Œ๋„ŒํŠธ ํŒจํ‚ค์ง€ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteTenantPackage ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_acme_corp_987';
3const packageId: string = 'pkg_pro_2026_01';
4type DeleteOptions = { force?: boolean; notify?: boolean };
5const options: DeleteOptions = { force: true }; // ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ˆ์‹œ
6const result: FlagCommentPublic200Response = await deleteTenantPackage(tenantId, packageId);
7

ํ…Œ๋„ŒํŠธ ํŒจํ‚ค์ง€ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantPackage200Response

์˜ˆ์ œ

getTenantPackage ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_7f3b2c8';
3const packageId: string = 'pkg_standard_2026';
4const requestOptions: { includeConfig?: boolean } = { includeConfig: true };
5const packageResponse: GetTenantPackage200Response = await getTenantPackage(tenantId, packageId);
6

ํ…Œ๋„ŒํŠธ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantPackages200Response

์˜ˆ์ œ

getTenantPackages ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_7f8e3b4c";
3const skip: number = 20;
4const packagesDefault: GetTenantPackages200Response = await getTenantPackages(tenantId);
5const packagesWithSkip: GetTenantPackages200Response = await getTenantPackages(tenantId, skip);
6

ํ…Œ๋„ŒํŠธ ํŒจํ‚ค์ง€ ๊ต์ฒด Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
replaceTenantPackageBody ReplaceTenantPackageBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

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

ํ…Œ๋„ŒํŠธ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateTenantPackageBody UpdateTenantPackageBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

updateTenantPackage ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_3b7f9d-prod";
3const id: string = "pkg_enterprise_2026";
4const updateTenantPackageBody: UpdateTenantPackageBody = {
5 name: "Enterprise Plus",
6 isActive: true,
7 // ์„ ํƒ์  ํ•„๋“œ๋Š” ์˜๋„์ ์œผ๋กœ ์ƒ๋žต๋จ(์˜ˆ: description, limits)
8} as UpdateTenantPackageBody;
9const result: FlagCommentPublic200Response = await updateTenantPackage(tenantId, id, updateTenantPackageBody);
10

ํ…Œ๋„ŒํŠธ ์‚ฌ์šฉ์ž ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createTenantUserBody CreateTenantUserBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTenantUser200Response

์˜ˆ์ œ

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

ํ…Œ๋„ŒํŠธ ์‚ฌ์šฉ์ž ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
deleteComments string ์•„๋‹ˆ์˜ค
commentDeleteMode string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteTenantUser ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = '4f3a9b2e-1c6a-4f7b-9e2a-0b8d6f1c2a3e';
3const userId: string = '9d2f7b3a-5c4e-48a2-b1f0-6c7d8e9f0a12';
4const deleteComments: string = 'true';
5const commentDeleteMode: string = 'permanent';
6const result: FlagCommentPublic200Response = await deleteTenantUser(tenantId, userId, deleteComments, commentDeleteMode);
7

ํ…Œ๋„ŒํŠธ ์‚ฌ์šฉ์ž ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantUser200Response

์˜ˆ์ œ

getTenantUser ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_fc5a9b2c';
3const userId: string = 'user_0a12b3';
4const result: GetTenantUser200Response = await getTenantUser(tenantId, userId);
5const user: User | undefined = (result as any).user; // ํŽ˜์ด๋กœ๋“œ์— ์ ‘๊ทผ
6const userEmail: string | undefined = user?.email;
7console.log('Fetched user email:', userEmail);
8

ํ…Œ๋„ŒํŠธ ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ Internal Link


Parameters

Name Type Required Description
tenantId string ์˜ˆ
skip number ์•„๋‹ˆ์š”

Response

๋ฐ˜ํ™˜: GetTenantUsers200Response

์˜ˆ์ œ

getTenantUsers ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_prod_8a3f2c';
3const skip: number = 50;
4const usersWithSkip: GetTenantUsers200Response = await getTenantUsers(tenantId, skip);
5const usersNoSkip: GetTenantUsers200Response = await getTenantUsers(tenantId);
6

ํ…Œ๋„ŒํŠธ ์‚ฌ์šฉ์ž ๊ต์ฒด Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
replaceTenantUserBody ReplaceTenantUserBody ์˜ˆ
updateComments string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

replaceTenantUser ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_9d8f4b2c';
3const id: string = 'user_f47ac10b';
4const replaceTenantUserBody: ReplaceTenantUserBody = {
5 externalId: 'ext-5234',
6 email: 'jane.doe@acme.com',
7 displayName: 'Jane Doe',
8 roles: ['moderator'],
9 metadata: { department: 'product', region: 'us-east-1' }
10};
11const updateComments: string = 'propagate-display-name-to-comments';
12
13const result: FlagCommentPublic200Response = await replaceTenantUser(tenantId, id, replaceTenantUserBody, updateComments);
14

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
redirectURL string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

sendLoginLink ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_12a9f3b7";
3const id: string = "user_84b2c7d1";
4const redirectURL: string = "https://app.mycompany.com/welcome?ref=login_email";
5const resultWithoutRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id);
6const resultWithRedirect: FlagCommentPublic200Response = await sendLoginLink(tenantId, id, redirectURL);
7

ํ…Œ๋„ŒํŠธ ์‚ฌ์šฉ์ž ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateTenantUserBody UpdateTenantUserBody ์˜ˆ
updateComments string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

updateTenantUser ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_8f3b2a9d";
3const id: string = "user_52c9f1ab";
4const updateTenantUserBody: UpdateTenantUserBody = {
5 email: "jane.doe@example.com",
6 displayName: "Jane Doe",
7 roles: ["moderator"],
8 isActive: true,
9 metadata: { signupSource: "sso", locale: "en-US" }
10};
11const updateComments: string = "Promoted to moderator and updated display name";
12const result: FlagCommentPublic200Response = await updateTenantUser(tenantId, id, updateTenantUserBody, updateComments);
13

ํ…Œ๋„ŒํŠธ ์ƒ์„ฑ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
createTenantBody CreateTenantBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTenant200Response

์˜ˆ์ œ

createTenant ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "acme-corp-001";
3const createTenantBody: CreateTenantBody = {
4 name: "Acme Corporation",
5 domain: "comments.acme.com",
6 adminContact: { name: "Jane Doe", email: "jane.doe@acme.com" },
7 billingInfo: { planId: "pro-monthly", billingContactEmail: "billing@acme.com" },
8 importedSite: { siteId: "site-123", siteName: "Acme Blog" } // ์„ ํƒ์ ์œผ๋กœ ๊ฐ€์ ธ์˜จ ์‚ฌ์ดํŠธ
9};
10const result: CreateTenant200Response = await createTenant(tenantId, createTenantBody);
11

ํ…Œ๋„ŒํŠธ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
sure string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

deleteTenant ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_7f3d2c";
3const id: string = "flag_8392b1a7";
4const sure: string = "confirmed";
5
6const responseWithoutSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id);
7const responseWithSure: FlagCommentPublic200Response = await deleteTenant(tenantId, id, sure);
8

ํ…Œ๋„ŒํŠธ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenant200Response

์˜ˆ์ œ

getTenant ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_9f4b2c1a";
3const idOverride: string | undefined = undefined; // ์„ ํƒ์  ์žฌ์ •์˜(๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ)
4const id: string = idOverride ?? "site_3e7a6b2f";
5const response: GetTenant200Response = await getTenant(tenantId, id);
6console.log(response);
7

ํ…Œ๋„ŒํŠธ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
meta string ์•„๋‹ˆ์š”
skip number ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenants200Response

์˜ˆ์ œ

getTenants ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_8421e7';
3const meta: string = 'include=domains,billing,customConfig';
4const skip: number = 20;
5
6const tenantsBasic: GetTenants200Response = await getTenants(tenantId);
7const tenantsWithOptions: GetTenants200Response = await getTenants(tenantId, meta, skip);
8

ํ…Œ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ
updateTenantBody UpdateTenantBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentPublic200Response

์˜ˆ์ œ

updateTenant ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_4821";
3const id: string = "flag_7b9e";
4const billingInfo: BillingInfo | undefined = undefined; // ์„ ํƒ ์‚ฌํ•ญ, ํ˜„์žฌ ์ฒญ๊ตฌ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด ์ƒ๋žต
5const updateTenantBody: UpdateTenantBody = {
6 name: "Acme News Comments",
7 defaultDomain: "comments.acme.com",
8 ...(billingInfo ? { billingInfo } : {})
9};
10const result: FlagCommentPublic200Response = await updateTenant(tenantId, id, updateTenantBody);
11

ํ‹ฐ์ผ“ ์ƒํƒœ ๋ณ€๊ฒฝ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์˜ˆ
id string ์˜ˆ
changeTicketStateBody ChangeTicketStateBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: ChangeTicketState200Response

์˜ˆ์ œ

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

ํ‹ฐ์ผ“ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์˜ˆ
createTicketBody CreateTicketBody ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTicket200Response

์˜ˆ์ œ

createTicket ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "acme-corp-001";
3const userId: string = "user_72b9f4";
4const createTicketBody: CreateTicketBody = {
5 subject: "Subscription renewal failed for card on file",
6 description: "Customer's card was declined by the payment processor during automatic renewal. Transaction ID: txn_9a8b7c. Please review gateway logs and retry.",
7 priority: "high", // ์„ ํƒ์  ํ•„๋“œ ์˜ˆ์‹œ
8 contactEmail: "billing@acme-corp.com", // ์„ ํƒ์  ์—ฐ๋ฝ์ฒ˜ ์ •๋ณด
9 relatedUrl: "https://acme-corp.com/account/billing"
10};
11const ticketResponse: CreateTicket200Response = await createTicket(tenantId, userId, createTicketBody);
12

ํ‹ฐ์ผ“ ์กฐํšŒ Internal Link


๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
userId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetTicket200Response

์˜ˆ์ œ

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

ํ‹ฐ์ผ“ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string Yes
userId string No
state number No
skip number No
limit number No

์‘๋‹ต

๋ฐ˜ํ™˜: GetTickets200Response

์˜ˆ์ œ

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

์ด๋ฏธ์ง€ ์—…๋กœ๋“œ Internal Link


์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ฐ ํฌ๊ธฐ ์กฐ์ •

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
file Blob ์˜ˆ
sizePreset SizePreset ์•„๋‹ˆ์š”
urlId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: UploadImageResponse


ID๋กœ ์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์ง„ํ–‰๋ฅ  ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ Type ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserBadgeProgressById200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ID๋กœ ๋ฐฐ์ง€ ์ง„ํ–‰๋ฅ  ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserBadgeProgressById200Response

์˜ˆ์ œ

getUserBadgeProgressByUserId ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_7f9c2d3b';
3const maybeUserId: string | undefined = 'user_4b8e1f9a'; // ์„ ํƒ์  ์†Œ์Šค(์—†์„ ์ˆ˜ ์žˆ์Œ)
4const userId: string = maybeUserId ?? 'user_fallback0001';
5const result: GetUserBadgeProgressById200Response = await getUserBadgeProgressByUserId(tenantId, userId);
6console.log(result);
7

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์ง„ํ–‰๋ฅ  ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์•„๋‹ˆ์˜ค
limit number ์•„๋‹ˆ์˜ค
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserBadgeProgressList200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์ƒ์„ฑ Internal Link

Parameters

Name Type Required Description
tenantId string ์˜ˆ
createUserBadgeParams CreateUserBadgeParams ์˜ˆ

Response

๋ฐ˜ํ™˜: CreateUserBadge200Response

Example

createUserBadge ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_84f3b2';
3const createUserBadgeParams: CreateUserBadgeParams = {
4 name: 'Top Contributor',
5 slug: 'top-contributor',
6 imageUrl: 'https://assets.fastcomments.com/badges/top-contributor.png',
7 description: 'Awarded for 100 helpful comments',
8 active: true,
9 criteria: { commentsCount: 100 }, // ์„ ํƒ์  ๊ธฐ์ค€
10 displayOrder: 10,
11 metadata: { featured: true } // ์„ ํƒ์  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
12};
13const result: CreateUserBadge200Response = await createUserBadge(tenantId, createUserBadgeParams);
14console.log(result);
15

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: UpdateUserBadge200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserBadge200Response

์˜ˆ์ œ

getUserBadge ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_acme_01";
3const id: string = "badge_8c7d2f";
4const response: GetUserBadge200Response = await getUserBadge(tenantId, id);
5

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ๋ชฉ๋ก ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
userId string ์•„๋‹ˆ์˜ค
badgeId string ์•„๋‹ˆ์˜ค
type number ์•„๋‹ˆ์˜ค
displayedOnComments boolean ์•„๋‹ˆ์˜ค
limit number ์•„๋‹ˆ์˜ค
skip number ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserBadges200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
updateUserBadgeParams UpdateUserBadgeParams ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: UpdateUserBadge200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ์•Œ๋ฆผ ์ˆ˜ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserNotificationCount200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ์•Œ๋ฆผ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
pageSize number ์•„๋‹ˆ์š”
afterId string ์•„๋‹ˆ์š”
includeContext boolean ์•„๋‹ˆ์š”
afterCreatedAt number ์•„๋‹ˆ์š”
unreadOnly boolean ์•„๋‹ˆ์š”
dmOnly boolean ์•„๋‹ˆ์š”
noDm boolean ์•„๋‹ˆ์š”
includeTranslations boolean ์•„๋‹ˆ์š”
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserNotifications200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ์•Œ๋ฆผ ์ˆ˜ ์ดˆ๊ธฐํ™” Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: ResetUserNotifications200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ์•Œ๋ฆผ ์ดˆ๊ธฐํ™” Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
afterId string ์•„๋‹ˆ์˜ค
afterCreatedAt number ์•„๋‹ˆ์˜ค
unreadOnly boolean ์•„๋‹ˆ์˜ค
dmOnly boolean ์•„๋‹ˆ์˜ค
noDm boolean ์•„๋‹ˆ์˜ค
sso string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: ResetUserNotifications200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ๋Œ“๊ธ€ ๊ตฌ๋… ์ƒํƒœ ์—…๋ฐ์ดํŠธ Internal Link


ํŠน์ • ๋Œ“๊ธ€์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string Yes
notificationId string Yes
optedInOrOut UpdateUserNotificationCommentSubscriptionStatusOptedInOrOutEnum Yes
commentId string Yes
sso string No

์‘๋‹ต

๋ฐ˜ํ™˜: UpdateUserNotificationStatus200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ํŽ˜์ด์ง€ ๊ตฌ๋… ์ƒํƒœ ์—…๋ฐ์ดํŠธ Internal Link

ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ๋…ํ•˜๋ฉด ์ƒˆ ๋ฃจํŠธ ๋Œ“๊ธ€์— ๋Œ€ํ•œ ์•Œ๋ฆผ์ด ์ƒ์„ฑ๋˜๋ฉฐ, ๋˜ํ•œ

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlId string ์˜ˆ
url string ์˜ˆ
pageTitle string ์˜ˆ
subscribedOrUnsubscribed UpdateUserNotificationPageSubscriptionStatusSubscribedOrUnsubscribedEnum ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: UpdateUserNotificationStatus200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ์•Œ๋ฆผ ์ƒํƒœ ์—…๋ฐ์ดํŠธ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
notificationId string ์˜ˆ
newStatus UpdateUserNotificationStatusNewStatusEnum ์˜ˆ
sso string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: UpdateUserNotificationStatus200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ์ ‘์† ์ƒํƒœ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlIdWS string ์˜ˆ
userIds string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserPresenceStatuses200Response

์˜ˆ์ œ

getUserPresenceStatuses ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_7f3a2b';
3const urlIdWS: string = 'articles/2026/03/25/fastcomments-integration';
4const maybeUserIds: string | undefined = 'user_123,user_456'; // ์„ ํƒ์  ์†Œ์Šค
5const userIds: string = maybeUserIds ?? 'user_123';
6const presence: GetUserPresenceStatuses200Response = await getUserPresenceStatuses(tenantId, urlIdWS, userIds);
7

์‚ฌ์šฉ์ž ๊ฒ€์ƒ‰ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ์œ ํ˜• ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlId string ์˜ˆ
usernameStartsWith string ์•„๋‹ˆ์˜ค
mentionGroupIds Array ์•„๋‹ˆ์˜ค
sso string ์•„๋‹ˆ์˜ค
searchSection SearchUsersSearchSectionEnum ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: SearchUsers200Response

์˜ˆ์ œ

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

์‚ฌ์šฉ์ž ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํ˜•์‹ ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
id string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetUser200Response

์˜ˆ์ œ

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

ํˆฌํ‘œ ์ƒ์„ฑ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
commentId string ์˜ˆ
direction CreateVoteDirectionEnum ์˜ˆ
userId string ์•„๋‹ˆ์š”
anonUserId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: VoteComment200Response

์˜ˆ์ œ

createVote ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'tenant_9f8b6a';
3const commentId: string = 'comment_3b7d2e';
4const direction: CreateVoteDirectionEnum = CreateVoteDirectionEnum.Up;
5const anonUserId: string = 'anon_4c2a1f';
6
7const voteResult: VoteComment200Response = await createVote(tenantId, commentId, direction, undefined, anonUserId);
8

ํˆฌํ‘œ ์‚ญ์ œ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
id string ์˜ˆ
editKey string ์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteCommentVote200Response

์˜ˆ์ œ

deleteVote ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = "tenant_7c3f2b4a";
3const voteId: string = "vote_4f8d9a11";
4const editKey: string = "edit_2b9f8c";
5const resultWithoutKey: DeleteCommentVote200Response = await deleteVote(tenantId, voteId);
6const resultWithKey: DeleteCommentVote200Response = await deleteVote(tenantId, voteId, editKey);
7

ํˆฌํ‘œ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

์ด๋ฆ„ ํƒ€์ž… ํ•„์ˆ˜ ์„ค๋ช…
tenantId string ์˜ˆ
urlId string ์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetVotes200Response

์˜ˆ์ œ

getVotes ์˜ˆ์ œ
Copy Copy
1
2const tenantId: string = 'acme-corp-8f3b';
3const refCampaign: string | undefined = 'newsletter-march2026'; // ์„ ํƒ์  ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜
4const urlId: string = `https://www.example.com/articles/2026/03/25/fastcomments-integration${refCampaign ? `?ref=${refCampaign}` : ''}`;
5
6const votes: GetVotes200Response = await getVotes(tenantId, urlId);
7

์‚ฌ์šฉ์ž ํˆฌํ‘œ ์กฐํšŒ Internal Link

๋งค๊ฐœ๋ณ€์ˆ˜

Name Type Required Description
tenantId string ์˜ˆ
urlId string ์˜ˆ
userId string ์•„๋‹ˆ์š”
anonUserId string ์•„๋‹ˆ์š”

์‘๋‹ต

๋ฐ˜ํ™˜: GetVotesForUser200Response

์˜ˆ์ œ

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

๋„์›€์„ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ?

JavaScript/TypeScript SDK์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ์„ ์ด์šฉํ•ด ์ฃผ์„ธ์š”:

๊ธฐ์—ฌ

๊ธฐ์—ฌ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๊ธฐ์—ฌ ์ง€์นจ์€ GitHub ์ €์žฅ์†Œ๋ฅผ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.