FastComments.com

FastComments C++ SDK


์ด๊ฒƒ์€ FastComments์˜ ๊ณต์‹ C++ SDK์ž…๋‹ˆ๋‹ค.

FastComments API์šฉ ๊ณต์‹ C++ SDK

๋ฆฌํฌ์ง€ํ† ๋ฆฌ

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


์š”๊ตฌ์‚ฌํ•ญ Internal Link


  • C++17 ์ด์ƒ
  • CMake 3.14 ์ด์ƒ
  • OpenSSL
  • C++ REST SDK (cpprestsdk)
  • Boost
  • Google Test (ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋จ)

์„ค์น˜ Internal Link

Install Dependencies

sudo apt install libcpprest-dev libboost-all-dev

Building from Source

mkdir build
cd build
cmake ..
make

Installing

sudo make install

Library Contents

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์ƒ์„ฑ๋œ API ํด๋ผ์ด์–ธํŠธ์™€ API ์ž‘์—…์„ ๋” ์‰ฝ๊ฒŒ ํ•ด์ฃผ๋Š” SSO ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Public vs Secured APIs

API ํด๋ผ์ด์–ธํŠธ์—๋Š” DefaultApi, PublicApi, ModerationApi ์„ธ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. DefaultApi๋Š” API ํ‚ค๊ฐ€ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ , PublicApi๋Š” ๋ธŒ๋ผ์šฐ์ €/๋ชจ๋ฐ”์ผ ์žฅ์น˜ ๋“ฑ์—์„œ ์ธ์ฆ ์—†์ด ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ModerationApi๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ ๋น ๋ฅธ ๋ชจ๋”๋ ˆ์ด์…˜ API๋ฅผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ModerationApi ๋ฉ”์„œ๋“œ๋Š” sso ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ด๋ฉฐ, SSO ๋˜๋Š” FastComments.com ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ํ†ตํ•ด ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  Internal Link

๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ID

์ผ๋ถ€ API ํ˜ธ์ถœ์—์„œ broadcastId๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด ์ด ID๊ฐ€ ๋‹ค์‹œ ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ, ํด๋ผ์ด์–ธํŠธ์—์„œ ๋‚™๊ด€์ ์œผ๋กœ ๋ณ€๊ฒฝ์„ ์ ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ๋ฌด์‹œํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋Œ€๋ถ€๋ถ„ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์•„๋งˆ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์—ฌ๊ธฐ์—๋Š” UUID๋ฅผ ์ „๋‹ฌํ•˜์„ธ์š”. ์ด ID๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์—์„œ ๋‘ ๋ฒˆ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SSO (์‹ฑ๊ธ€ ์‚ฌ์ธ์˜จ)

SSO ์˜ˆ์ œ๋Š” ์•„๋ž˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

SSO ์‚ฌ์šฉ๋ฒ• Internal Link


๊ฐ„๋‹จํ•œ SSO

#include <fastcomments/sso/fastcomments_sso.hpp>
#include <iostream>

using namespace fastcomments::sso;

int main() {
    SimpleSSOUserData user("user-123", "user@example.com", "https://example.com/avatar.jpg");
    FastCommentsSSO sso = FastCommentsSSO::newSimple(user);
    std::string token = sso.createToken();

    std::cout << "SSO Token: " << token << std::endl;
    return 0;
}

๋ณด์•ˆ SSO

#include <fastcomments/sso/fastcomments_sso.hpp>
#include <iostream>

using namespace fastcomments::sso;

int main() {
    SecureSSOUserData user("user-123", "user@example.com", "johndoe", "https://example.com/avatar.jpg");

    std::string apiKey = "your-api-key";
    FastCommentsSSO sso = FastCommentsSSO::newSecure(apiKey, user);
    std::string token = sso.createToken();

    std::cout << "Secure SSO Token: " << token << std::endl;
    return 0;
}

์ง‘๊ณ„ Internal Link

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

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
aggregationRequestAggregationRequestYes
optionsconst AggregateOptions&Yes

Response

๋ฐ˜ํ™˜: AggregateResponse

Example

aggregate ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4AggregationRequest aggregationRequest;
5aggregationRequest.setMetric(U("commentCount"));
6aggregationRequest.setStartDate(U("2023-01-01T00:00:00Z"));
7aggregationRequest.setEndDate(U("2023-12-31T23:59:59Z"));
8aggregationRequest.setFilters({ U("status:approved") });
9
10AggregateOptions options;
11options.limit = boost::optional<int>(100);
12options.includeMetadata = boost::optional<bool>(true);
13
14api->aggregate(tenantId, aggregationRequest, options)
15 .then([](pplx::task<std::shared_ptr<AggregateResponse>> task) {
16 try {
17 auto response = task.get();
18 // ์‘๋‹ต ์ฒ˜๋ฆฌ
19 } catch (const std::exception& e) {
20 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
21 }
22 });
23

๊ฐ์‚ฌ ๋กœ๊ทธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
optionsconst GetAuditLogsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetAuditLogsResponse

์˜ˆ์‹œ

getAuditLogs ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4GetAuditLogsOptions options;
5options.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z"), utility::datetime::RFC_1123));
6options.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z"), utility::datetime::RFC_1123));
7options.limit = boost::optional<int>(100);
8
9api->getAuditLogs(tenantId, options).then([](pplx::task<std::shared_ptr<GetAuditLogsResponse>> t) {
10 try {
11 auto response = t.get();
12 // ์‘๋‹ต ์‚ฌ์šฉ
13 } catch (const std::exception& e) {
14 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
15 }
16});
17

๊ณต๊ฐœ ๋กœ๊ทธ์•„์›ƒ Internal Link

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

logoutPublic ์˜ˆ์‹œ
Copy Copy
1
2api->logoutPublic()
3 .then([](std::shared_ptr<APIEmptyResponse> /*resp*/) {
4 std::cout << "Logout successful\n";
5 })
6 .then([](pplx::task<void> t) {
7 try {
8 t.get();
9 } catch (const std::exception& e) {
10 std::cerr << "Logout failed: " << e.what() << std::endl;
11 }
12 });
13

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
publicBlockFromCommentParamsPublicBlockFromCommentParams์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: BlockSuccess

์˜ˆ์ œ

blockFromCommentPublic ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-987654");
4PublicBlockFromCommentParams blockParams;
5blockParams.reason = utility::conversions::to_string_t("spam");
6blockParams.durationHours = 24;
7boost::optional<utility::string_t> sso = utility::conversions::to_string_t("sso-token-abc123");
8api->blockFromCommentPublic(tenantId, commentId, blockParams, sso)
9 .then([](std::shared_ptr<BlockSuccess> result){
10 auto successCopy = std::make_shared<BlockSuccess>(*result);
11 });
12

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


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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: UnblockSuccess

์˜ˆ์ œ

unBlockCommentPublic ์˜ˆ์ œ
Copy Copy
1
2auto blockParams = PublicBlockFromCommentParams();
3blockParams.reason = U("spam");
4api->unBlockCommentPublic(
5 U("my-tenant-123"),
6 U("comment-789"),
7 blockParams,
8 boost::optional<utility::string_t>(U("sso-token-abc"))
9).then([](std::shared_ptr<UnblockSuccess> result){ });
10

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

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdsstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: CheckBlockedCommentsResponse

์˜ˆ์‹œ

checkedCommentsForBlocked ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto commentIds = U("cmt-001,cmt-002");
4boost::optional<utility::string_t> sso = U("user@example.com");
5
6api->checkedCommentsForBlocked(tenantId, commentIds, sso).then([](std::shared_ptr<CheckBlockedCommentsResponse> resp){
7 (void)resp;
8});
9

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
blockFromCommentParamsBlockFromCommentParams์˜ˆ
optionsconst BlockUserFromCommentOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: BlockSuccess

์˜ˆ์‹œ

blockUserFromComment ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-789");
4BlockFromCommentParams params;
5params.reason = utility::conversions::to_string_t("Inappropriate content");
6params.durationDays = boost::optional<int>(30);
7BlockUserFromCommentOptions options;
8options.notifyUser = boost::optional<bool>(true);
9
10api->blockUserFromComment(tenantId, commentId, params, options)
11 .then([](std::shared_ptr<BlockSuccess> result){ })
12 .then([](pplx::task<void> t){ try { t.get(); } catch (const std::exception&) { } });
13

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
broadcastIdstringYes
commentDataCommentDataYes
optionsconst CreateCommentPublicOptions&Yes

์‘๋‹ต

Returns: SaveCommentsResponseWithPresence

์˜ˆ์ œ

createCommentPublic ์˜ˆ์ œ
Copy Copy
1
2auto comment = CommentData();
3comment.body = U("This is a test comment");
4comment.authorName = U("John Doe");
5comment.authorEmail = U("john.doe@example.com");
6
7CreateCommentPublicOptions opts;
8opts.replyToCommentId = boost::optional<utility::string_t>(U("parent-123"));
9
10api->createCommentPublic(
11 U("my-tenant-123"),
12 U("article-456"),
13 U("broadcast-789"),
14 comment,
15 opts).then([](std::shared_ptr<SaveCommentsResponseWithPresence> res){
16 auto commentId = res->commentId;
17 });
18

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
optionsconst DeleteCommentOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteCommentResult

์˜ˆ์‹œ

deleteComment ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-789");
4DeleteCommentOptions options;
5options.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Inappropriate content"));
6options.force = boost::optional<bool>(true);
7api->deleteComment(tenantId, commentId, options).then([](pplx::task<std::shared_ptr<DeleteCommentResult>> task){
8 try{
9 auto result = task.get();
10 }catch(const std::exception&){
11 }
12});
13

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
optionsconst DeleteCommentPublicOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: PublicAPIDeleteCommentResponse

์˜ˆ์‹œ

deleteCommentPublic ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("comment-456"));
4auto broadcastId = utility::string_t(U("broadcast-789"));
5DeleteCommentPublicOptions options;
6options.force = boost::optional<bool>(true);
7options.reason = boost::optional<utility::string_t>(U("Inappropriate content"));
8api->deleteCommentPublic(tenantId, commentId, broadcastId, options)
9 .then([](pplx::task<std::shared_ptr<PublicAPIDeleteCommentResponse>> t){
10 try{
11 auto resp = t.get();
12 }catch(const std::exception& e){
13 }
14 });
15

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
voteIdstringYes
urlIdstringYes
broadcastIdstringYes
optionsconst DeleteCommentVoteOptions&Yes

์‘๋‹ต

Returns: VoteDeleteResponse

์˜ˆ์ œ

deleteCommentVote ์˜ˆ์ œ
Copy Copy
1
2auto options = DeleteCommentVoteOptions{};
3options.reason = boost::optional<utility::string_t>(U("spam"));
4options.adminOverride = boost::optional<bool>(true);
5
6api->deleteCommentVote(
7 U("my-tenant-123"),
8 U("cmt-456789"),
9 U("vote-987"),
10 U("url-abc123"),
11 U("broadcast-001"),
12 options
13).then([](std::shared_ptr<VoteDeleteResponse> resp){
14 if (resp) {
15 std::cout << "Deleted vote, code: " << resp->code << std::endl;
16 }
17});
18

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
optionsconst FlagCommentOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: FlagCommentResponse

์˜ˆ์ œ

flagComment ์˜ˆ์ œ
Copy Copy
1
2auto opts = std::make_shared<FlagCommentOptions>();
3opts->reason = utility::conversions::to_string_t("spam");
4opts->note = boost::optional<utility::string_t>(utility::conversions::to_string_t("User posted duplicate links"));
5
6api->flagComment(utility::conversions::to_string_t("my-tenant-123"),
7 utility::conversions::to_string_t("comment-456"),
8 *opts)
9 .then([](pplx::task<std::shared_ptr<FlagCommentResponse>> t) {
10 auto resp = t.get();
11 });
12

๋Œ“๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

Returns: APIGetCommentResponse

์˜ˆ์‹œ

getComment ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-456");
4boost::optional<int> maxDepth = boost::none;
5api->getComment(tenantId, commentId).then([](pplx::task<std::shared_ptr<APIGetCommentResponse>> t){
6 try{
7 auto resp = t.get();
8 }catch(const std::exception&){
9 }
10});
11

๋Œ“๊ธ€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetCommentsOptions&Yes

Response

๋ฐ˜ํ™˜: APIGetCommentsResponse

Example

getComments ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetCommentsOptions options;
4options.page = 1;
5options.limit = 50;
6options.sort = U("newest");
7options.authorEmail = boost::optional<utility::string_t>(U("user@example.com"));
8api->getComments(tenantId, options).then([](pplx::task<std::shared_ptr<APIGetCommentsResponse>> task) {
9 try {
10 auto response = task.get();
11 // ํ•„์š”์— ๋”ฐ๋ผ ์‘๋‹ต ์‚ฌ์šฉ
12 } catch (const std::exception& e) {
13 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
14 }
15});
16

๊ณต๊ฐœ ๋Œ“๊ธ€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link


req tenantId urlId

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
urlIdstring์˜ˆ
optionsconst GetCommentsPublicOptions&์˜ˆ

์‘๋‹ต

Returns: GetCommentsResponseWithPresence_PublicComment_

์˜ˆ์‹œ

getCommentsPublic ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto urlId = U("article-456");
4GetCommentsPublicOptions opts;
5opts.pageSize = 20;
6opts.includeDeleted = false;
7api->getCommentsPublic(tenantId, urlId, opts).then([](std::shared_ptr<GetCommentsResponseWithPresence_PublicComment_> resp) {
8 (void)resp;
9});
10

๋Œ“๊ธ€ ํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
optionsconst GetCommentTextOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: PublicAPIGetCommentTextResponse

์˜ˆ์‹œ

getCommentText ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4auto options = std::make_shared<GetCommentTextOptions>();
5options->language = boost::optional<utility::string_t>(U("en"));
6options->includeDeleted = boost::optional<bool>(false);
7api->getCommentText(tenantId, commentId, *options).then([](pplx::task<std::shared_ptr<PublicAPIGetCommentTextResponse>> task){
8 try{
9 auto response = task.get();
10 (void)response;
11 }catch(...){}
12});
13

๋Œ“๊ธ€ ํˆฌํ‘œ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
dirint32_tYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetCommentVoteUserNamesSuccessResponse

์˜ˆ์ œ

getCommentVoteUserNames ์˜ˆ์ œ
Copy Copy
1
2auto task = api->getCommentVoteUserNames(
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("comment-456"),
5 static_cast<int32_t>(1),
6 boost::optional<utility::string_t>(utility::conversions::to_string_t("sso-token"))
7).then([](pplx::task<std::shared_ptr<GetCommentVoteUserNamesSuccessResponse>> t){
8 try{
9 auto response = t.get();
10 }catch(const std::exception&){ }
11});
12

๋Œ“๊ธ€ ์ž ๊ทธ๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

lockComment ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-987");
4auto broadcastId = utility::conversions::to_string_t("broadcast-654");
5boost::optional<utility::string_t> sso = utility::conversions::to_string_t("sso-token-xyz");
6
7api->lockComment(tenantId, commentId, broadcastId, sso).then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: ChangeCommentPinStatusResponse

์˜ˆ์ œ

pinComment ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456");
4utility::string_t broadcastId = U("broadcast-789");
5boost::optional<utility::string_t> sso = U("sso-token-abc");
6
7api->pinComment(tenantId, commentId, broadcastId, sso)
8 .then([](pplx::task<std::shared_ptr<ChangeCommentPinStatusResponse>> task) {
9 try {
10 auto response = task.get();
11 } catch (const std::exception&) {
12 }
13 });
14

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

Parameters

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createCommentParamsCreateCommentParams์˜ˆ
optionsconst SaveCommentOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APISaveCommentResponse

์˜ˆ์ œ

saveComment ์˜ˆ์ œ
Copy Copy
1
2CreateCommentParams commentParams;
3commentParams.body = utility::string_t(U("Great article!"));
4commentParams.author = utility::string_t(U("jane.doe@example.com"));
5commentParams.parentId = boost::optional<utility::string_t>(utility::string_t(U("parent-789")));
6
7SaveCommentOptions options;
8options.preview = boost::optional<bool>(false);
9
10api->saveComment(utility::string_t(U("my-tenant-123")), commentParams, options)
11 .then([](std::shared_ptr<APISaveCommentResponse> response) {
12 auto commentId = response->commentId;
13 });
14

๋Œ“๊ธ€ ํ…์ŠคํŠธ ์„ค์ • Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
commentTextUpdateRequestCommentTextUpdateRequestYes
optionsconst SetCommentTextOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: PublicAPISetCommentTextResponse

์˜ˆ์‹œ

