FastComments.com

FastComments C++ SDK


Это официальный C++ SDK для FastComments.

Официальный C++ SDK для API FastComments

Репозиторий

Просмотреть на GitHub


Требования Internal Link

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

Установка Internal Link

Install Dependencies

sudo apt install libcpprest-dev libboost-all-dev

Building from Source

mkdir build
cd build
cmake ..
make

Installing

sudo make install

Library Contents

Эта библиотека содержит сгенерированный клиент API и утилиты SSO, упрощающие работу с API.

Public vs Secured APIs

Для клиента API существуют три класса, DefaultApi, PublicApi и ModerationApi. DefaultApi содержит методы, требующие вашего API‑ключа, а PublicApi содержит методы, которые могут вызываться напрямую из браузера/мобильного устройства и т.д. без аутентификации. ModerationApi предоставляет обширный набор живых и быстрых модерационных API. Каждый метод ModerationApi принимает параметр sso и может аутентифицироваться через SSO или cookie‑сеанс FastComments.com.

Заметки Internal Link

Идентификаторы вещания

Вы увидите, что в некоторых вызовах API требуется передать broadcastId. Когда вы получаете события, вы получите обратно этот идентификатор, так что будете знать, что нужно игнорировать событие, если вы планируете оптимистично применять изменения на клиенте (что вы, вероятно, захотите сделать, так как это обеспечивает лучший пользовательский опыт). Передайте здесь 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;
}

Документация для fastcomments Internal Link

Документация API

