FastComments.com

FastComments C++ SDK


Това е официалното C++ SDK за FastComments.

Официално C++ SDK за FastComments API

Репозитория

Преглед в GitHub


Изисквания Internal Link


  • C++17 или по-нова версия
  • CMake 3.14 или по-нова версия
  • OpenSSL
  • C++ REST SDK (cpprestsdk)
  • Boost
  • Google Test (автоматично се изтегля за тестване)

Инсталиране Internal Link

Инсталиране на зависимости

sudo apt install libcpprest-dev libboost-all-dev

Изграждане от изходния код

mkdir build
cd build
cmake ..
make

Инсталиране

sudo make install

Съдържание на библиотеката

Тази библиотека съдържа генерирания API клиент и SSO инструментите, за да улесни работата с API-то.

Публични срещу защитени API

За API клиента има два класа, DefaultAPI и PublicAPI. Класът DefaultAPI съдържа методи, които изискват вашия API ключ, а PublicAPI съдържа извиквания на API които могат да се извършат директно от браузър/мобилно устройство/и т.н. без удостоверяване.

Бележки Internal Link

Идентификатори на излъчване

Ще видите, че трябва да подадете broadcastId в някои API повиквания. Когато получавате събития, ще получите този идентификатор обратно, така че да знаете да игнорирате събитието, ако планирате да приложите промените оптимистично на клиента (което вероятно ще искате да направите, тъй като това осигурява най-доброто изживяване). Подайте UUID тук. Идентификаторът трябва да бъде достатъчно уникален, за да не се появи два пъти в една браузърна сесия.

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

aggregate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
aggregationRequestAggregationRequestДа
parentTenantIdstringНе
includeStatsboolНе

Отговор

Връща: AggregationResponse

Пример

Пример за aggregate
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3AggregationRequest aggReq;
4boost::optional<utility::string_t> parentTenant = boost::optional<utility::string_t>(U("parent-org-456"));
5boost::optional<bool> includeStats = boost::optional<bool>(true);
6auto aggTask = api->aggregate(tenantId, aggReq, parentTenant, includeStats)
7 .then([](pplx::task<std::shared_ptr<AggregationResponse>> t) {
8 try {
9 auto res = t.get();
10 auto out = std::make_shared<AggregationResponse>(*res);
11 return out;
12 } catch (...) {
13 return std::shared_ptr<AggregationResponse>();
14 }
15 });
16

getAuditLogs Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
limitdoubleНе
skipdoubleНе
orderSORT_DIRНе
afterdoubleНе
beforedoubleНе

Отговор

Връща: GetAuditLogs_200_response

Пример

Пример getAuditLogs
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> limit = 100;
4boost::optional<double> skip = 0;
5boost::optional<SORT_DIR> order = SORT_DIR::DESC;
6boost::optional<double> after = 1633046400;
7boost::optional<double> before = 1633132800;
8api->getAuditLogs(tenantId, limit, skip, order, after, before)
9.then([](pplx::task<std::shared_ptr<GetAuditLogs_200_response>> t) {
10 try {
11 auto resp = t.get();
12 if (resp) {
13 auto copy = std::make_shared<GetAuditLogs_200_response>(*resp);
14 (void)copy;
15 }
16 } catch (...) {
17 }
18});
19

blockFromCommentPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
publicBlockFromCommentParamsPublicBlockFromCommentParamsДа
ssostringНе

Отговор

Връща: BlockFromCommentPublic_200_response

Пример

Пример за blockFromCommentPublic
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654321");
4PublicBlockFromCommentParams params;
5params.reason = U("Repeated harassment");
6params.durationMinutes = 1440;
7boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("sso-token-abc123"));
8auto placeholder = std::make_shared<BlockFromCommentPublic_200_response>();
9api->blockFromCommentPublic(tenantId, commentId, params, sso)
10.then([](pplx::task<std::shared_ptr<BlockFromCommentPublic_200_response>> t) {
11 try {
12 auto resp = t.get();
13 if (resp) std::wcout << U("Comment blocked successfully\n");
14 else std::wcout << U("Block request returned empty response\n");
15 } catch (...) {
16 std::wcout << U("Block request failed\n");
17 }
18});
19

unBlockCommentPublic Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
publicBlockFromCommentParamsPublicBlockFromCommentParamsДа
ssostringНе

Отговор

Връща: UnBlockCommentPublic_200_response

Пример

Пример на unBlockCommentPublic
Copy Copy
1
2auto publicParams = std::make_shared<PublicBlockFromCommentParams>();
3boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(utility::string_t(U("user@example.com")));
4api->unBlockCommentPublic(utility::string_t(U("my-tenant-123")), utility::string_t(U("comment-98765")), *publicParams, sso)
5.then([](pplx::task<std::shared_ptr<UnBlockCommentPublic_200_response>> task) {
6 try {
7 auto resp = task.get();
8 if (resp) std::cout << "Unblocked comment successfully" << std::endl;
9 } catch (const std::exception& e) {
10 std::cerr << "Unblock failed: " << e.what() << std::endl;
11 }
12});
13

checkedCommentsForBlocked Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdsstringДа
ssostringНе

Отговор

Връща: CheckedCommentsForBlocked_200_response

Пример

Пример за checkedCommentsForBlocked
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3utility::string_t commentIds = utility::conversions::to_string_t("cmt-456,cmt-789");
4boost::optional<utility::string_t> sso = utility::conversions::to_string_t("user@example.com");
5auto task = api->checkedCommentsForBlocked(tenantId, commentIds, sso)
6 .then([=](std::shared_ptr<CheckedCommentsForBlocked_200_response> resp) -> std::shared_ptr<CheckedCommentsForBlocked_200_response> {
7 if (!resp) return std::make_shared<CheckedCommentsForBlocked_200_response>();
8 return resp;
9 });
10

blockUserFromComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
blockFromCommentParamsBlockFromCommentParamsДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: BlockFromCommentPublic_200_response

Пример

Пример за blockUserFromComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4auto blockParams = std::make_shared<BlockFromCommentParams>();
5boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
6boost::optional<utility::string_t> anonUserId = boost::optional<utility::string_t>(U("anon-98765"));
7api->blockUserFromComment(tenantId, commentId, *blockParams, userId, anonUserId)
8.then([](std::shared_ptr<BlockFromCommentPublic_200_response> resp){
9 if (resp) {
10 std::cout << "User blocked successfully\n";
11 } else {
12 std::cout << "Block request returned empty response\n";
13 }
14}).wait();
15

createCommentPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа
broadcastIdstringДа
commentDataCommentDataДа
sessionIdstringНе
ssostringНе

Отговор

Връща: CreateCommentPublic_200_response

Пример

createCommentPublic Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("/articles/2026/fastcomments-cpp-integration");
4utility::string_t broadcastId = U("broadcast-001");
5CommentData commentData;
6commentData.content = U("Hello from the C++ SDK — great article!");
7commentData.authorEmail = U("reader@example.com");
8commentData.authorName = U("Jane Reader");
9boost::optional<utility::string_t> sessionId = boost::optional<utility::string_t>(U("sess-9f3a2"));
10boost::optional<utility::string_t> sso = boost::none;
11auto task = api->createCommentPublic(tenantId, urlId, broadcastId, commentData, sessionId, sso)
12 .then([](pplx::task<std::shared_ptr<CreateCommentPublic_200_response>> t) {
13 try {
14 auto resp = t.get();
15 if (resp) {
16 auto resultCopy = std::make_shared<CreateCommentPublic_200_response>(*resp);
17 }
18 } catch (const std::exception&) {}
19 });
20task.wait();
21

deleteComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
contextUserIdstringНе
isLiveboolНе

Отговор

Връща: DeleteComment_200_response

Пример

deleteComment пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654321");
4boost::optional<utility::string_t> contextUserId = boost::optional<utility::string_t>(U("moderator@acme.com"));
5boost::optional<bool> isLive = boost::optional<bool>(true);
6api->deleteComment(tenantId, commentId, contextUserId, isLive)
7.then([](pplx::task<std::shared_ptr<DeleteComment_200_response>> t){
8 try {
9 auto resp = t.get();
10 if (resp) {
11 auto processed = std::make_shared<DeleteComment_200_response>(*resp);
12 }
13 } catch (const std::exception&) {
14 }
15});
16

deleteCommentPublic Internal Link


Параметри

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
editKeystringНе
ssostringНе

Отговор

Връща: DeleteCommentPublic_200_response

Пример

Пример за deleteCommentPublic
Copy Copy
1
2utility::string_t tenantId(U("my-tenant-123"));
3utility::string_t commentId(U("cmt-456"));
4utility::string_t broadcastId(U("brd-789"));
5boost::optional<utility::string_t> editKey = boost::optional<utility::string_t>(utility::string_t(U("editkey-abc123")));
6boost::optional<utility::string_t> sso;
7
8api->deleteCommentPublic(tenantId, commentId, broadcastId, editKey, sso)
9.then([](pplx::task<std::shared_ptr<DeleteCommentPublic_200_response>> t){
10 try {
11 auto resp = t.get();
12 if (resp) {
13 auto copied = std::make_shared<DeleteCommentPublic_200_response>(*resp);
14 (void)copied;
15 }
16 } catch (const std::exception&) {
17 auto fallback = std::make_shared<DeleteCommentPublic_200_response>();
18 (void)fallback;
19 }
20});
21

deleteCommentVote Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
voteIdstringДа
urlIdstringДа
broadcastIdstringДа
editKeystringНе
ssostringНе

Отговор

Връща: DeleteCommentVote_200_response

Пример

Пример за deleteCommentVote
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-789");
4utility::string_t voteId = U("vote-456");
5utility::string_t urlId = U("/articles/2026/fastcomments-guide");
6utility::string_t broadcastId = U("broadcast-001");
7boost::optional<utility::string_t> editKey = boost::optional<utility::string_t>(U("editkey-abc"));
8boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
9auto placeholder = std::make_shared<DeleteCommentVote_200_response>();
10api->deleteCommentVote(tenantId, commentId, voteId, urlId, broadcastId, editKey, sso)
11.then([=](pplx::task<std::shared_ptr<DeleteCommentVote_200_response>> t){
12 try {
13 auto resp = t.get();
14 if (resp) std::cout << "Vote deleted\n";
15 } catch (const std::exception &e) {
16 std::cerr << "Delete failed: " << e.what() << '\n';
17 }
18});
19

flagComment Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: FlagComment_200_response

Пример

Пример за flagComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4boost::optional<utility::string_t> userId{ utility::string_t(U("user@example.com")) };
5boost::optional<utility::string_t> anonUserId;
6
7api->flagComment(tenantId, commentId, userId, anonUserId)
8.then([](std::shared_ptr<FlagComment_200_response> resp) {
9 auto result = resp ? resp : std::make_shared<FlagComment_200_response>();
10 (void)result;
11});
12

getComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Отговор

Връща: GetComment_200_response

Пример

Пример за getComment
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> maybeId = utility::conversions::to_string_t("comment-98765");
4auto getTask = api->getComment(tenantId, *maybeId)
5 .then([](pplx::task<std::shared_ptr<GetComment_200_response>> t) {
6 try {
7 auto resp = t.get();
8 auto result = resp ? resp : std::make_shared<GetComment_200_response>();
9 return result;
10 } catch (const std::exception&) {
11 return std::make_shared<GetComment_200_response>();
12 }
13 });
14

getComments Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
pageint32_tНе
limitint32_tНе
skipint32_tНе
asTreeboolНе
skipChildrenint32_tНе
limitChildrenint32_tНе
maxTreeDepthint32_tНе
urlIdstringНе
userIdstringНе
anonUserIdstringНе
contextUserIdstringНе
hashTagstringНе
parentIdstringНе
directionSortDirectionsНе

Отговор

Връща: GetComments_200_response

Пример

Пример за getComments
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<int32_t> page(1);
4boost::optional<int32_t> limit(50);
5boost::optional<int32_t> skip(0);
6boost::optional<bool> asTree(true);
7boost::optional<int32_t> skipChildren(0);
8boost::optional<int32_t> limitChildren(10);
9boost::optional<int32_t> maxTreeDepth(3);
10boost::optional<utility::string_t> urlId(U("/articles/2025/fast-api"));
11boost::optional<utility::string_t> userId(U("user@example.com"));
12boost::optional<utility::string_t> anonUserId(U("anon-abc-123"));
13boost::optional<utility::string_t> contextUserId(U("context-user-789"));
14boost::optional<utility::string_t> hashTag(U("release"));
15boost::optional<utility::string_t> parentId(U("parent-comment-456"));
16boost::optional<SortDirections> direction(SortDirections::DESCENDING);
17
18api->getComments(tenantId, page, limit, skip, asTree, skipChildren, limitChildren, maxTreeDepth, urlId, userId, anonUserId, contextUserId, hashTag, parentId, direction)
19.then([](pplx::task<std::shared_ptr<GetComments_200_response>> task){
20 try {
21 auto response = task.get();
22 if (!response) response = std::make_shared<GetComments_200_response>();
23 } catch (const std::exception&) {
24 }
25});
26

getCommentsPublic Internal Link

req tenantId urlId

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа
pageint32_tНе
directionSortDirectionsНе
ssostringНе
skipint32_tНе
skipChildrenint32_tНе
limitint32_tНе
limitChildrenint32_tНе
countChildrenboolНе
fetchPageForCommentIdstringНе
includeConfigboolНе
countAllboolНе
includei10nboolНе
localestringНе
modulesstringНе
isCrawlerboolНе
includeNotificationCountboolНе
asTreeboolНе
maxTreeDepthint32_tНе
useFullTranslationIdsboolНе
parentIdstringНе
searchTextstringНе
hashTagsvector<stringНе
userIdstringНе
customConfigStrstringНе
afterCommentIdstringНе
beforeCommentIdstringНе

Отговор

Връща: GetCommentsPublic_200_response

Пример

Пример за getCommentsPublic
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("article-2026-01-12");
4boost::optional<int32_t> page(2);
5boost::optional<SortDirections> direction(SortDirections::DESC);
6boost::optional<bool> includeConfig(true);
7boost::optional<std::vector<utility::string_t>> hashTags(std::vector<utility::string_t>{ U("feature"), U("bug") });
8api->getCommentsPublic(
9 tenantId,
10 urlId,
11 page,
12 direction,
13 boost::optional<utility::string_t>(),
14 boost::optional<int32_t>(),
15 boost::optional<int32_t>(),
16 boost::optional<int32_t>(50),
17 boost::optional<int32_t>(),
18 boost::optional<bool>(false),
19 boost::optional<utility::string_t>(),
20 includeConfig,
21 boost::optional<bool>(),
22 boost::optional<bool>(),
23 boost::optional<utility::string_t>(),
24 boost::optional<utility::string_t>(),
25 boost::optional<bool>(),
26 boost::optional<bool>(),
27 boost::optional<bool>(),
28 boost::optional<int32_t>(),
29 boost::optional<bool>(),
30 boost::optional<utility::string_t>(),
31 boost::optional<utility::string_t>(),
32 hashTags,
33 boost::optional<utility::string_t>(U("user-789")),
34 boost::optional<utility::string_t>(),
35 boost::optional<utility::string_t>()
36).then([](pplx::task<std::shared_ptr<GetCommentsPublic_200_response>> t){
37 try {
38 auto resp = t.get();
39 auto fallback = std::make_shared<GetCommentsPublic_200_response>();
40 (void)(resp ? resp : fallback);
41 } catch (...) {}
42});
43