setCommentText ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto commentId = U("cmt-456");
4auto broadcastId = U("brd-789");
5
6CommentTextUpdateRequest updateReq;
7updateReq.text = U("Updated comment content");
8updateReq.isEdited = boost::make_optional(true);
9
10SetCommentTextOptions opts;
11opts.notifySubscribers = boost::make_optional(true);
12
13api->setCommentText(tenantId, commentId, broadcastId, updateReq, opts)
14 .then([](std::shared_ptr<PublicAPISetCommentTextResponse> resp) {
15 });
16

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
unBlockFromCommentParamsUnBlockFromCommentParams์˜ˆ
optionsconst UnBlockUserFromCommentOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: UnblockSuccess

์˜ˆ์ œ

unBlockUserFromComment ์˜ˆ์ œ
Copy Copy
1
2auto params = std::make_shared<UnBlockFromCommentParams>();
3params->commentId = U("cmt-12345");
4params->reason = U("resolved");
5UnBlockUserFromCommentOptions opts;
6opts.notifyUser = boost::optional<bool>(true);
7api->unBlockUserFromComment(U("my-tenant-123"), U("user-456"), *params, opts)
8 .then([](pplx::task<std::shared_ptr<UnblockSuccess>> t){
9 try{
10 auto result = t.get();
11 }catch(...){}
12 });
13

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

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
optionsconst UnFlagCommentOptions&Yes

Response

Returns: FlagCommentResponse

Example

unFlagComment ์˜ˆ์‹œ
Copy Copy
1
2auto options = UnFlagCommentOptions{};
3options.reason = boost::optional<utility::string_t>(U("Resolved by moderator"));
4api->unFlagComment(U("my-tenant-123"), U("comment-456"), options)
5 .then([](std::shared_ptr<FlagCommentResponse> response) {
6 if (response) {
7 auto status = response->status;
8 // ํ•„์š”ํ•˜๋ฉด ์ƒํƒœ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
9 }
10 })
11 .then([](pplx::task<void> previous) {
12 try {
13 previous.get();
14 } catch (const std::exception& e) {
15 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
16 }
17 });
18

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

Parameters

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
broadcastIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

Response

๋ฐ˜ํ™˜: APIEmptyResponse

Example

unLockComment ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4auto broadcastId = utility::conversions::to_string_t("broadcast-001");
5boost::optional<utility::string_t> sso = utility::conversions::to_string_t("john.doe@example.com");
6
7api->unLockComment(tenantId, commentId, broadcastId, sso).then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12});
13

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
broadcastIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: ChangeCommentPinStatusResponse

์˜ˆ์‹œ

unPinComment ์˜ˆ์ œ
Copy Copy
1
2auto task = api->unPinComment(
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("cmt-456789"),
5 utility::conversions::to_string_t("broadcast-001"),
6 boost::optional<utility::string_t>(utility::conversions::to_string_t("user@example.com"))
7);
8task.then([](std::shared_ptr<ChangeCommentPinStatusResponse> resp){
9 auto result = std::make_shared<ChangeCommentPinStatusResponse>(*resp);
10});
11

๋Œ“๊ธ€ ์ˆ˜์ • Internal Link

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updatableCommentParamsUpdatableCommentParams์˜ˆ
optionsconst UpdateCommentOptions&์˜ˆ

Response

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

updateComment ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t("my-tenant-123");
3auto commentId = utility::string_t("cmt-789");
4UpdatableCommentParams updatable;
5updatable.body = utility::string_t("Edited comment content");
6updatable.isSpam = boost::optional<bool>(false);
7UpdateCommentOptions options;
8options.notify = boost::optional<bool>(true);
9api->updateComment(tenantId, commentId, updatable, options)
10 .then([](std::shared_ptr<APIEmptyResponse>) {})
11 .then([](pplx::task<void> t) { try { t.get(); } catch(const std::exception&) {} });
12

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
urlIdstring์˜ˆ
broadcastIdstring์˜ˆ
voteBodyParamsVoteBodyParams์˜ˆ
optionsconst VoteCommentOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: VoteResponse

์˜ˆ์ œ

voteComment ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-7890");
4auto urlId = utility::conversions::to_string_t("article-456");
5auto broadcastId = utility::conversions::to_string_t("broadcast-321");
6
7VoteBodyParams voteParams;
8voteParams.upvote = true;
9voteParams.note = boost::optional<utility::string_t>(utility::conversions::to_string_t("Great insight"));
10
11VoteCommentOptions options;
12options.dryRun = boost::optional<bool>(false);
13
14api->voteComment(tenantId, commentId, urlId, broadcastId, voteParams, options)
15 .then([](pplx::task<std::shared_ptr<VoteResponse>> t) {
16 try {
17 auto response = t.get();
18 // ์‘๋‹ต ์ฒ˜๋ฆฌ
19 } catch (const std::exception&) {
20 }
21 });
22

์‚ฌ์šฉ์ž ๋Œ“๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
optionsconst GetCommentsForUserOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetCommentsForUserResponse

์˜ˆ์ œ

getCommentsForUser ์˜ˆ์ œ
Copy Copy
1
2auto options = GetCommentsForUserOptions{
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("user@example.com"),
5 boost::optional<int>(50),
6 boost::optional<utility::string_t>(utility::conversions::to_string_t("next-page-token"))
7};
8
9api->getCommentsForUser(options).then([](pplx::task<std::shared_ptr<GetCommentsForUserResponse>> task){
10 try{
11 auto response = task.get();
12 }catch(const std::exception&){}
13});
14

๋„๋ฉ”์ธ ์„ค์ • ์ถ”๊ฐ€ Internal Link

ํŒŒ๋ผ๋ฏธํ„ฐ

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
addDomainConfigParamsAddDomainConfigParams์˜ˆ

์‘๋‹ต

Returns: AddDomainConfigResponse

์˜ˆ์‹œ

addDomainConfig ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3AddDomainConfigParams params;
4params.domain = U("example.com");
5params.adminEmail = U("admin@example.com");
6params.notes = boost::optional<utility::string_t>(U("Primary domain"));
7api->addDomainConfig(tenantId, params).then([](pplx::task<std::shared_ptr<AddDomainConfigResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

๋„๋ฉ”์ธ ์„ค์ • ์‚ญ์ œ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
domainstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteDomainConfigResponse

์˜ˆ์ œ

deleteDomainConfig ์˜ˆ์ œ
Copy Copy
1
2boost::optional<utility::string_t> optTenant = U("my-tenant-123");
3boost::optional<utility::string_t> optDomain = U("example.com");
4
5api->deleteDomainConfig(optTenant.value(), optDomain.value())
6 .then([](pplx::task<std::shared_ptr<DeleteDomainConfigResponse>> task) {
7 try {
8 auto response = task.get();
9 } catch (const std::exception&) {
10 }
11 });
12

๋„๋ฉ”์ธ ์„ค์ • ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
domainstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetDomainConfigResponse

์˜ˆ์‹œ

getDomainConfig ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domain = U("myblog.example.com");
4
5api->getDomainConfig(tenantId, domain)
6 .then([](std::shared_ptr<GetDomainConfigResponse> response) {
7 if (!response) return;
8 boost::optional<bool> moderationEnabled = response->moderationEnabled;
9 boost::optional<std::string> theme = response->theme;
10 if (moderationEnabled && *moderationEnabled) {
11 // ํ™œ์„ฑํ™”๋œ ๋ชจ๋”๋ ˆ์ด์…˜ ์ฒ˜๋ฆฌ
12 }
13 if (theme) {
14 // ํ…Œ๋งˆ ๊ฐ’์„ ์‚ฌ์šฉ
15 }
16 })
17 .wait();
18

๋„๋ฉ”์ธ ์„ค์ • ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

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

Response

๋ฐ˜ํ™˜: GetDomainConfigsResponse

Example

getDomainConfigs ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> optionalTenant = tenantId;
4api->getDomainConfigs(optionalTenant.value())
5 .then([](std::shared_ptr<GetDomainConfigsResponse> response) {
6 auto domains = response->getDomainList();
7 for (const auto& d : domains) {
8 std::cout << d << std::endl;
9 }
10 });
11

๋„๋ฉ”์ธ ์„ค์ • ์ผ๋ถ€ ์ˆ˜์ • Internal Link

Parameters

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Response

Returns: PatchDomainConfigResponse

์˜ˆ์‹œ

patchDomainConfig ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto domainToUpdate = utility::conversions::to_string_t("example.com");
4PatchDomainConfigParams patchDomainConfigParams;
5patchDomainConfigParams.enableComments = boost::optional<bool>(true);
6patchDomainConfigParams.moderationLevel = boost::optional<int>(2);
7patchDomainConfigParams.customHeader = boost::optional<utility::string_t>(utility::conversions::to_string_t("X-Custom-Header"));
8
9api->patchDomainConfig(tenantId, domainToUpdate, patchDomainConfigParams)
10 .then([](std::shared_ptr<PatchDomainConfigResponse> resp) {
11 // ์„ฑ๊ณต ์ฒ˜๋ฆฌ
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception& e) { /* ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ */ }
15 });
16

๋„๋ฉ”์ธ ์„ค์ • ์ „์ฒด ๊ต์ฒด Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
domainToUpdatestringYes
updateDomainConfigParamsUpdateDomainConfigParamsYes

์‘๋‹ต

๋ฐ˜ํ™˜: PutDomainConfigResponse

์˜ˆ์‹œ

putDomainConfig ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domainToUpdate = U("example.com");
4UpdateDomainConfigParams updateParams;
5updateParams.enableComments = true;
6updateParams.moderationLevel = boost::optional<int>(2);
7updateParams.customCss = boost::optional<utility::string_t>(U(".fc-comment{color:red;}"));
8api->putDomainConfig(tenantId, domainToUpdate, updateParams)
9 .then([](std::shared_ptr<PutDomainConfigResponse> resp) {
10 });
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
createEmailTemplateBodyCreateEmailTemplateBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜: CreateEmailTemplateResponse

์˜ˆ์‹œ

createEmailTemplate ์˜ˆ์‹œ
Copy Copy
1
2auto body = std::make_shared<CreateEmailTemplateBody>();
3body->subject = utility::string_t("Welcome Email");
4body->htmlContent = utility::string_t("<h1>Welcome!</h1><p>Thanks for joining.</p>");
5body->fromEmail = utility::string_t("no-reply@myapp.com");
6body->replyTo = boost::optional<utility::string_t>(utility::string_t("support@myapp.com"));
7body->cc = boost::none;
8api->createEmailTemplate(utility::string_t("my-tenant-123"), *body)
9 .then([](std::shared_ptr<CreateEmailTemplateResponse> resp) {
10 std::cout << "Created template ID: " << resp->id << std::endl;
11 });
12

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

deleteEmailTemplate ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto templateId = utility::conversions::to_string_t("welcome-email-template");
4boost::optional<utility::string_t> optTenantId = tenantId;
5boost::optional<utility::string_t> optTemplateId = templateId;
6api->deleteEmailTemplate(optTenantId.value(), optTemplateId.value())
7 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t) {
8 try { t.get(); }
9 catch (const std::exception&) {}
10 });
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
errorIdstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

deleteEmailTemplateRenderError ์˜ˆ์ œ
Copy Copy
1
2boost::optional<utility::string_t> optTemplateId = utility::conversions::to_string_t("template-456");
3api->deleteEmailTemplateRenderError(
4 utility::conversions::to_string_t("my-tenant-123"),
5 *optTemplateId,
6 utility::conversions::to_string_t("error-789"))
7 .then([](std::shared_ptr<APIEmptyResponse>) {})
8 .then([](pplx::task<void> t) {
9 try { t.get(); } catch (...) {}
10 });
11

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplateResponse

์˜ˆ์ œ

getEmailTemplate ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto templateId = utility::conversions::to_string_t("welcome-email");
4boost::optional<utility::string_t> language = utility::conversions::to_string_t("en-US");
5
6api->getEmailTemplate(tenantId, templateId)
7 .then([=](pplx::task<std::shared_ptr<GetEmailTemplateResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ์ •์˜ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

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

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplateDefinitionsResponse

์˜ˆ์‹œ

getEmailTemplateDefinitions ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3api->getEmailTemplateDefinitions(tenantId).then([](pplx::task<std::shared_ptr<GetEmailTemplateDefinitionsResponse>> t) {
4 try {
5 auto resp = t.get();
6 boost::optional<utility::string_t> tmplName = resp ? resp->templateName : boost::none;
7 if (tmplName) {
8 std::cout << *tmplName << std::endl;
9 }
10 } catch (const std::exception& e) {
11 std::cerr << e.what() << std::endl;
12 }
13});
14

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ๋ Œ๋” ์˜ค๋ฅ˜ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
skipdouble์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplateRenderErrorsResponse

์˜ˆ์‹œ

getEmailTemplateRenderErrors ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("email-template-789");
4boost::optional<double> skip = 20.0;
5
6api->getEmailTemplateRenderErrors(tenantId, id, skip)
7 .then([](pplx::task<std::shared_ptr<GetEmailTemplateRenderErrorsResponse>> task) {
8 try {
9 auto response = task.get();
10 // ํ•„์š”์— ๋”ฐ๋ผ ์‘๋‹ต ์‚ฌ์šฉ
11 } catch (const std::exception& ex) {
12 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
13 }
14 });
15

์ด๋ฉ”์ผ ํ…œํ”Œ๋ฆฟ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link


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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
skipdoubleNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetEmailTemplatesResponse

์˜ˆ์‹œ

getEmailTemplates ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<double> skip = 10.0;
4api->getEmailTemplates(tenantId, skip)
5 .then([](std::shared_ptr<GetEmailTemplatesResponse> resp) {
6 (void)resp;
7 });
8

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
renderEmailTemplateBodyRenderEmailTemplateBody์˜ˆ
localestring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: RenderEmailTemplateResponse

์˜ˆ์‹œ

renderEmailTemplate ์˜ˆ์‹œ
Copy Copy
1
2auto body = RenderEmailTemplateBody();
3body.templateId = U("welcome-email");
4body.recipientEmail = U("user@example.com");
5boost::optional<utility::string_t> locale = U("en-US");
6
7api->renderEmailTemplate(U("my-tenant-123"), body, locale)
8 .then([](std::shared_ptr<RenderEmailTemplateResponse> resp) {
9 std::cout << "Email template rendered successfully\n";
10 });
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

updateEmailTemplate ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t templateId = U("welcome-email");
4UpdateEmailTemplateBody body;
5body.subject = U("Welcome to Our Platform");
6body.content = U("<p>Hello \{{userName}}, welcome aboard!</p>");
7body.isActive = boost::optional<bool>(true);
8api->updateEmailTemplate(tenantId, templateId, body)
9 .then([](std::shared_ptr<APIEmptyResponse> response) {
10 // ์„ฑ๊ณต ์ฒ˜๋ฆฌ
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception &) { /* ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ */ }
14 });
15

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

req tenantId urlId userIdWS

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
urlIdstring์˜ˆ
userIdWSstring์˜ˆ
startTimeint64_t์˜ˆ
endTimeint64_t์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetEventLogResponse

์˜ˆ์‹œ

getEventLog ์˜ˆ์ œ
Copy Copy
1
2auto startTime = int64_t(1622505600);
3boost::optional<int64_t> endTime = int64_t(1622592000);
4api->getEventLog(U("my-tenant-123"), U("article-456"), U("user@example.com"), startTime, endTime)
5 .then([](std::shared_ptr<GetEventLogResponse> response){
6 auto copy = std::make_shared<GetEventLogResponse>(*response);
7 (void)copy;
8 });
9

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

req
tenantId
urlId
userIdWS

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ
userIdWSstring์˜ˆ
startTimeint64_t์˜ˆ
endTimeint64_t์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetEventLogResponse

์˜ˆ์ œ

getGlobalEventLog ์˜ˆ์ œ
Copy Copy
1
2api->getGlobalEventLog(
3 U("my-tenant-123"),
4 U("article-456"),
5 U("user@example.com"),
6 1622505600,
7 boost::optional<int64_t>(1625097600)
8).then([](std::shared_ptr<GetEventLogResponse> resp) {
9 (void)resp;
10});
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
optionsconst CreateFeedPostOptions&Yes

์‘๋‹ต

Returns: CreateFeedPostsResponse

์˜ˆ์‹œ

createFeedPost ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateFeedPostParams postParams;
4postParams.content = utility::conversions::to_string_t("Excited to join FastComments!");
5postParams.authorEmail = utility::conversions::to_string_t("user@example.com");
6postParams.title = utility::conversions::to_string_t("My First Post");
7postParams.tags = boost::optional<std::vector<utility::string_t>>({ utility::conversions::to_string_t("intro") });
8
9CreateFeedPostOptions options;
10options.notifyFollowers = boost::optional<bool>(true);
11options.scheduledAt = boost::optional<utility::datetime>(utility::datetime::utc_now());
12
13api->createFeedPost(tenantId, postParams, options).then([](std::shared_ptr<CreateFeedPostsResponse> resp) {
14 auto postId = resp->postId;
15});
16

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createFeedPostParamsCreateFeedPostParams์˜ˆ
optionsconst CreateFeedPostPublicOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateFeedPostResponse

์˜ˆ์ œ

createFeedPostPublic ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4CreateFeedPostParams params;
5params.title = U("Introducing Our New Feature");
6params.content = U("We are excited to announce the release of our latest update.");
7params.authorEmail = boost::optional<utility::string_t>(U("user@example.com"));
8params.tags = boost::optional<std::vector<utility::string_t>>({U("announcement"), U("release")});
9
10CreateFeedPostPublicOptions options;
11
12api->createFeedPostPublic(tenantId, params, options)
13 .then([](std::shared_ptr<CreateFeedPostResponse> resp) {
14 if (resp) {
15 std::wcout << U("Post created with ID: ") << resp->postId << std::endl;
16 }
17 });
18

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
postIdstringYes
optionsconst DeleteFeedPostPublicOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteFeedPostPublicResponse

์˜ˆ์‹œ

deleteFeedPostPublic ์˜ˆ์ œ
Copy Copy
1
2auto opts = std::make_shared<DeleteFeedPostPublicOptions>();
3opts->reason = boost::optional<utility::string_t>(U("Inappropriate content"));
4api->deleteFeedPostPublic(U("my-tenant-123"), U("post-789"), *opts)
5 .then([](std::shared_ptr<DeleteFeedPostPublicResponse> resp) {
6 if (resp && resp->isSuccess()) {
7 // ์„ฑ๊ณต ๋กœ์ง
8 }
9 });
10

ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

req tenantId afterId

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetFeedPostsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetFeedPostsResponse

์˜ˆ์‹œ

getFeedPosts ์˜ˆ์‹œ
Copy Copy
1
2auto opts = std::make_shared<GetFeedPostsOptions>();
3opts->maxResults = boost::optional<int>(50);
4opts->cursor = boost::optional<utility::string_t>(U("next-cursor"));
5api->getFeedPosts(U("my-tenant-123"), *opts).then([](std::shared_ptr<GetFeedPostsResponse> resp) {
6 auto count = resp->posts.size();
7});
8

๊ณต๊ฐœ ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

req tenantId afterId

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetFeedPostsPublicOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: PublicFeedPostsResponse

์˜ˆ์‹œ

getFeedPostsPublic ์˜ˆ์‹œ
Copy Copy
1
2auto options = GetFeedPostsPublicOptions{};
3options.limit = boost::optional<int>{20};
4options.before = boost::optional<utility::string_t>{U("2023-01-01T00:00:00Z")};
5
6api->getFeedPostsPublic(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<PublicFeedPostsResponse>> task){
7 try{
8 auto response = task.get();
9 auto processed = std::make_shared<PublicFeedPostsResponse>(*response);
10 // ํ•„์š”ํ•œ ๊ฒฝ์šฐ processed ์‚ฌ์šฉ
11 }catch(const std::exception&){
12 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
13 }
14});
15

ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ํ†ต๊ณ„ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
postIdsvector<string์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: FeedPostsStatsResponse