КлассМетодHTTP запросОписание
DefaultApiaddDomainConfigPOST /api/v1/domain-configs
DefaultApiaddHashTagPOST /api/v1/hash-tags
DefaultApiaddHashTagsBulkPOST /api/v1/hash-tags/bulk
DefaultApiaddPagePOST /api/v1/pages
DefaultApiaddSSOUserPOST /api/v1/sso-users
DefaultApiaggregatePOST /api/v1/aggregateАгрегирует документы, группируя их (если предоставлен параметр groupBy) и применяя несколько операций. Поддерживаются разные операции (например, sum, countDistinct, avg и др.).
DefaultApiaggregateQuestionResultsGET /api/v1/question-results-aggregation
DefaultApiblockUserFromCommentPOST /api/v1/comments/{id}/block
DefaultApibulkAggregateQuestionResultsPOST /api/v1/question-results-aggregation/bulk
DefaultApichangeTicketStatePATCH /api/v1/tickets/{id}/state
DefaultApicombineCommentsWithQuestionResultsGET /api/v1/question-results-aggregation/combine/comments
DefaultApicreateEmailTemplatePOST /api/v1/email-templates
DefaultApicreateFeedPostPOST /api/v1/feed-posts
DefaultApicreateModeratorPOST /api/v1/moderators
DefaultApicreateQuestionConfigPOST /api/v1/question-configs
DefaultApicreateQuestionResultPOST /api/v1/question-results
DefaultApicreateSubscriptionPOST /api/v1/subscriptions
DefaultApicreateTenantPOST /api/v1/tenants
DefaultApicreateTenantPackagePOST /api/v1/tenant-packages
DefaultApicreateTenantUserPOST /api/v1/tenant-users
DefaultApicreateTicketPOST /api/v1/tickets
DefaultApicreateUserBadgePOST /api/v1/user-badges
DefaultApicreateVotePOST /api/v1/votes
DefaultApideleteCommentDELETE /api/v1/comments/{id}
DefaultApideleteDomainConfigDELETE /api/v1/domain-configs/{domain}
DefaultApideleteEmailTemplateDELETE /api/v1/email-templates/{id}
DefaultApideleteEmailTemplateRenderErrorDELETE /api/v1/email-templates/{id}/render-errors/{errorId}
DefaultApideleteHashTagDELETE /api/v1/hash-tags/{tag}
DefaultApideleteModeratorDELETE /api/v1/moderators/{id}
DefaultApideleteNotificationCountDELETE /api/v1/notification-count/{id}
DefaultApideletePageDELETE /api/v1/pages/{id}
DefaultApideletePendingWebhookEventDELETE /api/v1/pending-webhook-events/{id}
DefaultApideleteQuestionConfigDELETE /api/v1/question-configs/{id}
DefaultApideleteQuestionResultDELETE /api/v1/question-results/{id}
DefaultApideleteSSOUserDELETE /api/v1/sso-users/{id}
DefaultApideleteSubscriptionDELETE /api/v1/subscriptions/{id}
DefaultApideleteTenantDELETE /api/v1/tenants/{id}
DefaultApideleteTenantPackageDELETE /api/v1/tenant-packages/{id}
DefaultApideleteTenantUserDELETE /api/v1/tenant-users/{id}
DefaultApideleteUserBadgeDELETE /api/v1/user-badges/{id}
DefaultApideleteVoteDELETE /api/v1/votes/{id}
DefaultApiflagCommentPOST /api/v1/comments/{id}/flag
DefaultApigetAuditLogsGET /api/v1/audit-logs
DefaultApigetCachedNotificationCountGET /api/v1/notification-count/{id}
DefaultApigetCommentGET /api/v1/comments/{id}
DefaultApigetCommentsGET /api/v1/comments
DefaultApigetDomainConfigGET /api/v1/domain-configs/{domain}
DefaultApigetDomainConfigsGET /api/v1/domain-configs
DefaultApigetEmailTemplateGET /api/v1/email-templates/{id}
DefaultApigetEmailTemplateDefinitionsGET /api/v1/email-templates/definitions
DefaultApigetEmailTemplateRenderErrorsGET /api/v1/email-templates/{id}/render-errors
DefaultApigetEmailTemplatesGET /api/v1/email-templates
DefaultApigetFeedPostsGET /api/v1/feed-postsreq tenantId afterId
DefaultApigetHashTagsGET /api/v1/hash-tags
DefaultApigetModeratorGET /api/v1/moderators/{id}
DefaultApigetModeratorsGET /api/v1/moderators
DefaultApigetNotificationCountGET /api/v1/notifications/count
DefaultApigetNotificationsGET /api/v1/notifications
DefaultApigetPageByURLIdGET /api/v1/pages/by-url-id
DefaultApigetPagesGET /api/v1/pages
DefaultApigetPendingWebhookEventCountGET /api/v1/pending-webhook-events/count
DefaultApigetPendingWebhookEventsGET /api/v1/pending-webhook-events
DefaultApigetQuestionConfigGET /api/v1/question-configs/{id}
DefaultApigetQuestionConfigsGET /api/v1/question-configs
DefaultApigetQuestionResultGET /api/v1/question-results/{id}
DefaultApigetQuestionResultsGET /api/v1/question-results
DefaultApigetSSOUserByEmailGET /api/v1/sso-users/by-email/{email}
DefaultApigetSSOUserByIdGET /api/v1/sso-users/by-id/{id}
DefaultApigetSSOUsersGET /api/v1/sso-users
DefaultApigetSubscriptionsGET /api/v1/subscriptions
DefaultApigetTenantGET /api/v1/tenants/{id}
DefaultApigetTenantDailyUsagesGET /api/v1/tenant-daily-usage
DefaultApigetTenantPackageGET /api/v1/tenant-packages/{id}
DefaultApigetTenantPackagesGET /api/v1/tenant-packages
DefaultApigetTenantUserGET /api/v1/tenant-users/{id}
DefaultApigetTenantUsersGET /api/v1/tenant-users
DefaultApigetTenantsGET /api/v1/tenants
DefaultApigetTicketGET /api/v1/tickets/{id}
DefaultApigetTicketsGET /api/v1/tickets
DefaultApigetUserGET /api/v1/users/{id}
DefaultApigetUserBadgeGET /api/v1/user-badges/{id}
DefaultApigetUserBadgeProgressByIdGET /api/v1/user-badge-progress/{id}
DefaultApigetUserBadgeProgressByUserIdGET /api/v1/user-badge-progress/user/{userId}
DefaultApigetUserBadgeProgressListGET /api/v1/user-badge-progress
DefaultApigetUserBadgesGET /api/v1/user-badges
DefaultApigetVotesGET /api/v1/votes
DefaultApigetVotesForUserGET /api/v1/votes/for-user
DefaultApipatchDomainConfigPATCH /api/v1/domain-configs/{domainToUpdate}
DefaultApipatchHashTagPATCH /api/v1/hash-tags/{tag}
DefaultApipatchPagePATCH /api/v1/pages/{id}
DefaultApipatchSSOUserPATCH /api/v1/sso-users/{id}
DefaultApiputDomainConfigPUT /api/v1/domain-configs/{domainToUpdate}
DefaultApiputSSOUserPUT /api/v1/sso-users/{id}
DefaultApirenderEmailTemplatePOST /api/v1/email-templates/render
DefaultApireplaceTenantPackagePUT /api/v1/tenant-packages/{id}
DefaultApireplaceTenantUserPUT /api/v1/tenant-users/{id}
DefaultApisaveCommentPOST /api/v1/comments
DefaultApisaveCommentsBulkPOST /api/v1/comments/bulk
DefaultApisendInvitePOST /api/v1/moderators/{id}/send-invite
DefaultApisendLoginLinkPOST /api/v1/tenant-users/{id}/send-login-link
DefaultApiunBlockUserFromCommentPOST /api/v1/comments/{id}/un-block
DefaultApiunFlagCommentPOST /api/v1/comments/{id}/un-flag
DefaultApiupdateCommentPATCH /api/v1/comments/{id}
DefaultApiupdateEmailTemplatePATCH /api/v1/email-templates/{id}
DefaultApiupdateFeedPostPATCH /api/v1/feed-posts/{id}
DefaultApiupdateModeratorPATCH /api/v1/moderators/{id}
DefaultApiupdateNotificationPATCH /api/v1/notifications/{id}
DefaultApiupdateQuestionConfigPATCH /api/v1/question-configs/{id}
DefaultApiupdateQuestionResultPATCH /api/v1/question-results/{id}
DefaultApiupdateSubscriptionPATCH /api/v1/subscriptions/{id}
DefaultApiupdateTenantPATCH /api/v1/tenants/{id}
DefaultApiupdateTenantPackagePATCH /api/v1/tenant-packages/{id}
DefaultApiupdateTenantUserPATCH /api/v1/tenant-users/{id}
DefaultApiupdateUserBadgePUT /api/v1/user-badges/{id}
ModerationApideleteModerationVoteDELETE /auth/my-account/moderate-comments/mod_api/vote/{commentId}/{voteId}
ModerationApigetApiCommentsGET /auth/my-account/moderate-comments/mod_api/api/comments
ModerationApigetApiExportStatusGET /auth/my-account/moderate-comments/mod_api/api/export/status
ModerationApigetApiIdsGET /auth/my-account/moderate-comments/mod_api/api/ids
ModerationApigetBanUsersFromCommentGET /auth/my-account/moderate-comments/mod_api/ban-users/from-comment/{commentId}
ModerationApigetCommentBanStatusGET /auth/my-account/moderate-comments/mod_api/get-comment-ban-status/{commentId}
ModerationApigetCommentChildrenGET /auth/my-account/moderate-comments/mod_api/comment-children/{commentId}
ModerationApigetCountGET /auth/my-account/moderate-comments/mod_api/count
ModerationApigetCountsGET /auth/my-account/moderate-comments/banned-users/mod_api/counts
ModerationApigetLogsGET /auth/my-account/moderate-comments/mod_api/logs/{commentId}
ModerationApigetManualBadgesGET /auth/my-account/moderate-comments/mod_api/get-manual-badges
ModerationApigetManualBadgesForUserGET /auth/my-account/moderate-comments/mod_api/get-manual-badges-for-user
ModerationApigetModerationCommentGET /auth/my-account/moderate-comments/mod_api/comment/{commentId}
ModerationApigetModerationCommentTextGET /auth/my-account/moderate-comments/mod_api/get-comment-text/{commentId}
ModerationApigetPreBanSummaryGET /auth/my-account/moderate-comments/mod_api/pre-ban-summary/{commentId}
ModerationApigetSearchCommentsSummaryGET /auth/my-account/moderate-comments/mod_api/search/comments/summary
ModerationApigetSearchPagesGET /auth/my-account/moderate-comments/mod_api/search/pages
ModerationApigetSearchSitesGET /auth/my-account/moderate-comments/mod_api/search/sites
ModerationApigetSearchSuggestGET /auth/my-account/moderate-comments/mod_api/search/suggest
ModerationApigetSearchUsersGET /auth/my-account/moderate-comments/mod_api/search/users
ModerationApigetTrustFactorGET /auth/my-account/moderate-comments/mod_api/get-trust-factor
ModerationApigetUserBanPreferenceGET /auth/my-account/moderate-comments/mod_api/user-ban-preference
ModerationApigetUserInternalProfileGET /auth/my-account/moderate-comments/mod_api/get-user-internal-profile
ModerationApipostAdjustCommentVotesPOST /auth/my-account/moderate-comments/mod_api/adjust-comment-votes/{commentId}
ModerationApipostApiExportPOST /auth/my-account/moderate-comments/mod_api/api/export
ModerationApipostBanUserFromCommentPOST /auth/my-account/moderate-comments/mod_api/ban-user/from-comment/{commentId}
ModerationApipostBanUserUndoPOST /auth/my-account/moderate-comments/mod_api/ban-user/undo
ModerationApipostBulkPreBanSummaryPOST /auth/my-account/moderate-comments/mod_api/bulk-pre-ban-summary
ModerationApipostCommentsByIdsPOST /auth/my-account/moderate-comments/mod_api/comments-by-ids
ModerationApipostFlagCommentPOST /auth/my-account/moderate-comments/mod_api/flag-comment/{commentId}
ModerationApipostRemoveCommentPOST /auth/my-account/moderate-comments/mod_api/remove-comment/{commentId}
ModerationApipostRestoreDeletedCommentPOST /auth/my-account/moderate-comments/mod_api/restore-deleted-comment/{commentId}
ModerationApipostSetCommentApprovalStatusPOST /auth/my-account/moderate-comments/mod_api/set-comment-approval-status/{commentId}
ModerationApipostSetCommentReviewStatusPOST /auth/my-account/moderate-comments/mod_api/set-comment-review-status/{commentId}
ModerationApipostSetCommentSpamStatusPOST /auth/my-account/moderate-comments/mod_api/set-comment-spam-status/{commentId}
ModerationApipostSetCommentTextPOST /auth/my-account/moderate-comments/mod_api/set-comment-text/{commentId}
ModerationApipostUnFlagCommentPOST /auth/my-account/moderate-comments/mod_api/un-flag-comment/{commentId}
ModerationApipostVotePOST /auth/my-account/moderate-comments/mod_api/vote/{commentId}
ModerationApiputAwardBadgePUT /auth/my-account/moderate-comments/mod_api/award-badge
ModerationApiputCloseThreadPUT /auth/my-account/moderate-comments/mod_api/close-thread
ModerationApiputRemoveBadgePUT /auth/my-account/moderate-comments/mod_api/remove-badge
ModerationApiputReopenThreadPUT /auth/my-account/moderate-comments/mod_api/reopen-thread
ModerationApisetTrustFactorPUT /auth/my-account/moderate-comments/mod_api/set-trust-factor
PublicApiblockFromCommentPublicPOST /block-from-comment/{commentId}
PublicApicheckedCommentsForBlockedGET /check-blocked-comments
PublicApicreateCommentPublicPOST /comments/{tenantId}
PublicApicreateFeedPostPublicPOST /feed-posts/{tenantId}
PublicApicreateV1PageReactPOST /page-reacts/v1/likes/{tenantId}
PublicApicreateV2PageReactPOST /page-reacts/v2/{tenantId}
PublicApideleteCommentPublicDELETE /comments/{tenantId}/{commentId}
PublicApideleteCommentVoteDELETE /comments/{tenantId}/{commentId}/vote/{voteId}
PublicApideleteFeedPostPublicDELETE /feed-posts/{tenantId}/{postId}
PublicApideleteV1PageReactDELETE /page-reacts/v1/likes/{tenantId}
PublicApideleteV2PageReactDELETE /page-reacts/v2/{tenantId}
PublicApiflagCommentPublicPOST /flag-comment/{commentId}
PublicApigetCommentTextGET /comments/{tenantId}/{commentId}/text
PublicApigetCommentVoteUserNamesGET /comments/{tenantId}/{commentId}/votes
PublicApigetCommentsForUserGET /comments-for-user
PublicApigetCommentsPublicGET /comments/{tenantId}req tenantId urlId
PublicApigetEventLogGET /event-log/{tenantId}req tenantId urlId userIdWS
PublicApigetFeedPostsPublicGET /feed-posts/{tenantId}req tenantId afterId
PublicApigetFeedPostsStatsGET /feed-posts/{tenantId}/stats
PublicApigetGifLargeGET /gifs/get-large/{tenantId}
PublicApigetGifsSearchGET /gifs/search/{tenantId}
PublicApigetGifsTrendingGET /gifs/trending/{tenantId}
PublicApigetGlobalEventLogGET /event-log/global/{tenantId}req tenantId urlId userIdWS
PublicApigetOfflineUsersGET /pages/{tenantId}/users/offlineПрошлые комментаторы на странице, которые НЕ находятся онлайн в данный момент. Сортируются по displayName. Используется после исчерпания /users/online для отображения секции «Участники». Пагинация курсором по commenterName: сервер проходит частичный индекс {tenantId, urlId, commenterName} от afterName вперёд через $gt, без стоимости $skip.
PublicApigetOnlineUsersGET /pages/{tenantId}/users/onlineТекущие онлайн‑просмотрщики страницы: люди, чья websocket‑сессия подписана на страницу прямо сейчас. Возвращает anonCount + totalCount (подписчики комнаты, включая анонимных просмотровщиков, которые не перечисляются).
PublicApigetPagesPublicGET /pages/{tenantId}Список страниц для арендатора. Используется клиентом FChat Desktop для заполнения списка комнат. Требуется, чтобы enableFChat был установлен в true в разрешённой пользовательской конфигурации каждой страницы. Страницы, требующие SSO, фильтруются в соответствии с групповым доступом запрашивающего пользователя.
PublicApigetTranslationsGET /translations/{namespace}/{component}
PublicApigetUserNotificationCountGET /user-notifications/get-count
PublicApigetUserNotificationsGET /user-notifications
PublicApigetUserPresenceStatusesGET /user-presence-status
PublicApigetUserReactsPublicGET /feed-posts/{tenantId}/user-reacts
PublicApigetUsersInfoGET /pages/{tenantId}/users/infoМассовая информация о пользователях для арендатора. По заданным userIds возвращает отображаемую информацию из User / SSOUser. Используется виджетом комментариев для обогащения пользователей, которые только что появились через событие присутствия. Без контекста страницы: конфиденциальность сохраняется одинаково (приватные профили маскируются).
PublicApigetV1PageLikesGET /page-reacts/v1/likes/{tenantId}
PublicApigetV2PageReactUsersGET /page-reacts/v2/{tenantId}/list
PublicApigetV2PageReactsGET /page-reacts/v2/{tenantId}
PublicApilockCommentPOST /comments/{tenantId}/{commentId}/lock
PublicApilogoutPublicPUT /auth/logout
PublicApipinCommentPOST /comments/{tenantId}/{commentId}/pin
PublicApireactFeedPostPublicPOST /feed-posts/{tenantId}/react/{postId}
PublicApiresetUserNotificationCountPOST /user-notifications/reset-count
PublicApiresetUserNotificationsPOST /user-notifications/reset
PublicApisearchUsersGET /user-search/{tenantId}
PublicApisetCommentTextPOST /comments/{tenantId}/{commentId}/update-text
PublicApiunBlockCommentPublicDELETE /block-from-comment/{commentId}
PublicApiunLockCommentPOST /comments/{tenantId}/{commentId}/unlock
PublicApiunPinCommentPOST /comments/{tenantId}/{commentId}/unpin
PublicApiupdateFeedPostPublicPUT /feed-posts/{tenantId}/{postId}
PublicApiupdateUserNotificationCommentSubscriptionStatusPOST /user-notifications/{notificationId}/mark-opted/{optedInOrOut}Включить или выключить уведомления для конкретного комментария.
PublicApiupdateUserNotificationPageSubscriptionStatusPOST /user-notifications/set-subscription-state/{subscribedOrUnsubscribed}Включить или выключить уведомления для страницы. Когда пользователи подписаны на страницу, создаются уведомления о новых корневых комментариях, а также
PublicApiupdateUserNotificationStatusPOST /user-notifications/{notificationId}/mark/{newStatus}
PublicApiuploadImagePOST /upload-image/{tenantId}Загрузка и изменение размера изображения
PublicApivoteCommentPOST /comments/{tenantId}/{commentId}/vote