getCommentText Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
editKeystringНе
ssostringНе

Отговор

Връща: GetCommentText_200_response

Пример

Пример за getCommentText
Copy Copy
1
2utility::string_t tenantId(U("my-tenant-123"));
3utility::string_t commentId(U("cmt-456"));
4boost::optional<utility::string_t> editKey(utility::string_t(U("edit-key-789")));
5boost::optional<utility::string_t> sso(utility::string_t(U("user@example.com")));
6auto task = api->getCommentText(tenantId, commentId, editKey, sso)
7 .then([](std::shared_ptr<GetCommentText_200_response> resp){
8 if (resp) {
9 std::cout << "Comment text retrieved\n";
10 } else {
11 std::cout << "Comment not found\n";
12 }
13 });
14task.wait();
15

getCommentVoteUserNames Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
dirint32_tДа
ssostringНе

Отговор

Връща: GetCommentVoteUserNames_200_response

Пример

Пример за getCommentVoteUserNames
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456");
4int32_t dir = 1;
5boost::optional<utility::string_t> sso{ utility::string_t(U("user@example.com")) };
6api->getCommentVoteUserNames(tenantId, commentId, dir, sso)
7 .then([](pplx::task<std::shared_ptr<GetCommentVoteUserNames_200_response>> t) {
8 try {
9 auto resp = t.get();
10 if (!resp) resp = std::make_shared<GetCommentVoteUserNames_200_response>();
11 } catch (const std::exception&) {
12 }
13 });
14

lockComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
ssostringНе

Отговор

Връща: LockComment_200_response

Пример

lockComment Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456");
4utility::string_t broadcastId = U("brdcst-789");
5boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
6
7api->lockComment(tenantId, commentId, broadcastId, sso)
8 .then([](pplx::task<std::shared_ptr<LockComment_200_response>> t)
9 {
10 try
11 {
12 auto resp = t.get();
13 if(!resp)
14 {
15 resp = std::make_shared<LockComment_200_response>();
16 }
17 }
18 catch(const std::exception& ex)
19 {
20 (void)ex;
21 }
22 });
23

pinComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
ssostringНе

Отговор

Връща: PinComment_200_response

Пример

Пример за pinComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4utility::string_t broadcastId = U("broadcast-98765");
5boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
6
7api->pinComment(tenantId, commentId, broadcastId, sso)
8.then([](pplx::task<std::shared_ptr<PinComment_200_response>> t){
9 try {
10 auto resp = t.get();
11 if (!resp) resp = std::make_shared<PinComment_200_response>();
12 (void)resp;
13 } catch (...) {}
14}).wait();
15

saveComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createCommentParamsCreateCommentParamsДа
isLiveboolНе
doSpamCheckboolНе
sendEmailsboolНе
populateNotificationsboolНе

Отговор

Връща: SaveComment_200_response

Пример

saveComment Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3auto createParamsPtr = std::make_shared<CreateCommentParams>();
4createParamsPtr->content = utility::string_t(U("This is a test comment posted via SDK"));
5createParamsPtr->authorEmail = utility::string_t(U("user@example.com"));
6createParamsPtr->threadId = utility::string_t(U("thread-456"));
7boost::optional<bool> isLive(true);
8boost::optional<bool> doSpamCheck(false);
9boost::optional<bool> sendEmails(true);
10boost::optional<bool> populateNotifications(false);
11auto task = api->saveComment(tenantId, *createParamsPtr, isLive, doSpamCheck, sendEmails, populateNotifications)
12.then([](std::shared_ptr<SaveComment_200_response> resp){
13 if (resp) std::cout << "Comment saved successfully\n";
14 else std::cout << "Failed to save comment\n";
15});
16task.wait();
17

setCommentText Internal Link

Параметри

NameTypeЗадължителноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
commentTextUpdateRequestCommentTextUpdateRequestДа
editKeystringНе
ssostringНе

Отговор

Връща: SetCommentText_200_response

Пример

Пример за setCommentText
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456");
4utility::string_t broadcastId = U("bcast-789");
5CommentTextUpdateRequest commentTextUpdateRequest;
6commentTextUpdateRequest.setText(U("Updated comment text by moderator."));
7boost::optional<utility::string_t> editKey = boost::optional<utility::string_t>(U("edit-key-abc123"));
8boost::optional<utility::string_t> sso;
9api->setCommentText(tenantId, commentId, broadcastId, commentTextUpdateRequest, editKey, sso)
10.then([](pplx::task<std::shared_ptr<SetCommentText_200_response>> task){
11 try {
12 auto resp = task.get();
13 if (resp) {
14 auto result = std::make_shared<SetCommentText_200_response>(*resp);
15 std::cout << "Comment updated\n";
16 } else {
17 std::cout << "No response\n";
18 }
19 } catch (const std::exception &e) {
20 std::cerr << "setCommentText error: " << e.what() << '\n';
21 }
22});
23

unBlockUserFromComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
unBlockFromCommentParamsUnBlockFromCommentParamsДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: UnBlockCommentPublic_200_response

Пример

Пример за unBlockUserFromComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4auto paramsPtr = std::make_shared<UnBlockFromCommentParams>();
5boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
6boost::optional<utility::string_t> anonUserId = boost::none;
7api->unBlockUserFromComment(tenantId, commentId, *paramsPtr, userId, anonUserId)
8 .then([](std::shared_ptr<UnBlockCommentPublic_200_response> resp){
9 (void)resp;
10 })
11 .wait();
12

unFlagComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: FlagComment_200_response

Пример

Пример за unFlagComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654321");
4boost::optional<utility::string_t> userId(U("user@example.com"));
5boost::optional<utility::string_t> anonUserId;
6auto fallback = std::make_shared<FlagComment_200_response>();
7api->unFlagComment(tenantId, commentId, userId, anonUserId)
8 .then([fallback](pplx::task<std::shared_ptr<FlagComment_200_response>> t) {
9 try {
10 auto resp = t.get();
11 if (!resp) resp = fallback;
12 } catch (...) {
13 }
14 });
15

unLockComment Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
ssostringНе

Отговор

Връща: LockComment_200_response

Пример

Пример за unLockComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654");
4utility::string_t broadcastId = U("brd-456");
5boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
6auto dummyResp = std::make_shared<LockComment_200_response>();
7api->unLockComment(tenantId, commentId, broadcastId, sso)
8.then([](pplx::task<std::shared_ptr<LockComment_200_response>> task){
9 try {
10 auto resp = task.get();
11 if (resp) {
12 std::cout << "Comment unlocked successfully\n";
13 } else {
14 std::cout << "Unlock returned empty response\n";
15 }
16 } catch (const std::exception& e) {
17 std::cerr << "Error unlocking comment: " << e.what() << '\n';
18 }
19});
20

unPinComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
ssostringНе

Отговор

Връща: PinComment_200_response

Пример

Пример за unPinComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4utility::string_t broadcastId = U("brd-98765");
5boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
6auto defaultResp = std::make_shared<PinComment_200_response>();
7api->unPinComment(tenantId, commentId, broadcastId, sso)
8.then([defaultResp](pplx::task<std::shared_ptr<PinComment_200_response>> task) {
9 try {
10 auto resp = task.get();
11 if (!resp) resp = defaultResp;
12 std::cout << "unPinComment completed; response pointer " << (resp ? "valid" : "null") << std::endl;
13 } catch (const std::exception &e) {
14 std::cerr << "unPinComment failed: " << e.what() << std::endl;
15 }
16});
17

updateComment Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updatableCommentParamsUpdatableCommentParamsДа
contextUserIdstringНе
doSpamCheckboolНе
isLiveboolНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateComment
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("comment-456"));
4auto body = std::make_shared<UpdatableCommentParams>();
5body->content = utility::string_t(U("Updated comment text: fixed a typo and clarified meaning."));
6boost::optional<utility::string_t> contextUserId(utility::string_t(U("user@example.com")));
7boost::optional<bool> doSpamCheck(true);
8boost::optional<bool> isLive(false);
9api->updateComment(tenantId, commentId, body, contextUserId, doSpamCheck, isLive)
10.then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t){
11 try {
12 auto result = t.get();
13 (void)result;
14 } catch (...) {}
15});
16

voteComment Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
urlIdstringДа
broadcastIdstringДа
voteBodyParamsVoteBodyParamsДа
sessionIdstringНе
ssostringНе

Отговор

Връща: VoteComment_200_response

Пример

Пример за voteComment
Copy Copy
1
2VoteBodyParams voteBodyParams;
3utility::string_t tenantId = U("my-tenant-123");
4utility::string_t commentId = U("cmt-7890");
5utility::string_t urlId = U("/articles/2025/how-to-cpprest");
6utility::string_t broadcastId = U("broadcast-321");
7boost::optional<utility::string_t> sessionId = boost::optional<utility::string_t>(U("sess-0a1b2c"));
8boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("sso-jwt-xyz"));
9
10api->voteComment(tenantId, commentId, urlId, broadcastId, voteBodyParams, sessionId, sso)
11 .then([](pplx::task<std::shared_ptr<VoteComment_200_response>> t) {
12 try {
13 auto resp = t.get();
14 if (!resp) resp = std::make_shared<VoteComment_200_response>();
15 } catch (...) {
16 }
17 });
18

addDomainConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
addDomainConfigParamsAddDomainConfigParamsДа

Отговор

Връща: AddDomainConfig_200_response

Пример

addDomainConfig Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3AddDomainConfigParams params;
4params.domain = U("comments.example.com");
5params.allowSubdomains = boost::optional<bool>(true);
6params.contactEmail = boost::optional<utility::string_t>(U("admin@example.com"));
7api->addDomainConfig(tenantId, params)
8.then([](pplx::task<std::shared_ptr<AddDomainConfig_200_response>> t) {
9 try {
10 auto resp = t.get();
11 if (resp) {
12 auto copy = std::make_shared<AddDomainConfig_200_response>(*resp);
13 (void)copy;
14 }
15 } catch (const std::exception& e) {
16 (void)e;
17 }
18});
19

deleteDomainConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
domainstringДа

Отговор

Връща: DeleteDomainConfig_200_response

Пример

Пример за deleteDomainConfig
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domain = U("comments.example.com");
4boost::optional<utility::string_t> ifMatch = boost::optional<utility::string_t>(U("W/\"abc123\""));
5api->deleteDomainConfig(tenantId, domain)
6.then([](pplx::task<std::shared_ptr<DeleteDomainConfig_200_response>> t) {
7 try {
8 auto resp = t.get();
9 if (resp) {
10 auto resultCopy = std::make_shared<DeleteDomainConfig_200_response>(*resp);
11 }
12 } catch (const std::exception&) {
13 }
14});
15

getDomainConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
domainstringДа

Отговор

Връща: GetDomainConfig_200_response

Пример

getDomainConfig Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domain = U("example.com");
4boost::optional<utility::string_t> env = boost::optional<utility::string_t>(U("production"));
5api->getDomainConfig(tenantId, domain).then([=](pplx::task<std::shared_ptr<GetDomainConfig_200_response>> t) {
6 try {
7 auto resp = t.get();
8 if (!resp) resp = std::make_shared<GetDomainConfig_200_response>();
9 std::cout << "Domain config received for " << utility::conversions::to_utf8string(domain) << '\n';
10 } catch (const std::exception &ex) {
11 std::cerr << "Failed to get domain config: " << ex.what() << '\n';
12 }
13});
14

getDomainConfigs Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа

Отговор

Връща: GetDomainConfigs_200_response

Пример

Пример за getDomainConfigs
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> requestId = utility::conversions::to_string_t("req-789");
4api->getDomainConfigs(tenantId)
5 .then([requestId](pplx::task<std::shared_ptr<GetDomainConfigs_200_response>> t){
6 try {
7 auto resp = t.get();
8 auto copy = std::make_shared<GetDomainConfigs_200_response>(*resp);
9 if (requestId) std::cout << "Request id present\n";
10 std::cout << "Domain configs loaded\n";
11 } catch (const std::exception &e) {
12 std::cerr << "Error: " << e.what() << '\n';
13 }
14 }).wait();
15

patchDomainConfig Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
domainToUpdatestringДа
patchDomainConfigParamsPatchDomainConfigParamsДа

Отговор

Връща: GetDomainConfig_200_response

Пример

Пример за patchDomainConfig
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domainToUpdate = U("example.com");
4PatchDomainConfigParams params;
5params.adminEmail = boost::optional<utility::string_t>(U("admin@example.com"));
6params.enableSso = boost::optional<bool>(true);
7params.ssoRedirectUrl = boost::optional<utility::string_t>(U("https://auth.example.com/callback"));
8api->patchDomainConfig(tenantId, domainToUpdate, params)
9 .then([](pplx::task<std::shared_ptr<GetDomainConfig_200_response>> task){
10 try {
11 auto resp = task.get();
12 if (resp) {
13 auto updated = std::make_shared<GetDomainConfig_200_response>(*resp);
14 }
15 } catch (const std::exception& e) {
16 auto err = std::string(e.what());
17 }
18 });
19

putDomainConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
domainToUpdatestringДа
updateDomainConfigParamsUpdateDomainConfigParamsДа

Отговор

Връща: GetDomainConfig_200_response

Пример

putDomainConfig Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domainToUpdate = U("comments.myapp.com");
4auto params = std::make_shared<UpdateDomainConfigParams>();
5params->displayName = utility::string_t(U("My App Comments"));
6params->enabled = boost::optional<bool>(true);
7params->contactEmail = boost::optional<utility::string_t>(U("admin@myapp.com"));
8api->putDomainConfig(tenantId, domainToUpdate, *params)
9.then([](pplx::task<std::shared_ptr<GetDomainConfig_200_response>> t){
10 try {
11 auto resp = t.get();
12 if (resp) {
13 auto updated = resp;
14 }
15 } catch (const std::exception& e) {
16 }
17});
18

createEmailTemplate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createEmailTemplateBodyCreateEmailTemplateBodyДа

Отговор

Връща: CreateEmailTemplate_200_response

Пример

Пример за createEmailTemplate
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3auto body = std::make_shared<CreateEmailTemplateBody>();
4body->name = utility::string_t(U("Welcome Email"));
5body->subject = utility::string_t(U("Welcome to Our Service"));
6body->fromEmail = utility::string_t(U("no-reply@mycompany.com"));
7body->fromName = utility::string_t(U("MyCompany Support"));
8body->html = utility::string_t(U("<p>Hello {{user.name}}, welcome to MyCompany.</p>"));
9body->description = boost::optional<utility::string_t>(utility::string_t(U("Onboarding welcome template")));
10api->createEmailTemplate(tenantId, *body)
11.then([](pplx::task<std::shared_ptr<CreateEmailTemplate_200_response>> task){
12 try {
13 auto resp = task.get();
14 if (resp) {
15 bool created = true;
16 (void)created;
17 }
18 } catch (const std::exception&) {
19 }
20});
21

deleteEmailTemplate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteEmailTemplate
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t templateId = U("welcome-email-template-456");
4boost::optional<utility::string_t> requestNote = boost::optional<utility::string_t>(U("remove-obsolete"));
5auto fallback = std::make_shared<FlagCommentPublic_200_response>();
6api->deleteEmailTemplate(tenantId, templateId)
7.then([requestNote, fallback](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) -> pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> {
8 try {
9 auto resp = t.get();
10 if (resp) return pplx::task_from_result(resp);
11 if (requestNote) return pplx::task_from_result(fallback);
12 return pplx::task_from_result<std::shared_ptr<FlagCommentPublic_200_response>>(nullptr);
13 } catch (...) {
14 return pplx::task_from_result<std::shared_ptr<FlagCommentPublic_200_response>>(nullptr);
15 }
16});
17