์˜ˆ์ œ

getFeedPostsStats ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3std::vector<utility::string_t> postIds = {
4 utility::conversions::to_string_t("post-001"),
5 utility::conversions::to_string_t("post-002")
6};
7boost::optional<utility::string_t> sso = utility::conversions::to_string_t("user@example.com");
8
9api->getFeedPostsStats(tenantId, postIds, sso)
10 .then([](std::shared_ptr<FeedPostsStatsResponse> response) {
11 (void)response;
12 });
13

๊ณต๊ฐœ ์‚ฌ์šฉ์ž ๋ฆฌ์•กํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetUserReactsPublicOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: UserReactsResponse

์˜ˆ์‹œ

getUserReactsPublic ์˜ˆ์ œ
Copy Copy
1
2auto options = GetUserReactsPublicOptions{};
3options.userId = boost::optional<utility::string_t>(U("user@example.com"));
4options.limit = boost::optional<int>(50);
5api->getUserReactsPublic(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<UserReactsResponse>> t){
6 auto response = t.get();
7});
8

ํ”ผ๋“œ ๊ฒŒ์‹œ๋ฌผ ๋ฆฌ์•กํŠธ(๊ณต๊ฐœ) Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
postIdstringYes
reactBodyParamsReactBodyParamsYes
optionsconst ReactFeedPostPublicOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: ReactFeedPostResponse

์˜ˆ์ œ

reactFeedPostPublic ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto postId = utility::conversions::to_string_t("post-987");
4ReactBodyParams reactBody;
5reactBody.reaction = utility::conversions::to_string_t("love");
6reactBody.userId = utility::conversions::to_string_t("user@example.com");
7ReactFeedPostPublicOptions options;
8options.metadata = boost::optional<utility::string_t>(utility::conversions::to_string_t("mobile"));
9api->reactFeedPostPublic(tenantId, postId, reactBody, options)
10 .then([](std::shared_ptr<ReactFeedPostResponse> resp) {
11 });
12

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

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

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
feedPostFeedPostYes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

updateFeedPost ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U"my-tenant-123";
3utility::string_t postId = U"post-456";
4
5FeedPost feedPost;
6feedPost.title = U"Breaking News";
7feedPost.content = U"Details of the update go here.";
8feedPost.imageUrl = boost::optional<utility::string_t>(U"https://example.com/image.jpg");
9
10api->updateFeedPost(tenantId, postId, feedPost)
11 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task) {
12 try {
13 auto response = task.get();
14 } catch (const std::exception& ex) {
15 }
16 });
17

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
postIdstring์˜ˆ
updateFeedPostParamsUpdateFeedPostParams์˜ˆ
optionsconst UpdateFeedPostPublicOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateFeedPostResponse

์˜ˆ์‹œ

updateFeedPostPublic ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t postId = U("post-456");
4UpdateFeedPostParams params;
5params.title = boost::optional<utility::string_t>(U("Updated Title"));
6params.body = boost::optional<utility::string_t>(U("Updated content of the post."));
7UpdateFeedPostPublicOptions options;
8options.notifyFollowers = boost::optional<bool>(true);
9api->updateFeedPostPublic(tenantId, postId, params, options)
10 .then([](std::shared_ptr<CreateFeedPostResponse> resp) {
11 auto result = resp;
12 });
13

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
isFlaggedboolYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

flagCommentPublic ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4bool isFlagged = true;
5boost::optional<utility::string_t> sso = utility::conversions::to_string_t("sso-token-abc");
6
7api->flagCommentPublic(tenantId, commentId, isFlagged, sno)
8 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t){
9 try{
10 auto resp = t.get();
11 }catch(const std::exception&){
12 }
13 });
14

ํฐ GIF ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
largeInternalURLSanitizedstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GifGetLargeResponse

์˜ˆ์ œ

getGifLarge ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto largeUrl = utility::conversions::to_string_t("https://cdn.example.com/gifs/large/abc123.gif");
4
5api->getGifLarge(tenantId, largeUrl)
6 .then([&](std::shared_ptr<GifGetLargeResponse> resp) {
7 boost::optional<utility::string_t> maybeUrl;
8 if (resp && resp->url) {
9 maybeUrl = resp->url;
10 }
11 if (maybeUrl) {
12 std::wcout << *maybeUrl << std::endl;
13 }
14 });
15

GIF ๊ฒ€์ƒ‰ Internal Link

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
searchstring์˜ˆ
optionsconst GetGifsSearchOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetGifsSearchResponse

์˜ˆ์‹œ