Документация моделей

Агрегировать Internal Link

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

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
aggregationRequestAggregationRequestYes
optionsconst AggregateOptions&Yes

Response

Возвращает: AggregateResponse

Пример

пример агрегирования
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4AggregationRequest aggregationRequest;
5aggregationRequest.setMetric(U("commentCount"));
6aggregationRequest.setStartDate(U("2023-01-01T00:00:00Z"));
7aggregationRequest.setEndDate(U("2023-12-31T23:59:59Z"));
8aggregationRequest.setFilters({ U("status:approved") });
9
10AggregateOptions options;
11options.limit = boost::optional<int>(100);
12options.includeMetadata = boost::optional<bool>(true);
13
14api->aggregate(tenantId, aggregationRequest, options)
15 .then([](pplx::task<std::shared_ptr<AggregateResponse>> task) {
16 try {
17 auto response = task.get();
18 // обработать ответ
19 } catch (const std::exception& e) {
20 // обработать ошибку
21 }
22 });
23

Получить журналы аудита Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetAuditLogsOptions&Да

Ответ

Возвращает: GetAuditLogsResponse

Пример

Пример getAuditLogs
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4GetAuditLogsOptions options;
5options.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z"), utility::datetime::RFC_1123));
6options.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z"), utility::datetime::RFC_1123));
7options.limit = boost::optional<int>(100);
8
9api->getAuditLogs(tenantId, options).then([](pplx::task<std::shared_ptr<GetAuditLogsResponse>> t) {
10 try {
11 auto response = t.get();
12 // использовать response
13 } catch (const std::exception& e) {
14 // обработать ошибку
15 }
16});
17

Выход (публичный) Internal Link

Ответ

Возвращает: APIEmptyResponse

Пример

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

Заблокировать по комментарию Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Ответ

Возвращает: BlockSuccess

Пример

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

Разблокировать комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Ответ

Returns: UnblockSuccess

Пример

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

Проверить заблокированные комментарии Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
commentIdsstringДа
ssostringНет

Ответ

Возвращает: CheckBlockedCommentsResponse

Пример

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

Заблокировать пользователя от комментария Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
optionsconst BlockUserFromCommentOptions&Yes

Ответ

Возвращает: BlockSuccess

Пример

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

Создать комментарий (публичный) Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
broadcastIdstringДа
commentDataCommentDataДа
optionsconst CreateCommentPublicOptions&Да

Ответ

Возвращает: SaveCommentsResponseWithPresence

Пример

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

Удалить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
optionsconst DeleteCommentOptions&Да

Ответ

Возвращает: DeleteCommentResult

Пример

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

Удалить комментарий (публичный) Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
optionsconst DeleteCommentPublicOptions&Yes

Ответ

Возвращает: PublicAPIDeleteCommentResponse

Пример

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

Удалить голос за комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
voteIdstringДа
urlIdstringДа
broadcastIdstringДа
optionsconst DeleteCommentVoteOptions&Да

Ответ

Возвращает: VoteDeleteResponse

Пример

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

Пожаловаться на комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
optionsconst FlagCommentOptions&Yes

Ответ

Возвращает: FlagCommentResponse

Пример

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

Получить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: APIGetCommentResponse

Пример

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

Получить комментарии Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetCommentsOptions&Yes

Ответ

Returns: APIGetCommentsResponse

Пример

Пример getComments
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetCommentsOptions options;
4options.page = 1;
5options.limit = 50;
6options.sort = U("newest");
7options.authorEmail = boost::optional<utility::string_t>(U("user@example.com"));
8api->getComments(tenantId, options).then([](pplx::task<std::shared_ptr<APIGetCommentsResponse>> task) {
9 try {
10 auto response = task.get();
11 // использовать ответ по необходимости
12 } catch (const std::exception& e) {
13 // обработать ошибку
14 }
15});
16

Получить публичные комментарии Internal Link

req tenantId urlId

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes
optionsconst GetCommentsPublicOptions&Yes

Ответ

Возвращает: GetCommentsResponseWithPresence_PublicComment_

Пример

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

Получить текст комментария Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
optionsconst GetCommentTextOptions&Yes

Ответ

Возвращает: PublicAPIGetCommentTextResponse

Пример

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

Получить имена пользователей, проголосовавших за комментарий Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
dirint32_tYes
ssostringNo

Ответ

Returns: GetCommentVoteUserNamesSuccessResponse

Пример

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

Заблокировать комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Ответ

Возвращает: APIEmptyResponse

Пример

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

Закрепить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
ssostringНет

Ответ

Возвращает: ChangeCommentPinStatusResponse

Пример

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

Сохранить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createCommentParamsCreateCommentParamsYes
optionsconst SaveCommentOptions&Yes

Ответ

Возвращает: APISaveCommentResponse

Пример

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

Установить текст комментария Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
commentTextUpdateRequestCommentTextUpdateRequestYes
optionsconst SetCommentTextOptions&Yes

Ответ

Возвращает: PublicAPISetCommentTextResponse

Пример

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

Разблокировать пользователя от комментария Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
unBlockFromCommentParamsUnBlockFromCommentParamsДа
optionsconst UnBlockUserFromCommentOptions&Да

Ответ

Возвращает: UnblockSuccess

Пример

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

Снять жалобу с комментария Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
optionsconst UnFlagCommentOptions&Yes

Ответ

Возвращает: FlagCommentResponse

Пример

Пример unFlagComment
Copy Copy
1
2auto options = UnFlagCommentOptions{};
3options.reason = boost::optional<utility::string_t>(U("Resolved by moderator"));
4api->unFlagComment(U("my-tenant-123"), U("comment-456"), options)
5 .then([](std::shared_ptr<FlagCommentResponse> response) {
6 if (response) {
7 auto status = response->status;
8 // обработать статус при необходимости
9 }
10 })
11 .then([](pplx::task<void> previous) {
12 try {
13 previous.get();
14 } catch (const std::exception& e) {
15 // обработать ошибку
16 }
17 });
18

Разблокировать комментарий Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Ответ

Возвращает: APIEmptyResponse

Пример

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

Открепить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
broadcastIdstringДа
ssostringНет

Ответ

Возвращает: ChangeCommentPinStatusResponse

Пример

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

Обновить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updatableCommentParamsUpdatableCommentParamsYes
optionsconst UpdateCommentOptions&Yes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Проголосовать за комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
urlIdstringYes
broadcastIdstringYes
voteBodyParamsVoteBodyParamsYes
optionsconst VoteCommentOptions&Yes

Ответ

Возвращает: VoteResponse

Пример

Пример voteComment
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-7890");
4auto urlId = utility::conversions::to_string_t("article-456");
5auto broadcastId = utility::conversions::to_string_t("broadcast-321");
6
7VoteBodyParams voteParams;
8voteParams.upvote = true;
9voteParams.note = boost::optional<utility::string_t>(utility::conversions::to_string_t("Great insight"));
10
11VoteCommentOptions options;
12options.dryRun = boost::optional<bool>(false);
13
14api->voteComment(tenantId, commentId, urlId, broadcastId, voteParams, options)
15 .then([](pplx::task<std::shared_ptr<VoteResponse>> t) {
16 try {
17 auto response = t.get();
18 // обработать ответ
19 } catch (const std::exception&) {
20 }
21 });
22