deleteEmailTemplateRenderError Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа
errorIdstringДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteEmailTemplateRenderError
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t templateId = U("welcome-email-template-456");
4utility::string_t errorId = U("render-error-789");
5auto placeholder = std::make_shared<FlagCommentPublic_200_response>();
6boost::optional<utility::string_t> operatorNote = boost::none;
7operatorNote = U("auto-resolved");
8
9api->deleteEmailTemplateRenderError(tenantId, templateId, errorId)
10 .then([operatorNote, templateId](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> previous) {
11 try {
12 auto resp = previous.get();
13 if (resp) {
14 std::cout << "Successfully deleted render error for template: " << utility::conversions::to_utf8string(templateId) << std::endl;
15 }
16 if (operatorNote) {
17 std::cout << "Note: " << utility::conversions::to_utf8string(operatorNote.value()) << std::endl;
18 }
19 } catch (const std::exception &e) {
20 std::cerr << "API error: " << e.what() << std::endl;
21 }
22 });
23

getEmailTemplate Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Отговор

Връща: GetEmailTemplate_200_response

Пример

Пример за getEmailTemplate
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t templateId = U("welcome-email-001");
4boost::optional<utility::string_t> preferLocale = boost::optional<utility::string_t>(U("en-US"));
5api->getEmailTemplate(tenantId, templateId)
6 .then([preferLocale](std::shared_ptr<GetEmailTemplate_200_response> resp) {
7 auto templateResp = resp ? resp : std::make_shared<GetEmailTemplate_200_response>();
8 if (preferLocale) {
9 (void)preferLocale;
10 }
11 return templateResp;
12 });
13

getEmailTemplateDefinitions Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа

Отговор

Връща: GetEmailTemplateDefinitions_200_response

Пример

Пример за getEmailTemplateDefinitions
Copy Copy
1
2boost::optional<utility::string_t> tenantIdOpt = utility::string_t(U("my-tenant-123"));
3api->getEmailTemplateDefinitions(tenantIdOpt.value())
4.then([](pplx::task<std::shared_ptr<GetEmailTemplateDefinitions_200_response>> task) {
5 try {
6 auto resp = task.get();
7 auto localCopy = std::make_shared<GetEmailTemplateDefinitions_200_response>(*resp);
8 (void)localCopy;
9 } catch (const std::exception& e) {
10 auto fallback = std::make_shared<GetEmailTemplateDefinitions_200_response>();
11 (void)fallback;
12 }
13});
14

getEmailTemplateRenderErrors Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
skipdoubleНе

Отговор

Връща: GetEmailTemplateRenderErrors_200_response

Пример

getEmailTemplateRenderErrors Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("email-template-789");
4boost::optional<double> skip{10.0};
5auto defaultResp = std::make_shared<GetEmailTemplateRenderErrors_200_response>();
6api->getEmailTemplateRenderErrors(tenantId, id, skip).then([defaultResp](pplx::task<std::shared_ptr<GetEmailTemplateRenderErrors_200_response>> t){
7 try {
8 auto resp = t.get();
9 if(!resp) resp = defaultResp;
10 std::wcout << (resp ? U("Received render errors response\n") : U("No response\n"));
11 } catch(...) {
12 std::wcout << U("Failed to retrieve render errors\n");
13 }
14});
15

getEmailTemplates Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipdoubleНе

Отговор

Връща: GetEmailTemplates_200_response

Пример

Пример за getEmailTemplates
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> skip = 10.0;
4api->getEmailTemplates(tenantId, skip).then([](pplx::task<std::shared_ptr<GetEmailTemplates_200_response>> t){
5 try {
6 auto resp = t.get();
7 if (resp) {
8 auto copy = std::make_shared<GetEmailTemplates_200_response>(*resp);
9 }
10 } catch (const std::exception& e) {
11 (void)e;
12 }
13});
14

renderEmailTemplate Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
renderEmailTemplateBodyRenderEmailTemplateBodyДа
localestringНе

Отговор

Връща: RenderEmailTemplate_200_response

Пример

renderEmailTemplate Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3RenderEmailTemplateBody renderEmailTemplateBody;
4renderEmailTemplateBody.setTemplateName(U("welcome_wagon"));
5renderEmailTemplateBody.setRecipient(U("alice@example.com"));
6web::json::value vars;
7vars[U("firstName")] = web::json::value::string(U("Alice"));
8renderEmailTemplateBody.setVariables(vars);
9boost::optional<utility::string_t> locale = boost::optional<utility::string_t>(U("en-US"));
10auto placeholder = std::make_shared<RenderEmailTemplate_200_response>();
11api->renderEmailTemplate(tenantId, renderEmailTemplateBody, locale)
12.then([](pplx::task<std::shared_ptr<RenderEmailTemplate_200_response>> task){
13 try {
14 auto resp = task.get();
15 if (resp) {
16 std::cout << "Email template rendered successfully" << std::endl;
17 } else {
18 std::cerr << "No response returned" << std::endl;
19 }
20 } catch (const std::exception& e) {
21 std::cerr << "Render failed: " << e.what() << std::endl;
22 }
23});
24

updateEmailTemplate Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateEmailTemplateBodyUpdateEmailTemplateBodyДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateEmailTemplate
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t templateId = U("welcome-email-01");
4UpdateEmailTemplateBody updateBody;
5boost::optional<utility::string_t> optionalFrom = boost::optional<utility::string_t>(U("no-reply@myapp.com"));
6updateBody.from = optionalFrom;
7updateBody.subject = U("Welcome to MyApp");
8updateBody.html = U("<p>Hi {{displayName}}, welcome to MyApp!</p>");
9auto bodyPtr = std::make_shared<UpdateEmailTemplateBody>(updateBody);
10api->updateEmailTemplate(tenantId, templateId, *bodyPtr)
11.then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t){
12 try {
13 auto resp = t.get();
14 if (resp) {
15 std::cout << "Email template updated successfully\n";
16 } else {
17 std::cout << "Unexpected empty response\n";
18 }
19 } catch (const std::exception &e) {
20 std::cerr << "Update failed: " << e.what() << '\n';
21 }
22});
23

getEventLog Internal Link

req tenantId urlId userIdWS

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimeint64_tДа
endTimeint64_tДа

Отговор

Връща: GetEventLog_200_response

Пример

Пример за getEventLog
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("article-456");
4utility::string_t userIdWS = U("user@example.com");
5int64_t startTime = 1672531200LL;
6boost::optional<int64_t> endTimeOpt = 1672617600LL;
7api->getEventLog(tenantId, urlId, userIdWS, startTime, *endTimeOpt)
8 .then([](pplx::task<std::shared_ptr<GetEventLog_200_response>> t){
9 try {
10 auto resp = t.get();
11 if (!resp) resp = std::make_shared<GetEventLog_200_response>();
12 } catch (const std::exception&) {}
13 });
14

getGlobalEventLog Internal Link


req tenantId urlId userIdWS

Параметри

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimeint64_tДа
endTimeint64_tДа

Отговор

Връща: GetEventLog_200_response

Пример

Пример за getGlobalEventLog
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t defaultUrlId = U("article-456");
4boost::optional<utility::string_t> maybeUrlId = boost::optional<utility::string_t>(U("article-456"));
5utility::string_t urlId = maybeUrlId ? *maybeUrlId : defaultUrlId;
6utility::string_t userIdWS = U("user@example.com");
7int64_t startTime = 1622505600000LL;
8int64_t endTime = 1622592000000LL;
9auto defaultResp = std::make_shared<GetEventLog_200_response>();
10api->getGlobalEventLog(tenantId, urlId, userIdWS, startTime, endTime)
11.then([](pplx::task<std::shared_ptr<GetEventLog_200_response>> task){
12 try {
13 auto resp = task.get();
14 if (resp) std::cout << "Received event log with entries\n";
15 else std::cout << "No event log returned\n";
16 } catch (const std::exception &e) {
17 std::cerr << "getGlobalEventLog failed: " << e.what() << '\n';
18 }
19});
20

createFeedPost Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsДа
broadcastIdstringНе
isLiveboolНе
doSpamCheckboolНе
skipDupCheckboolНе

Отговор

Връща: CreateFeedPost_200_response

Пример

Пример за createFeedPost
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateFeedPostParams params;
4params.title = utility::string_t(U("Weekly Product Update"));
5params.content = utility::string_t(U("This week we shipped several improvements to the API."));
6params.authorEmail = utility::string_t(U("jane.doe@example.com"));
7
8boost::optional<utility::string_t> broadcastId = boost::optional<utility::string_t>(U("broadcast-456"));
9boost::optional<bool> isLive = boost::optional<bool>(true);
10boost::optional<bool> doSpamCheck = boost::optional<bool>(false);
11boost::optional<bool> skipDupCheck = boost::optional<bool>(false);
12
13api->createFeedPost(tenantId, params, broadcastId, isLive, doSpamCheck, skipDupCheck)
14.then([](pplx::task<std::shared_ptr<CreateFeedPost_200_response>> t){
15 try {
16 auto resp = t.get();
17 auto copy = std::make_shared<CreateFeedPost_200_response>(*resp);
18 } catch (...) {}
19});
20

createFeedPostPublic Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsДа
broadcastIdstringНе
ssostringНе

Отговор

Връща: CreateFeedPostPublic_200_response

Пример

Пример на createFeedPostPublic
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto paramsPtr = std::make_shared<CreateFeedPostParams>();
4paramsPtr->title = utility::string_t(U("Weekly Release Notes"));
5paramsPtr->content = utility::string_t(U("We've deployed version 2.4.1 with bug fixes and UX improvements."));
6paramsPtr->authorEmail = utility::string_t(U("alice@example.com"));
7boost::optional<utility::string_t> broadcastId = utility::string_t(U("broadcast-456"));
8boost::optional<utility::string_t> sso = utility::string_t(U("sso-token-abc123"));
9api->createFeedPostPublic(tenantId, *paramsPtr, broadcastId, sso)
10 .then([](pplx::task<std::shared_ptr<CreateFeedPostPublic_200_response>> t) {
11 try {
12 auto resp = t.get();
13 if (resp) std::cout << "Feed post created successfully\n";
14 } catch (const std::exception& e) {
15 std::cerr << "Failed to create feed post: " << e.what() << '\n';
16 }
17 });
18

deleteFeedPostPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
postIdstringДа
broadcastIdstringНе
ssostringНе

Отговор

Връща: DeleteFeedPostPublic_200_response

Пример

Пример за deleteFeedPostPublic
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t postId = U("post-456");
4boost::optional<utility::string_t> broadcastId = boost::optional<utility::string_t>(U("broadcast-789"));
5boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
6api->deleteFeedPostPublic(tenantId, postId, broadcastId, sso)
7.then([](pplx::task<std::shared_ptr<DeleteFeedPostPublic_200_response>> t){
8 try {
9 auto resp = t.get();
10 if (!resp) resp = std::make_shared<DeleteFeedPostPublic_200_response>();
11 (void)resp;
12 } catch (const std::exception&) {
13 }
14});
15

getFeedPosts Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
afterIdstringНе
limitint32_tНе
tagsvector<stringНе

Отговор

Връща: GetFeedPosts_200_response

Пример

Пример за getFeedPosts
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> afterId(utility::string_t(U("post_456")));
4boost::optional<int32_t> limit(50);
5std::vector<utility::string_t> tagVec{U("news"), U("announcement")};
6boost::optional<std::vector<utility::string_t>> tags(tagVec);
7api->getFeedPosts(tenantId, afterId, limit, tags)
8.then([](std::shared_ptr<GetFeedPosts_200_response> resp) {
9 auto copy = std::make_shared<GetFeedPosts_200_response>(*resp);
10 (void)copy;
11});
12

getFeedPostsPublic Internal Link

req tenantId afterId

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
afterIdstringНе
limitint32_tНе
tagsvector<stringНе
ssostringНе
isCrawlerboolНе
includeUserInfoboolНе

Отговор

Връща: GetFeedPostsPublic_200_response

Пример

getFeedPostsPublic Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> afterId = boost::optional<utility::string_t>(U("post_abc123"));
4boost::optional<int32_t> limit = boost::optional<int32_t>(20);
5boost::optional<std::vector<utility::string_t>> tags = boost::optional<std::vector<utility::string_t>>(std::vector<utility::string_t>{U("news"), U("tech")});
6boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
7boost::optional<bool> isCrawler = boost::optional<bool>(false);
8boost::optional<bool> includeUserInfo = boost::optional<bool>(true);
9api->getFeedPostsPublic(tenantId, afterId, limit, tags, sso, isCrawler, includeUserInfo)
10.then([](pplx::task<std::shared_ptr<GetFeedPostsPublic_200_response>> t){
11 try {
12 std::shared_ptr<GetFeedPostsPublic_200_response> resp = t.get();
13 auto marker = std::make_shared<int>(1);
14 if (resp) { (void)marker; }
15 } catch (const std::exception&) {
16 }
17});
18

getFeedPostsStats Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
postIdsvector<stringДа
ssostringНе

Отговор

Връща: GetFeedPostsStats_200_response

Пример

Пример getFeedPostsStats
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3std::vector<utility::string_t> postIds{ U("post-abc-001"), U("post-xyz-123") };
4boost::optional<utility::string_t> sso(U("user@example.com"));
5api->getFeedPostsStats(tenantId, postIds, sso)
6 .then([](pplx::task<std::shared_ptr<GetFeedPostsStats_200_response>> t)
7 {
8 try {
9 auto resp = t.get();
10 auto respCopy = resp ? std::make_shared<GetFeedPostsStats_200_response>(*resp) : nullptr;
11 (void)respCopy;
12 } catch (const std::exception&) {}
13 });
14

getUserReactsPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
postIdsvector<stringНе
ssostringНе

Отговор

Връща: GetUserReactsPublic_200_response

Пример

Пример за getUserReactsPublic
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3std::vector<utility::string_t> postIdsVec = {
4 utility::conversions::to_string_t("post-456"),
5 utility::conversions::to_string_t("post-789")
6};
7boost::optional<std::vector<utility::string_t>> postIdsOpt = postIdsVec;
8boost::optional<utility::string_t> ssoOpt = utility::conversions::to_string_t("user@example.com");
9api->getUserReactsPublic(tenantId, postIdsOpt, ssoOpt)
10 .then([](pplx::task<std::shared_ptr<GetUserReactsPublic_200_response>> t) {
11 try {
12 auto resp = t.get();
13 if (!resp) resp = std::make_shared<GetUserReactsPublic_200_response>();
14 } catch (const std::exception&) {
15 }
16 });
17

reactFeedPostPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
postIdstringДа
reactBodyParamsReactBodyParamsДа
isUndoboolНе
broadcastIdstringНе
ssostringНе

Отговор

Връща: ReactFeedPostPublic_200_response

Пример

reactFeedPostPublic Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t postId = U("post-987");
4ReactBodyParams reactBodyParams;
5reactBodyParams.userId = U("jane.doe@example.com");
6reactBodyParams.reaction = U("like");
7boost::optional<bool> isUndo = boost::optional<bool>(false);
8boost::optional<utility::string_t> broadcastId = boost::optional<utility::string_t>(U("broadcast-001"));
9boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("sso-token-xyz"));
10api->reactFeedPostPublic(tenantId, postId, reactBodyParams, isUndo, broadcastId, sso)
11 .then([](pplx::task<std::shared_ptr<ReactFeedPostPublic_200_response>> task) {
12 try {
13 auto resp = task.get();
14 auto out = resp ? resp : std::make_shared<ReactFeedPostPublic_200_response>();
15 std::cout << "Reaction processed\n";
16 } catch (const std::exception &e) {
17 std::cerr << "React failed: " << e.what() << '\n';
18 }
19 });
20