getGifsSearch ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto search = U("funny cats");
4GetGifsSearchOptions options;
5options.limit = boost::optional<int>(10);
6options.rating = boost::optional<utility::string_t>(U("pg"));
7api->getGifsSearch(tenantId, search, options).then([](pplx::task<std::shared_ptr<GetGifsSearchResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

ํŠธ๋ Œ๋”ฉ GIF ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetGifsTrendingOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: GetGifsTrendingResponse

์˜ˆ์‹œ

getGifsTrending ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetGifsTrendingOptions options;
4options.limit = 10;
5options.rating = boost::optional<utility::string_t>(U("G"));
6api->getGifsTrending(tenantId, options).then([](std::shared_ptr<GetGifsTrendingResponse> response) {
7 for (const auto& gif : response->gifs) {
8 auto url = gif.url;
9 }
10});
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createHashTagBodyCreateHashTagBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateHashTagResponse

์˜ˆ์‹œ

addHashTag ์˜ˆ์‹œ
Copy Copy
1
2CreateHashTagBody request;
3request.tag = utility::conversions::to_string_t("feature-request");
4request.description = utility::conversions::to_string_t("Requests for new features");
5request.relatedUrl = boost::optional<utility::string_t>(utility::conversions::to_string_t("https://example.com/feature-request"));
6
7api->addHashTag(utility::conversions::to_string_t("my-tenant-123"), request)
8 .then([](std::shared_ptr<CreateHashTagResponse> resp) {
9 (void)resp;
10 });
11

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
bulkCreateHashTagsBodyBulkCreateHashTagsBodyYes

์‘๋‹ต

Returns: BulkCreateHashTagsResponse

์˜ˆ์ œ

addHashTagsBulk ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3BulkCreateHashTagsBody bulkBody;
4bulkBody.tags = { utility::string_t(U("announcement")), utility::string_t(U("feature-request")) };
5bulkBody.description = boost::optional<utility::string_t>(U("Bulk tag creation"));
6api->addHashTagsBulk(tenantId, bulkBody).then([](pplx::task<std::shared_ptr<BulkCreateHashTagsResponse>> task){
7 try{
8 auto resp = task.get();
9 }catch(const std::exception&){
10 }
11});
12

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
tagstringYes
deleteHashTagRequestBodyDeleteHashTagRequestBodyYes

์‘๋‹ต

Returns: APIEmptyResponse

์˜ˆ์‹œ

deleteHashTag ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-001");
3auto tag = utility::conversions::to_string_t("news");
4DeleteHashTagRequestBody requestBody;
5requestBody.userId = utility::conversions::to_string_t("user-42");
6requestBody.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("User request"));
7api->deleteHashTag(tenantId, tag, requestBody)
8 .then([](std::shared_ptr<APIEmptyResponse> resp) {
9 });
10

ํ•ด์‹œํƒœ๊ทธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
pagedoubleNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetHashTagsResponse

์˜ˆ์ œ

getHashTags ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<double> page = 2.0;
4
5api->getHashTags(tenantId, page).then([](pplx::task<std::shared_ptr<GetHashTagsResponse>> task) {
6 try {
7 auto resultPtr = task.get();
8 auto response = std::make_shared<GetHashTagsResponse>(*resultPtr);
9 // ์‘๋‹ต ์‚ฌ์šฉ
10 } catch (const std::exception&) {
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13});
14

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
tagstring์˜ˆ
updateHashTagBodyUpdateHashTagBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: UpdateHashTagResponse

์˜ˆ์ œ

patchHashTag ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t tag = U("important");
4auto body = std::make_shared<UpdateHashTagBody>();
5body->name = U("important-updated");
6body->description = boost::optional<utility::string_t>(U("Updated description"));
7api->patchHashTag(tenantId, tag, *body)
8 .then([](pplx::task<std::shared_ptr<UpdateHashTagResponse>> t){
9 try{
10 auto response = t.get();
11 std::cout << "Updated tag ID: " << response->id << std::endl;
12 }catch(const std::exception& e){
13 std::cerr << "Patch failed: " << e.what() << std::endl;
14 }
15 });
16

๋ชจ๋”๋ ˆ์ด์…˜ ํˆฌํ‘œ ์‚ญ์ œ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
voteIdstringYes
optionsconst DeleteModerationVoteOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: VoteDeleteResponse

์˜ˆ์‹œ

deleteModerationVote ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-abc123");
4auto voteId = utility::conversions::to_string_t("vote-xyz789");
5DeleteModerationVoteOptions opts;
6opts.reason = utility::conversions::to_string_t("Offensive language");
7opts.hardDelete = boost::optional<bool>(true);
8api->deleteModerationVote(tenantId, commentId, voteId, opts)
9 .then([](std::shared_ptr<VoteDeleteResponse> resp){});
10

API ๋Œ“๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetApiCommentsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationAPIGetCommentsResponse

์˜ˆ์ œ

getApiComments ์˜ˆ์ œ
Copy Copy
1
2auto options = GetApiCommentsOptions{};
3options.page = boost::make_optional(2);
4options.authorEmail = boost::make_optional<utility::string_t>(U("user@example.com"));
5options.includeDeleted = boost::make_optional(false);
6
7api->getApiComments(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<ModerationAPIGetCommentsResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

API ๋‚ด๋ณด๋‚ด๊ธฐ ์ƒํƒœ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetApiExportStatusOptions&Yes

์‘๋‹ต

Returns: ModerationExportStatusResponse

์˜ˆ์‹œ

getApiExportStatus ์˜ˆ์‹œ
Copy Copy
1
2auto opts = GetApiExportStatusOptions{};
3opts.exportId = boost::make_optional<utility::string_t>(U("export-456"));
4api->getApiExportStatus(U("my-tenant-123"), opts)
5 .then([](pplx::task<std::shared_ptr<ModerationExportStatusResponse>> t){
6 try{
7 auto status = t.get();
8 }catch(const std::exception&){
9 }
10 });
11

API ์•„์ด๋”” ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetApiIdsOptions&Yes

์‘๋‹ต

Returns: ModerationAPIGetCommentIdsResponse

์˜ˆ์ œ

getApiIds ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetApiIdsOptions options;
4options.limit = boost::optional<int>(100);
5options.cursor = boost::optional<utility::string_t>(U("next-page-token"));
6api->getApiIds(tenantId, options).then([](pplx::task<std::shared_ptr<ModerationAPIGetCommentIdsResponse>> t){
7 try{
8 auto response = t.get();
9 auto ids = response->commentIds;
10 }catch(const std::exception&){
11 }
12});
13

๋Œ“๊ธ€ ์ฐจ๋‹จ ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetBannedUsersFromCommentResponse

์˜ˆ์ œ

getBanUsersFromComment ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("comment-456"));
4boost::optional<utility::string_t> sso = boost::make_optional(utility::string_t(U("sso-token-abc")));
5
6api->getBanUsersFromComment(tenantId, commentId, sso).then([](pplx::task<std::shared_ptr<GetBannedUsersFromCommentResponse>> task) {
7 try {
8 auto response = task.get();
9 } catch (const std::exception&) {
10 }
11});
12

๋Œ“๊ธ€ ์ฐจ๋‹จ ์ƒํƒœ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetCommentBanStatusResponse

์˜ˆ์‹œ

getCommentBanStatus ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U"my-tenant-123");
3auto commentId = utility::string_t(U"comment-456");
4boost::optional<utility::string_t> sso = utility::string_t(U"user@example.com");
5
6api->getCommentBanStatus(tenantId, commentId, sso).then([](pplx::task<std::shared_ptr<GetCommentBanStatusResponse>> t){
7 try{
8 auto response = t.get();
9 }catch(const std::exception&){ }
10});
11

๋Œ“๊ธ€ ์ž์‹(๋‹ต๊ธ€) ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationAPIChildCommentsResponse

์˜ˆ์‹œ

getCommentChildren ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456");
4boost::optional<utility::string_t> sso = U("sso-token-abc");
5
6api->getCommentChildren(tenantId, commentId, sso)
7 .then([](pplx::task<std::shared_ptr<ModerationAPIChildCommentsResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

๊ฐœ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetCountOptions&์˜ˆ

Response

๋ฐ˜ํ™˜: ModerationAPICountCommentsResponse

Example

getCount ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetCountOptions options;
4options.userEmail = boost::optional<utility::string_t>(U("user@example.com"));
5options.maxResults = boost::optional<int>(100);
6api->getCount(tenantId, options).then([](pplx::task<std::shared_ptr<ModerationAPICountCommentsResponse>> task){
7 try{
8 auto resp = task.get();
9 auto copy = std::make_shared<ModerationAPICountCommentsResponse>(*resp);
10 std::cout << "Count: " << copy->count << std::endl;
11 }catch(const std::exception& e){
12 std::cerr << "Error: " << e.what() << std::endl;
13 }
14});
15

์นด์šดํŠธ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetBannedUsersCountResponse

์˜ˆ์ œ

getCounts ์˜ˆ์ œ
Copy Copy
1
2api->getCounts(
3 utility::conversions::to_string_t("my-tenant-123"),
4 boost::optional<utility::string_t>(utility::conversions::to_string_t("john.doe@example.com"))
5).then([](pplx::task<std::shared_ptr<GetBannedUsersCountResponse>> t){
6 try{
7 auto response = t.get();
8 }catch(const std::exception&){
9 }
10});
11

๋กœ๊ทธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationAPIGetLogsResponse

์˜ˆ์‹œ

getLogs ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456");
4boost::optional<utility::string_t> sso = U("sso-token-abc");
5
6api->getLogs(tenantId, commentId, sso).then([](pplx::task<std::shared_ptr<ModerationAPIGetLogsResponse>> t){
7 try{
8 auto response = t.get();
9 }catch(...){
10 }
11});
12

์ˆ˜๋™ ๋ฐฐ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

์‘๋‹ต

Returns: GetTenantManualBadgesResponse

Example

getManualBadges ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> sso = boost::make_optional(U("user@example.com"));
4
5api->getManualBadges(tenantId, sso)
6 .then([](pplx::task<std::shared_ptr<GetTenantManualBadgesResponse>> t) {
7 try {
8 auto response = t.get();
9 // ์‘๋‹ต์„ ์ฒ˜๋ฆฌ, ์˜ˆ: response->badgeList
10 } catch (const std::exception& ex) {
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13 });
14

์‚ฌ์šฉ์ž์šฉ ์ˆ˜๋™ ๋ฐฐ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetManualBadgesForUserOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserManualBadgesResponse

์˜ˆ์‹œ

getManualBadgesForUser ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetManualBadgesForUserOptions options;
4options.userEmail = boost::optional<utility::string_t>(U("user@example.com"));
5options.includeInactive = boost::optional<bool>(true);
6api->getManualBadgesForUser(tenantId, options).then([](pplx::task<std::shared_ptr<GetUserManualBadgesResponse>> task){
7 try{
8 auto response = task.get();
9 }catch(const std::exception&){
10 }
11});
12

๋ชจ๋”๋ ˆ์ด์…˜ ๋Œ“๊ธ€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
optionsconst GetModerationCommentOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationAPICommentResponse

์˜ˆ์‹œ

getModerationComment ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-456");
4GetModerationCommentOptions options;
5options.includeDeleted = boost::optional<bool>(true);
6options.locale = boost::optional<utility::string_t>(utility::conversions::to_string_t("en-US"));
7api->getModerationComment(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<ModerationAPICommentResponse>> task) {
9 try {
10 auto response = task.get();
11 // Process response as needed
12 } catch (const std::exception& ex) {
13 // Handle error
14 }
15 });
16

๋ชจ๋”๋ ˆ์ด์…˜ ๋Œ“๊ธ€ ํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetCommentTextResponse

์˜ˆ์‹œ

getModerationCommentText ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654");
4boost::optional<utility::string_t> sso = U("sso-token-abc");
5
6api->getModerationCommentText(tenantId, commentId, sso)
7 .then([](pplx::task<std::shared_ptr<GetCommentTextResponse>> t) {
8 try {
9 auto resp = t.get();
10 auto text = std::make_shared<std::string>(resp->commentText);
11 } catch (const std::exception&) {
12 }
13 });
14

์‚ฌ์ „ ์ฐจ๋‹จ ์š”์•ฝ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
optionsconst GetPreBanSummaryOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: PreBanSummary

์˜ˆ์ œ

getPreBanSummary ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4GetPreBanSummaryOptions options;
5options.locale = boost::optional<utility::string_t>{utility::conversions::to_string_t("en-US")};
6
7api->getPreBanSummary(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<PreBanSummary>> t) {
9 try {
10 auto summary = t.get();
11 // ์š”์•ฝ ์ฒ˜๋ฆฌ
12 } catch (const std::exception&) {
13 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
14 }
15 });
16

๋Œ“๊ธ€ ๊ฒ€์ƒ‰ ์š”์•ฝ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetSearchCommentsSummaryOptions&Yes

์‘๋‹ต

Returns: ModerationCommentSearchResponse

์˜ˆ์‹œ

getSearchCommentsSummary ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto options = std::make_shared<GetSearchCommentsSummaryOptions>();
4options->query = utility::conversions::to_string_t("spam");
5options->pageSize = boost::optional<int>(50);
6options->pageNumber = boost::optional<int>(1);
7options->fromDate = boost::none;
8api->getSearchCommentsSummary(tenantId, *options).then([](pplx::task<std::shared_ptr<ModerationCommentSearchResponse>> task){
9 try{
10 auto response = task.get();
11 }catch(const std::exception&){
12 }
13});
14

๊ฒ€์ƒ‰๋œ ํŽ˜์ด์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetSearchPagesOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationPageSearchResponse

์˜ˆ์‹œ

getSearchPages ์˜ˆ์‹œ
Copy Copy
1
2GetSearchPagesOptions options;
3options.pageNumber = boost::optional<int>(1);
4options.pageSize = boost::optional<int>(50);
5options.searchTerm = boost::optional<utility::string_t>(U("spam"));
6
7api->getSearchPages(U("my-tenant-123"), options)
8 .then([](pplx::task<std::shared_ptr<ModerationPageSearchResponse>> task) {
9 try {
10 auto response = task.get();
11 // use response
12 } catch (const std::exception& e) {
13 // handle error
14 }
15 });
16

๊ฒ€์ƒ‰๋œ ์‚ฌ์ดํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetSearchSitesOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationSiteSearchResponse

์˜ˆ์ œ

getSearchSites ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetSearchSitesOptions options;
4options.query = boost::make_optional(utility::string_t(U("example query")));
5options.limit = boost::make_optional(25);
6
7api->getSearchSites(tenantId, options)
8 .then([](pplx::task<std::shared_ptr<ModerationSiteSearchResponse>> t) {
9 try {
10 auto response = t.get();
11 auto respPtr = std::make_shared<ModerationSiteSearchResponse>(*response);
12 for (const auto& site : respPtr->sites) {
13 // ์ฒ˜๋ฆฌ ๋กœ์ง
14 }
15 } catch (const std::exception&) {
16 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
17 }
18 });
19

๊ฒ€์ƒ‰ ์ œ์•ˆ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetSearchSuggestOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationSuggestResponse

์˜ˆ์ œ

getSearchSuggest ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetSearchSuggestOptions opts;
4opts.query = U("search term");
5opts.limit = boost::optional<int>(5);
6opts.includeInactive = boost::optional<bool>(false);
7api->getSearchSuggest(tenantId, opts).then([](pplx::task<std::shared_ptr<ModerationSuggestResponse>> t){
8 try{
9 auto resp = t.get();
10 }catch(const std::exception&){ }
11}).wait();
12

์‚ฌ์šฉ์ž ๊ฒ€์ƒ‰ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetSearchUsersOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationUserSearchResponse

์˜ˆ์‹œ

getSearchUsers ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetSearchUsersOptions opts;
4opts.query = utility::string_t(U("john.doe@example.com"));
5opts.page = boost::optional<int>(1);
6opts.pageSize = boost::optional<int>(20);
7
8api->getSearchUsers(tenantId, opts)
9 .then([](std::shared_ptr<ModerationUserSearchResponse> resp) {
10 for (const auto& user : resp->users) {
11 std::wcout << user.id << L" - " << user.email << std::endl;
12 }
13 });
14

์‹ ๋ขฐ ์ง€์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
optionsconst GetTrustFactorOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserTrustFactorResponse

์˜ˆ์‹œ

getTrustFactor ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetTrustFactorOptions options;
4options.userEmail = boost::optional<utility::string_t>(U("user@example.com"));
5options.ipAddress = boost::optional<utility::string_t>(U("203.0.113.42"));
6api->getTrustFactor(tenantId, options).then([](std::shared_ptr<GetUserTrustFactorResponse> resp) {
7 if (resp) {
8 std::cout << "Trust factor: " << resp->trustFactor << std::endl;
9 }
10});
11

์‚ฌ์šฉ์ž ์ฐจ๋‹จ ์„ค์ • ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: APIModerateGetUserBanPreferencesResponse

์˜ˆ์ œ

getUserBanPreference ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
4
5api->getUserBanPreference(tenantId, sso)
6 .then([](pplx::task<std::shared_ptr<APIModerateGetUserBanPreferencesResponse>> t) {
7 try {
8 auto resp = t.get();
9 } catch (const std::exception&) {
10 }
11 });
12

์‚ฌ์šฉ์ž ๋‚ด๋ถ€ ํ”„๋กœํ•„ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetUserInternalProfileOptions&Yes

Response

๋ฐ˜ํ™˜: GetUserInternalProfileResponse

Example

getUserInternalProfile ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetUserInternalProfileOptions options;
4options.email = boost::optional<utility::string_t>(U("user@example.com"));
5options.includeDetails = boost::optional<bool>(true);
6
7api->getUserInternalProfile(tenantId, options)
8 .then([](std::shared_ptr<GetUserInternalProfileResponse> response) {
9 if (response) {
10 auto name = response->displayName;
11 auto id = response->userId;
12 }
13 });
14

๋Œ“๊ธ€ ํˆฌํ‘œ ์กฐ์ • Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
adjustCommentVotesParamsAdjustCommentVotesParams์˜ˆ
optionsconst PostAdjustCommentVotesOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: AdjustVotesResponse

์˜ˆ์‹œ

postAdjustCommentVotes ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4AdjustCommentVotesParams params;
5params.voteDelta = 1;
6params.userIdentifier = utility::conversions::to_string_t("user@example.com");
7params.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Helpful"));
8PostAdjustCommentVotesOptions opts;
9opts.timeout = boost::optional<int>(30);
10api->postAdjustCommentVotes(tenantId, commentId, params, opts).then([](pplx::task<std::shared_ptr<AdjustVotesResponse>> t){
11 try{
12 auto resp = t.get();
13 }catch(const std::exception& e){
14 }
15});
16

API ๋‚ด๋ณด๋‚ด๊ธฐ ์š”์ฒญ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst PostApiExportOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationExportResponse

์˜ˆ์‹œ

postApiExport ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3PostApiExportOptions options;
4options.format = utility::string_t(U("json"));
5options.email = utility::string_t(U("reports@example.com"));
6options.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z")));
7options.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z")));
8
9api->postApiExport(tenantId, options)
10 .then([](std::shared_ptr<ModerationExportResponse> response) {
11 if (response) {
12 // ์„ฑ๊ณต์ ์ธ ๋‚ด๋ณด๋‚ด๊ธฐ ์‘๋‹ต ์ฒ˜๋ฆฌ
13 }
14 })
15 .wait();
16

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
optionsconst PostBanUserFromCommentOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: BanUserFromCommentResult

์˜ˆ์ œ

postBanUserFromComment ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456789");
4PostBanUserFromCommentOptions options;
5options.reason = boost::optional<utility::string_t>(U("spam"));
6options.durationDays = boost::optional<int>(30);
7
8api->postBanUserFromComment(tenantId, commentId, options)
9 .then([](std::shared_ptr<BanUserFromCommentResult> result) {
10 // ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception& e) { /* ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ */ }
14 });
15

์‚ฌ์šฉ์ž ์ฐจ๋‹จ ์ทจ์†Œ(์š”์ฒญ) Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
banUserUndoParamsBanUserUndoParams์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

postBanUserUndo ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3BanUserUndoParams banParams;
4banParams.userId = utility::string_t(U("user-567"));
5banParams.reason = utility::string_t(U("reinstated"));
6boost::optional<utility::string_t> sso = utility::string_t(U("sso-token-abc"));
7
8api->postBanUserUndo(tenantId, banParams, sso).then([](std::shared_ptr<APIEmptyResponse> resp){
9 // ์„ฑ๊ณต ์ฒ˜๋ฆฌ
10});
11

๋Œ€๋Ÿ‰ ์‚ฌ์ „ ์ฐจ๋‹จ ์š”์•ฝ ์š”์ฒญ Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
bulkPreBanParamsBulkPreBanParamsYes
optionsconst PostBulkPreBanSummaryOptions&Yes

Response

Returns: BulkPreBanSummary

Example

postBulkPreBanSummary ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3BulkPreBanParams bulkPreBanParams;
4bulkPreBanParams.emails = {
5 utility::conversions::to_string_t("spam1@example.com"),
6 utility::conversions::to_string_t("spam2@example.com")
7};
8bulkPreBanParams.reason = utility::conversions::to_string_t("spam");
9PostBulkPreBanSummaryOptions options;
10options.requestId = boost::optional<utility::string_t>(utility::conversions::to_string_t("req-456"));
11api->postBulkPreBanSummary(tenantId, bulkPreBanParams, options)
12 .then([](std::shared_ptr<BulkPreBanSummary> result) {
13 (void)result;
14 });
15

์•„์ด๋””๋กœ ๋Œ“๊ธ€ ์กฐํšŒ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentsByIdsParamsCommentsByIdsParams์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: ModerationAPIChildCommentsResponse

์˜ˆ์‹œ

postCommentsByIds ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3CommentsByIdsParams params;
4params.commentIds = {U("cmt-001"), U("cmt-002")};
5boost::optional<utility::string_t> sso = U("sso-token-abc");
6api->postCommentsByIds(tenantId, params, sso).then([](pplx::task<std::shared_ptr<ModerationAPIChildCommentsResponse>> t){
7 try{
8 auto resp = t.get();
9 auto copy = std::make_shared<ModerationAPIChildCommentsResponse>(*resp);
10 }catch(const std::exception&){ }
11});
12

๋Œ“๊ธ€ ์‹ ๊ณ (์š”์ฒญ) Internal Link

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

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
optionsconst PostFlagCommentOptions&Yes

์‘๋‹ต

Returns: APIEmptyResponse

์˜ˆ์‹œ

postFlagComment ์˜ˆ์‹œ
Copy Copy
1
2PostFlagCommentOptions options;
3options.reason = boost::optional<utility::string_t>(U("spam"));
4options.reportedBy = boost::optional<utility::string_t>(U("moderator@example.com"));
5
6api->postFlagComment(U("my-tenant-123"), U("comment-456"), options)
7 .then([](std::shared_ptr<APIEmptyResponse> resp){
8 (void)resp;
9 })
10 .then([](pplx::task<void> t){
11 try{
12 t.get();
13 }catch(const std::exception&){
14 }
15 });
16

๋Œ“๊ธ€ ์ œ๊ฑฐ(์š”์ฒญ) Internal Link

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

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
optionsconst PostRemoveCommentOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: PostRemoveCommentApiResponse

์˜ˆ์‹œ

postRemoveComment ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("cmt-456789"));
4PostRemoveCommentOptions options;
5options.permanent = boost::optional<bool>(true);
6api->postRemoveComment(tenantId, commentId, options)
7 .then([](pplx::task<std::shared_ptr<PostRemoveCommentApiResponse>> task) {
8 try {
9 auto response = task.get();
10 // ์‘๋‹ต ์ฒ˜๋ฆฌ
11 } catch (const std::exception& ex) {
12 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
13 }
14 });
15

์‚ญ์ œ๋œ ๋Œ“๊ธ€ ๋ณต์›(์š”์ฒญ) Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
optionsconst PostRestoreDeletedCommentOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

postRestoreDeletedComment ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654");
4PostRestoreDeletedCommentOptions options;
5options.reason = boost::optional<utility::string_t>(U("Restoring after accidental delete"));
6options.notifyUser = boost::optional<bool>(true);
7api->postRestoreDeletedComment(tenantId, commentId, options)
8 .then([](std::shared_ptr<APIEmptyResponse> resp){
9 });
10

๋Œ“๊ธ€ ์Šน์ธ ์ƒํƒœ ์„ค์ •(์š”์ฒญ) Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentApprovalStatusOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: SetCommentApprovedResponse

์˜ˆ์‹œ

postSetCommentApprovalStatus ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-abc123");
4auto options = std::make_shared<PostSetCommentApprovalStatusOptions>();
5options->approved = boost::optional<bool>(true);
6options->reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Inappropriate content"));
7api->postSetCommentApprovalStatus(tenantId, commentId, *options)
8 .then([](pplx::task<std::shared_ptr<SetCommentApprovedResponse>> task) {
9 try {
10 auto response = task.get();
11 } catch (const std::exception& ex) {
12 }
13 });
14

๋Œ“๊ธ€ ๊ฒ€ํ†  ์ƒํƒœ ์„ค์ •(์š”์ฒญ) Internal Link

ํŒŒ๋ผ๋ฏธํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentReviewStatusOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

postSetCommentReviewStatus ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4PostSetCommentReviewStatusOptions opts;
5opts.status = utility::conversions::to_string_t("approved");
6opts.note = boost::optional<utility::string_t>(utility::conversions::to_string_t("Looks good"));
7api->postSetCommentReviewStatus(tenantId, commentId, opts)
8 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t){
9 try{
10 auto resp = t.get();
11 }catch(const std::exception& e){
12 }
13 });
14

๋Œ“๊ธ€ ์ŠคํŒธ ์ƒํƒœ ์„ค์ •(์š”์ฒญ) Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentSpamStatusOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์ œ

postSetCommentSpamStatus ์˜ˆ์ œ
Copy Copy
1
2auto options = PostSetCommentSpamStatusOptions{};
3options.isSpam = true;
4options.reason = boost::optional<utility::string_t>{U"User reported spam"};
5
6api->postSetCommentSpamStatus(U("my-tenant-123"), U("comment-789"), options)
7 .then([](std::shared_ptr<APIEmptyResponse> resp) {
8 auto copy = std::make_shared<APIEmptyResponse>(*resp);
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch(const std::exception&) {}
12 });
13