Получить комментарии для пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
optionsconst GetCommentsForUserOptions&Да

Ответ

Возвращает: GetCommentsForUserResponse

Пример

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

Добавить конфигурацию домена Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
addDomainConfigParamsAddDomainConfigParamsYes

Response

Returns: AddDomainConfigResponse

Example

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

Удалить конфигурацию домена Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
domainstringДа

Ответ

Возвращает: DeleteDomainConfigResponse

Пример

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

Получить конфигурацию домена Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
domainstringYes

Ответ

Возвращает: GetDomainConfigResponse

Пример

getDomainConfig Пример
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domain = U("myblog.example.com");
4
5api->getDomainConfig(tenantId, domain)
6 .then([](std::shared_ptr<GetDomainConfigResponse> response) {
7 if (!response) return;
8 boost::optional<bool> moderationEnabled = response->moderationEnabled;
9 boost::optional<std::string> theme = response->theme;
10 if (moderationEnabled && *moderationEnabled) {
11 // обработать включённую модерацию
12 }
13 if (theme) {
14 // использовать значение темы
15 }
16 })
17 .wait();
18

Получить конфигурации доменов Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes

Ответ

Возвращает: GetDomainConfigsResponse

Пример

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

Частичное обновление конфигурации домена Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Ответ

Возвращает: PatchDomainConfigResponse

Пример

Пример patchDomainConfig
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto domainToUpdate = utility::conversions::to_string_t("example.com");
4PatchDomainConfigParams patchDomainConfigParams;
5patchDomainConfigParams.enableComments = boost::optional<bool>(true);
6patchDomainConfigParams.moderationLevel = boost::optional<int>(2);
7patchDomainConfigParams.customHeader = boost::optional<utility::string_t>(utility::conversions::to_string_t("X-Custom-Header"));
8
9api->patchDomainConfig(tenantId, domainToUpdate, patchDomainConfigParams)
10 .then([](std::shared_ptr<PatchDomainConfigResponse> resp) {
11 // success handling
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception& e) { /* error handling */ }
15 });
16

Заменить конфигурацию домена Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
domainToUpdatestringДа
updateDomainConfigParamsUpdateDomainConfigParamsДа

Ответ

Возвращает: PutDomainConfigResponse

Пример

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

Создать шаблон письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createEmailTemplateBodyCreateEmailTemplateBodyYes

Ответ

Возвращает: CreateEmailTemplateResponse

Пример

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

Удалить шаблон письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: APIEmptyResponse

Пример

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

Удалить ошибку рендеринга шаблона письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
errorIdstringДа

Ответ

Возвращает: APIEmptyResponse

Пример

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

Получить шаблон письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetEmailTemplateResponse

Пример

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

Получить определения шаблонов писем Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа

Ответ

Возвращает: GetEmailTemplateDefinitionsResponse

Пример

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

Получить ошибки рендеринга шаблонов писем Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
skipdoubleНет

Ответ

Возвращает: GetEmailTemplateRenderErrorsResponse

Пример

Пример getEmailTemplateRenderErrors
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("email-template-789");
4boost::optional<double> skip = 20.0;
5
6api->getEmailTemplateRenderErrors(tenantId, id, skip)
7 .then([](pplx::task<std::shared_ptr<GetEmailTemplateRenderErrorsResponse>> task) {
8 try {
9 auto response = task.get();
10 // Используйте ответ по необходимости
11 } catch (const std::exception& ex) {
12 // Обработать ошибку
13 }
14 });
15

Получить шаблоны писем Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
skipdoubleNo

Ответ

Возвращает: GetEmailTemplatesResponse

Пример

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

Отрендерить шаблон письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
renderEmailTemplateBodyRenderEmailTemplateBodyДа
localestringНет

Ответ

Возвращает: RenderEmailTemplateResponse

Пример

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

Обновить шаблон письма Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

Ответ

Возвращает: APIEmptyResponse

Пример

Пример updateEmailTemplate
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t templateId = U("welcome-email");
4UpdateEmailTemplateBody body;
5body.subject = U("Welcome to Our Platform");
6body.content = U("<p>Hello \{{userName}}, welcome aboard!</p>");
7body.isActive = boost::optional<bool>(true);
8api->updateEmailTemplate(tenantId, templateId, body)
9 .then([](std::shared_ptr<APIEmptyResponse> response) {
10 // обработка успеха
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception &) { /* обработка ошибки */ }
14 });
15

Получить журнал событий Internal Link

req tenantId urlId userIdWS

Параметры

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimeint64_tДа
endTimeint64_tНет

Ответ

Возвращает: GetEventLogResponse

Пример

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

Получить глобальный журнал событий Internal Link

req tenantId urlId userIdWS

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
userIdWSstringДа
startTimeint64_tДа
endTimeint64_tНет

Ответ

Возвращает: GetEventLogResponse

Пример

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

Создать пост ленты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsДа
optionsconst CreateFeedPostOptions&Да

Ответ

Возвращает: CreateFeedPostsResponse

Пример

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

Создать публичный пост ленты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createFeedPostParamsCreateFeedPostParamsДа
optionsconst CreateFeedPostPublicOptions&Да

Ответ

Возвращает: CreateFeedPostResponse

Пример

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

Удалить публичный пост ленты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
postIdstringYes
optionsconst DeleteFeedPostPublicOptions&Yes

Ответ

Возвращает: DeleteFeedPostPublicResponse

Пример

Пример deleteFeedPostPublic
Copy Copy
1
2auto opts = std::make_shared<DeleteFeedPostPublicOptions>();
3opts->reason = boost::optional<utility::string_t>(U("Inappropriate content"));
4api->deleteFeedPostPublic(U("my-tenant-123"), U("post-789"), *opts)
5 .then([](std::shared_ptr<DeleteFeedPostPublicResponse> resp) {
6 if (resp && resp->isSuccess()) {
7 // логика успеха
8 }
9 });
10

Получить посты ленты Internal Link


req tenantId afterId

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetFeedPostsOptions&Да

Ответ

Возвращает: GetFeedPostsResponse

Пример

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

Получить публичные посты ленты Internal Link

запрос tenantId afterId

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetFeedPostsPublicOptions&Да

Ответ

Возвращает: PublicFeedPostsResponse

Пример

Пример getFeedPostsPublic
Copy Copy
1
2auto options = GetFeedPostsPublicOptions{};
3options.limit = boost::optional<int>{20};
4options.before = boost::optional<utility::string_t>{U("2023-01-01T00:00:00Z")};
5
6api->getFeedPostsPublic(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<PublicFeedPostsResponse>> task){
7 try{
8 auto response = task.get();
9 auto processed = std::make_shared<PublicFeedPostsResponse>(*response);
10 // Используйте processed по необходимости
11 }catch(const std::exception&){
12 // Обработать ошибку
13 }
14});
15

Получить статистику постов ленты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
postIdsvector<stringДа
ssostringНет

Ответ

Возвращает: FeedPostsStatsResponse

Пример

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

Получить реакции пользователя (публично) Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetUserReactsPublicOptions&Да

Ответ

Возвращает: UserReactsResponse

Пример

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

Поставить реакцию на пост ленты (публично) Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
postIdstringДа
reactBodyParamsReactBodyParamsДа
optionsconst ReactFeedPostPublicOptions&Да

Ответ

Возвращает: ReactFeedPostResponse

Пример

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

Обновить пост ленты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
feedPostFeedPostYes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Обновить публичный пост ленты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
postIdstringДа
updateFeedPostParamsUpdateFeedPostParamsДа
optionsconst UpdateFeedPostPublicOptions&Да

Ответ

Возвращает: CreateFeedPostResponse

Пример

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

Пожаловаться на комментарий (публично) Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
isFlaggedboolYes
ssostringNo

Ответ

Возвращает: APIEmptyResponse

Пример

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

Получить большое GIF Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
largeInternalURLSanitizedstringYes

Ответ

Возвращает: GifGetLargeResponse

Пример

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

Поиск GIF Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
searchstringДа
optionsconst GetGifsSearchOptions&Да

Ответ

Возвращает: GetGifsSearchResponse

Пример

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

Трендовые GIF Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetGifsTrendingOptions&Да

Ответ

Возвращает: GetGifsTrendingResponse

Пример

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

Добавить хештег Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createHashTagBodyCreateHashTagBodyДа

Ответ

Возвращает: CreateHashTagResponse

Пример

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

Добавить хештеги массово Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
bulkCreateHashTagsBodyBulkCreateHashTagsBodyYes

Ответ

Возвращает: BulkCreateHashTagsResponse

Пример

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

Удалить хештег Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
tagstringYes
deleteHashTagRequestBodyDeleteHashTagRequestBodyYes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Получить хештеги Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
pagedoubleNo

Ответ

Возвращает: GetHashTagsResponse

Пример

Пример getHashTags
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<double> page = 2.0;
4
5api->getHashTags(tenantId, page).then([](pplx::task<std::shared_ptr<GetHashTagsResponse>> task) {
6 try {
7 auto resultPtr = task.get();
8 auto response = std::make_shared<GetHashTagsResponse>(*resultPtr);
9 // использовать response
10 } catch (const std::exception&) {
11 // обработать ошибку
12 }
13});
14