updateFeedPost Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
feedPostFeedPostДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateFeedPost
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t postId = U("post-987654321");
4FeedPost feedPost;
5feedPost.title = U("Weekly status update");
6feedPost.content = U("Completed the migration of the comments service to the new infra.");
7feedPost.authorEmail = U("developer@acme-corp.com");
8boost::optional<utility::string_t> summary = boost::optional<utility::string_t>(U("Migration complete"));
9feedPost.summary = summary;
10auto updateTask = api->updateFeedPost(tenantId, postId, feedPost)
11 .then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
12 try {
13 auto resp = t.get();
14 if (resp) {
15 auto cloned = std::make_shared<FlagCommentPublic_200_response>(*resp);
16 }
17 } catch (...) {
18 }
19 });
20

updateFeedPostPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
postIdstringДа
updateFeedPostParamsUpdateFeedPostParamsДа
broadcastIdstringНе
ssostringНе

Отговор

Връща: CreateFeedPostPublic_200_response

Пример

Пример за updateFeedPostPublic
Copy Copy
1
2utility::string_t tenantId = U"my-tenant-123";
3utility::string_t postId = U"post-456";
4UpdateFeedPostParams params;
5boost::optional<utility::string_t> broadcastId = utility::string_t(U"broadcast-789");
6boost::optional<utility::string_t> sso = utility::string_t(U"user@example.com");
7api->updateFeedPostPublic(tenantId, postId, params, broadcastId, sso)
8.then([](pplx::task<std::shared_ptr<CreateFeedPostPublic_200_response>> task){
9 try {
10 auto resp = task.get();
11 if (!resp) resp = std::make_shared<CreateFeedPostPublic_200_response>();
12 (void)resp;
13 } catch (...) {}
14});
15

flagCommentPublic Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
isFlaggedboolДа
ssostringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

flagCommentPublic Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-789012");
4bool isFlagged = true;
5boost::optional<utility::string_t> sso{ U("user@example.com") };
6api->flagCommentPublic(tenantId, commentId, isFlagged, sso)
7.then([](std::shared_ptr<FlagCommentPublic_200_response> resp){
8 auto respCopy = std::make_shared<FlagCommentPublic_200_response>(*resp);
9 return respCopy;
10});
11

addHashTag Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringНе
createHashTagBodyCreateHashTagBodyНе

Отговор

Връща: AddHashTag_200_response

Пример

Пример за addHashTag
Copy Copy
1
2boost::optional<utility::string_t> tenantId(U("my-tenant-123"));
3auto bodyPtr = std::make_shared<CreateHashTagBody>();
4bodyPtr->name = U("release");
5bodyPtr->color = U("#00aaff");
6boost::optional<CreateHashTagBody> createBody(*bodyPtr);
7api->addHashTag(tenantId, createBody).then([](pplx::task<std::shared_ptr<AddHashTag_200_response>> t){
8 try {
9 auto resp = t.get();
10 (void)resp;
11 } catch(...) {}
12});
13

addHashTagsBulk Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringНе
bulkCreateHashTagsBodyBulkCreateHashTagsBodyНе

Отговор

Връща: AddHashTagsBulk_200_response

Пример

Пример за addHashTagsBulk
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto bodyPtr = std::make_shared<BulkCreateHashTagsBody>();
4boost::optional<utility::string_t> optTenant(tenantId);
5boost::optional<BulkCreateHashTagsBody> optBody(*bodyPtr);
6api->addHashTagsBulk(optTenant, optBody).then([](pplx::task<std::shared_ptr<AddHashTagsBulk_200_response>> t){
7 try {
8 auto resp = t.get();
9 if (resp) std::cout << "Bulk hashtags added for tenant\n";
10 } catch (const std::exception &e) {
11 std::cerr << "addHashTagsBulk error: " << e.what() << '\n';
12 }
13});
14

deleteHashTag Internal Link

Параметри

NameTypeRequiredDescription
tagstringДа
tenantIdstringНе
deleteHashTagRequestDeleteHashTag_requestНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteHashTag
Copy Copy
1
2utility::string_t tag = U("inappropriate");
3boost::optional<utility::string_t> tenantId = boost::optional<utility::string_t>(U("my-tenant-123"));
4DeleteHashTag_request req;
5boost::optional<DeleteHashTag_request> optReq = boost::optional<DeleteHashTag_request>(req);
6
7api->deleteHashTag(tag, tenantId, optReq)
8.then([](std::shared_ptr<FlagCommentPublic_200_response> resp){
9 auto out = std::make_shared<FlagCommentPublic_200_response>(*resp);
10 std::cout << "Hashtag removed successfully for tenant\n";
11 return out;
12}).wait();
13

getHashTags Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
pagedoubleНе

Отговор

Връща: GetHashTags_200_response

Пример

Пример за getHashTags
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> page = 2.0;
4auto defaultResp = std::make_shared<GetHashTags_200_response>();
5api->getHashTags(tenantId, page).then([defaultResp](pplx::task<std::shared_ptr<GetHashTags_200_response>> t) {
6 try {
7 auto resp = t.get();
8 if(!resp) resp = defaultResp;
9 std::cout << "getHashTags completed; response object " << (resp ? "present" : "absent") << std::endl;
10 } catch(const std::exception& e) {
11 std::cout << "getHashTags error: " << e.what() << std::endl;
12 }
13});
14

patchHashTag Internal Link

Параметри

ИмеТипЗадължителноОписание
tagstringYes
tenantIdstringNo
updateHashTagBodyUpdateHashTagBodyNo

Отговор

Връща: PatchHashTag_200_response

Пример

Пример за patchHashTag
Copy Copy
1
2utility::string_t tag = U("release-1.0");
3boost::optional<utility::string_t> tenantId = boost::optional<utility::string_t>(U("my-tenant-123"));
4UpdateHashTagBody body;
5boost::optional<UpdateHashTagBody> updateBody = boost::optional<UpdateHashTagBody>(body);
6api->patchHashTag(tag, tenantId, updateBody)
7.then([](pplx::task<std::shared_ptr<PatchHashTag_200_response>> t) {
8 try {
9 auto resp = t.get();
10 if (resp) {
11 auto copied = std::make_shared<PatchHashTag_200_response>(*resp);
12 std::cout << "PatchHashTag succeeded" << std::endl;
13 } else {
14 std::cout << "PatchHashTag returned no data" << std::endl;
15 }
16 } catch (const std::exception &e) {
17 std::cerr << "PatchHashTag error: " << e.what() << std::endl;
18 }
19});
20

createModerator Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createModeratorBodyCreateModeratorBodyДа

Отговор

Връща: CreateModerator_200_response

Пример

Пример за createModerator
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateModeratorBody createModeratorBody;
4createModeratorBody.email = U("moderator@example.com");
5createModeratorBody.displayName = U("Support Moderator");
6createModeratorBody.roles = std::vector<utility::string_t>{ U("moderator"), U("support") };
7createModeratorBody.notes = boost::optional<utility::string_t>(U("Temporary moderator for Q1"));
8api->createModerator(tenantId, createModeratorBody)
9.then([](pplx::task<std::shared_ptr<CreateModerator_200_response>> t)
10{
11 try
12 {
13 auto resp = t.get();
14 auto respCopy = std::make_shared<CreateModerator_200_response>(*resp);
15 (void)respCopy;
16 }
17 catch (const std::exception&)
18 {
19 }
20});
21

deleteModerator Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
sendEmailstringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

deleteModerator Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t moderatorId = U("moderator-456");
4boost::optional<utility::string_t> sendEmail = boost::optional<utility::string_t>(U("moderator@notifications.example.com"));
5api->deleteModerator(tenantId, moderatorId, sendEmail)
6 .then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t){
7 try {
8 auto resp = t.get();
9 if (!resp) resp = std::make_shared<FlagCommentPublic_200_response>();
10 return resp;
11 } catch (const std::exception&) {
12 return std::make_shared<FlagCommentPublic_200_response>();
13 }
14 });
15

getModerator Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Отговор

Връща: GetModerator_200_response

Пример

Пример за getModerator
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t moderatorId = U("moderator-456");
4boost::optional<utility::string_t> requestLocale = U("en-US");
5auto fallbackModerator = std::make_shared<GetModerator_200_response>();
6
7api->getModerator(tenantId, moderatorId)
8 .then([fallbackModerator, requestLocale](std::shared_ptr<GetModerator_200_response> resp) -> pplx::task<std::shared_ptr<GetModerator_200_response>> {
9 auto moderator = resp ? resp : fallbackModerator;
10 if (requestLocale) { auto loc = *requestLocale; (void)loc; }
11 return pplx::task_from_result(moderator);
12 })
13 .then([](std::shared_ptr<GetModerator_200_response> finalResp) -> void {
14 (void)finalResp;
15 });
16

getModerators Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
skipdoubleНе

Отговор

Връща: GetModerators_200_response

Пример

getModerators Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> skip = boost::optional<double>(10);
4auto task = api->getModerators(tenantId, skip)
5 .then([](std::shared_ptr<GetModerators_200_response> resp) {
6 if (!resp) {
7 std::cout << "No moderators returned\n";
8 return;
9 }
10 auto copy = std::make_shared<GetModerators_200_response>(*resp);
11 std::cout << "Retrieved moderators\n";
12 });
13task.wait();
14

sendInvite Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
fromNamestringYes

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за sendInvite
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("comment-456");
4utility::string_t fromName = U("moderator@example.com");
5boost::optional<utility::string_t> inviteNote = boost::optional<utility::string_t>(U("Please review this flagged comment"));
6auto task = api->sendInvite(tenantId, id, fromName)
7 .then([inviteNote](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) -> std::shared_ptr<FlagCommentPublic_200_response> {
8 try {
9 auto resp = t.get();
10 auto wrapped = std::make_shared<FlagCommentPublic_200_response>(*resp);
11 (void)inviteNote;
12 return wrapped;
13 } catch (...) {
14 throw;
15 }
16 });
17

updateModerator Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateModeratorBodyUpdateModeratorBodyYes

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateModerator
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t moderatorId = U("moderator-456");
4auto bodyPtr = std::make_shared<UpdateModeratorBody>();
5bodyPtr->email = utility::string_t(U("mod.jane@example.com"));
6bodyPtr->displayName = boost::optional<utility::string_t>(utility::string_t(U("Jane Moderator")));
7bodyPtr->enabled = boost::optional<bool>(true);
8api->updateModerator(tenantId, moderatorId, *bodyPtr).then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t){
9 try {
10 auto resp = t.get();
11 if (resp) {
12 std::cout << "Moderator updated successfully" << std::endl;
13 }
14 } catch (const std::exception &e) {
15 std::cerr << "Update failed: " << e.what() << std::endl;
16 }
17});
18

deleteNotificationCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteNotificationCount
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t notifId = U("notification-456");
4boost::optional<utility::string_t> actingUser = boost::optional<utility::string_t>(U("moderator@example.com"));
5api->deleteNotificationCount(tenantId, notifId)
6.then([actingUser](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
7 try {
8 auto resp = t.get();
9 if (!resp) resp = std::make_shared<FlagCommentPublic_200_response>();
10 if (actingUser) std::cout << "Actor: " << actingUser->c_str() << "\n";
11 std::cout << "Notification count cleared\n";
12 } catch (const std::exception &e) {
13 std::cout << "Failed: " << e.what() << "\n";
14 }
15});
16

getCachedNotificationCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetCachedNotificationCount_200_response

Пример

Пример за getCachedNotificationCount
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user@example.com");
4boost::optional<utility::string_t> opt_status = boost::optional<utility::string_t>(U("unread"));
5api->getCachedNotificationCount(tenantId, userId)
6 .then([=](pplx::task<std::shared_ptr<GetCachedNotificationCount_200_response>> t){
7 try {
8 std::shared_ptr<GetCachedNotificationCount_200_response> resp = t.get();
9 if(!resp) return;
10 auto copy = std::make_shared<GetCachedNotificationCount_200_response>(*resp);
11 } catch(const std::exception &){
12 }
13 });
14

getNotificationCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе
urlIdstringНе
fromCommentIdstringНе
viewedboolНе
typestringНе

Отговор

Връща: GetNotificationCount_200_response

Пример

Пример за getNotificationCount
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> userId = U("user@example.com");
4boost::optional<utility::string_t> urlId = U("https://www.example.com/article/456");
5boost::optional<utility::string_t> fromCommentId = U("cmt-789");
6boost::optional<bool> viewed = true;
7boost::optional<utility::string_t> type = U("reply");
8
9api->getNotificationCount(tenantId, userId, urlId, fromCommentId, viewed, type)
10 .then([](pplx::task<std::shared_ptr<GetNotificationCount_200_response>> task){
11 try {
12 auto resp = task.get();
13 auto result = resp ? resp : std::make_shared<GetNotificationCount_200_response>();
14 } catch (const std::exception&) {
15 }
16 });
17

getNotifications Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе
urlIdstringНе
fromCommentIdstringНе
viewedboolНе
typestringНе
skipdoubleНе

Отговор

Връща: GetNotifications_200_response

Пример

Пример за getNotifications
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
4boost::optional<utility::string_t> urlId = boost::optional<utility::string_t>(U("https://example.com/posts/42"));
5boost::optional<utility::string_t> fromCommentId = boost::optional<utility::string_t>(U("cmt-98765"));
6boost::optional<bool> viewed = boost::optional<bool>(true);
7boost::optional<utility::string_t> type = boost::optional<utility::string_t>(U("reply"));
8boost::optional<double> skip = boost::optional<double>(0.0);
9
10api->getNotifications(tenantId, userId, urlId, fromCommentId, viewed, type, skip)
11.then([](pplx::task<std::shared_ptr<GetNotifications_200_response>> t){
12 try {
13 auto resp = t.get();
14 if (resp) {
15 auto processed = std::make_shared<GetNotifications_200_response>(*resp);
16 }
17 } catch (const std::exception&) {
18 }
19});
20

updateNotification Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateNotificationBodyUpdateNotificationBodyДа
userIdstringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateNotification
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t notificationId = U("notif-456");
4UpdateNotificationBody updateNotificationBody;
5boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("moderator@example.com"));
6api->updateNotification(tenantId, notificationId, updateNotificationBody, userId)
7.then([=](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
8 try {
9 auto resp = t.get();
10 if (resp) {
11 auto respCopy = std::make_shared<FlagCommentPublic_200_response>(*resp);
12 std::cout << "Notification updated successfully\n";
13 } else {
14 std::cout << "No response received\n";
15 }
16 } catch (const std::exception &e) {
17 std::cerr << "Update failed: " << e.what() << "\n";
18 }
19});
20

addPage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createAPIPageDataCreateAPIPageDataДа

Отговор

Връща: AddPageAPIResponse

Пример