๋Œ“๊ธ€ ํ…์ŠคํŠธ ์„ค์ •(์š”์ฒญ) Internal Link


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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
commentIdstringYes
setCommentTextParamsSetCommentTextParamsYes
optionsconst PostSetCommentTextOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: SetCommentTextResponse

์˜ˆ์‹œ

postSetCommentText ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto commentId = U("comment-456");
4SetCommentTextParams params;
5params.text = U("Revised comment content");
6PostSetCommentTextOptions options;
7options.requestId = boost::optional<utility::string_t>(U("req-987"));
8api->postSetCommentText(tenantId, commentId, params, options)
9 .then([](std::shared_ptr<SetCommentTextResponse> resp) {
10 auto updatedId = resp->commentId;
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception&) {}
14 });
15

๋Œ“๊ธ€ ์‹ ๊ณ  ํ•ด์ œ(์š”์ฒญ) Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
optionsconst PostUnFlagCommentOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์ œ

postUnFlagComment ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4PostUnFlagCommentOptions opts;
5opts.notifyUser = boost::optional<bool>(true);
6api->postUnFlagComment(tenantId, commentId, opts)
7 .then([](std::shared_ptr<APIEmptyResponse> resp) {
8 // ์—ฌ๊ธฐ์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception&) {}
12 });
13

ํˆฌํ‘œ(์š”์ฒญ) Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
optionsconst PostVoteOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: VoteResponse

์˜ˆ์‹œ

postVote ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4PostVoteOptions options;
5options.upvote = boost::make_optional(true);
6options.reason = boost::make_optional<std::string>("Inappropriate content");
7api->postVote(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<VoteResponse>> t) {
9 try {
10 auto resp = t.get();
11 auto count = resp->voteCount;
12 } catch (const std::exception& e) {
13 }
14 });
15

๋ฐฐ์ง€ ์ˆ˜์—ฌ Internal Link

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
badgeIdstring์˜ˆ
optionsconst PutAwardBadgeOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: AwardUserBadgeResponse

์˜ˆ์ œ

putAwardBadge ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto badgeId = utility::conversions::to_string_t("badge-456");
4PutAwardBadgeOptions opts;
5opts.userId = utility::conversions::to_string_t("user-42");
6opts.note = boost::optional<utility::string_t>(utility::conversions::to_string_t("Excellent comment"));
7api->putAwardBadge(tenantId, badgeId, opts).then([](pplx::task<std::shared_ptr<AwardUserBadgeResponse>> t){
8 try{
9 auto resp = t.get();
10 auto respCopy = std::make_shared<AwardUserBadgeResponse>(*resp);
11 }catch(const std::exception& e){
12 }
13});
14

์Šค๋ ˆ๋“œ ๋‹ซ๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์š”์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์ œ

putCloseThread ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-4321"));
3auto urlId = utility::string_t(U("article-9876"));
4boost::optional<utility::string_t> sso = boost::make_optional<utility::string_t>(U("user@example.com"));
5
6api->putCloseThread(tenantId, urlId, sso).then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task){
7 try{
8 auto response = task.get();
9 }catch(const std::exception&){
10 }
11});
12

๋ฐฐ์ง€ ์ œ๊ฑฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
badgeIdstringYes
optionsconst PutRemoveBadgeOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: RemoveUserBadgeResponse

์˜ˆ์‹œ

putRemoveBadge ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t badgeId = U("badge-abc-456");
4PutRemoveBadgeOptions options;
5options.reason = boost::optional<utility::string_t>(U("Spamming"));
6api->putRemoveBadge(tenantId, badgeId, options).then([](std::shared_ptr<RemoveUserBadgeResponse> resp) {
7 (void)resp;
8});
9

์Šค๋ ˆ๋“œ ์žฌ๊ฐœ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

putReopenThread ์˜ˆ์‹œ
Copy Copy
1
2api->putReopenThread(utility::string_t(U("my-tenant-123")), utility::string_t(U("thread-456")), boost::make_optional<utility::string_t>(U("user@example.com")))
3 .then([](std::shared_ptr<APIEmptyResponse> result){
4 std::cout << "Thread reopened" << std::endl;
5 });
6

์‹ ๋ขฐ ์ง€์ˆ˜ ์„ค์ • Internal Link


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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst SetTrustFactorOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: SetUserTrustFactorResponse

์˜ˆ์‹œ

setTrustFactor ์˜ˆ์‹œ
Copy Copy
1
2SetTrustFactorOptions opts;
3opts.userId = utility::conversions::to_string_t("user@example.com");
4opts.trustFactor = 8;
5opts.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Spam check passed"));
6api->setTrustFactor(utility::conversions::to_string_t("my-tenant-123"), opts)
7 .then([](pplx::task<std::shared_ptr<SetUserTrustFactorResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

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

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

NameTypeRequiredDescription
tenantIdstringYes
createModeratorBodyCreateModeratorBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜: CreateModeratorResponse

์˜ˆ์‹œ

createModerator ์˜ˆ์ œ
Copy Copy
1
2CreateModeratorBody moderatorBody;
3moderatorBody.email = utility::conversions::to_string_t("moderator@example.com");
4moderatorBody.name = utility::conversions::to_string_t("John Moderator");
5moderatorBody.notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Community moderator"));
6api->createModerator(utility::conversions::to_string_t("my-tenant-123"), moderatorBody)
7 .then([](std::shared_ptr<CreateModeratorResponse> resp) {});
8

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
sendEmailstring์•„๋‹ˆ์˜ค

์‘๋‹ต

Returns: APIEmptyResponse

์˜ˆ์‹œ

deleteModerator ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto moderatorId = utility::conversions::to_string_t("mod-456");
4boost::optional<utility::string_t> sendEmail = utility::conversions::to_string_t("admin@example.com");
5api->deleteModerator(tenantId, moderatorId, sendEmail)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {
7 // handle success
8 });
9

๋ชจ๋”๋ ˆ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetModeratorResponse

์˜ˆ์ œ

getModerator ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto moderatorId = utility::string_t(U("moderator-789"));
4api->getModerator(tenantId, moderatorId)
5 .then([](pplx::task<std::shared_ptr<GetModeratorResponse>> t) {
6 try {
7 auto response = t.get();
8 } catch (const std::exception&) {
9 }
10 });
11

๋ชจ๋”๋ ˆ์ดํ„ฐ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
skipdouble์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetModeratorsResponse

์˜ˆ์‹œ

getModerators ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> skip = 10.0;
4api->getModerators(tenantId, skip).then([](pplx::task<std::shared_ptr<GetModeratorsResponse>> t){
5 auto response = t.get();
6});
7

์ดˆ๋Œ€์žฅ ๋ณด๋‚ด๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
fromNamestring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

sendInvite ์˜ˆ์‹œ
Copy Copy
1
2boost::optional<utility::string_t> cc = utility::conversions::to_string_t("cc@example.com");
3api->sendInvite(
4 utility::conversions::to_string_t("my-tenant-123"),
5 utility::conversions::to_string_t("invitee@example.com"),
6 utility::conversions::to_string_t("John Doe")
7).then([](std::shared_ptr<APIEmptyResponse> resp) {
8 // ์„ฑ๊ณต์ ์ธ ์ดˆ๋Œ€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
9});
10

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
updateModeratorBodyUpdateModeratorBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

updateModerator ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto moderatorId = utility::conversions::to_string_t("mod-789");
4UpdateModeratorBody body;
5body.email = utility::conversions::to_string_t("moderator@example.com");
6body.isActive = true;
7body.notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Senior moderator"));
8api->updateModerator(tenantId, moderatorId, body)
9 .then([](std::shared_ptr<APIEmptyResponse>) {})
10 .then([](pplx::task<void> t) { try { t.get(); } catch (const std::exception&) {} });
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์ œ

deleteNotificationCount ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto notificationId = utility::conversions::to_string_t("notif-789");
4
5api->deleteNotificationCount(tenantId, notificationId)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {})
7 .then([](pplx::task<void> t) { try { t.get(); } catch (const std::exception&) {} });
8

์บ์‹œ๋œ ์•Œ๋ฆผ ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetCachedNotificationCountResponse

Example

getCachedNotificationCount ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = boost::optional<utility::string_t>(utility::conversions::to_string_t("my-tenant-123"));
3auto userId = boost::optional<utility::string_t>(utility::conversions::to_string_t("user-456"));
4
5api->getCachedNotificationCount(tenantId.value(), userId.value())
6 .then([](pplx::task<std::shared_ptr<GetCachedNotificationCountResponse>> task) {
7 try {
8 auto response = task.get();
9 // process response
10 } catch (const std::exception&) {
11 // handle error
12 }
13 });
14

์•Œ๋ฆผ ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetNotificationCountOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetNotificationCountResponse

์˜ˆ์ œ

getNotificationCount ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3GetNotificationCountOptions options;
4options.filter = boost::optional<utility::string_t>(U("unread"));
5options.maxCount = boost::optional<int>(10);
6api->getNotificationCount(tenantId, options)
7 .then([](pplx::task<std::shared_ptr<GetNotificationCountResponse>> t) {
8 try {
9 auto response = t.get();
10 } catch (const std::exception& ex) {
11 }
12 });
13

์•Œ๋ฆผ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetNotificationsOptions&์˜ˆ

Response

๋ฐ˜ํ™˜: GetNotificationsResponse

Example

getNotifications ์˜ˆ์‹œ
Copy Copy
1
2GetNotificationsOptions options;
3options.limit = 20;
4options.after = U("cursor-123");
5api->getNotifications(U("my-tenant-123"), options)
6 .then([](std::shared_ptr<GetNotificationsResponse> resp) {
7 (void)resp;
8 });
9

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updateNotificationBodyUpdateNotificationBody์˜ˆ
userIdstring์•„๋‹ˆ์˜ค

์‘๋‹ต

Returns: APIEmptyResponse

์˜ˆ์‹œ

updateNotification ์˜ˆ์‹œ
Copy Copy
1
2auto updateBody = std::make_shared<UpdateNotificationBody>();
3updateBody->title = utility::conversions::to_string_t("System Maintenance");
4updateBody->message = utility::conversions::to_string_t("Scheduled downtime at 02:00 UTC.");
5api->updateNotification(
6 utility::conversions::to_string_t("my-tenant-123"),
7 utility::conversions::to_string_t("notif-456"),
8 updateBody,
9 boost::optional<utility::string_t>(utility::conversions::to_string_t("admin-user"))
10).then([](std::shared_ptr<APIEmptyResponse>){});
11

V1 ํŽ˜์ด์ง€ ๋ฆฌ์•กํŠธ ์ƒ์„ฑ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ
titlestring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: CreateV1PageReact

์˜ˆ์‹œ

createV1PageReact ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("https://example.com/articles/789"));
4boost::optional<utility::string_t> title = utility::string_t(U("Understanding Async C++"));
5api->createV1PageReact(tenantId, urlId, title).then([](pplx::task<std::shared_ptr<CreateV1PageReact>> task) {
6 try {
7 auto response = task.get();
8 } catch (const std::exception&) {
9 }
10});
11

V2 ํŽ˜์ด์ง€ ๋ฆฌ์•กํŠธ ์ƒ์„ฑ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
idstringYes
titlestringNo

์‘๋‹ต

๋ฐ˜ํ™˜: CreateV1PageReact

์˜ˆ์‹œ

createV2PageReact ์˜ˆ์‹œ
Copy Copy
1
2api->createV2PageReact(
3 utility::string_t(U("my-tenant-789")),
4 utility::string_t(U("https://example.com/articles/12345")),
5 utility::string_t(U("user-42")),
6 boost::optional<utility::string_t>(U("Helpful"))
7).then([](pplx::task<std::shared_ptr<CreateV1PageReact>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){ }
11});
12

V1 ํŽ˜์ด์ง€ ๋ฆฌ์•กํŠธ ์‚ญ์ œ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateV1PageReact

์˜ˆ์ œ

deleteV1PageReact ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-abc-456");
4api->deleteV1PageReact(tenantId, urlId).then([](pplx::task<std::shared_ptr<CreateV1PageReact>> task){
5 try{
6 auto response = task.get();
7 boost::optional<std::shared_ptr<CreateV1PageReact>> optResponse = response;
8 }catch(...){
9 }
10});
11

V2 ํŽ˜์ด์ง€ ๋ฆฌ์•กํŠธ ์‚ญ์ œ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: CreateV1PageReact

์˜ˆ์‹œ

deleteV2PageReact ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-456");
4auto reactId = utility::conversions::to_string_t("react-789");
5boost::optional<utility::string_t> correlationId = utility::conversions::to_string_t("corr-001");
6
7api->deleteV2PageReact(tenantId, urlId, reactId)
8 .then([](pplx::task<std::shared_ptr<CreateV1PageReact>> t) {
9 auto result = t.get();
10 });
11

V1 ํŽ˜์ด์ง€ ์ข‹์•„์š” ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetV1PageLikes

์˜ˆ์ œ

getV1PageLikes ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("article-789");
4boost::optional<utility::string_t> filter;
5
6api->getV1PageLikes(tenantId, urlId).then([=](pplx::task<std::shared_ptr<GetV1PageLikes>> task){
7 try{
8 auto raw = task.get();
9 auto likes = std::make_shared<GetV1PageLikes>(*raw);
10 auto total = likes->totalLikes;
11 }catch(...){
12 }
13});
14

V2 ํŽ˜์ด์ง€ ๋ฆฌ์•กํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: GetV2PageReacts

์˜ˆ์‹œ

getV2PageReacts ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t("my-tenant-123");
3auto urlId = utility::string_t("https://example.com/article/42");
4boost::optional<utility::string_t> locale = utility::string_t("en-US");
5api->getV2PageReacts(tenantId, urlId)
6 .then([locale](std::shared_ptr<GetV2PageReacts> reacts){
7 if (locale) {}
8 })
9 .then([](pplx::task<void> t){
10 try { t.get(); } catch (...) {}
11 });
12

V2 ํŽ˜์ด์ง€ ๋ฆฌ์•กํŠธ ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: GetV2PageReactUsersResponse

์˜ˆ์ œ