Частичное обновление хештега Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
tagstringYes
updateHashTagBodyUpdateHashTagBodyYes

Ответ

Возвращает: UpdateHashTagResponse

Пример

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

Удалить голос модерации Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
voteIdstringYes
optionsconst DeleteModerationVoteOptions&Yes

Ответ

Возвращает: VoteDeleteResponse

Пример

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

Получить комментарии API Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
optionsconst GetApiCommentsOptions&Да

Ответ

Возвращает: ModerationAPIGetCommentsResponse

Пример

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

Получить статус экспорта API Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetApiExportStatusOptions&Да

Ответ

Возвращает: ModerationExportStatusResponse

Пример

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

Получить идентификаторы API Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
optionsconst GetApiIdsOptions&Да

Ответ

Возвращает: ModerationAPIGetCommentIdsResponse

Пример

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

Получить заблокированных пользователей по комментарию Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
ssostringНет

Ответ

Возвращает: GetBannedUsersFromCommentResponse

Пример

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

Получить статус бана комментария Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
ssostringNo

Ответ

Возвращает: GetCommentBanStatusResponse

Пример

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

Получить дочерние комментарии Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
ssostringНет

Ответ

Возвращает: ModerationAPIChildCommentsResponse

Пример

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

Получить количество Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetCountOptions&Да

Ответ

Возвращает: ModerationAPICountCommentsResponse

Пример

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

Получить количества Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
ssostringНет

Ответ

Возвращает: GetBannedUsersCountResponse

Пример

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

Получить логи Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
ssostringНет

Ответ

Возвращает: ModerationAPIGetLogsResponse

Пример

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

Получить ручные бейджи Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
ssostringNo

Ответ

Returns: GetTenantManualBadgesResponse

Пример

Пример getManualBadges
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> sso = boost::make_optional(U("user@example.com"));
4
5api->getManualBadges(tenantId, sno)
6 .then([](pplx::task<std::shared_ptr<GetTenantManualBadgesResponse>> t) {
7 try {
8 auto response = t.get();
9 // process response, e.g., response->badgeList
10 } catch (const std::exception& ex) {
11 // handle error
12 }
13 });
14

Получить ручные бейджи для пользователя Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetManualBadgesForUserOptions&Yes

Ответ

Возвращает: GetUserManualBadgesResponse

Пример

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

Получить комментарий для модерации Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
optionsconst GetModerationCommentOptions&Yes

Ответ

Возвращает: ModerationAPICommentResponse

Пример

getModerationComment Пример
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-456");
4GetModerationCommentOptions options;
5options.includeDeleted = boost::optional<bool>(true);
6options.locale = boost::optional<utility::string_t>(utility::conversions::to_string_t("en-US"));
7api->getModerationComment(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<ModerationAPICommentResponse>> task) {
9 try {
10 auto response = task.get();
11 // Обработать ответ по необходимости
12 } catch (const std::exception& ex) {
13 // Обработать ошибку
14 }
15 });
16

Получить текст комментария для модерации Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
ssostringNo

Ответ

Возвращает: GetCommentTextResponse

Пример

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

Получить предварительную сводку по банам Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
optionsconst GetPreBanSummaryOptions&Yes

Ответ

Возвращает: PreBanSummary

Пример

Пример getPreBanSummary
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4GetPreBanSummaryOptions options;
5options.locale = boost::optional<utility::string_t>{utility::conversions::to_string_t("en-US")};
6
7api->getPreBanSummary(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<PreBanSummary>> t) {
9 try {
10 auto summary = t.get();
11 // обработать summary
12 } catch (const std::exception&) {
13 // обработать ошибку
14 }
15 });
16

Получить сводку поиска комментариев Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetSearchCommentsSummaryOptions&Да

Ответ

Возвращает: ModerationCommentSearchResponse

Пример

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

Получить страницы для поиска Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetSearchPagesOptions&Да

Ответ

Возвращает: ModerationPageSearchResponse

Пример

Пример getSearchPages
Copy Copy
1
2GetSearchPagesOptions options;
3options.pageNumber = boost::optional<int>(1);
4options.pageSize = boost::optional<int>(50);
5options.searchTerm = boost::optional<utility::string_t>(U("spam"));
6
7api->getSearchPages(U("my-tenant-123"), options)
8 .then([](pplx::task<std::shared_ptr<ModerationPageSearchResponse>> task) {
9 try {
10 auto response = task.get();
11 // использовать ответ
12 } catch (const std::exception& e) {
13 // обработать ошибку
14 }
15 });
16

Получить сайты для поиска Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetSearchSitesOptions&Yes

Ответ

Возвращает: ModerationSiteSearchResponse

Пример

Пример getSearchSites
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetSearchSitesOptions options;
4options.query = boost::make_optional(utility::string_t(U("example query")));
5options.limit = boost::make_optional(25);
6
7api->getSearchSites(tenantId, options)
8 .then([](pplx::task<std::shared_ptr<ModerationSiteSearchResponse>> t) {
9 try {
10 auto response = t.get();
11 auto respPtr = std::make_shared<ModerationSiteSearchResponse>(*response);
12 for (const auto& site : respPtr->sites) {
13 // логика обработки
14 }
15 } catch (const std::exception&) {
16 // обработка ошибок
17 }
18 });
19

Получить подсказки поиска Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetSearchSuggestOptions&Да

Ответ

Возвращает: ModerationSuggestResponse

Пример

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

Получить пользователей для поиска Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetSearchUsersOptions&Да

Ответ

Возвращает: ModerationUserSearchResponse

Пример

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

Получить коэффициент доверия Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetTrustFactorOptions&Yes

Ответ

Возвращает: GetUserTrustFactorResponse

Пример

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

Получить предпочтения бана пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
ssostringNo

Ответ

Возвращает: APIModerateGetUserBanPreferencesResponse

Пример

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

Получить внутренний профиль пользователя Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
optionsconst GetUserInternalProfileOptions&Да

Ответ

Возвращает: GetUserInternalProfileResponse

Пример

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

Корректировать голоса за комментарии Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
adjustCommentVotesParamsAdjustCommentVotesParamsYes
optionsconst PostAdjustCommentVotesOptions&Yes

Ответ

Возвращает: AdjustVotesResponse

Пример

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

Запустить экспорт API Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
optionsconst PostApiExportOptions&Yes

Ответ

Возвращает: ModerationExportResponse

Пример

Пример postApiExport
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3PostApiExportOptions options;
4options.format = utility::string_t(U("json"));
5options.email = utility::string_t(U("reports@example.com"));
6options.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z")));
7options.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z")));
8
9api->postApiExport(tenantId, options)
10 .then([](std::shared_ptr<ModerationExportResponse> response) {
11 if (response) {
12 // обработать успешный ответ экспорта
13 }
14 })
15 .wait();
16

Забанить пользователя по комментарию Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
optionsconst PostBanUserFromCommentOptions&Да

Ответ

Возвращает: BanUserFromCommentResult

Пример

Пример postBanUserFromComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456789");
4PostBanUserFromCommentOptions options;
5options.reason = boost::optional<utility::string_t>(U("spam"));
6options.durationDays = boost::optional<int>(30);
7
8api->postBanUserFromComment(tenantId, commentId, options)
9 .then([](std::shared_ptr<BanUserFromCommentResult> result) {
10 // result handling
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception& e) { /* error handling */ }
14 });
15

Отменить бан пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
banUserUndoParamsBanUserUndoParamsYes
ssostringNo

Ответ

Возвращает: APIEmptyResponse

Пример

Пример postBanUserUndo
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3BanUserUndoParams banParams;
4banParams.userId = utility::string_t(U("user-567"));
5banParams.reason = utility::string_t(U("reinstated"));
6boost::optional<utility::string_t> sso = utility::string_t(U("sso-token-abc"));
7
8api->postBanUserUndo(tenantId, banParams, sso).then([](std::shared_ptr<APIEmptyResponse> resp){
9 // обработать успешный результат
10});
11

Массовая предварительная сводка по банам Internal Link

Параметры

ИмяТипТребуетсяОписание
tenantIdstringYes
bulkPreBanParamsBulkPreBanParamsYes
optionsconst PostBulkPreBanSummaryOptions&Yes

Ответ

Возвращает: BulkPreBanSummary

Пример

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

Получить комментарии по идентификаторам Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentsByIdsParamsCommentsByIdsParamsДа
ssostringНет

Ответ

Возвращает: ModerationAPIChildCommentsResponse

Пример

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

Пометить комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
optionsconst PostFlagCommentOptions&Yes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Удалить комментарий (модерация) Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
optionsconst PostRemoveCommentOptions&Да

Ответ

Возвращает: PostRemoveCommentApiResponse

Пример

postRemoveComment Пример
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("cmt-456789"));
4PostRemoveCommentOptions options;
5options.permanent = boost::optional<bool>(true);
6api->postRemoveComment(tenantId, commentId, options)
7 .then([](pplx::task<std::shared_ptr<PostRemoveCommentApiResponse>> task) {
8 try {
9 auto response = task.get();
10 // Обработать ответ
11 } catch (const std::exception& ex) {
12 // Обработать ошибку
13 }
14 });
15

Восстановить удалённый комментарий Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
optionsconst PostRestoreDeletedCommentOptions&Да

Ответ

Возвращает: APIEmptyResponse

Пример

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

Установить статус одобрения комментария Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
commentIdstringДа
optionsconst PostSetCommentApprovalStatusOptions&Да

Ответ