Пример за addPage
Copy Copy
1
2auto pageData = std::make_shared<CreateAPIPageData>();
3pageData->url = utility::string_t(U("https://example.com/articles/2025-modern-cpp"));
4pageData->title = utility::string_t(U("Modern C++ Patterns"));
5pageData->description = boost::optional<utility::string_t>(utility::string_t(U("Practical patterns for modern C++ development")));
6pageData->authorEmail = boost::optional<utility::string_t>(utility::string_t(U("dev@company.com")));
7pageData->published = boost::optional<bool>(true);
8
9api->addPage(utility::string_t(U("my-tenant-123")), *pageData)
10.then([](pplx::task<std::shared_ptr<AddPageAPIResponse>> t){
11 try {
12 auto resp = t.get();
13 return resp;
14 } catch (...) {
15 throw;
16 }
17});
18

deletePage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: DeletePageAPIResponse

Пример

Пример за deletePage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t pageId = U("page-456");
4boost::optional<utility::string_t> correlationId = boost::optional<utility::string_t>(U("corr-20251122"));
5auto task = api->deletePage(tenantId, pageId)
6 .then([correlationId](pplx::task<std::shared_ptr<DeletePageAPIResponse>> prev) -> std::shared_ptr<DeletePageAPIResponse> {
7 try {
8 auto resp = prev.get();
9 if (resp) return resp;
10 return std::make_shared<DeletePageAPIResponse>();
11 } catch (const std::exception&) {
12 return std::make_shared<DeletePageAPIResponse>();
13 }
14 });
15

getPageByURLId Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа

Отговор

Връща: GetPageByURLIdAPIResponse

Пример

Пример за getPageByURLId
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("home-page-789");
4boost::optional<utility::string_t> locale = boost::optional<utility::string_t>(U("en-US"));
5api->getPageByURLId(tenantId, urlId).then([=](pplx::task<std::shared_ptr<GetPageByURLIdAPIResponse>> task){
6 try {
7 auto resp = task.get();
8 auto result = resp ? resp : std::make_shared<GetPageByURLIdAPIResponse>();
9 (void)result;
10 } catch (const std::exception &ex) {
11 auto err = std::make_shared<GetPageByURLIdAPIResponse>();
12 (void)err;
13 }
14});
15

getPages Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа

Отговор

Връща: GetPagesAPIResponse

Пример

Пример за getPages
Copy Copy
1
2int main()
3{
4 utility::string_t tenantId = U("my-tenant-123");
5 boost::optional<utility::string_t> statusFilter = U("published");
6 boost::optional<int> pageNumber = 1;
7 auto placeholder = std::make_shared<GetPagesAPIResponse>();
8 api->getPages(tenantId)
9 .then([placeholder](std::shared_ptr<GetPagesAPIResponse> resp) {
10 if (resp) {
11 *placeholder = *resp;
12 auto refs = resp.use_count();
13 (void)refs;
14 }
15 })
16 .wait();
17 return 0;
18}
19

patchPage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateAPIPageDataUpdateAPIPageDataДа

Отговор

Връща: PatchPageAPIResponse

Пример

Пример за patchPage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t pageId = U("page-9876");
4auto updatePtr = std::make_shared<UpdateAPIPageData>();
5updatePtr->title = utility::string_t(U("About Our Team"));
6updatePtr->slug = utility::string_t(U("about-our-team"));
7updatePtr->enabled = boost::optional<bool>(true);
8updatePtr->description = boost::optional<utility::string_t>(U("Updated team overview and contact information"));
9api->patchPage(tenantId, pageId, *updatePtr)
10.then([](pplx::task<std::shared_ptr<PatchPageAPIResponse>> t){
11 try {
12 auto resp = t.get();
13 if (resp) {
14 std::cout << "Patch successful, page id: " << resp->id << std::endl;
15 }
16 } catch (const std::exception &e) {
17 std::cerr << "Patch failed: " << e.what() << std::endl;
18 }
19});
20

deletePendingWebhookEvent Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deletePendingWebhookEvent
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t eventId = U("wh_evt_456");
4boost::optional<utility::string_t> requestId = boost::optional<utility::string_t>(U("req-789"));
5api->deletePendingWebhookEvent(tenantId, eventId)
6 .then([requestId](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
7 try {
8 auto resp = t.get();
9 if (resp) {
10 auto resultCopy = std::make_shared<FlagCommentPublic_200_response>(*resp);
11 if (requestId) {
12 (void)requestId.get();
13 }
14 (void)resultCopy;
15 } else {
16 auto fallback = std::make_shared<FlagCommentPublic_200_response>();
17 (void)fallback;
18 }
19 } catch (const std::exception&) {
20 auto errorObj = std::make_shared<FlagCommentPublic_200_response>();
21 (void)errorObj;
22 }
23 }).wait();
24

getPendingWebhookEventCount Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
commentIdstringНе
externalIdstringНе
eventTypestringНе
typestringНе
domainstringНе
attemptCountGTdoubleНе

Отговор

Връща: GetPendingWebhookEventCount_200_response

Пример

Пример за getPendingWebhookEventCount
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> commentId = boost::optional<utility::string_t>(U("cmt-789"));
4boost::optional<utility::string_t> externalId = boost::optional<utility::string_t>(U("ext-456"));
5boost::optional<utility::string_t> eventType = boost::optional<utility::string_t>(U("comment_created"));
6boost::optional<utility::string_t> type = boost::optional<utility::string_t>(U("webhook"));
7boost::optional<utility::string_t> domain = boost::optional<utility::string_t>(U("example.com"));
8boost::optional<double> attemptCountGT = boost::optional<double>(1.0);
9api->getPendingWebhookEventCount(tenantId, commentId, externalId, eventType, type, domain, attemptCountGT)
10.then([](pplx::task<std::shared_ptr<GetPendingWebhookEventCount_200_response>> t){
11 try {
12 auto resp = t.get();
13 auto respCopy = std::make_shared<GetPendingWebhookEventCount_200_response>(*resp);
14 std::cout << "Pending webhook event count retrieved\n";
15 } catch (const std::exception &e) {
16 std::cerr << "Failed to get pending count: " << e.what() << '\n';
17 }
18}).wait();
19

getPendingWebhookEvents Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringНе
externalIdstringНе
eventTypestringНе
typestringНе
domainstringНе
attemptCountGTdoubleНе
skipdoubleНе

Отговор

Връща: GetPendingWebhookEvents_200_response

Пример

Пример за getPendingWebhookEvents
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> commentId = boost::optional<utility::string_t>(U("cmt-98765"));
4boost::optional<utility::string_t> externalId = boost::optional<utility::string_t>(U("ext-abc-01"));
5boost::optional<utility::string_t> eventType = boost::optional<utility::string_t>(U("comment_created"));
6boost::optional<utility::string_t> type = boost::optional<utility::string_t>(U("webhook"));
7boost::optional<utility::string_t> domain = boost::optional<utility::string_t>(U("example.com"));
8boost::optional<double> attemptCountGT = boost::optional<double>(2.0);
9boost::optional<double> skip = boost::optional<double>(0.0);
10
11api->getPendingWebhookEvents(tenantId, commentId, externalId, eventType, type, domain, attemptCountGT, skip)
12.then([](pplx::task<std::shared_ptr<GetPendingWebhookEvents_200_response>> t) {
13 try {
14 auto resp = t.get();
15 auto copy = std::make_shared<GetPendingWebhookEvents_200_response>(*resp);
16 (void)copy;
17 } catch (const std::exception& e) {
18 (void)e;
19 auto empty = std::make_shared<GetPendingWebhookEvents_200_response>();
20 (void)empty;
21 }
22});
23

createQuestionConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createQuestionConfigBodyCreateQuestionConfigBodyДа

Отговор

Връща: CreateQuestionConfig_200_response

Пример

Пример за createQuestionConfig
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateQuestionConfigBody body;
4body.name = utility::string_t(U("Feature X Feedback"));
5body.description = boost::optional<utility::string_t>(utility::string_t(U("Ask users if Feature X met their needs")));
6body.createdBy = utility::string_t(U("admin@mycompany.com"));
7body.enabled = boost::optional<bool>(true);
8api->createQuestionConfig(tenantId, body).then([](std::shared_ptr<CreateQuestionConfig_200_response> resp){
9 if(resp){
10 auto result = std::make_shared<CreateQuestionConfig_200_response>(*resp);
11 std::wcout << U("Question config created successfully") << std::endl;
12 } else {
13 std::wcout << U("Failed to create question config") << std::endl;
14 }
15});
16

deleteQuestionConfig Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteQuestionConfig
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("qcfg-98765");
4boost::optional<utility::string_t> tenantOpt = tenantId;
5auto t = api->deleteQuestionConfig(tenantOpt.value_or(utility::string_t()), id)
6.then([](std::shared_ptr<FlagCommentPublic_200_response> resp) -> std::shared_ptr<FlagCommentPublic_200_response> {
7 auto out = std::make_shared<FlagCommentPublic_200_response>();
8 if (resp) *out = *resp;
9 return out;
10});
11t.wait();
12

getQuestionConfig Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetQuestionConfig_200_response

Пример

Пример за getQuestionConfig
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("question-456");
4boost::optional<utility::string_t> locale = U("en-US");
5auto defaultResp = std::make_shared<GetQuestionConfig_200_response>();
6api->getQuestionConfig(tenantId, id).then([defaultResp](pplx::task<std::shared_ptr<GetQuestionConfig_200_response>> t) {
7 try {
8 auto resp = t.get();
9 if(!resp) resp = defaultResp;
10 std::cout << "Question config retrieved" << std::endl;
11 } catch(const std::exception &e) {
12 std::cerr << "Failed to get question config: " << e.what() << std::endl;
13 }
14});
15

getQuestionConfigs Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipdoubleНе

Отговор

Връща: GetQuestionConfigs_200_response

Пример

Пример за getQuestionConfigs
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> skip = 10;
4api->getQuestionConfigs(tenantId, skip).then([](pplx::task<std::shared_ptr<GetQuestionConfigs_200_response>> task) {
5 try {
6 auto resp = task.get();
7 if (resp) {
8 auto localCopy = std::make_shared<GetQuestionConfigs_200_response>(*resp);
9 }
10 } catch (const std::exception&) {
11 }
12});
13

updateQuestionConfig Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа
updateQuestionConfigBodyUpdateQuestionConfigBodyДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateQuestionConfig
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto configId = utility::string_t(U("question-config-456"));
4auto body = std::make_shared<UpdateQuestionConfigBody>();
5body->enabled = true;
6body->threshold = 5;
7body->moderatorEmail = utility::string_t(U("moderator@example.com"));
8body->notifyUsers = boost::optional<bool>(true);
9body->description = boost::optional<utility::string_t>(utility::string_t(U("Tighten question moderation for new users")));
10
11api->updateQuestionConfig(tenantId, configId, *body)
12 .then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
13 try {
14 auto resp = t.get();
15 std::cout << (resp ? "updateQuestionConfig succeeded\n" : "updateQuestionConfig returned null\n");
16 } catch (const std::exception& e) {
17 std::cerr << "updateQuestionConfig failed: " << e.what() << '\n';
18 }
19 });
20

createQuestionResult Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createQuestionResultBodyCreateQuestionResultBodyДа

Отговор

Връща: CreateQuestionResult_200_response

Пример

createQuestionResult Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateQuestionResultBody createQuestionResultBody;
4createQuestionResultBody.questionId = U("question-789");
5createQuestionResultBody.userEmail = U("student@example.com");
6createQuestionResultBody.selectedOption = U("B");
7createQuestionResultBody.isCorrect = true;
8createQuestionResultBody.score = 9.5;
9createQuestionResultBody.metadata = boost::optional<utility::string_t>(U("{\"session\":\"quiz-2026-01\"}"));
10auto task = api->createQuestionResult(tenantId, createQuestionResultBody)
11.then([](pplx::task<std::shared_ptr<CreateQuestionResult_200_response>> t){
12 try {
13 auto result = t.get();
14 auto copy = std::make_shared<CreateQuestionResult_200_response>(*result);
15 (void)copy;
16 } catch (...) {}
17});
18task.wait();
19

deleteQuestionResult Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteQuestionResult
Copy Copy
1
2boost::optional<utility::string_t> maybeTenant = boost::none;
3utility::string_t defaultTenant = U("my-tenant-123");
4utility::string_t questionId = U("question-456");
5utility::string_t tenant = maybeTenant ? *maybeTenant : defaultTenant;
6api->deleteQuestionResult(tenant, questionId)
7.then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> task){
8 try {
9 auto resp = task.get();
10 auto processed = std::make_shared<FlagCommentPublic_200_response>(*resp);
11 } catch (const std::exception&) {
12 }
13});
14

getQuestionResult Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetQuestionResult_200_response

Пример

getQuestionResult Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t questionId = U("question-456");
4boost::optional<utility::string_t> requestor = U("user@example.com");
5
6auto task = api->getQuestionResult(tenantId, questionId)
7 .then([requestor](pplx::task<std::shared_ptr<GetQuestionResult_200_response>> prev) -> std::shared_ptr<GetQuestionResult_200_response> {
8 try {
9 auto resp = prev.get();
10 if (!resp) return std::make_shared<GetQuestionResult_200_response>();
11 (void)requestor;
12 return resp;
13 } catch (const std::exception &) {
14 return std::make_shared<GetQuestionResult_200_response>();
15 }
16 });
17

getQuestionResults Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringНе
userIdstringНе
startDatestringНе
questionIdstringНе
questionIdsstringНе
skipdoubleНе

Отговор

Връща: GetQuestionResults_200_response

Пример

Пример за getQuestionResults
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> urlId = boost::optional<utility::string_t>(U("/articles/2025/new-feature"));
4boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("alice@example.com"));
5boost::optional<utility::string_t> startDate = boost::optional<utility::string_t>(U("2025-01-01T00:00:00Z"));
6boost::optional<utility::string_t> questionId = boost::optional<utility::string_t>(U("q-789"));
7boost::optional<utility::string_t> questionIds = boost::optional<utility::string_t>(U("q-789,q-790"));
8boost::optional<double> skip = boost::optional<double>(10.0);
9
10api->getQuestionResults(tenantId, urlId, userId, startDate, questionId, questionIds, skip)
11.then([](pplx::task<std::shared_ptr<GetQuestionResults_200_response>> t){
12 try {
13 std::shared_ptr<GetQuestionResults_200_response> resp = t.get();
14 if (resp) {
15 auto copy = std::make_shared<GetQuestionResults_200_response>(*resp);
16 }
17 } catch (const std::exception&) {}
18});
19

updateQuestionResult Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateQuestionResultBodyUpdateQuestionResultBodyДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateQuestionResult
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("question-456");
4UpdateQuestionResultBody updateQuestionResultBody;
5auto moderatorEmail = std::make_shared<utility::string_t>(U("moderator@example.com"));
6boost::optional<utility::string_t> resolutionNote = boost::optional<utility::string_t>(U("Marked duplicate of q-123"));
7api->updateQuestionResult(tenantId, id, updateQuestionResultBody)
8 .then([moderatorEmail, resolutionNote](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t)
9 {
10 try {
11 auto resp = t.get();
12 if (resp) {
13 auto resultPtr = resp;
14 }
15 } catch (...) {}
16 });
17

aggregateQuestionResults Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
questionIdstringНе
questionIdsvector<stringНе
urlIdstringНе
timeBucketAggregateTimeBucketНе
startDatedatetimeНе
forceRecalculateboolНе

Отговор

Връща: AggregateQuestionResults_200_response

Пример