getV2PageReactUsers ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-456");
4auto id = utility::conversions::to_string_t("react-789");
5boost::optional<utility::string_t> maybeFilter;
6api->getV2PageReactUsers(tenantId, urlId, id).then([](pplx::task<std::shared_ptr<GetV2PageReactUsersResponse>> task){
7 try{
8 auto response = task.get();
9 // ํ•„์š”์— ๋”ฐ๋ผ ์‘๋‹ต ์‚ฌ์šฉ
10 }catch(const std::exception&){
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13});
14

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createAPIPageDataCreateAPIPageData์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: AddPageAPIResponse

์˜ˆ์‹œ

addPage ์˜ˆ์‹œ
Copy Copy
1
2auto createData = CreateAPIPageData{};
3createData.title = utility::string_t(U("Welcome Page"));
4createData.url = utility::string_t(U("https://example.com/welcome"));
5createData.description = boost::optional<utility::string_t>(utility::string_t(U("Landing page for new users")));
6
7api->addPage(utility::string_t(U("my-tenant-123")), createData)
8 .then([](std::shared_ptr<AddPageAPIResponse> response) {
9 if (response && response->success) {
10 // ์„ฑ๊ณต์ ์ธ ์ถ”๊ฐ€ ์ฒ˜๋ฆฌ
11 } else {
12 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
13 }
14 });
15

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

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: DeletePageAPIResponse

์˜ˆ์ œ

deletePage ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto pageId = utility::conversions::to_string_t("page-456");
4
5api->deletePage(tenantId, pageId)
6 .then([](pplx::task<std::shared_ptr<DeletePageAPIResponse>> t) {
7 try {
8 auto response = t.get();
9 // ํ•„์š”์— ๋”ฐ๋ผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
10 } catch (const std::exception& ex) {
11 // ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
12 }
13 });
14

์˜คํ”„๋ผ์ธ ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Past commenters on the page who are NOT currently online. Sorted by displayName.
ํ˜„์žฌ ์˜จ๋ผ์ธ์ด ์•„๋‹Œ ํŽ˜์ด์ง€์˜ ๊ณผ๊ฑฐ ๋Œ“๊ธ€์ž๋“ค. displayName ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

Use this after exhausting /users/online to render a "Members" section.
/users/online์„ ์‚ฌ์šฉํ•œ ํ›„์—, "Members" ์„น์…˜์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Cursor pagination on commenterName: server walks the partial {tenantId, urlId, commenterName} index from afterName forward via $gt, no $skip cost.
commenterName์— ๋Œ€ํ•œ ์ปค์„œ ํŽ˜์ด์ง€๋„ค์ด์…˜: ์„œ๋ฒ„๋Š” {tenantId, urlId, commenterName} ๋ถ€๋ถ„ ์ธ๋ฑ์Šค๋ฅผ afterName ์ดํ›„๋กœ $gt๋ฅผ ์‚ฌ์šฉํ•ด ์ง„ํ–‰ํ•˜๋ฉฐ, $skip ๋น„์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค.

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
optionsconst GetOfflineUsersOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: PageUsersOfflineResponse

์˜ˆ์ œ

getOfflineUsers ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("page-456");
4GetOfflineUsersOptions options;
5options.limit = boost::optional<int>(50);
6options.includeDetails = boost::optional<bool>(true);
7
8api->getOfflineUsers(tenantId, urlId, options)
9 .then([](pplx::task<std::shared_ptr<PageUsersOfflineResponse>> t) {
10 try {
11 auto response = t.get();
12 } catch (const std::exception&) {
13 }
14 });
15

์˜จ๋ผ์ธ ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Currently-online viewers of a page: ํ˜„์žฌ ์›น์†Œ์ผ“ ์„ธ์…˜์ด ํ•ด๋‹น ํŽ˜์ด์ง€์— ๊ตฌ๋… ์ค‘์ธ ์‚ฌ๋žŒ๋“ค.

Returns anonCount + totalCount (room-wide subscribers, including anon viewers we don't enumerate).: anonCount + totalCount๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค (๋ฐฉ ์ „์ฒด ๊ตฌ๋…์ž ์ˆ˜, ์—ด๊ฑฐ๋˜์ง€ ์•Š์€ ์ต๋ช… ๋ทฐ์–ด ํฌํ•จ).

Parameters

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
optionsconst GetOnlineUsersOptions&Yes

Response

๋ฐ˜ํ™˜: PageUsersOnlineResponse

Example

getOnlineUsers ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("article-456");
4auto options = std::make_shared<GetOnlineUsersOptions>();
5options->maxResults = boost::optional<int>(100);
6options->includeInactive = boost::optional<bool>(false);
7api->getOnlineUsers(tenantId, urlId, *options).then([](pplx::task<std::shared_ptr<PageUsersOnlineResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

URL ID๋กœ ํŽ˜์ด์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetPageByURLIdAPIResponse

์˜ˆ์‹œ

getPageByURLId ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-456");
4boost::optional<utility::string_t> correlationId = boost::make_optional(utility::conversions::to_string_t("corr-789"));
5
6api->getPageByURLId(tenantId, urlId)
7 .then([correlationId](pplx::task<std::shared_ptr<GetPageByURLIdAPIResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

ํŽ˜์ด์ง€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link


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

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

์‘๋‹ต

๋ฐ˜ํ™˜: GetPagesAPIResponse

์˜ˆ์‹œ

getPages ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3api->getPages(tenantId)
4 .then([](pplx::task<std::shared_ptr<GetPagesAPIResponse>> task) {
5 try {
6 auto response = task.get();
7 boost::optional<utility::string_t> nextCursor = response->nextCursor;
8 } catch (const std::exception&) {
9 }
10 });
11

๊ณต๊ฐœ ํŽ˜์ด์ง€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

List pages for a tenant. Used by the FChat desktop client to populate its room list.
Requires enableFChat to be true on the resolved custom config for each page.
Pages that require SSO are filtered against the requesting user's group access.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetPagesPublicOptions&Yes

Response

Returns: GetPublicPagesResponse

Example

getPagesPublic ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetPagesPublicOptions options;
4options.limit = boost::optional<int>(50);
5options.cursor = boost::optional<utility::string_t>(U("cursor-token"));
6api->getPagesPublic(tenantId, options).then([](pplx::task<std::shared_ptr<GetPublicPagesResponse>> task){
7 try{
8 auto response = task.get();
9 // ํ•„์š”์— ๋”ฐ๋ผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
10 }catch(const std::exception&){
11 // ํ•„์š”์— ๋”ฐ๋ผ ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค
12 }
13});
14

์‚ฌ์šฉ์ž ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

ํ…Œ๋„ŒํŠธ์— ๋Œ€ํ•œ ๋Œ€๋Ÿ‰ ์‚ฌ์šฉ์ž ์ •๋ณด. ์ฃผ์–ด์ง„ userIds์— ๋Œ€ํ•ด User / SSOUser์˜ ํ‘œ์‹œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋Œ“๊ธ€ ์œ„์ ฏ์—์„œ ์กด์žฌ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ๋ฐฉ๊ธˆ ๋“ฑ์žฅํ•œ ์‚ฌ์šฉ์ž๋ฅผ ํ’๋ถ€ํ•˜๊ฒŒ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
ํŽ˜์ด์ง€ ์ปจํ…์ŠคํŠธ๊ฐ€ ์—†์œผ๋ฉฐ: ํ”„๋ผ์ด๋ฒ„์‹œ๊ฐ€ ์ผ๊ด€๋˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค (๋น„๊ณต๊ฐœ ํ”„๋กœํ•„์€ ๋งˆ์Šคํ‚น๋ฉ๋‹ˆ๋‹ค).

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idsstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: PageUsersInfoResponse

์˜ˆ์‹œ

getUsersInfo ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t ids = U("alice@example.com,bob@example.com");
4boost::optional<utility::string_t> locale = boost::make_optional(U("en-US"));
5
6api->getUsersInfo(tenantId, ids).then([](pplx::task<std::shared_ptr<PageUsersInfoResponse>> t){
7 try{
8 auto response = t.get();
9 // ์‘๋‹ต ์ฒ˜๋ฆฌ
10 }catch(const std::exception&){
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13});
14

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
updateAPIPageDataUpdateAPIPageDataYes

์‘๋‹ต

๋ฐ˜ํ™˜: PatchPageAPIResponse

์˜ˆ์‹œ

patchPage ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t pageId = U("page-789");
4UpdateAPIPageData update;
5update.title = boost::optional<utility::string_t>(U("Updated Page Title"));
6update.metadata = boost::optional<utility::string_t>(U("{\"author\":\"jane.doe@example.com\"}"));
7api->patchPage(tenantId, pageId, update)
8 .then([](std::shared_ptr<PatchPageAPIResponse> response) {
9 if (response && response->isSuccess) {
10 // ์„ฑ๊ณต ์ฒ˜๋ฆฌ
11 }
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception&) {}
15 });
16

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

์‘๋‹ต

Returns: APIEmptyResponse

์˜ˆ์‹œ

deletePendingWebhookEvent ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto eventId = utility::conversions::to_string_t("event-987654");
4boost::optional<utility::string_t> optTenant = tenantId;
5
6api->deletePendingWebhookEvent(optTenant.value(), eventId)
7 .then([](std::shared_ptr<APIEmptyResponse> resp) {
8 (void)resp;
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception& e) { }
12 });
13

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

Parameters

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetPendingWebhookEventCountOptions&Yes

Response

๋ฐ˜ํ™˜: GetPendingWebhookEventCountResponse

Example

getPendingWebhookEventCount ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3GetPendingWebhookEventCountOptions opts;
4opts.filter = boost::optional<utility::string_t>(utility::conversions::to_string_t("active"));
5api->getPendingWebhookEventCount(tenantId, opts)
6 .then([](std::shared_ptr<GetPendingWebhookEventCountResponse> resp){
7 auto count = resp->getCount();
8 });
9

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetPendingWebhookEventsOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: GetPendingWebhookEventsResponse

์˜ˆ์ œ

getPendingWebhookEvents ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetPendingWebhookEventsOptions opts;
4opts.pageSize = boost::optional<int>(100);
5opts.startAfter = boost::optional<utility::string_t>(U("event-abc-456"));
6api->getPendingWebhookEvents(tenantId, opts)
7 .then([](pplx::task<std::shared_ptr<GetPendingWebhookEventsResponse>> task) {
8 try {
9 auto resp = task.get();
10 auto copy = std::make_shared<GetPendingWebhookEventsResponse>(*resp);
11 } catch (const std::exception&) {}
12 });
13

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createQuestionConfigBodyCreateQuestionConfigBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateQuestionConfigResponse

์˜ˆ์ œ

createQuestionConfig ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3CreateQuestionConfigBody configBody;
4configBody.question = utility::string_t(U("How satisfied are you with our service?"));
5configBody.required = true;
6configBody.defaultAnswer = boost::optional<utility::string_t>(utility::string_t(U("Very satisfied")));
7api->createQuestionConfig(tenantId, configBody).then([](pplx::task<std::shared_ptr<CreateQuestionConfigResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){}
11});
12

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

deleteQuestionConfig ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto configId = utility::conversions::to_string_t("question-config-456");
4
5api->deleteQuestionConfig(tenantId, configId)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {
7 // ์„ฑ๊ณต์ ์ธ ์‚ญ์ œ ์ฒ˜๋ฆฌ
8 })
9 .then([](pplx::task<void> t) {
10 try {
11 t.get();
12 } catch (const std::exception&) {
13 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
14 }
15 });
16

์งˆ๋ฌธ ์„ค์ • ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionConfigResponse

์˜ˆ์ œ

getQuestionConfig ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto questionId = utility::conversions::to_string_t("question-456");
4
5api->getQuestionConfig(tenantId, questionId)
6 .then([](pplx::task<std::shared_ptr<GetQuestionConfigResponse>> task) {
7 try {
8 auto response = task.get();
9 // ํ•„์š”์— ๋”ฐ๋ผ ์‘๋‹ต ์‚ฌ์šฉ
10 } catch (const std::exception&) {
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13 });
14

์งˆ๋ฌธ ์„ค์ • ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
skipdouble์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionConfigsResponse

์˜ˆ์ œ

getQuestionConfigs ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<double> skip = 10.0;
4api->getQuestionConfigs(tenantId, skip).then([](std::shared_ptr<GetQuestionConfigsResponse> resp){
5 auto config = std::make_shared<GetQuestionConfigsResponse>(*resp);
6});
7

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updateQuestionConfigBodyUpdateQuestionConfigBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

updateQuestionConfig ์˜ˆ์‹œ
Copy Copy
1
2UpdateQuestionConfigBody updateBody;
3updateBody.enabled = true;
4updateBody.maxResponses = boost::optional<int>{10};
5updateBody.notes = boost::optional<utility::string_t>{U("Config updated via SDK")};
6
7api->updateQuestionConfig(U("my-tenant-123"), U("config-789"), updateBody)
8 .then([](std::shared_ptr<APIEmptyResponse> resp) {
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception&) {}
12 });
13

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createQuestionResultBodyCreateQuestionResultBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateQuestionResultResponse

์˜ˆ์ œ

createQuestionResult ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateQuestionResultBody body;
4body.questionId = U("question-456");
5body.result = U("approved");
6body.comment = boost::optional<utility::string_t>(U("Looks good"));
7api->createQuestionResult(tenantId, body)
8 .then([=](pplx::task<std::shared_ptr<CreateQuestionResultResponse>> t) {
9 try {
10 auto resp = t.get();
11 } catch (const std::exception&) {
12 }
13 });
14

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

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

Response

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

deleteQuestionResult ์˜ˆ์‹œ
Copy Copy
1
2boost::optional<utility::string_t> optTenant = utility::conversions::to_string_t( "my-tenant-123" );
3utility::string_t questionId = utility::conversions::to_string_t( "question-456" );
4
5if ( optTenant )
6{
7 api->deleteQuestionResult( *optTenant, questionId )
8 .then( []( pplx::task<std::shared_ptr<APIEmptyResponse>> t )
9 {
10 try
11 {
12 auto resp = t.get();
13 // ์„ฑ๊ณต ์ฒ˜๋ฆฌ
14 }
15 catch ( const std::exception& e )
16 {
17 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
18 }
19 } );
20}
21

์งˆ๋ฌธ ๊ฒฐ๊ณผ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionResultResponse

์˜ˆ์‹œ

getQuestionResult ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto questionId = utility::string_t(U("question-789"));
4boost::optional<utility::string_t> optionalParam = boost::none;
5
6api->getQuestionResult(tenantId, questionId)
7 .then([](pplx::task<std::shared_ptr<GetQuestionResultResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

์งˆ๋ฌธ ๊ฒฐ๊ณผ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetQuestionResultsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetQuestionResultsResponse

์˜ˆ์‹œ

getQuestionResults ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetQuestionResultsOptions options;
4options.questionId = boost::optional<utility::string_t>(U("question-456"));
5options.includeDeleted = boost::optional<bool>(false);
6api->getQuestionResults(tenantId, options)
7 .then([](pplx::task<std::shared_ptr<GetQuestionResultsResponse>> t) {
8 auto response = t.get();
9 // ์‘๋‹ต ์ฒ˜๋ฆฌ
10 });
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updateQuestionResultBodyUpdateQuestionResultBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

updateQuestionResult ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto questionId = utility::string_t(U("question-456"));
4UpdateQuestionResultBody body;
5body.result = U("approved");
6body.note = boost::optional<utility::string_t>(U("Reviewed by admin"));
7api->updateQuestionResult(tenantId, questionId, body)
8 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t) {
9 try {
10 auto respPtr = std::make_shared<APIEmptyResponse>(*t.get());
11 } catch (const std::exception&) {
12 }
13 });
14

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst AggregateQuestionResultsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: AggregateQuestionResultsResponse

์˜ˆ์ œ

aggregateQuestionResults ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3AggregateQuestionResultsOptions opts;
4opts.questionId = utility::conversions::to_string_t("question-789");
5opts.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z"), utility::datetime::ISO_8601));
6opts.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z"), utility::datetime::ISO_8601));
7api->aggregateQuestionResults(tenantId, opts)
8 .then([](std::shared_ptr<AggregateQuestionResultsResponse> resp) {
9 static_cast<void>(resp);
10 });
11

์งˆ๋ฌธ ๊ฒฐ๊ณผ ๋Œ€๋Ÿ‰ ์ง‘๊ณ„ Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestYes
forceRecalculateboolNo

์‘๋‹ต

๋ฐ˜ํ™˜: BulkAggregateQuestionResultsResponse

์˜ˆ์‹œ

bulkAggregateQuestionResults ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3BulkAggregateQuestionResultsRequest request;
4request.questionIds = {
5 utility::conversions::to_string_t("q123"),
6 utility::conversions::to_string_t("q456")
7};
8request.startDate = utility::datetime::from_string(U("2023-01-01T00:00:00Z"));
9request.endDate = utility::datetime::from_string(U("2023-01-31T23:59:59Z"));
10boost::optional<bool> forceRecalc = true;
11api->bulkAggregateQuestionResults(tenantId, request, forceRecalc)
12 .then([](pplx::task<std::shared_ptr<BulkAggregateQuestionResultsResponse>> t) {
13 auto resp = t.get();
14 });
15

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst CombineCommentsWithQuestionResultsOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: CombineQuestionResultsWithCommentsResponse

์˜ˆ์‹œ

combineCommentsWithQuestionResults ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = utility::string_t("my-tenant-123");
3CombineCommentsWithQuestionResultsOptions options;
4options.questionId = utility::string_t("question-789");
5options.maxComments = boost::optional<int>(50);
6api->combineCommentsWithQuestionResults(tenantId, options).then(
7 [](pplx::task<std::shared_ptr<CombineQuestionResultsWithCommentsResponse>> task){
8 try{
9 auto respPtr = task.get();
10 auto combined = std::make_shared<CombineQuestionResultsWithCommentsResponse>(*respPtr);
11 // ํ•„์š”์— ๋”ฐ๋ผ combined ์‚ฌ์šฉ
12 }catch(const std::exception&){
13 }
14 });
15

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

์‘๋‹ต

๋ฐ˜ํ™˜: AddSSOUserAPIResponse

์˜ˆ์‹œ

addSSOUser ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateAPISSOUserData createAPISSOUserData;
4createAPISSOUserData.email = utility::conversions::to_string_t("john.doe@example.com");
5createAPISSOUserData.externalId = utility::conversions::to_string_t("ext-9876");
6createAPISSOUserData.firstName = boost::optional<utility::string_t>(utility::conversions::to_string_t("John"));
7createAPISSOUserData.lastName = boost::optional<utility::string_t>(utility::conversions::to_string_t("Doe"));
8api->addSSOUser(tenantId, createAPISSOUserData)
9 .then([](std::shared_ptr<AddSSOUserAPIResponse> resp) {
10 });
11

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

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
optionsconst DeleteSSOUserOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteSSOUserAPIResponse

์˜ˆ์‹œ

deleteSSOUser ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto userId = U("user-456");
4DeleteSSOUserOptions options;
5options.dryRun = boost::optional<bool>(true);
6api->deleteSSOUser(tenantId, userId, options).then([](std::shared_ptr<DeleteSSOUserAPIResponse> resp) {
7 if (resp) {
8 (void)resp;
9 }
10});
11

์ด๋ฉ”์ผ๋กœ SSO ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
emailstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetSSOUserByEmailAPIResponse

์˜ˆ์‹œ

getSSOUserByEmail ์˜ˆ์‹œ
Copy Copy
1
2auto correlationId = boost::optional<utility::string_t>(utility::conversions::to_string_t("corr-001"));
3
4api->getSSOUserByEmail(
5 utility::conversions::to_string_t("my-tenant-123"),
6 utility::conversions::to_string_t("user@example.com")
7).then([](pplx::task<std::shared_ptr<GetSSOUserByEmailAPIResponse>> t) {
8 try {
9 auto response = t.get();
10 } catch (const std::exception&) {
11 }
12});
13

ID๋กœ SSO ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link


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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetSSOUserByIdAPIResponse

์˜ˆ์ œ

getSSOUserById ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto ssoUserId = U("user-789");
4api->getSSOUserById(tenantId, ssoUserId)
5 .then([](std::shared_ptr<GetSSOUserByIdAPIResponse> resp) {
6 boost::optional<utility::string_t> email;
7 if (resp && resp->email) email = resp->email;
8 if (email) {
9 auto e = *email;
10 }
11 });
12

SSO ์‚ฌ์šฉ์ž ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
skipint32_t์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetSSOUsersResponse

์˜ˆ์ œ

getSSOUsers ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<int32_t> skip = 25;
4api->getSSOUsers(tenantId, skip).then([](pplx::task<std::shared_ptr<GetSSOUsersResponse>> t) {
5 try {
6 auto response = t.get();
7 } catch (const std::exception&) {
8 }
9});
10

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updateAPISSOUserDataUpdateAPISSOUserData์˜ˆ
updateCommentsbool์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: PatchSSOUserAPIResponse

์˜ˆ์‹œ

patchSSOUser ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user-456");
4UpdateAPISSOUserData updateData;
5updateData.email = U("jane.doe@example.com");
6updateData.displayName = U("Jane Doe");
7boost::optional<bool> updateComments = true;
8
9api->patchSSOUser(tenantId, userId, updateData, updateComments)
10 .then([](pplx::task<std::shared_ptr<PatchSSOUserAPIResponse>> t){
11 try{
12 auto resp = t.get();
13 (void)resp;
14 }catch(const std::exception&){
15 }
16 });
17

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsboolNo

์‘๋‹ต

๋ฐ˜ํ™˜: PutSSOUserAPIResponse

์˜ˆ์‹œ

putSSOUser ์˜ˆ์‹œ
Copy Copy
1
2UpdateAPISSOUserData userData;
3userData.email = utility::conversions::to_string_t("alice@example.com");
4userData.first_name = utility::conversions::to_string_t("Alice");
5userData.last_name = utility::conversions::to_string_t("Smith");
6userData.role = utility::conversions::to_string_t("moderator");
7
8api->putSSOUser(
9 utility::conversions::to_string_t("my-tenant-123"),
10 utility::conversions::to_string_t("alice.smith"),
11 userData,
12 boost::optional<bool>(true)
13).then([](pplx::task<std::shared_ptr<PutSSOUserAPIResponse>> t) {
14 auto response = t.get();
15});
16

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateSubscriptionAPIResponse

์˜ˆ์‹œ

createSubscription ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3CreateAPIUserSubscriptionData subscriptionData;
4subscriptionData.email = U("user@example.com");
5subscriptionData.planId = U("premium-plan");
6subscriptionData.couponCode = boost::optional<utility::string_t>(U("WELCOME10"));
7api->createSubscription(tenantId, subscriptionData)
8 .then([](pplx::task<std::shared_ptr<CreateSubscriptionAPIResponse>> task) {
9 try {
10 auto response = task.get();
11 } catch (const std::exception&) {
12 }
13 });
14

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
userIdstringNo

์‘๋‹ต

๋ฐ˜ํ™˜: DeleteSubscriptionAPIResponse

์˜ˆ์‹œ

deleteSubscription ์˜ˆ์‹œ
Copy Copy
1
2api->deleteSubscription(utility::string_t(U("my-tenant-123")), utility::string_t(U("sub-456")), boost::optional<utility::string_t>(utility::string_t(U("user@example.com"))))
3 .then([](std::shared_ptr<DeleteSubscriptionAPIResponse> resp){
4 if (resp) {
5 }
6 });
7

๊ตฌ๋… ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
userIdstring์•„๋‹ˆ์˜ค

์‘๋‹ต

Returns: GetSubscriptionsAPIResponse

์˜ˆ์‹œ

getSubscriptions ์˜ˆ์‹œ
Copy Copy
1
2auto tenant = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> user = utility::conversions::to_string_t("user@example.com");
4
5api->getSubscriptions(tenant, user).then(
6 [](pplx::task<std::shared_ptr<GetSubscriptionsAPIResponse>> t) {
7 try {
8 auto response = t.get();
9 // ์‘๋‹ต ์ฒ˜๋ฆฌ
10 } catch (const std::exception& e) {
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13 }
14);
15

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

Parameters

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionData์˜ˆ
userIdstring์•„๋‹ˆ์˜ค

Response

๋ฐ˜ํ™˜: UpdateSubscriptionAPIResponse

Example

updateSubscription ์˜ˆ์‹œ
Copy Copy
1
2UpdateAPIUserSubscriptionData subscriptionData;
3subscriptionData.plan = utility::conversions::to_string_t("premium");
4subscriptionData.active = true;
5
6api->updateSubscription(
7 utility::conversions::to_string_t("my-tenant-123"),
8 utility::conversions::to_string_t("sub-987654"),
9 subscriptionData,
10 boost::optional<utility::string_t>(utility::conversions::to_string_t("admin-user-456"))
11).then([](std::shared_ptr<UpdateSubscriptionAPIResponse> response){
12 bool ok = response && response->isSuccess;
13 (void)ok;
14});
15

ํ…Œ๋„ŒํŠธ ์ผ์ผ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetTenantDailyUsagesOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantDailyUsagesResponse

์˜ˆ์‹œ

getTenantDailyUsages ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetTenantDailyUsagesOptions opts;
4opts.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z")));
5opts.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z")));
6api->getTenantDailyUsages(tenantId, opts).then([](std::shared_ptr<GetTenantDailyUsagesResponse> resp){
7 auto result = std::make_shared<GetTenantDailyUsagesResponse>(*resp);
8}).wait();
9

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

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

์ด๋ฆ„ํ˜•์‹Required์„ค๋ช…
tenantIdstringYes
createTenantPackageBodyCreateTenantPackageBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTenantPackageResponse

์˜ˆ์‹œ

createTenantPackage ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateTenantPackageBody body;
4body.name = utility::conversions::to_string_t("Pro Plan");
5body.maxUsers = 100;
6body.expiryDate = boost::optional<utility::datetime>(utility::datetime::utc_now() + std::chrono::hours(24 * 30));
7body.notes = boost::none;
8api->createTenantPackage(tenantId, body).then([](pplx::task<std::shared_ptr<CreateTenantPackageResponse>> t){
9 try{
10 auto resp = t.get();
11 }catch(const std::exception&){
12 }
13});
14

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

deleteTenantPackage ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto packageId = utility::conversions::to_string_t("pkg-456");
4boost::optional<utility::string_t> optTenant = tenantId;
5boost::optional<utility::string_t> optPackage = packageId;
6api->deleteTenantPackage(optTenant.value(), optPackage.value())
7 .then([](std::shared_ptr<APIEmptyResponse>){ })
8 .then([](pplx::task<void> t){ try{ t.get(); }catch(const std::exception&){ } });
9

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


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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantPackageResponse

์˜ˆ์‹œ

getTenantPackage ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto packageId = U("pkg-456");
4api->getTenantPackage(tenantId, packageId).then([](pplx::task<std::shared_ptr<GetTenantPackageResponse>> task){
5 try{
6 auto resp = task.get();
7 auto result = std::make_shared<GetTenantPackageResponse>(*resp);
8 }catch(...){}
9});
10

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
skipdoubleNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantPackagesResponse

์˜ˆ์ œ

getTenantPackages ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<double> skip = 20.0;
4api->getTenantPackages(tenantId, skip)
5 .then([](std::shared_ptr<GetTenantPackagesResponse> resp) {
6 (void)resp;
7 });
8

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
replaceTenantPackageBodyReplaceTenantPackageBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜๊ฐ’: APIEmptyResponse

์˜ˆ์‹œ

replaceTenantPackage ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto pkgId = utility::conversions::to_string_t("pkg-456");
4ReplaceTenantPackageBody body;
5body.planId = utility::conversions::to_string_t("enterprise");
6body.notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Upgrade request"));
7api->replaceTenantPackage(tenantId, pkgId, body)
8 .then([](std::shared_ptr<APIEmptyResponse>) { })
9 .then([](pplx::task<void> t) {
10 try { t.get(); } catch (const std::exception&) { }
11 });
12

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updateTenantPackageBodyUpdateTenantPackageBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

updateTenantPackage ์˜ˆ์‹œ
Copy Copy
1
2auto body = std::make_shared<UpdateTenantPackageBody>();
3body->packageId = utility::conversions::to_string_t("premium-plan");
4body->expirationDate = utility::conversions::to_string_t("2025-12-31");
5body->notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Upgraded package"));
6
7api->updateTenantPackage(utility::conversions::to_string_t("my-tenant-123"),
8 utility::conversions::to_string_t("pkg-456"),
9 body)
10 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task) {
11 try {
12 auto response = task.get();
13 // success handling
14 } catch (const std::exception& ex) {
15 // error handling
16 }
17 });
18

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createTenantUserBodyCreateTenantUserBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTenantUserResponse

์˜ˆ์‹œ

createTenantUser ์˜ˆ์‹œ
Copy Copy
1
2auto body = CreateTenantUserBody{};
3body.email = utility::conversions::to_string_t("newuser@example.com");
4body.firstName = utility::conversions::to_string_t("Alice");
5body.lastName = utility::conversions::to_string_t("Smith");
6body.role = boost::optional<utility::string_t>(utility::conversions::to_string_t("moderator"));
7
8api->createTenantUser(utility::conversions::to_string_t("my-tenant-123"), body)
9 .then([](pplx::task<std::shared_ptr<CreateTenantUserResponse>> task) {
10 try {
11 auto response = task.get();
12 } catch (const std::exception&) {
13 }
14 });
15

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


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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
optionsconst DeleteTenantUserOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

deleteTenantUser ์˜ˆ์ œ
Copy Copy
1
2DeleteTenantUserOptions options;
3options.reason = boost::optional<utility::string_t>(U("User requested deletion"));
4
5api->deleteTenantUser(U("my-tenant-123"), U("user@example.com"), options)
6 .then([](std::shared_ptr<APIEmptyResponse> resp){
7 (void)resp;
8 });
9

ํ…Œ๋„ŒํŠธ ์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantUserResponse

์˜ˆ์‹œ

getTenantUser ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user@example.com");
4api->getTenantUser(tenantId, userId)
5 .then([](pplx::task<std::shared_ptr<GetTenantUserResponse>> task) {
6 try {
7 auto response = task.get();
8 // ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‘๋‹ต ์‚ฌ์šฉ
9 } catch (const std::exception&) {
10 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
11 }
12 });
13

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

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

NameTypeRequiredDescription
tenantIdstring์˜ˆ
skipdouble์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantUsersResponse

์˜ˆ์‹œ

getTenantUsers ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<double> skip = 10;
4
5api->getTenantUsers(tenantId, skip).then([](pplx::task<std::shared_ptr<GetTenantUsersResponse>> t){
6 try {
7 auto resp = t.get();
8 } catch (const std::exception&) {
9 }
10});
11

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

replaceTenantUser ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto userId = utility::string_t(U("john.doe@example.com"));
4ReplaceTenantUserBody replaceBody;
5replaceBody.email = utility::string_t(U("john.doe@example.com"));
6replaceBody.role = utility::string_t(U("admin"));
7boost::optional<utility::string_t> updateComments = utility::string_t(U("Promoted to admin"));
8api->replaceTenantUser(tenantId, userId, replaceBody, updateComments)
9 .then([](std::shared_ptr<APIEmptyResponse> resp){ });
10

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
redirectURLstringNo

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

sendLoginLink ์˜ˆ์‹œ
Copy Copy
1
2api->sendLoginLink(
3 U("my-tenant-123"),
4 U("user@example.com"),
5 boost::make_optional(U("https://myapp.com/auth/callback"))
6).then([](std::shared_ptr<APIEmptyResponse> resp) {
7});
8

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
updateTenantUserBodyUpdateTenantUserBody์˜ˆ
updateCommentsstring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์ œ

updateTenantUser ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user-456");
4UpdateTenantUserBody body;
5body.email = U("john.doe@example.com");
6body.role = U("admin");
7boost::optional<utility::string_t> updateComments = U("Promoted to admin");
8
9api->updateTenantUser(tenantId, userId, body, updateComments)
10 .then([](std::shared_ptr<APIEmptyResponse>){ });
11

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
createTenantBodyCreateTenantBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTenantResponse

์˜ˆ์‹œ

createTenant ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateTenantBody body;
4body.setName(utility::conversions::to_string_t("Acme Corp"));
5body.setAdminEmail(utility::conversions::to_string_t("admin@acme.com"));
6body.setPlan(utility::conversions::to_string_t("enterprise"));
7body.setDescription(boost::optional<utility::string_t>(utility::conversions::to_string_t("Primary tenant for Acme")));
8
9api->createTenant(tenantId, body).then([](pplx::task<std::shared_ptr<CreateTenantResponse>> t){
10 auto resp = t.get();
11});
12

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
surestring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์‹œ

deleteTenant ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user@example.com");
4boost::optional<utility::string_t> sure = utility::conversions::to_string_t("true");
5api->deleteTenant(tenantId, userId, sure)
6 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t){
7 try{
8 auto resp = t.get();
9 auto result = std::make_shared<APIEmptyResponse>(*resp);
10 }catch(const std::exception&){})
11

ํ…Œ๋„ŒํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantResponse

์˜ˆ์ œ

getTenant ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto id = utility::conversions::to_string_t("tenant-admin-456");
4boost::optional<utility::string_t> includeDetails = utility::conversions::to_string_t("full");
5api->getTenant(tenantId, id)
6 .then([](std::shared_ptr<GetTenantResponse> resp) {
7 if (resp) {
8 std::wcout << resp->toString() << std::endl;
9 }
10 });
11

ํ…Œ๋„ŒํŠธ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetTenantsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetTenantsResponse

์˜ˆ์ œ

getTenants ์˜ˆ์ œ
Copy Copy
1
2GetTenantsOptions options;
3options.includeDeleted = boost::make_optional(false);
4options.searchTerm = boost::make_optional(utility::string_t(U("enterprise")));
5
6api->getTenants(utility::string_t(U("my-tenant-123")), options)
7 .then([](std::shared_ptr<GetTenantsResponse> response) {
8 })
9 .then([](pplx::task<void> t){ try{ t.get(); }catch(...){} });
10

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptyResponse

์˜ˆ์ œ

updateTenant ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto recordId = utility::string_t(U("tenant-456"));
4UpdateTenantBody body;
5body.name = boost::optional<utility::string_t>(U("Acme Corp"));
6body.contactEmail = boost::optional<utility::string_t>(U("admin@acme.com"));
7api->updateTenant(tenantId, recordId, body).then([](std::shared_ptr<APIEmptyResponse> resp) {
8 auto log = std::make_shared<utility::string_t>(U("Tenant update succeeded"));
9 (void)resp;
10 (void)log;
11});
12

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
userIdstring์˜ˆ
idstring์˜ˆ
changeTicketStateBodyChangeTicketStateBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: ChangeTicketStateResponse

์˜ˆ์ œ

changeTicketState ์˜ˆ์ œ
Copy Copy
1
2auto body = std::make_shared<ChangeTicketStateBody>();
3body->state = U("closed");
4body->comment = boost::optional<utility::string_t>(U("Ticket resolved"));
5api->changeTicketState(U("my-tenant-123"), U("user@example.com"), U("ticket-456"), *body)
6 .then([](std::shared_ptr<ChangeTicketStateResponse>) {});
7

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
userIdstring์˜ˆ
createTicketBodyCreateTicketBody์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: CreateTicketResponse

์˜ˆ์‹œ

createTicket ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("john.doe@example.com");
4CreateTicketBody ticketBody;
5ticketBody.setSubject(utility::conversions::to_string_t("Login Issue"));
6ticketBody.setDescription(utility::conversions::to_string_t("Cannot log in after password reset."));
7boost::optional<int> priority = 2;
8ticketBody.setPriority(priority);
9api->createTicket(tenantId, userId, ticketBody).then([](pplx::task<std::shared_ptr<CreateTicketResponse>> task){
10 try{
11 auto response = task.get();
12 // ์‘๋‹ต์„ ํ•„์š”ํ•œ ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
13 }catch(const std::exception&){
14 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
15 }
16});
17

ํ‹ฐ์ผ“ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
userIdstring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: GetTicketResponse

์˜ˆ์‹œ

getTicket ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t ticketId = U("ticket-789");
4boost::optional<utility::string_t> userId = U("alice@example.com");
5api->getTicket(tenantId, ticketId, userId).then([](pplx::task<std::shared_ptr<GetTicketResponse>> task){
6 try{
7 auto resp = task.get();
8 }catch(const std::exception&){
9 }
10});
11

ํ‹ฐ์ผ“ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์š”์„ค๋ช…
tenantIdstringYes
optionsconst GetTicketsOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: GetTicketsResponse

์˜ˆ์‹œ

getTickets ์˜ˆ์‹œ
Copy Copy
1
2auto options = GetTicketsOptions{};
3options.page = boost::optional<int>(1);
4options.status = boost::optional<utility::string_t>(U("open"));
5api->getTickets(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<GetTicketsResponse>> task) {
6 try {
7 auto response = task.get();
8 auto responseCopy = std::make_shared<GetTicketsResponse>(*response);
9 } catch (const std::exception&) {
10 }
11});
12