Returns: SetCommentApprovedResponse

Пример

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

Установить статус проверки комментария Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentReviewStatusOptions&Yes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Установить статус спама для комментария Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentSpamStatusOptions&Yes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Установить текст комментария (модерация) Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
setCommentTextParamsSetCommentTextParamsYes
optionsconst PostSetCommentTextOptions&Yes

Ответ

Возвращает: SetCommentTextResponse

Пример

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

Снять пометку с комментария Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
commentIdstringYes
optionsconst PostUnFlagCommentOptions&Yes

Response

Возвращает: APIEmptyResponse

Example

Пример postUnFlagComment
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4PostUnFlagCommentOptions opts;
5opts.notifyUser = boost::optional<bool>(true);
6api->postUnFlagComment(tenantId, commentId, opts)
7 .then([](std::shared_ptr<APIEmptyResponse> resp) {
8 // обработка может быть выполнена здесь
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception&) {}
12 });
13

Проголосовать (модерация) Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
optionsconst PostVoteOptions&Да

Ответ

Возвращает: VoteResponse

Пример

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

Выдать бейдж Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
badgeIdstringДа
optionsconst PutAwardBadgeOptions&Да

Ответ

Возвращает: AwardUserBadgeResponse

Пример

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

Закрыть ветку Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes
ssostringNo

Ответ

Возвращает: APIEmptyResponse

Пример

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

Убрать бейдж Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
badgeIdstringДа
optionsconst PutRemoveBadgeOptions&Да

Ответ

Возвращает: RemoveUserBadgeResponse

Пример

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

Повторно открыть ветку Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
ssostringNo

Ответ

Returns: APIEmptyResponse

Пример

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

Установить коэффициент доверия Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst SetTrustFactorOptions&Yes

Ответ

Возвращает: SetUserTrustFactorResponse

Пример

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

Создать модератора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createModeratorBodyCreateModeratorBodyДа

Ответ

Возвращает: CreateModeratorResponse

Пример

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

Удалить модератора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
sendEmailstringНет

Ответ

Возвращает: APIEmptyResponse

Пример

Пример deleteModerator
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto moderatorId = utility::conversions::to_string_t("mod-456");
4boost::optional<utility::string_t> sendEmail = utility::conversions::to_string_t("admin@example.com");
5api->deleteModerator(tenantId, moderatorId, sendEmail)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {
7 // обработать успех
8 });
9

Получить модератора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: GetModeratorResponse

Пример

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

Получить модераторов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipdoubleНет

Ответ

Возвращает: GetModeratorsResponse

Пример

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

Отправить приглашение Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
fromNamestringДа

Ответ

Возвращает: APIEmptyResponse

Пример

Пример sendInvite
Copy Copy
1
2boost::optional<utility::string_t> cc = utility::conversions::to_string_t("cc@example.com");
3api->sendInvite(
4 utility::conversions::to_string_t("my-tenant-123"),
5 utility::conversions::to_string_t("invitee@example.com"),
6 utility::conversions::to_string_t("John Doe")
7).then([](std::shared_ptr<APIEmptyResponse> resp) {
8 // обработать успешное приглашение
9});
10

Обновить модератора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateModeratorBodyUpdateModeratorBodyYes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Удалить счётчик уведомлений Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Returns: APIEmptyResponse

Пример

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

Получить кэшированный счётчик уведомлений Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetCachedNotificationCountResponse

Пример

Пример getCachedNotificationCount
Copy Copy
1
2auto tenantId = boost::optional<utility::string_t>(utility::conversions::to_string_t("my-tenant-123"));
3auto userId = boost::optional<utility::string_t>(utility::conversions::to_string_t("user-456"));
4
5api->getCachedNotificationCount(tenantId.value(), userId.value())
6 .then([](pplx::task<std::shared_ptr<GetCachedNotificationCountResponse>> task) {
7 try {
8 auto response = task.get();
9 // обработать ответ
10 } catch (const std::exception&) {
11 // обработать ошибку
12 }
13 });
14

Получить счётчик уведомлений Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetNotificationCountOptions&Да

Ответ

Возвращает: GetNotificationCountResponse

Пример

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

Получить уведомления Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetNotificationsOptions&Да

Ответ

Возвращает: GetNotificationsResponse

Пример

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

Обновить уведомление Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
updateNotificationBodyUpdateNotificationBodyДа
userIdstringНет

Ответ

Возвращает: APIEmptyResponse

Пример

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

Создать реакцию на страницу v1 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
titlestringНет

Ответ

Возвращает: CreateV1PageReact

Пример

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

Создать реакцию на страницу v2 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes
idstringYes
titlestringNo

Ответ

Возвращает: CreateV1PageReact

Пример

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

Удалить реакцию на страницу v1 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: CreateV1PageReact

Пример

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

Удалить реакцию на страницу v2 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
idstringДа

Ответ

Возвращает: CreateV1PageReact

Пример

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

Получить лайки страницы v1 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: GetV1PageLikes

Пример

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

Получить реакции страницы v2 Internal Link

Параметры

NameTypeRequiredDescription
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: GetV2PageReacts

Пример

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

Получить пользователей, поставивших реакцию на страницу v2 Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes
idstringYes

Ответ

Возвращает: GetV2PageReactUsersResponse

Пример

Пример getV2PageReactUsers
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-456");
4auto id = utility::conversions::to_string_t("react-789");
5boost::optional<utility::string_t> maybeFilter;
6api->getV2PageReactUsers(tenantId, urlId, id).then([](pplx::task<std::shared_ptr<GetV2PageReactUsersResponse>> task){
7 try{
8 auto response = task.get();
9 // Используйте ответ по мере необходимости
10 }catch(const std::exception&){
11 // Обработать ошибку
12 }
13});
14

Добавить страницу Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createAPIPageDataCreateAPIPageDataYes

Ответ

Возвращает: AddPageAPIResponse

Пример

Пример addPage
Copy Copy
1
2auto createData = CreateAPIPageData{};
3createData.title = utility::string_t(U("Welcome Page"));
4createData.url = utility::string_t(U("https://example.com/welcome"));
5createData.description = boost::optional<utility::string_t>(utility::string_t(U("Landing page for new users")));
6
7api->addPage(utility::string_t(U("my-tenant-123")), createData)
8 .then([](std::shared_ptr<AddPageAPIResponse> response) {
9 if (response && response->success) {
10 // обработка успешного добавления
11 } else {
12 // обработка ошибки
13 }
14 });
15

Удалить страницу Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: DeletePageAPIResponse

Пример

Пример deletePage
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto pageId = utility::conversions::to_string_t("page-456");
4
5api->deletePage(tenantId, pageId)
6 .then([](pplx::task<std::shared_ptr<DeletePageAPIResponse>> t) {
7 try {
8 auto response = t.get();
9 // process response as needed
10 } catch (const std::exception& ex) {
11 // handle error
12 }
13 });
14

Получить офлайн-пользователей Internal Link

Past commenters on the page who are NOT currently online. Sorted by displayName.
Use this after exhausting /users/online to render a "Members" section.
Cursor pagination on commenterName: server walks the partial {tenantId, urlId, commenterName} index from afterName forward via $gt, no $skip cost.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
optionsconst GetOfflineUsersOptions&Yes

Response

Returns: PageUsersOfflineResponse

Example

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

Получить онлайн-пользователей Internal Link

Текуще онлайн зрители страницы: люди, чья websocket‑сессия подписана на страницу прямо сейчас.
Возвращает anonCount + totalCount (подписчики по всей комнате, включая анонимных зрителей, которых мы не перечисляем).

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
optionsconst GetOnlineUsersOptions&Yes

Response

Returns: PageUsersOnlineResponse

Example

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

Получить страницу по URLId Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: GetPageByURLIdAPIResponse

Пример

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

Получить страницы Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа

Ответ

Возвращает: GetPagesAPIResponse

Пример

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

Получить публичные страницы Internal Link

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

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetPagesPublicOptions&Yes

Response

Возвращает: GetPublicPagesResponse

Пример

Пример getPagesPublic
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetPagesPublicOptions options;
4options.limit = boost::optional<int>(50);
5options.cursor = boost::optional<utility::string_t>(U("cursor-token"));
6api->getPagesPublic(tenantId, options).then([](pplx::task<std::shared_ptr<GetPublicPagesResponse>> task){
7 try{
8 auto response = task.get();
9 // обработать ответ при необходимости
10 }catch(const std::exception&){
11 // обработать ошибку при необходимости
12 }
13});
14

Получить информацию о пользователях Internal Link

Bulk user info for a tenant. Given userIds, return display info from User / SSOUser.
Used by the comment widget to enrich users that just appeared via a presence event.
No page context: privacy is enforced uniformly (private profiles are masked).

Parameters

ИмяТипОбязательноОписание
tenantIdstringДа
idsstringДа

Response

Возвращает: PageUsersInfoResponse

Example

Пример getUsersInfo
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t ids = U("alice@example.com,bob@example.com");
4boost::optional<utility::string_t> locale = boost::make_optional(U("en-US"));
5
6api->getUsersInfo(tenantId, ids).then([](pplx::task<std::shared_ptr<PageUsersInfoResponse>> t){
7 try{
8 auto response = t.get();
9 // обработать ответ
10 }catch(const std::exception&){
11 // обработать ошибку
12 }
13});
14

Частичное обновление страницы Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateAPIPageDataUpdateAPIPageDataYes

Ответ