aggregateQuestionResults Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> questionId(U("q-42"));
4boost::optional<std::vector<utility::string_t>> questionIds(std::vector<utility::string_t>{U("q-42"), U("q-43")});
5boost::optional<utility::string_t> urlId(U("page-789"));
6boost::optional<AggregateTimeBucket> timeBucket;
7boost::optional<utility::datetime> startDate(utility::datetime::from_string(U("2025-01-01T00:00:00Z")));
8boost::optional<bool> forceRecalculate(true);
9
10api->aggregateQuestionResults(tenantId, questionId, questionIds, urlId, timeBucket, startDate, forceRecalculate)
11.then([](std::shared_ptr<AggregateQuestionResults_200_response> resp){
12 if (resp) {
13 auto resultCopy = std::make_shared<AggregateQuestionResults_200_response>(*resp);
14 }
15});
16

bulkAggregateQuestionResults Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestДа
forceRecalculateboolНе

Отговор

Връща: BulkAggregateQuestionResults_200_response

Пример

Пример за bulkAggregateQuestionResults
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3BulkAggregateQuestionResultsRequest request;
4boost::optional<bool> forceRecalculate(true);
5api->bulkAggregateQuestionResults(tenantId, request, forceRecalculate)
6.then([](pplx::task<std::shared_ptr<BulkAggregateQuestionResults_200_response>> t){
7 try {
8 auto resp = t.get();
9 if (!resp) {
10 auto empty = std::make_shared<BulkAggregateQuestionResults_200_response>();
11 std::cout << "No aggregated results returned\n";
12 } else {
13 std::cout << "Aggregated results received\n";
14 }
15 } catch (const std::exception& ex) {
16 std::cerr << "Error fetching aggregated results: " << ex.what() << '\n';
17 }
18});
19

combineCommentsWithQuestionResults Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
questionIdstringНе
questionIdsvector<stringНе
urlIdstringНе
startDatedatetimeНе
forceRecalculateboolНе
minValuedoubleНе
maxValuedoubleНе
limitdoubleНе

Отговор

Връща: CombineCommentsWithQuestionResults_200_response

Пример

Пример за combineCommentsWithQuestionResults
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> questionId = boost::optional<utility::string_t>(U("q-98765"));
4boost::optional<std::vector<utility::string_t>> questionIds = boost::optional<std::vector<utility::string_t>>(std::vector<utility::string_t>{U("q-98765"), U("q-12345")});
5boost::optional<utility::string_t> urlId = boost::optional<utility::string_t>(U("/posts/2024/interesting-article"));
6boost::optional<utility::datetime> startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2024-01-01T00:00:00Z")));
7boost::optional<bool> forceRecalculate = boost::optional<bool>(true);
8boost::optional<double> minValue = boost::optional<double>(0.0);
9boost::optional<double> maxValue = boost::optional<double>(1.0);
10boost::optional<double> limit = boost::optional<double>(100.0);
11
12api->combineCommentsWithQuestionResults(tenantId, questionId, questionIds, urlId, startDate, forceRecalculate, minValue, maxValue, limit)
13.then([](pplx::task<std::shared_ptr<CombineCommentsWithQuestionResults_200_response>> task){
14 try {
15 auto response = task.get();
16 auto output = response ? response : std::make_shared<CombineCommentsWithQuestionResults_200_response>();
17 } catch (const std::exception&) {
18 }
19});
20

addSSOUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

Отговор

Връща: AddSSOUserAPIResponse

Пример

addSSOUser Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3auto createData = std::make_shared<CreateAPISSOUserData>();
4createData->email = utility::string_t(U("alice@example.com"));
5createData->externalUserId = utility::string_t(U("okta|987654321"));
6createData->displayName = boost::optional<utility::string_t>(U("Alice Johnson"));
7createData->roles = std::vector<utility::string_t>{ U("moderator"), U("editor") };
8api->addSSOUser(tenantId, createData)
9.then([](pplx::task<std::shared_ptr<AddSSOUserAPIResponse>> task){
10 try {
11 auto resp = task.get();
12 if (resp) {
13 (void)resp;
14 }
15 } catch (...) {
16 }
17});
18

deleteSSOUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
deleteCommentsboolНе
commentDeleteModestringНе

Отговор

Връща: DeleteSSOUserAPIResponse

Пример

Пример за deleteSSOUser
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t ssoId = U("user@example.com");
4boost::optional<bool> deleteComments = true;
5boost::optional<utility::string_t> commentDeleteMode = U("anonymize");
6
7api->deleteSSOUser(tenantId, ssoId, deleteComments, commentDeleteMode)
8.then([](pplx::task<std::shared_ptr<DeleteSSOUserAPIResponse>> t){
9 try {
10 auto resp = t.get();
11 auto respCopy = std::make_shared<DeleteSSOUserAPIResponse>(*resp);
12 (void)respCopy;
13 } catch (const std::exception&) {
14 }
15});
16

getSSOUserByEmail Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
emailstringДа

Отговор

Връща: GetSSOUserByEmailAPIResponse

Пример

Пример за getSSOUserByEmail
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t email = U("user@example.com");
4boost::optional<utility::string_t> includeInactive = boost::optional<utility::string_t>(U("false"));
5api->getSSOUserByEmail(tenantId, email).then([includeInactive](pplx::task<std::shared_ptr<GetSSOUserByEmailAPIResponse>> t) {
6 try {
7 auto resp = t.get();
8 return resp ? resp : std::make_shared<GetSSOUserByEmailAPIResponse>();
9 } catch (...) {
10 return std::make_shared<GetSSOUserByEmailAPIResponse>();
11 }
12}).then([](std::shared_ptr<GetSSOUserByEmailAPIResponse> finalResp) {
13 (void)finalResp;
14});
15

getSSOUserById Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Response

Връща: GetSSOUserByIdAPIResponse

Пример

getSSOUserById Пример
Copy Copy
1
2boost::optional<utility::string_t> optId = U("user-42@example.com");
3utility::string_t tenantId = U("my-tenant-123");
4utility::string_t id = optId.value_or(U("user-42@example.com"));
5api->getSSOUserById(tenantId, id).then([](pplx::task<std::shared_ptr<GetSSOUserByIdAPIResponse>> task){
6 try {
7 auto resp = task.get();
8 if (resp) {
9 auto out = resp;
10 (void)out;
11 } else {
12 auto fallback = std::make_shared<GetSSOUserByIdAPIResponse>();
13 (void)fallback;
14 }
15 } catch (const std::exception& ex) {
16 auto fallback = std::make_shared<GetSSOUserByIdAPIResponse>();
17 (void)ex;
18 (void)fallback;
19 }
20});
21

getSSOUsers Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipint32_tНе

Отговор

Връща: GetSSOUsers_200_response

Пример

Пример за getSSOUsers
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<int32_t> skip = 10;
4api->getSSOUsers(tenantId, skip).then([](pplx::task<std::shared_ptr<GetSSOUsers_200_response>> t){
5 try {
6 auto resp = t.get();
7 if (resp) {
8 auto copy = std::make_shared<GetSSOUsers_200_response>(*resp);
9 }
10 } catch(...) {}
11});
12

patchSSOUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateAPISSOUserDataUpdateAPISSOUserDataДа
updateCommentsboolНе

Отговор

Връща: PatchSSOUserAPIResponse

Пример

Пример за patchSSOUser
Copy Copy
1
2UpdateAPISSOUserData updateData;
3updateData.email = utility::string_t(U"user@example.com");
4updateData.displayName = utility::string_t(U"Jane Doe");
5boost::optional<bool> updateComments = true;
6auto responseHolder = std::make_shared<PatchSSOUserAPIResponse>();
7api->patchSSOUser(utility::string_t(U"my-tenant-123"), utility::string_t(U"user@example.com"), updateData, updateComments)
8.then([responseHolder](std::shared_ptr<PatchSSOUserAPIResponse> resp){
9 if (resp) *responseHolder = *resp;
10 return responseHolder;
11});
12

putSSOUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateAPISSOUserDataUpdateAPISSOUserDataДа
updateCommentsboolНе

Отговор

Връща: PutSSOUserAPIResponse

Пример

Пример за putSSOUser
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("user@example.com");
4UpdateAPISSOUserData updateData;
5updateData.displayName = U("Jane Doe");
6updateData.email = U("user@example.com");
7boost::optional<bool> updateComments = true;
8api->putSSOUser(tenantId, id, updateData, updateComments)
9.then([](std::shared_ptr<PutSSOUserAPIResponse> resp){
10 if(!resp){ std::cout << "putSSOUser returned null\n"; return; }
11 auto copy = std::make_shared<PutSSOUserAPIResponse>(*resp);
12 std::cout << "SSO user updated successfully\n";
13});
14

createSubscription Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataДа

Отговор

Връща: CreateSubscriptionAPIResponse

Пример

Пример за createSubscription
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3auto payload = std::make_shared<CreateAPIUserSubscriptionData>();
4payload->userEmail = U("user@example.com");
5payload->planId = U("pro-monthly");
6payload->couponCode = boost::optional<utility::string_t>(U("WELCOME10"));
7payload->trialDays = boost::optional<int>(14);
8payload->autoRenew = boost::optional<bool>(true);
9api->createSubscription(tenantId, *payload).then([](std::shared_ptr<CreateSubscriptionAPIResponse> resp) {
10 if (resp) std::cout << "Subscription created successfully" << std::endl;
11 else std::cout << "Failed to create subscription" << std::endl;
12});
13

deleteSubscription Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
userIdstringНе

Отговор

Връща: DeleteSubscriptionAPIResponse

Пример

Пример за deleteSubscription
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("subscription-987");
4boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
5auto defaultResp = std::make_shared<DeleteSubscriptionAPIResponse>();
6api->deleteSubscription(tenantId, id, userId)
7.then([defaultResp](pplx::task<std::shared_ptr<DeleteSubscriptionAPIResponse>> t){
8 try {
9 auto resp = t.get();
10 if (!resp) resp = defaultResp;
11 std::cout << "Delete completed\n";
12 } catch (const std::exception &e) {
13 std::cerr << "Delete failed: " << e.what() << '\n';
14 }
15});
16

getSubscriptions Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе

Отговор

Връща: GetSubscriptionsAPIResponse

Пример

Пример за getSubscriptions
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> userId = utility::conversions::to_string_t("user@example.com");
4api->getSubscriptions(tenantId, userId)
5.then([](std::shared_ptr<GetSubscriptionsAPIResponse> resp){
6 if(!resp) return;
7 auto copy = std::make_shared<GetSubscriptionsAPIResponse>(*resp);
8})
9.wait();
10

updateSubscription Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataДа
userIdstringНе

Отговор

Връща: UpdateSubscriptionAPIResponse

Пример

Пример за updateSubscription
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t subscriptionId = U("sub-456");
4UpdateAPIUserSubscriptionData updateData{};
5boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user-789"));
6api->updateSubscription(tenantId, subscriptionId, updateData, userId)
7.then([](pplx::task<std::shared_ptr<UpdateSubscriptionAPIResponse>> t){
8 try {
9 auto resp = t.get();
10 if (resp) {
11 auto copy = std::make_shared<UpdateSubscriptionAPIResponse>(*resp);
12 }
13 } catch (const std::exception&) {}
14}).wait();
15

getTenantDailyUsages Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
yearNumberdoubleНе
monthNumberdoubleНе
dayNumberdoubleНе
skipdoubleНе

Отговор

Връща: GetTenantDailyUsages_200_response

Пример

Пример на getTenantDailyUsages
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> year = 2025;
4boost::optional<double> month = 1;
5auto placeholder = std::make_shared<GetTenantDailyUsages_200_response>();
6api->getTenantDailyUsages(tenantId, year, month, boost::optional<double>(), boost::optional<double>())
7.then([](pplx::task<std::shared_ptr<GetTenantDailyUsages_200_response>> t){
8 try {
9 auto resp = t.get();
10 if (resp) std::cout << "Received tenant daily usages\n";
11 else std::cout << "No usage data\n";
12 } catch (const std::exception &e) {
13 std::cout << "Request error: " << e.what() << '\n';
14 }
15});
16

createTenantPackage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createTenantPackageBodyCreateTenantPackageBodyДа

Отговор

Връща: CreateTenantPackage_200_response

Пример

Пример за createTenantPackage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3auto body = std::make_shared<CreateTenantPackageBody>();
4body->name = U("Standard Package - 1k comments");
5body->createdByEmail = U("admin@mycompany.com");
6body->monthlyLimit = boost::optional<int>(1000);
7body->notes = boost::optional<utility::string_t>(U("Onboarding promo"));
8api->createTenantPackage(tenantId, *body)
9.then([](pplx::task<std::shared_ptr<CreateTenantPackage_200_response>> t) {
10 try {
11 auto resp = t.get();
12 if (resp) {
13 std::cout << "Package created: " << utility::conversions::to_utf8string(resp->packageId) << std::endl;
14 }
15 } catch (const std::exception& e) {
16 std::cerr << "Create failed: " << e.what() << std::endl;
17 }
18});
19

deleteTenantPackage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример deleteTenantPackage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t pkgId = U("package-456");
4boost::optional<utility::string_t> ifMatch = boost::optional<utility::string_t>(U("\"etag-789\""));
5auto fallback = std::make_shared<FlagCommentPublic_200_response>();
6auto task = api->deleteTenantPackage(tenantId, pkgId).then([fallback](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
7 try {
8 auto resp = t.get();
9 if (resp) return resp;
10 return fallback;
11 } catch (const std::exception&) {
12 return fallback;
13 }
14});
15task.wait();
16

getTenantPackage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
idstringYes

Отговор

Връща: GetTenantPackage_200_response

Пример

Пример за getTenantPackage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t packageId = U("pkg-456");
4boost::optional<utility::string_t> requestTrace = U("trace-20260112-01");
5api->getTenantPackage(tenantId, packageId)
6.then([requestTrace](std::shared_ptr<GetTenantPackage_200_response> resp){
7 auto result = resp ? resp : std::make_shared<GetTenantPackage_200_response>();
8 if (requestTrace) { auto trace = *requestTrace; (void)trace; }
9 return result;
10})
11.then([](std::shared_ptr<GetTenantPackage_200_response> finalResp){
12 (void)finalResp;
13});
14

getTenantPackages Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipdoubleНе

Отговор

Връща: GetTenantPackages_200_response

Пример

Пример за getTenantPackages
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> skip = 10.0;
4auto task = api->getTenantPackages(tenantId, skip).then([](pplx::task<std::shared_ptr<GetTenantPackages_200_response>> t){
5 try {
6 auto resp = t.get();
7 if (resp) {
8 (void)resp;
9 }
10 } catch (const std::exception&) {
11 auto fallback = std::make_shared<GetTenantPackages_200_response>();
12 (void)fallback;
13 }
14});
15

replaceTenantPackage Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
replaceTenantPackageBodyReplaceTenantPackageBodyДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за replaceTenantPackage
Copy Copy
1
2utility::string_t tenantId = utility::string_t("my-tenant-123");
3utility::string_t packageId = utility::string_t("pkg-456");
4ReplaceTenantPackageBody body;
5body.name = utility::string_t("Premium Plan");
6body.planId = utility::string_t("premium_monthly");
7body.seats = 25;
8body.billingEmail = utility::string_t("billing@acme.com");
9boost::optional<utility::string_t> notes = boost::optional<utility::string_t>(utility::string_t("Migrated subscription"));
10body.notes = notes;
11api->replaceTenantPackage(tenantId, packageId, body).then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> task){
12 try{
13 auto resp = task.get();
14 if(resp){
15 auto resultCopy = std::make_shared<FlagCommentPublic_200_response>(*resp);
16 }
17 } catch(const std::exception&){
18 }
19});
20