๋ฒˆ์—ญ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
r_namespacestring์˜ˆ
componentstring์˜ˆ
optionsconst GetTranslationsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetTranslationsResponse

์˜ˆ์ œ

getTranslations ์˜ˆ์ œ
Copy Copy
1
2utility::string_t ns = U("my-tenant-123");
3utility::string_t comp = U("comments");
4auto optsPtr = std::make_shared<GetTranslationsOptions>();
5optsPtr->language = boost::make_optional(U("en"));
6optsPtr->fallback = boost::none;
7api->getTranslations(ns, comp, *optsPtr)
8 .then([](pplx::task<std::shared_ptr<GetTranslationsResponse>> t) {
9 try {
10 auto resp = t.get();
11 } catch (const std::exception& e) {
12 }
13 });
14

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


์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜๊ธฐ

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
fileHttpContentYes
optionsconst UploadImageOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: UploadImageResponse

์˜ˆ์‹œ

uploadImage ์˜ˆ์‹œ
Copy Copy
1
2auto fileStream = concurrency::streams::fstream::open_istream(U("avatar.png"), std::ios::in).get();
3HttpContent file(fileStream, U("image/png"));
4UploadImageOptions options;
5options.description = boost::optional<utility::string_t>(U("Profile picture"));
6options.width = boost::optional<int>(256);
7options.height = boost::optional<int>(256);
8api->uploadImage(U("my-tenant-123"), file, options).then([](pplx::task<std::shared_ptr<UploadImageResponse>> t){
9 auto resp = t.get();
10});
11