Возвращает: PatchPageAPIResponse

Пример

Пример patchPage
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t pageId = U("page-789");
4UpdateAPIPageData update;
5update.title = boost::optional<utility::string_t>(U("Updated Page Title"));
6update.metadata = boost::optional<utility::string_t>(U("{\"author\":\"jane.doe@example.com\"}"));
7api->patchPage(tenantId, pageId, update)
8 .then([](std::shared_ptr<PatchPageAPIResponse> response) {
9 if (response && response->isSuccess) {
10 // обработать успех
11 }
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception&) {}
15 });
16

Удалить ожидающее событие вебхука Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: APIEmptyResponse

Пример

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

Получить количество ожидающих событий вебхука Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetPendingWebhookEventCountOptions&Да

Ответ

Возвращает: GetPendingWebhookEventCountResponse

Пример

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

Получить ожидающие события вебхука Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetPendingWebhookEventsOptions&Yes

Ответ

Возвращает: GetPendingWebhookEventsResponse

Пример

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

Создать конфигурацию вопроса Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringДа
createQuestionConfigBodyCreateQuestionConfigBodyДа

Response

Возвращает: CreateQuestionConfigResponse

Example

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

Удалить конфигурацию вопроса Internal Link


Parameters

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Response

Возвращает: APIEmptyResponse

Example

Пример deleteQuestionConfig
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto configId = utility::conversions::to_string_t("question-config-456");
4
5api->deleteQuestionConfig(tenantId, configId)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {
7 // обработка успешного удаления
8 })
9 .then([](pplx::task<void> t) {
10 try {
11 t.get();
12 } catch (const std::exception&) {
13 // обработка ошибки
14 }
15 });
16

Получить конфигурацию вопроса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetQuestionConfigResponse

Пример

Пример getQuestionConfig
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto questionId = utility::conversions::to_string_t("question-456");
4
5api->getQuestionConfig(tenantId, questionId)
6 .then([](pplx::task<std::shared_ptr<GetQuestionConfigResponse>> task) {
7 try {
8 auto response = task.get();
9 // Использовать ответ по мере необходимости
10 } catch (const std::exception&) {
11 // Обработать ошибку
12 }
13 });
14

Получить конфигурации вопросов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipdoubleНет

Ответ

Возвращает: GetQuestionConfigsResponse

Пример

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

Обновить конфигурацию вопроса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Создать результат вопроса Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringДа
createQuestionResultBodyCreateQuestionResultBodyДа

Response

Возвращает: CreateQuestionResultResponse

Example

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

Удалить результат вопроса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: APIEmptyResponse

Пример

Пример deleteQuestionResult
Copy Copy
1
2boost::optional<utility::string_t> optTenant = utility::conversions::to_string_t( "my-tenant-123" );
3utility::string_t questionId = utility::conversions::to_string_t( "question-456" );
4
5if ( optTenant )
6{
7 api->deleteQuestionResult( *optTenant, questionId )
8 .then( []( pplx::task<std::shared_ptr<APIEmptyResponse>> t )
9 {
10 try
11 {
12 auto resp = t.get();
13 // обработка успеха
14 }
15 catch ( const std::exception& e )
16 {
17 // обработка ошибки
18 }
19 } );
20}
21

Получить результат вопроса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: GetQuestionResultResponse

Пример

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

Получить результаты вопросов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetQuestionResultsOptions&Yes

Ответ

Возвращает: GetQuestionResultsResponse

Пример

Пример getQuestionResults
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetQuestionResultsOptions options;
4options.questionId = boost::optional<utility::string_t>(U("question-456"));
5options.includeDeleted = boost::optional<bool>(false);
6api->getQuestionResults(tenantId, options)
7 .then([](pplx::task<std::shared_ptr<GetQuestionResultsResponse>> t) {
8 auto response = t.get();
9 // обработка ответа
10 });
11

Обновить результат вопроса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateQuestionResultBodyUpdateQuestionResultBodyYes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Агрегировать результаты вопросов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst AggregateQuestionResultsOptions&Yes

Ответ

Возвращает: AggregateQuestionResultsResponse

Пример

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

Массовая агрегация результатов вопросов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestДа
forceRecalculateboolНет

Ответ

Возвращает: BulkAggregateQuestionResultsResponse

Пример

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

Объединить комментарии с результатами вопросов Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst CombineCommentsWithQuestionResultsOptions&Да

Ответ

Возвращает: CombineQuestionResultsWithCommentsResponse

Пример

combineCommentsWithQuestionResults Пример
Copy Copy
1
2utility::string_t tenantId = utility::string_t("my-tenant-123");
3CombineCommentsWithQuestionResultsOptions options;
4options.questionId = utility::string_t("question-789");
5options.maxComments = boost::optional<int>(50);
6api->combineCommentsWithQuestionResults(tenantId, options).then(
7 [](pplx::task<std::shared_ptr<CombineQuestionResultsWithCommentsResponse>> task){
8 try{
9 auto respPtr = task.get();
10 auto combined = std::make_shared<CombineQuestionResultsWithCommentsResponse>(*respPtr);
11 // Использовать combined по мере необходимости
12 }catch(const std::exception&){
13 }
14 });
15

Добавить SSO-пользователя Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

Response

Возвращает: AddSSOUserAPIResponse

Example

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

Удалить SSO-пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
optionsconst DeleteSSOUserOptions&Yes

Ответ

Возвращает: DeleteSSOUserAPIResponse

Пример

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

Получить SSO-пользователя по email Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
emailstringДа

Ответ

Возвращает: GetSSOUserByEmailAPIResponse

Пример

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

Получить SSO-пользователя по id Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: GetSSOUserByIdAPIResponse

Пример

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

Получить SSO-пользователей Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipint32_tНет

Ответ

Возвращает: GetSSOUsersResponse

Пример

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

Частичное обновление SSO-пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
updateAPISSOUserDataUpdateAPISSOUserDataДа
updateCommentsboolНет

Ответ

Возвращает: PatchSSOUserAPIResponse

Пример

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

Заменить SSO-пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
updateAPISSOUserDataUpdateAPISSOUserDataДа
updateCommentsboolНет

Ответ

Возвращает: PutSSOUserAPIResponse

Пример

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

Создать подписку Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataДа

Ответ

Возвращает: CreateSubscriptionAPIResponse

Пример

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

Удалить подписку Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
userIdstringНет

Ответ

Возвращает: DeleteSubscriptionAPIResponse

Пример

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

Получить подписки Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringНет

Ответ

Возвращает: GetSubscriptionsAPIResponse

Пример

Пример getSubscriptions
Copy Copy
1
2auto tenant = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> user = utility::conversions::to_string_t("user@example.com");
4
5api->getSubscriptions(tenant, user).then(
6 [](pplx::task<std::shared_ptr<GetSubscriptionsAPIResponse>> t) {
7 try {
8 auto response = t.get();
9 // обработать ответ
10 } catch (const std::exception& e) {
11 // обработать ошибку
12 }
13 }
14);
15

Обновить подписку Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataYes
userIdstringNo

Ответ

Возвращает: UpdateSubscriptionAPIResponse

Пример

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

Получить ежедневное использование арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetTenantDailyUsagesOptions&Yes

Ответ

Возвращает: GetTenantDailyUsagesResponse

Пример

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

Создать пакет арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
createTenantPackageBodyCreateTenantPackageBodyYes

Ответ

Возвращает: CreateTenantPackageResponse

Пример

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

Удалить пакет арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: APIEmptyResponse

Пример

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

Получить пакет арендатора Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Response

Возвращает: GetTenantPackageResponse

Example

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

Получить пакеты арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipdoubleНет

Ответ

Возвращает: GetTenantPackagesResponse

Пример

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

Заменить пакет арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
replaceTenantPackageBodyReplaceTenantPackageBodyДа

Ответ

Возвращает: APIEmptyResponse

Пример

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

Обновить пакет арендатора Internal Link

Параметры

ИмяТипОбязательныйОписание
tenantIdstringДа
idstringДа
updateTenantPackageBodyUpdateTenantPackageBodyДа

Ответ

Returns: APIEmptyResponse

Пример

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

Создать пользователя арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createTenantUserBodyCreateTenantUserBodyДа

Ответ

Возвращает: CreateTenantUserResponse

Пример

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

Удалить пользователя арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
optionsconst DeleteTenantUserOptions&Да

Ответ

Возвращает: APIEmptyResponse

Пример

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

Получить пользователя арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: GetTenantUserResponse

Пример

Пример getTenantUser
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user@example.com");
4api->getTenantUser(tenantId, userId)
5 .then([](pplx::task<std::shared_ptr<GetTenantUserResponse>> task) {
6 try {
7 auto response = task.get();
8 // Используйте response по мере необходимости
9 } catch (const std::exception&) {
10 // Обработка ошибок
11 }
12 });
13

Получить пользователей арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
skipdoubleНет

Ответ

Возвращает: GetTenantUsersResponse

Пример

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

Заменить пользователя арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

Ответ

Возвращает: APIEmptyResponse

Пример

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

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
redirectURLstringNo

Ответ

Returns: APIEmptyResponse

Пример

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

Обновить пользователя арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
updateTenantUserBodyUpdateTenantUserBodyДа
updateCommentsstringНет

Ответ

Возвращает: APIEmptyResponse

Пример

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

Создать арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createTenantBodyCreateTenantBodyДа