updateTenantPackage Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateTenantPackageBodyUpdateTenantPackageBodyДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateTenantPackage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t packageId = U("pkg-456");
4auto bodyPtr = std::make_shared<UpdateTenantPackageBody>();
5bodyPtr->name = utility::string_t(U("Pro Monthly"));
6bodyPtr->description = boost::optional<utility::string_t>(U("Monthly subscription for pro users"));
7bodyPtr->enabled = boost::optional<bool>(true);
8api->updateTenantPackage(tenantId, packageId, *bodyPtr)
9.then([](std::shared_ptr<FlagCommentPublic_200_response> resp){
10 std::cout << (resp ? "updateTenantPackage succeeded\n" : "updateTenantPackage returned null\n");
11});
12

createTenantUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createTenantUserBodyCreateTenantUserBodyДа

Отговор

Връща: CreateTenantUser_200_response

Пример

Пример за createTenantUser
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateTenantUserBody createTenantUserBody;
4createTenantUserBody.email = utility::conversions::to_string_t("new.user@company.com");
5createTenantUserBody.displayName = boost::optional<utility::string_t>(utility::conversions::to_string_t("New User"));
6
7api->createTenantUser(tenantId, createTenantUserBody)
8 .then([](pplx::task<std::shared_ptr<CreateTenantUser_200_response>> task){
9 try {
10 auto resp = task.get();
11 auto created = std::make_shared<CreateTenantUser_200_response>(*resp);
12 } catch (const std::exception&) {
13 }
14 });
15

deleteTenantUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
deleteCommentsstringНе
commentDeleteModestringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteTenantUser
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user@example.com");
4boost::optional<utility::string_t> deleteComments = boost::optional<utility::string_t>(U("true"));
5boost::optional<utility::string_t> commentDeleteMode = boost::optional<utility::string_t>(U("soft"));
6auto fallback = std::make_shared<FlagCommentPublic_200_response>();
7api->deleteTenantUser(tenantId, userId, deleteComments, commentDeleteMode)
8.then([fallback](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
9 try {
10 auto resp = t.get();
11 if (!resp) resp = fallback;
12 std::cout << "deleteTenantUser completed\n";
13 } catch (const std::exception &e) {
14 std::cout << "deleteTenantUser failed: " << e.what() << "\n";
15 }
16}).wait();
17

getTenantUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetTenantUser_200_response

Пример

Пример за getTenantUser
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("alice@example.com");
4boost::optional<utility::string_t> includeMetadata = boost::optional<utility::string_t>(U("true"));
5api->getTenantUser(tenantId, userId).then([includeMetadata](pplx::task<std::shared_ptr<GetTenantUser_200_response>> t)
6{
7 try {
8 auto resp = t.get();
9 auto result = resp ? resp : std::make_shared<GetTenantUser_200_response>();
10 if (includeMetadata && result) { (void)includeMetadata; }
11 (void)result;
12 } catch (const std::exception& e) {
13 auto fallback = std::make_shared<GetTenantUser_200_response>();
14 (void)fallback;
15 }
16});
17

getTenantUsers Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
skipdoubleНе

Отговор

Връща: GetTenantUsers_200_response

Пример

getTenantUsers Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> skip = boost::optional<double>(20);
4api->getTenantUsers(tenantId, skip)
5 .then([=](pplx::task<std::shared_ptr<GetTenantUsers_200_response>> t) {
6 try {
7 std::shared_ptr<GetTenantUsers_200_response> resp = t.get();
8 if (!resp) resp = std::make_shared<GetTenantUsers_200_response>();
9 (void)resp;
10 } catch (const std::exception& ex) {
11 (void)ex;
12 std::shared_ptr<GetTenantUsers_200_response> err = std::make_shared<GetTenantUsers_200_response>();
13 }
14 });
15

replaceTenantUser Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа
replaceTenantUserBodyReplaceTenantUserBodyДа
updateCommentsstringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

replaceTenantUser Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("user@example.com");
4ReplaceTenantUserBody replaceBody;
5boost::optional<utility::string_t> updateComments = boost::optional<utility::string_t>(U("true"));
6api->replaceTenantUser(tenantId, id, replaceBody, updateComments)
7.then([](std::shared_ptr<FlagCommentPublic_200_response> resp){
8 if (resp) {
9 auto copy = std::make_shared<FlagCommentPublic_200_response>(*resp);
10 }
11});
12

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
redirectURLstringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

sendLoginLink Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user@example.com");
4boost::optional<utility::string_t> redirectURL = utility::string_t(U("https://app.example.com/welcome"));
5api->sendLoginLink(tenantId, userId, redirectURL)
6 .then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t)
7 {
8 try
9 {
10 auto resp = t.get();
11 if (resp) return resp;
12 return std::make_shared<FlagCommentPublic_200_response>();
13 }
14 catch (...)
15 {
16 return std::make_shared<FlagCommentPublic_200_response>();
17 }
18 });
19

updateTenantUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateTenantUserBodyUpdateTenantUserBodyДа
updateCommentsstringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateTenantUser
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("jane.doe@example.com");
4auto bodyPtr = std::make_shared<UpdateTenantUserBody>();
5bodyPtr->setEmail(U("jane.doe@example.com"));
6bodyPtr->setDisplayName(U("Jane Doe"));
7boost::optional<utility::string_t> updateComments = U("Normalized display name");
8
9api->updateTenantUser(tenantId, userId, *bodyPtr, updateComments)
10.then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t){
11 try {
12 auto resp = t.get();
13 if (resp) std::cout << "Tenant user updated successfully\n";
14 else std::cout << "Update returned no data\n";
15 } catch (const std::exception& ex) {
16 std::cerr << "Update failed: " << ex.what() << '\n';
17 }
18});
19

createTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createTenantBodyCreateTenantBodyДа

Отговор

Връща: CreateTenant_200_response

Пример

Пример за createTenant
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateTenantBody createTenantBody;
4createTenantBody.displayName = U("My Tenant Inc");
5createTenantBody.adminEmail = U("admin@mytenant.com");
6createTenantBody.plan = boost::optional<utility::string_t>(U("pro"));
7auto task = api->createTenant(tenantId, createTenantBody)
8 .then([](std::shared_ptr<CreateTenant_200_response> resp){
9 if (resp){
10 auto createdId = std::make_shared<utility::string_t>(resp->tenantId);
11 }
12 });
13task.wait();
14

deleteTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
surestringНе

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за deleteTenant
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("flag-456");
4boost::optional<utility::string_t> sure = utility::string_t(U("true"));
5api->deleteTenant(tenantId, id, sure)
6 .then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> t) {
7 try {
8 auto resp = t.get();
9 auto safeResp = resp ? resp : std::make_shared<FlagCommentPublic_200_response>();
10 (void)safeResp;
11 } catch (...) {}
12 });
13

getTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetTenant_200_response

Пример

Пример на getTenant
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("admin@fastcomments.com");
4boost::optional<utility::string_t> asOf = boost::optional<utility::string_t>(U("2026-01-01T00:00:00Z"));
5api->getTenant(tenantId, id).then([asOf](pplx::task<std::shared_ptr<GetTenant_200_response>> t) {
6 try {
7 auto resp = t.get();
8 if (!resp) return;
9 auto processed = std::make_shared<GetTenant_200_response>(*resp);
10 } catch (const std::exception&) {
11 }
12});
13

getTenants Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
metastringНе
skipdoubleНе

Отговор

Връща: GetTenants_200_response

Пример

Пример на getTenants
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> meta = boost::optional<utility::string_t>(U("admin@example.com"));
4boost::optional<double> skip = boost::optional<double>(10.0);
5auto task = api->getTenants(tenantId, meta, skip)
6 .then([](std::shared_ptr<GetTenants_200_response> resp){
7 if (resp) {
8 auto copy = std::make_shared<GetTenants_200_response>(*resp);
9 }
10 });
11

updateTenant Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateTenantBodyUpdateTenantBodyДа

Отговор

Връща: FlagCommentPublic_200_response

Пример

Пример за updateTenant
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto id = utility::string_t(U("tenant-0001"));
4auto bodyPtr = std::make_shared<UpdateTenantBody>();
5bodyPtr->setDisplayName(utility::string_t(U("Acme Corporation")));
6bodyPtr->setAdminEmail(utility::string_t(U("admin@acme.com")));
7bodyPtr->setIsActive(true);
8bodyPtr->setMaxUsers(boost::optional<int>(250));
9api->updateTenant(tenantId, id, *bodyPtr)
10.then([](pplx::task<std::shared_ptr<FlagCommentPublic_200_response>> task){
11 try {
12 auto resp = task.get();
13 if (resp) {
14 auto msg = resp->getMessage();
15 std::wcout << msg << std::endl;
16 }
17 } catch (const std::exception& e) {
18 std::cerr << e.what() << std::endl;
19 }
20});
21

changeTicketState Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringYes
userIdstringYes
idstringYes
changeTicketStateBodyChangeTicketStateBodyYes

Отговор

Връща: ChangeTicketState_200_response

Пример

changeTicketState Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("agent@example.com");
4utility::string_t id = U("TICKET-456");
5auto changeBody = std::make_shared<ChangeTicketStateBody>();
6changeBody->state = U("resolved");
7changeBody->comment = U("Resolved as duplicate after review");
8changeBody->notify = boost::optional<bool>(true);
9api->changeTicketState(tenantId, userId, id, *changeBody)
10.then([](pplx::task<std::shared_ptr<ChangeTicketState_200_response>> t){
11 try {
12 auto resp = t.get();
13 if (resp) {
14 auto copy = std::make_shared<ChangeTicketState_200_response>(*resp);
15 }
16 } catch (const std::exception&) {}
17});
18

createTicket Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringДа
createTicketBodyCreateTicketBodyДа

Отговор

Връща: CreateTicket_200_response

Пример

Пример за createTicket
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user@example.com");
4auto bodyPtr = std::make_shared<CreateTicketBody>();
5bodyPtr->subject = U("Comments not posting on article");
6bodyPtr->message = U("Submitting a comment returns 200 but it does not appear for other users");
7bodyPtr->priority = boost::optional<utility::string_t>(U("low"));
8api->createTicket(tenantId, userId, *bodyPtr)
9.then([](pplx::task<std::shared_ptr<CreateTicket_200_response>> task){
10 try {
11 auto resp = task.get();
12 if (resp) {
13 auto created = resp;
14 }
15 } catch (const std::exception& e) {
16 (void)e;
17 }
18});
19

getTicket Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
userIdstringНе

Отговор

Връща: GetTicket_200_response

Пример

getTicket Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t ticketId = U("ticket-456");
4boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
5api->getTicket(tenantId, ticketId, userId)
6.then([](pplx::task<std::shared_ptr<GetTicket_200_response>> t) {
7 try {
8 auto resp = t.get();
9 auto wrapped = std::make_shared<std::shared_ptr<GetTicket_200_response>>(resp);
10 if (*wrapped) {
11 std::cout << "Ticket retrieved\n";
12 } else {
13 std::cout << "No ticket\n";
14 }
15 } catch (const std::exception &e) {
16 std::cerr << "Error: " << e.what() << '\n';
17 }
18});
19

getTickets Internal Link


Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе
statedoubleНе
skipdoubleНе
limitdoubleНе

Отговор

Връща: GetTickets_200_response

Пример

Пример за getTickets
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
4boost::optional<double> state = boost::optional<double>(1.0);
5boost::optional<double> skip = boost::optional<double>(0.0);
6boost::optional<double> limit = boost::optional<double>(50.0);
7api->getTickets(tenantId, userId, state, skip, limit)
8.then([](pplx::task<std::shared_ptr<GetTickets_200_response>> t){
9 try {
10 auto resp = t.get();
11 auto copy = std::make_shared<GetTickets_200_response>(*resp);
12 std::cout << "Retrieved tickets: " << (resp ? "non-null" : "null") << std::endl;
13 } catch (const std::exception &e) {
14 std::cerr << "getTickets failed: " << e.what() << std::endl;
15 }
16});
17

uploadImage Internal Link

Качване и преоразмеряване на изображение

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
fileHttpContentДа
sizePresetSizePresetНе
urlIdstringНе

Отговор

Връща: UploadImageResponse

Пример

Пример за uploadImage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3auto fileBytes = std::vector<unsigned char>{0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A};
4auto file = std::make_shared<HttpContent>(fileBytes, U("image/png"), U("avatar.png"));
5boost::optional<SizePreset> sizePreset = boost::optional<SizePreset>(SizePreset::MEDIUM);
6boost::optional<utility::string_t> urlId = boost::optional<utility::string_t>(U("user-avatar-987"));
7api->uploadImage(tenantId, file, sizePreset, urlId)
8 .then([](pplx::task<std::shared_ptr<UploadImageResponse>> task) {
9 try {
10 return task.get();
11 } catch (...) {
12 return std::shared_ptr<UploadImageResponse>();
13 }
14 });
15

getUserBadgeProgressById Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetUserBadgeProgressById_200_response

Пример

Пример за getUserBadgeProgressById
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("badge-abc-456");
4boost::optional<utility::string_t> preferredLocale = boost::optional<utility::string_t>(U("en-US"));
5
6api->getUserBadgeProgressById(tenantId, id)
7.then([=](std::shared_ptr<GetUserBadgeProgressById_200_response> resp){
8 if(!resp) return;
9 auto copy = std::make_shared<GetUserBadgeProgressById_200_response>(*resp);
10 (void)copy;
11});
12

getUserBadgeProgressByUserId Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringДа

Отговор

Връща: GetUserBadgeProgressById_200_response

Пример

Пример за getUserBadgeProgressByUserId
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> optUserId = utility::string_t(U("user@example.com"));
4api->getUserBadgeProgressByUserId(tenantId, optUserId.value()).then(
5 [](pplx::task<std::shared_ptr<GetUserBadgeProgressById_200_response>> t){
6 try {
7 auto resp = t.get();
8 auto copy = std::make_shared<GetUserBadgeProgressById_200_response>(*resp);
9 } catch (const std::exception&) {
10 }
11 }
12);
13

getUserBadgeProgressList Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе
limitdoubleНе
skipdoubleНе

Отговор

Връща: GetUserBadgeProgressList_200_response

Пример

Пример за getUserBadgeProgressList
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
4boost::optional<double> limit = boost::optional<double>(50);
5boost::optional<double> skip = boost::optional<double>(0);
6
7api->getUserBadgeProgressList(tenantId, userId, limit, skip)
8.then([](pplx::task<std::shared_ptr<GetUserBadgeProgressList_200_response>> t){
9 try {
10 auto resp = t.get();
11 auto copied = std::make_shared<GetUserBadgeProgressList_200_response>(*resp);
12 std::cout << "Badge progress entries received\n";
13 } catch (const std::exception &e) {
14 std::cerr << "Failed to get badge progress: " << e.what() << '\n';
15 }
16});
17

createUserBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
createUserBadgeParamsCreateUserBadgeParamsДа

Отговор

Връща: CreateUserBadge_200_response

Пример

Пример за createUserBadge
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateUserBadgeParams params;
4params.userId = U("user@example.com");
5params.badgeId = U("trusted-contributor");
6params.note = boost::optional<utility::string_t>(U("Awarded for outstanding moderation"));
7api->createUserBadge(tenantId, params)
8.then([](std::shared_ptr<CreateUserBadge_200_response> resp){
9 if (resp) {
10 auto copied = std::make_shared<CreateUserBadge_200_response>(*resp);
11 }
12})
13.wait();
14

deleteUserBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: UpdateUserBadge_200_response

Пример

Пример за deleteUserBadge
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3utility::string_t badgeId = utility::conversions::to_string_t("badge-456");
4boost::optional<utility::string_t> traceId = boost::none;
5api->deleteUserBadge(tenantId, badgeId)
6.then([traceId](pplx::task<std::shared_ptr<UpdateUserBadge_200_response>> t) {
7 try {
8 auto resp = t.get();
9 if (!resp) resp = std::make_shared<UpdateUserBadge_200_response>();
10 return resp;
11 } catch (const std::exception&) {
12 return std::shared_ptr<UpdateUserBadge_200_response>();
13 }
14});
15

getUserBadge Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа

Отговор

Връща: GetUserBadge_200_response

Пример

getUserBadge Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("user@example.com");
4boost::optional<utility::string_t> traceId = U("trace-456");
5api->getUserBadge(tenantId, id).then([traceId](std::shared_ptr<GetUserBadge_200_response> resp) {
6 if (!resp) resp = std::make_shared<GetUserBadge_200_response>();
7 utility::string_t activeTrace = traceId.value_or(U(""));
8 (void)activeTrace;
9 return resp;
10});
11

getUserBadges Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
userIdstringНе
badgeIdstringНе
typedoubleНе
displayedOnCommentsboolНе
limitdoubleНе
skipdoubleНе

Отговор

Връща: GetUserBadges_200_response

Пример

Пример за getUserBadges
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> userId(utility::conversions::to_string_t("user@example.com"));
4boost::optional<utility::string_t> badgeId(utility::conversions::to_string_t("badge-elite"));
5boost::optional<double> type(1.0);
6boost::optional<bool> displayedOnComments(true);
7boost::optional<double> limit(50.0);
8boost::optional<double> skip(0.0);
9auto resultHolder = std::make_shared<GetUserBadges_200_response>();
10api->getUserBadges(tenantId, userId, badgeId, type, displayedOnComments, limit, skip)
11.then([&resultHolder](std::shared_ptr<GetUserBadges_200_response> resp){
12 if (resp) resultHolder = resp;
13 return resultHolder;
14});
15

updateUserBadge Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа
updateUserBadgeParamsUpdateUserBadgeParamsДа

Отговор

Връща: UpdateUserBadge_200_response

Пример

Пример за updateUserBadge
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("user@example.com");
4UpdateUserBadgeParams updateParams;
5updateParams.badgeId = U("badge-top-100");
6updateParams.label = U("Top Contributor");
7updateParams.active = boost::optional<bool>(true);
8updateParams.expiresAt = boost::optional<utility::string_t>(U("2026-12-31T23:59:59Z"));
9api->updateUserBadge(tenantId, id, updateParams)
10.then([](pplx::task<std::shared_ptr<UpdateUserBadge_200_response>> task){
11 try {
12 auto resp = task.get();
13 if (resp) {
14 auto result = std::make_shared<UpdateUserBadge_200_response>(*resp);
15 }
16 } catch (const std::exception&) {
17 }
18});
19

getUserNotificationCount Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
ssostringНе

Отговор

Връща: GetUserNotificationCount_200_response

Пример

Пример за getUserNotificationCount
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
4std::shared_ptr<GetUserNotificationCount_200_response> result;
5api->getUserNotificationCount(tenantId, sso)
6.then([&result](pplx::task<std::shared_ptr<GetUserNotificationCount_200_response>> t) {
7 try {
8 result = t.get();
9 if (!result) result = std::make_shared<GetUserNotificationCount_200_response>();
10 } catch (...) {
11 result = std::make_shared<GetUserNotificationCount_200_response>();
12 }
13}).wait();
14

getUserNotifications Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
pageSizeint32_tНе
afterIdstringНе
includeContextboolНе
afterCreatedAtint64_tНе
unreadOnlyboolНе
dmOnlyboolНе
noDmboolНе
includeTranslationsboolНе
ssostringНе

Отговор

Връща: GetUserNotifications_200_response

Пример

getUserNotifications Пример
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<int32_t> pageSize = 50;
4boost::optional<utility::string_t> afterId = utility::conversions::to_string_t("notif_98765");
5boost::optional<bool> includeContext = true;
6boost::optional<int64_t> afterCreatedAt = static_cast<int64_t>(1672531200);
7boost::optional<bool> unreadOnly = true;
8boost::optional<bool> dmOnly = false;
9boost::optional<bool> noDm = false;
10boost::optional<bool> includeTranslations = true;
11boost::optional<utility::string_t> sso = utility::conversions::to_string_t("user@example.com");
12
13api->getUserNotifications(tenantId, pageSize, afterId, includeContext, afterCreatedAt, unreadOnly, dmOnly, noDm, includeTranslations, sso)
14.then([](pplx::task<std::shared_ptr<GetUserNotifications_200_response>> task){
15 try {
16 auto resp = task.get();
17 auto copy = std::make_shared<GetUserNotifications_200_response>(*resp);
18 return copy;
19 } catch (...) {
20 return std::shared_ptr<GetUserNotifications_200_response>();
21 }
22});
23

resetUserNotificationCount Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
ssostringНе

Отговор

Връща: ResetUserNotifications_200_response

Пример

Пример за resetUserNotificationCount
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
4api->resetUserNotificationCount(tenantId, sso)
5 .then([](pplx::task<std::shared_ptr<ResetUserNotifications_200_response>> task) {
6 try {
7 auto resp = task.get();
8 if (!resp) resp = std::make_shared<ResetUserNotifications_200_response>();
9 } catch (const std::exception &e) {
10 (void)e;
11 }
12 });
13

resetUserNotifications Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
afterIdstringНе
afterCreatedAtint64_tНе
unreadOnlyboolНе
dmOnlyboolНе
noDmboolНе
ssostringНе

Отговор

Връща: ResetUserNotifications_200_response

Пример

Пример за resetUserNotifications
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> afterId = boost::optional<utility::string_t>(U("notif-987654321"));
4boost::optional<int64_t> afterCreatedAt = boost::optional<int64_t>(1625097600000LL);
5boost::optional<bool> unreadOnly = boost::optional<bool>(true);
6boost::optional<bool> dmOnly = boost::optional<bool>(false);
7boost::optional<bool> noDm;
8boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
9
10api->resetUserNotifications(tenantId, afterId, afterCreatedAt, unreadOnly, dmOnly, noDm, sso)
11 .then([](pplx::task<std::shared_ptr<ResetUserNotifications_200_response>> t)
12 {
13 try
14 {
15 auto resp = t.get();
16 auto respCopy = std::make_shared<ResetUserNotifications_200_response>(*resp);
17 return respCopy;
18 }
19 catch (...)
20 {
21 return std::shared_ptr<ResetUserNotifications_200_response>();
22 }
23 });
24

updateUserNotificationCommentSubscriptionStatus Internal Link

Активиране или деактивиране на известия за конкретен коментар.

Параметри

NameTypeRequiredDescription
tenantIdstringДа
notificationIdstringДа
optedInOrOutstringДа
commentIdstringДа
ssostringНе

Отговор

Връща: UpdateUserNotificationStatus_200_response

Пример

Пример за updateUserNotificationCommentSubscriptionStatus
Copy Copy
1
2utility::string_t tenantId = utility::string_t(U("my-tenant-123"));
3utility::string_t notificationId = utility::string_t(U("notif-789"));
4utility::string_t optedInOrOut = utility::string_t(U("opted_in"));
5utility::string_t commentId = utility::string_t(U("cmt-456"));
6boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(utility::string_t(U("user@example.com")));
7api->updateUserNotificationCommentSubscriptionStatus(tenantId, notificationId, optedInOrOut, commentId, sso)
8.then([](pplx::task<std::shared_ptr<UpdateUserNotificationStatus_200_response>> t){
9 try {
10 auto resp = t.get();
11 auto result = resp ? resp : std::make_shared<UpdateUserNotificationStatus_200_response>();
12 } catch (const std::exception&) {}
13});
14

updateUserNotificationPageSubscriptionStatus Internal Link

Включване или изключване на известия за страница. Когато потребителите са абонирани за страница, се създават известия за нови коренни коментари, както и

Parameters

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа
urlstringДа
pageTitlestringДа
subscribedOrUnsubscribedstringДа
ssostringНе

Отговор

Връща: UpdateUserNotificationStatus_200_response

Пример

Пример за 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://www.example.com/articles/2026/new-feature");
5utility::string_t pageTitle = U("New Feature Announcement");
6utility::string_t subscribedOrUnsubscribed = U("subscribed");
7boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
8auto placeholder = std::make_shared<UpdateUserNotificationStatus_200_response>();
9api->updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscribedOrUnsubscribed, sso)
10.then([](pplx::task<std::shared_ptr<UpdateUserNotificationStatus_200_response>> task){
11 try {
12 auto resp = task.get();
13 (void)resp;
14 } catch (const std::exception &e) {
15 (void)e;
16 }
17});
18

updateUserNotificationStatus Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
notificationIdstringДа
newStatusstringДа
ssostringНе

Отговор

Връща: UpdateUserNotificationStatus_200_response

Пример

Пример за updateUserNotificationStatus
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t notificationId = U("notification-789");
4utility::string_t newStatus = U("read");
5boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("sso-token-abc123"));
6api->updateUserNotificationStatus(tenantId, notificationId, newStatus, sso)
7.then([](pplx::task<std::shared_ptr<UpdateUserNotificationStatus_200_response>> task){
8 try {
9 auto resp = task.get();
10 if (resp) {
11 auto result = std::make_shared<UpdateUserNotificationStatus_200_response>(*resp);
12 }
13 } catch (...) {
14 }
15});
16

getUserPresenceStatuses Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
urlIdWSstringДа
userIdsstringДа

Отговор

Връща: GetUserPresenceStatuses_200_response

Пример

getUserPresenceStatuses Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlIdWS = U("wss://realtime.fastcomments.com/socket/tenant-abc");
4boost::optional<utility::string_t> optUserIds = U("alice@example.com,bob@example.com");
5utility::string_t userIds = optUserIds.value_or(U("alice@example.com"));
6auto task = api->getUserPresenceStatuses(tenantId, urlIdWS, userIds)
7 .then([](std::shared_ptr<GetUserPresenceStatuses_200_response> resp) {
8 if (!resp) return;
9 auto copy = std::make_shared<GetUserPresenceStatuses_200_response>(*resp);
10 });
11task.wait();
12

searchUsers Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
usernameStartsWithstringНе
mentionGroupIdsvector<stringНе
ssostringНе
searchSectionstringНе

Отговор

Връща: SearchUsers_200_response

Пример

searchUsers Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("/articles/2026/fast-comments-integration");
4boost::optional<utility::string_t> usernameStartsWith = boost::optional<utility::string_t>(U("alex"));
5std::vector<utility::string_t> groupsVec = { U("editors"), U("contributors") };
6boost::optional<std::vector<utility::string_t>> mentionGroupIds = boost::optional<std::vector<utility::string_t>>(groupsVec);
7boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("sso-user-456"));
8boost::optional<utility::string_t> searchSection = boost::optional<utility::string_t>(U("discussion"));
9
10api->searchUsers(tenantId, urlId, usernameStartsWith, mentionGroupIds, sso, searchSection)
11 .then([](pplx::task<std::shared_ptr<SearchUsers_200_response>> task) {
12 try {
13 auto resp = task.get();
14 auto respCopy = std::make_shared<SearchUsers_200_response>(*resp);
15 (void)respCopy;
16 } catch (const std::exception&) {
17 }
18 });
19

getUser Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
idstringДа

Отговор

Връща: GetUser_200_response

Пример

getUser Пример
Copy Copy
1
2boost::optional<utility::string_t> tenant(U("my-tenant-123"));
3boost::optional<utility::string_t> userId(U("user@example.com"));
4api->getUser(tenant.value(), userId.value())
5 .then([](pplx::task<std::shared_ptr<GetUser_200_response>> task) {
6 try {
7 auto resp = task.get();
8 if (resp) {
9 auto result_copy = std::make_shared<GetUser_200_response>(*resp);
10 } else {
11 auto fallback = std::make_shared<GetUser_200_response>();
12 }
13 } catch (const std::exception &e) {
14 }
15 });
16

createVote Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
commentIdstringДа
directionstringДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: VoteComment_200_response

Пример

Пример за createVote
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4utility::string_t direction = U("up");
5boost::optional<utility::string_t> userId = boost::optional<utility::string_t>(U("user@example.com"));
6api->createVote(tenantId, commentId, direction, userId, boost::none)
7.then([](pplx::task<std::shared_ptr<VoteComment_200_response>> task) {
8 try {
9 auto resp = task.get();
10 if (!resp) resp = std::make_shared<VoteComment_200_response>();
11 } catch (...) {}
12});
13

deleteVote Internal Link

Параметри

NameTypeRequiredDescription
tenantIdstringДа
idstringДа
editKeystringНе

Отговор

Връща: DeleteCommentVote_200_response

Пример

deleteVote Пример
Copy Copy
1
2utility::string_t tenantId = utility::conversions::to_string_t("my-tenant-123");
3utility::string_t voteId = utility::conversions::to_string_t("vote-98765");
4boost::optional<utility::string_t> editKey = boost::optional<utility::string_t>(utility::conversions::to_string_t("user-edit-key-abc123"));
5
6api->deleteVote(tenantId, voteId, editKey)
7.then([](pplx::task<std::shared_ptr<DeleteCommentVote_200_response>> t){
8 try {
9 auto resp = t.get();
10 auto result = resp ? std::make_shared<DeleteCommentVote_200_response>(*resp)
11 : std::make_shared<DeleteCommentVote_200_response>();
12 (void)result;
13 } catch (const std::exception& e) {
14 (void)e;
15 }
16});
17

getVotes Internal Link

Параметри

ИмеТипЗадължителноОписание
tenantIdstringДа
urlIdstringДа

Отговор

Връща: GetVotes_200_response

Пример

Пример за getVotes
Copy Copy
1
2boost::optional<utility::string_t> tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<utility::string_t> urlId = utility::string_t(U("/posts/2025/new-features"));
4auto task = api->getVotes(tenantId.value(), urlId.value()).then([](std::shared_ptr<GetVotes_200_response> resp){
5 if (resp) {
6 auto copy = std::make_shared<GetVotes_200_response>(*resp);
7 std::cout << "Fetched votes successfully\n";
8 } else {
9 std::cout << "No votes response\n";
10 }
11});
12task.wait();
13

getVotesForUser Internal Link

Параметри

ИмеТипЗадължителенОписание
tenantIdstringДа
urlIdstringДа
userIdstringНе
anonUserIdstringНе

Отговор

Връща: GetVotesForUser_200_response

Пример

Пример за getVotesForUser
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("article-987");
4boost::optional<utility::string_t> userId = utility::string_t(U("user@example.com"));
5boost::optional<utility::string_t> anonUserId;
6api->getVotesForUser(tenantId, urlId, userId, anonUserId)
7.then([](pplx::task<std::shared_ptr<GetVotesForUser_200_response>> task){
8 try {
9 auto resp = task.get();
10 if (resp) {
11 auto copy = std::make_shared<GetVotesForUser_200_response>(*resp);
12 }
13 } catch (const std::exception&) {
14 }
15});
16

Нуждаете ли се от помощ?

Ако срещнете проблеми или имате въпроси относно C++ SDK, моля:

Принос

Приноси са добре дошли! Моля, посетете репозитория в GitHub за указания относно приносянето.