ID๋กœ ์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์ง„ํ–‰ ์ƒํƒœ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APIGetUserBadgeProgressResponse

์˜ˆ์‹œ

getUserBadgeProgressById ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto userId = U("user-456");
4api->getUserBadgeProgressById(tenantId, userId)
5 .then([=](pplx::task<std::shared_ptr<APIGetUserBadgeProgressResponse>> t){
6 try{
7 auto resp = t.get();
8 boost::optional<std::shared_ptr<APIGetUserBadgeProgressResponse>> optResp = resp;
9 if(optResp){}
10 }catch(const std::exception&){}
11 });
12

์‚ฌ์šฉ์ž ID๋กœ ๋ฐฐ์ง€ ์ง„ํ–‰ ์ƒํƒœ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
userIdstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: APIGetUserBadgeProgressResponse

์˜ˆ์ œ

getUserBadgeProgressByUserId ์˜ˆ์ œ
Copy Copy
1
2boost::optional<std::shared_ptr<APIGetUserBadgeProgressResponse>> responseOpt;
3api->getUserBadgeProgressByUserId(
4 utility::conversions::to_string_t("my-tenant-123"),
5 utility::conversions::to_string_t("user@example.com"))
6 .then([&responseOpt](pplx::task<std::shared_ptr<APIGetUserBadgeProgressResponse>> t) {
7 try {
8 responseOpt = t.get();
9 } catch (...) {
10 responseOpt = boost::none;
11 }
12 });
13

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ์ง„ํ–‰ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetUserBadgeProgressListOptions&Yes

Response

Returns: APIGetUserBadgeProgressListResponse

Example

getUserBadgeProgressList ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetUserBadgeProgressListOptions options;
4options.userId = U("user@example.com");
5options.page = boost::optional<int>(1);
6options.pageSize = boost::optional<int>(20);
7api->getUserBadgeProgressList(tenantId, options)
8 .then([](std::shared_ptr<APIGetUserBadgeProgressListResponse> resp) {
9 if (!resp) return;
10 for (const auto& badge : resp->badges) {
11 // process badge
12 }
13 });
14

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
createUserBadgeParamsCreateUserBadgeParams์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: APICreateUserBadgeResponse

์˜ˆ์‹œ

createUserBadge ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3CreateUserBadgeParams badgeParams;
4badgeParams.userEmail = U("user@example.com");
5badgeParams.badgeCode = U("gold");
6badgeParams.expirationDate = boost::optional<utility::datetime>(utility::datetime::utc_now() + utility::datetime::from_seconds(2592000));
7api->createUserBadge(tenantId, badgeParams).then([](std::shared_ptr<APICreateUserBadgeResponse> resp){
8 if (resp && resp->success) {
9 auto result = std::make_shared<APICreateUserBadgeResponse>(*resp);
10 }
11});
12

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

Parameters

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

Response

๋ฐ˜ํ™˜: APIEmptySuccessResponse

Example

deleteUserBadge ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = boost::optional<utility::string_t>(U("my-tenant-123"));
3auto badgeId = utility::string_t(U("badge-789"));
4api->deleteUserBadge(tenantId.value(), badgeId)
5 .then([](std::shared_ptr<APIEmptySuccessResponse> resp){
6 auto copy = std::make_shared<APIEmptySuccessResponse>(*resp);
7 })
8 .then([](pplx::task<void> t){
9 try{ t.get(); } catch(const std::exception&){ }
10 });
11

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ

Response

๋ฐ˜ํ™˜: APIGetUserBadgeResponse

Example

getUserBadge ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user-456");
4api->getUserBadge(tenantId, userId).then([](pplx::task<std::shared_ptr<APIGetUserBadgeResponse>> t){
5 try{
6 auto resp = t.get();
7 boost::optional<std::string> badgeUrl = resp->badge_url ? boost::optional<std::string>(*resp->badge_url) : boost::none;
8 }catch(const std::exception&){
9 }
10});
11

์‚ฌ์šฉ์ž ๋ฐฐ์ง€ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
optionsconst GetUserBadgesOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: APIGetUserBadgesResponse

์˜ˆ์‹œ

getUserBadges ์˜ˆ์ œ
Copy Copy
1
2GetUserBadgesOptions opts;
3opts.userId = boost::make_optional(U("user@example.com"));
4opts.includeExpired = boost::make_optional(false);
5
6api->getUserBadges(U("my-tenant-123"), opts)
7 .then([](pplx::task<std::shared_ptr<APIGetUserBadgesResponse>> t) {
8 try {
9 auto response = t.get();
10 } catch (const std::exception&) {
11 }
12 });
13

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

์‘๋‹ต

๋ฐ˜ํ™˜: APIEmptySuccessResponse

์˜ˆ์ œ

updateUserBadge ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user@example.com");
4UpdateUserBadgeParams params;
5params.badgeId = utility::conversions::to_string_t("vip-badge");
6params.expiration = boost::optional<utility::datetime>(utility::datetime::from_string(U("2024-12-31T23:59:59Z")));
7api->updateUserBadge(tenantId, userId, params)
8 .then([](std::shared_ptr<APIEmptySuccessResponse> resp){
9 std::cout << "Badge updated successfully\n";
10 })
11 .catch([](std::exception const& e){
12 std::cerr << "Error updating badge: " << e.what() << "\n";
13 });
14

์‚ฌ์šฉ์ž ์•Œ๋ฆผ ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
ssostringNo

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserNotificationCountResponse

์˜ˆ์‹œ

getUserNotificationCount ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> sso = utility::conversions::to_string_t("user@example.com");
4api->getUserNotificationCount(tenantId, sso).then([](pplx::task<std::shared_ptr<GetUserNotificationCountResponse>> t){
5 try{
6 auto resp = t.get();
7 // use resp as needed
8 }catch(const std::exception&){
9 // handle error
10 }
11});
12

์‚ฌ์šฉ์ž ์•Œ๋ฆผ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„ํ˜•์‹ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst GetUserNotificationsOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetMyNotificationsResponse

์˜ˆ์‹œ

getUserNotifications ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = utility::string_t("my-tenant-123");
3GetUserNotificationsOptions options;
4options.limit = boost::optional<int>(20);
5options.unreadOnly = boost::optional<bool>(true);
6api->getUserNotifications(tenantId, options)
7 .then([](pplx::task<std::shared_ptr<GetMyNotificationsResponse>> task){
8 auto resp = task.get();
9 auto notifications = std::make_shared<GetMyNotificationsResponse>(*resp);
10 });
11

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
ssostring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: ResetUserNotificationsResponse

์˜ˆ์‹œ

resetUserNotificationCount ์˜ˆ์‹œ
Copy Copy
1
2auto resetTask = api->resetUserNotificationCount(
3 U("my-tenant-123"),
4 boost::optional<utility::string_t>(U("user@example.com"))
5).then([](std::shared_ptr<ResetUserNotificationsResponse> resp){
6});
7

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

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
optionsconst ResetUserNotificationsOptions&์˜ˆ

Response

๋ฐ˜ํ™˜: ResetUserNotificationsResponse

Example

resetUserNotifications ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3ResetUserNotificationsOptions options;
4options.email = boost::optional<utility::string_t>(U("user@example.com"));
5api->resetUserNotifications(tenantId, options)
6 .then([](std::shared_ptr<ResetUserNotificationsResponse> resp) {
7 // ์‘๋‹ต ์ฒ˜๋ฆฌ
8 });
9

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

Enable or disable notifications for a specific comment.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
notificationIdstringYes
optedInOrOutstringYes
commentIdstringYes
ssostringNo

Response

๋ฐ˜ํ™˜: UpdateUserNotificationCommentSubscriptionStatusResponse

Example

updateUserNotificationCommentSubscriptionStatus ์˜ˆ์ œ
Copy Copy
1
2auto updateTask = api->updateUserNotificationCommentSubscriptionStatus(
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("notif-456"),
5 utility::conversions::to_string_t("optedIn"),
6 utility::conversions::to_string_t("comment-789"),
7 boost::optional<utility::string_t>(utility::conversions::to_string_t("sso-token-abc"))
8).then([](std::shared_ptr<UpdateUserNotificationCommentSubscriptionStatusResponse> resp){
9 (void)resp;
10});
11

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

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

Parameters

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedstringYes
ssostringNo

Response

๋ฐ˜ํ™˜: UpdateUserNotificationPageSubscriptionStatusResponse

Example

updateUserNotificationPageSubscriptionStatus ์˜ˆ์ œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("page-456");
4utility::string_t url = U("https://example.com/articles/awesome-article");
5utility::string_t pageTitle = U("Awesome Article");
6utility::string_t subscription = U("subscribed");
7boost::optional<utility::string_t> sso = boost::make_optional<utility::string_t>(U("sso-token-789"));
8
9api->updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscription, sso)
10 .then([](std::shared_ptr<UpdateUserNotificationPageSubscriptionStatusResponse> resp) {
11 // ํ•„์š”์— ๋”ฐ๋ผ resp๋ฅผ ์ฒ˜๋ฆฌ
12 });
13

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


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

NameTypeRequiredDescription
tenantIdstringYes
notificationIdstringYes
newStatusstringYes
ssostringNo

์‘๋‹ต

Returns: UpdateUserNotificationStatusResponse

์˜ˆ์‹œ

updateUserNotificationStatus ์˜ˆ์‹œ
Copy Copy
1
2api->updateUserNotificationStatus(
3 U("my-tenant-123"),
4 U("notif-456"),
5 U("read"),
6 boost::optional<utility::string_t>(U("sso-token-abc"))
7).then([](std::shared_ptr<UpdateUserNotificationStatusResponse> resp) {
8}).wait();
9

์‚ฌ์šฉ์ž ์ ‘์† ์ƒํƒœ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdWSstring์˜ˆ
userIdsstring์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserPresenceStatusesResponse

์˜ˆ์‹œ

getUserPresenceStatuses ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto urlIdWS = U("article-789");
4auto userIds = U("alice@example.com,bob@example.com");
5boost::optional<utility::string_t> optionalFilter = boost::none;
6api->getUserPresenceStatuses(tenantId, urlIdWS, userIds)
7 .then([](pplx::task<std::shared_ptr<GetUserPresenceStatusesResponse>> t){
8 try{
9 auto response = t.get();
10 }catch(...){
11 }
12 });
13

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

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

์ด๋ฆ„ํƒ€์ž…ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
urlIdstringYes
optionsconst SearchUsersOptions&Yes

์‘๋‹ต

๋ฐ˜ํ™˜: SearchUsersResult

์˜ˆ์‹œ

searchUsers ์˜ˆ์‹œ
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("article-456");
4SearchUsersOptions options;
5options.query = U("john.doe@example.com");
6options.page = boost::optional<int>(1);
7options.pageSize = boost::optional<int>(20);
8api->searchUsers(tenantId, urlId, options).then([](pplx::task<std::shared_ptr<SearchUsersResult>> task){
9 try{
10 auto result = task.get();
11 }catch(const std::exception&){}
12});
13

์‚ฌ์šฉ์ž ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstringYes
idstringYes

์‘๋‹ต

๋ฐ˜ํ™˜: GetUserResponse

์˜ˆ์‹œ

getUser ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user-789");
4boost::optional<utility::string_t> optTag = boost::none;
5
6api->getUser(tenantId, userId)
7 .then([=](pplx::task<std::shared_ptr<GetUserResponse>> task) {
8 try {
9 auto response = task.get();
10 if (!response) {
11 response = std::make_shared<GetUserResponse>();
12 }
13 // ์‘๋‹ต์„ ํ•„์š”์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ
14 } catch (const std::exception&) {
15 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
16 }
17 });
18

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
commentIdstring์˜ˆ
directionstring์˜ˆ
optionsconst CreateVoteOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: VoteResponse

์˜ˆ์‹œ

createVote ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456");
4auto direction = utility::conversions::to_string_t("up");
5auto optionsPtr = std::make_shared<CreateVoteOptions>();
6optionsPtr->userId = utility::conversions::to_string_t("user-789");
7optionsPtr->ipAddress = boost::optional<utility::string_t>(utility::conversions::to_string_t("192.168.1.100"));
8api->createVote(tenantId, commentId, direction, *optionsPtr)
9 .then([](std::shared_ptr<VoteResponse> resp){});
10

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

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
idstring์˜ˆ
editKeystring์•„๋‹ˆ์˜ค

์‘๋‹ต

๋ฐ˜ํ™˜: VoteDeleteResponse

์˜ˆ์‹œ

deleteVote ์˜ˆ์‹œ
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto voteId = utility::conversions::to_string_t("vote-9876");
4boost::optional<utility::string_t> editKey = utility::conversions::to_string_t("edit-abc123");
5
6api->deleteVote(tenantId, voteId, editKey).then([](pplx::task<std::shared_ptr<VoteDeleteResponse>> task) {
7 try {
8 auto response = task.get();
9 // ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‘๋‹ต ์ฒ˜๋ฆฌ
10 } catch (const std::exception&) {
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13});
14

ํˆฌํ‘œ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstring์˜ˆ
urlIdstring์˜ˆ

Response

๋ฐ˜ํ™˜: GetVotesResponse

Example

getVotes ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("article-456"));
4boost::optional<utility::string_t> extraHeader = boost::none;
5
6api->getVotes(tenantId, urlId).then([=](pplx::task<std::shared_ptr<GetVotesResponse>> task) {
7 try {
8 auto original = task.get();
9 auto response = std::make_shared<GetVotesResponse>(*original);
10 } catch (...) {
11 // ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ
12 }
13});
14

์‚ฌ์šฉ์ž ํˆฌํ‘œ ๊ฐ€์ ธ์˜ค๊ธฐ Internal Link

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

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜์„ค๋ช…
tenantIdstring์˜ˆ
urlIdstring์˜ˆ
optionsconst GetVotesForUserOptions&์˜ˆ

์‘๋‹ต

๋ฐ˜ํ™˜: GetVotesForUserResponse

์˜ˆ์‹œ

getVotesForUser ์˜ˆ์ œ
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("post-456"));
4GetVotesForUserOptions options;
5options.page = boost::optional<int>(2);
6options.pageSize = boost::optional<int>(50);
7api->getVotesForUser(tenantId, urlId, options).then([](std::shared_ptr<GetVotesForUserResponse> response) {
8 if (response) {
9 // ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค, ์˜ˆ: ํˆฌํ‘œ๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค
10 }
11});
12

๋„์›€์ด ํ•„์š”ํ•˜์‹ ๊ฐ€์š”?

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

๊ธฐ์—ฌ

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