Ответ

Возвращает: CreateTenantResponse

Пример

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

Удалить арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
surestringНет

Ответ

Возвращает: APIEmptyResponse

Пример

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

Получить арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: GetTenantResponse

Пример

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

Получить арендаторов Internal Link


Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetTenantsOptions&Yes

Ответ

Возвращает: GetTenantsResponse

Пример

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

Обновить арендатора Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Ответ

Возвращает: APIEmptyResponse

Пример

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

Изменить состояние тикета Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringДа
idstringДа
changeTicketStateBodyChangeTicketStateBodyДа

Ответ

Возвращает: ChangeTicketStateResponse

Пример

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

Создать тикет Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
userIdstringYes
createTicketBodyCreateTicketBodyYes

Ответ

Возвращает: CreateTicketResponse

Пример

createTicket Пример
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("john.doe@example.com");
4CreateTicketBody ticketBody;
5ticketBody.setSubject(utility::conversions::to_string_t("Login Issue"));
6ticketBody.setDescription(utility::conversions::to_string_t("Cannot log in after password reset."));
7boost::optional<int> priority = 2;
8ticketBody.setPriority(priority);
9api->createTicket(tenantId, userId, ticketBody).then([](pplx::task<std::shared_ptr<CreateTicketResponse>> task){
10 try{
11 auto response = task.get();
12 // Используйте ответ по мере необходимости
13 }catch(const std::exception&){
14 // Обработайте ошибку
15 }
16});
17

Получить тикет Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
userIdstringNo

Ответ

Возвращает: GetTicketResponse

Пример

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

Получить тикеты Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetTicketsOptions&Yes

Ответ

Возвращает: GetTicketsResponse

Пример

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

Получить переводы Internal Link

Параметры

ИмяТипОбязательноОписание
r_namespacestringYes
componentstringYes
optionsconst GetTranslationsOptions&Yes

Ответ

Возвращает: GetTranslationsResponse

Пример

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

Загрузить изображение Internal Link

Загрузка и изменение размера изображения

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
fileHttpContentYes
optionsconst UploadImageOptions&Yes

Ответ

Возвращает: UploadImageResponse

Пример

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

Получить прогресс бейджа пользователя по Id Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: APIGetUserBadgeProgressResponse

Пример

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

Получить прогресс бейджа пользователя по userId Internal Link

Parameters

ИмяТипОбязательноОписание
tenantIdstringДа
userIdstringДа

Response

Возвращает: APIGetUserBadgeProgressResponse

Example

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

Получить список прогресса бейджей пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst GetUserBadgeProgressListOptions&Да

Ответ

Возвращает: APIGetUserBadgeProgressListResponse

Пример

Пример getUserBadgeProgressList
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetUserBadgeProgressListOptions options;
4options.userId = U("user@example.com");
5options.page = boost::optional<int>(1);
6options.pageSize = boost::optional<int>(20);
7api->getUserBadgeProgressList(tenantId, options)
8 .then([](std::shared_ptr<APIGetUserBadgeProgressListResponse> resp) {
9 if (!resp) return;
10 for (const auto& badge : resp->badges) {
11 // обработать значок
12 }
13 });
14

Создать бейдж пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
createUserBadgeParamsCreateUserBadgeParamsДа

Ответ

Returns: APICreateUserBadgeResponse

Пример

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

Удалить бейдж пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: APIEmptySuccessResponse

Пример

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

Получить бейдж пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes

Ответ

Возвращает: APIGetUserBadgeResponse

Пример

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

Получить бейджи пользователя Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetUserBadgesOptions&Yes

Response

Returns: APIGetUserBadgesResponse

Example

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

Обновить бейдж пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Ответ

Возвращает: APIEmptySuccessResponse

Пример

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

Получить счётчик уведомлений пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
ssostringNo

Ответ

Возвращает: GetUserNotificationCountResponse

Пример

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

Получить уведомления пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
optionsconst GetUserNotificationsOptions&Yes

Ответ

Возвращает: GetMyNotificationsResponse

Пример

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

Сбросить счётчик уведомлений пользователя Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringДа
ssostringНет

Response

Возвращает: ResetUserNotificationsResponse

Пример

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

Сбросить уведомления пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
optionsconst ResetUserNotificationsOptions&Да

Ответ

Возвращает: ResetUserNotificationsResponse

Пример

resetUserNotifications Пример
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3ResetUserNotificationsOptions options;
4options.email = boost::optional<utility::string_t>(U("user@example.com"));
5api->resetUserNotifications(tenantId, options)
6 .then([](std::shared_ptr<ResetUserNotificationsResponse> resp) {
7 // Обработать ответ
8 });
9

Обновить статус подписки пользователя на комментарии Internal Link

Enable or disable notifications for a specific comment.

Parameters

ИмяТипОбязательноОписание
tenantIdstringYes
notificationIdstringYes
optedInOrOutstringYes
commentIdstringYes
ssostringNo

Response

Returns: UpdateUserNotificationCommentSubscriptionStatusResponse

Example

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

Обновить статус подписки пользователя на страницу Internal Link

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

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedstringYes
ssostringNo

Ответ

Возвращает: UpdateUserNotificationPageSubscriptionStatusResponse

Пример

Пример updateUserNotificationPageSubscriptionStatus
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("page-456");
4utility::string_t url = U("https://example.com/articles/awesome-article");
5utility::string_t pageTitle = U("Awesome Article");
6utility::string_t subscription = U("subscribed");
7boost::optional<utility::string_t> sso = boost::make_optional<utility::string_t>(U("sso-token-789"));
8
9api->updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscription, sso)
10 .then([](std::shared_ptr<UpdateUserNotificationPageSubscriptionStatusResponse> resp) {
11 // обработать resp при необходимости
12 });
13

Обновить статус уведомления пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
notificationIdstringДа
newStatusstringДа
ssostringНет

Ответ

Возвращает: UpdateUserNotificationStatusResponse

Пример

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

Получить статусы присутствия пользователей Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Ответ

Возвращает: GetUserPresenceStatusesResponse

Пример

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

Поиск пользователей Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
optionsconst SearchUsersOptions&Да

Ответ

Возвращает: SearchUsersResult

Пример

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

Получить пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа

Ответ

Возвращает: GetUserResponse

Пример

Пример getUser
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user-789");
4boost::optional<utility::string_t> optTag = boost::none;
5
6api->getUser(tenantId, userId)
7 .then([=](pplx::task<std::shared_ptr<GetUserResponse>> task) {
8 try {
9 auto response = task.get();
10 if (!response) {
11 response = std::make_shared<GetUserResponse>();
12 }
13 // обработать ответ по мере необходимости
14 } catch (const std::exception&) {
15 // обработать ошибку
16 }
17 });
18

Создать голос Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
commentIdstringДа
directionstringДа
optionsconst CreateVoteOptions&Да

Ответ

Возвращает: VoteResponse

Пример

Пример createVote
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456");
4auto direction = utility::conversions::to_string_t("up");
5auto optionsPtr = std::make_shared<CreateVoteOptions>();
6optionsPtr->userId = utility::conversions::to_string_t("user-789");
7optionsPtr->ipAddress = boost::optional<utility::string_t>(utility::conversions::to_string_t("192.168.1.100"));
8api->createVote(tenantId, commentId, direction, *optionsPtr)
9 .then([](std::shared_ptr<VoteResponse> resp){});
10

Удалить голос Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
idstringДа
editKeystringНет

Ответ

Возвращает: VoteDeleteResponse

Пример

Пример deleteVote
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto voteId = utility::conversions::to_string_t("vote-9876");
4boost::optional<utility::string_t> editKey = utility::conversions::to_string_t("edit-abc123");
5
6api->deleteVote(tenantId, voteId, editKey).then([](pplx::task<std::shared_ptr<VoteDeleteResponse>> task) {
7 try {
8 auto response = task.get();
9 // Обработать ответ при необходимости
10 } catch (const std::exception&) {
11 // Обработать ошибку
12 }
13});
14

Получить голоса Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа

Ответ

Возвращает: GetVotesResponse

Пример

Пример getVotes
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("article-456"));
4boost::optional<utility::string_t> extraHeader = boost::none;
5
6api->getVotes(tenantId, urlId).then([=](pplx::task<std::shared_ptr<GetVotesResponse>> task) {
7 try {
8 auto original = task.get();
9 auto response = std::make_shared<GetVotesResponse>(*original);
10 } catch (...) {
11 // обработка ошибки
12 }
13});
14

Получить голоса пользователя Internal Link

Параметры

ИмяТипОбязательноОписание
tenantIdstringДа
urlIdstringДа
optionsconst GetVotesForUserOptions&Да

Ответ

Возвращает: GetVotesForUserResponse

Пример

Пример getVotesForUser
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("post-456"));
4GetVotesForUserOptions options;
5options.page = boost::optional<int>(2);
6options.pageSize = boost::optional<int>(50);
7api->getVotesForUser(tenantId, urlId, options).then([](std::shared_ptr<GetVotesForUserResponse> response) {
8 if (response) {
9 // handle response, e.g., iterate votes
10 }
11});
12

Нужна помощь?

Если вы столкнулись с какими-либо проблемами или у вас есть вопросы по C++ SDK, пожалуйста:

Вклад

Вклады приветствуются! Пожалуйста, посетите репозиторий на GitHub для получения инструкций по внесению вклада.