FastComments.com

FastComments SDK C++


Este es el SDK oficial en C++ para FastComments.

SDK oficial en C++ para la API de FastComments

Repositorio

Ver en GitHub


Agentes de codificación IA Internal Link

skills.sh

Proporcione a su agente de codificación el contexto de FastComments que necesita: widgets, configuración, Secure SSO, la API REST y los SDK:

npx skills add fastcomments/skills

Funciona con Claude Code, Codex, Cursor, Copilot, Gemini y cualquier otro agente que soporte el skills CLI.

Requisitos Internal Link


  • C++17 o posterior
  • CMake 3.14 o posterior
  • OpenSSL
  • C++ REST SDK (cpprestsdk)
  • Boost
  • Google Test (descargado automáticamente para pruebas)

Instalación Internal Link

Instalar dependencias

sudo apt install libcpprest-dev libboost-all-dev

Compilar desde el código fuente

mkdir build
cd build
cmake ..
make

Instalación

sudo make install

Contenido de la biblioteca

Esta biblioteca contiene el cliente API generado y las utilidades SSO para facilitar el trabajo con la API.

APIs públicas vs seguras

Para el cliente API, existen tres clases, DefaultApi, PublicApi y ModerationApi. El DefaultApi contiene métodos que requieren su clave API, y el PublicApi contiene métodos que pueden ejecutarse directamente desde un navegador, dispositivo móvil, etc., sin autenticación. El ModerationApi ofrece un conjunto extenso de APIs de moderación en tiempo real y rápidas. Cada método del ModerationApi acepta un parámetro sso y puede autenticarse mediante SSO o una cookie de sesión de FastComments.com.

Notas Internal Link

IDs de difusión

Verás que se supone que debes pasar un broadcastId en algunas llamadas de la API. Cuando recibas eventos, obtendrás este ID de vuelta, por lo que sabrás ignorar el evento si planeas aplicar cambios de forma optimista en el cliente (lo que probablemente querrás hacer, ya que ofrece la mejor experiencia). Pasa un UUID aquí. El ID debe ser lo suficientemente único para no ocurrir dos veces en una sesión del navegador.

SSO (Inicio de sesión único)

Para ejemplos de SSO, consulte más abajo.

Uso SSO Internal Link


SSO simple

#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 seguro

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

agregación Internal Link

Agrega documentos agrupándolos (si se proporciona groupBy) y aplicando múltiples operaciones. Se admiten diferentes operaciones (p. ej., sum, countDistinct, avg, etc.).

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
aggregationRequestAggregationRequestSí
optionsconst AggregateOptions&Sí

Respuesta

Returns: AggregateResponse

Ejemplo

Ejemplo de agregación
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 // procesar respuesta
19 } catch (const std::exception& e) {
20 // manejar error
21 }
22 });
23

getAuditLogs Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetAuditLogsOptions&Sí

Response

Devuelve: GetAuditLogsResponse

Example

Ejemplo 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 // usar la respuesta
13 } catch (const std::exception& e) {
14 // manejar el error
15 }
16});
17

logoutPublic Internal Link

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

logoutPublic Ejemplo
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

blockFromCommentPublic Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
commentIdstringSí
publicBlockFromCommentParamsPublicBlockFromCommentParamsSí
ssostringNo

Respuesta

Devuelve: BlockSuccess

Ejemplo

blockFromCommentPublic Ejemplo
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

unBlockCommentPublic Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

Respuesta

Devuelve: UnblockSuccess

Ejemplo

Ejemplo de 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

checkedCommentsForBlocked Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdsstringSí
ssostringNo

Respuesta

Devuelve: CheckBlockedCommentsResponse

Ejemplo

checkedCommentsForBlocked Ejemplo
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

blockUserFromComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
blockFromCommentParamsBlockFromCommentParamsSí
optionsconst BlockUserFromCommentOptions&Sí

Respuesta

Devuelve: BlockSuccess

Ejemplo

Ejemplo 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

createCommentPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
broadcastIdstringSí
commentDataCommentDataSí
optionsconst CreateCommentPublicOptions&Sí

Respuesta

Devuelve: SaveCommentsResponseWithPresence

Ejemplo

Ejemplo 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

deleteComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
optionsconst DeleteCommentOptions&Sí

Respuesta

Devuelve: DeleteCommentResult

Ejemplo

Ejemplo 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

deleteCommentPublic Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
optionsconst DeleteCommentPublicOptions&Yes

Respuesta

Devuelve: PublicAPIDeleteCommentResponse

Ejemplo

Ejemplo 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

deleteCommentVote Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
voteIdstringYes
urlIdstringYes
broadcastIdstringYes
optionsconst DeleteCommentVoteOptions&Yes

Respuesta

Devuelve: VoteDeleteResponse

Ejemplo

Ejemplo 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

flagComment Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
optionsconst FlagCommentOptions&Yes

Response

Devuelve: FlagCommentResponse

Example

Ejemplo 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

getComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIGetCommentResponse

Ejemplo

Ejemplo 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

getComments Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetCommentsOptions&Sí

Respuesta

Devuelve: APIGetCommentsResponse

Ejemplo

Ejemplo 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 // usar la respuesta según sea necesario
12 } catch (const std::exception& e) {
13 // manejar el error
14 }
15});
16

getCommentsPublic Internal Link


solicitud tenantId urlId

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
optionsconst GetCommentsPublicOptions&Sí

Respuesta

Devuelve: GetCommentsResponseWithPresence_PublicComment_

Ejemplo

Ejemplo 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

getCommentText Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
optionsconst GetCommentTextOptions&Sí

Respuesta

Devuelve: PublicAPIGetCommentTextResponse

Ejemplo

Ejemplo 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

getCommentVoteUserNames Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
dirint32_tSí
ssostringNo

Respuesta

Devuelve: GetCommentVoteUserNamesSuccessResponse

Ejemplo

Ejemplo de 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

lockComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

pinComment Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

Respuesta

Devuelve: ChangeCommentPinStatusResponse

Ejemplo

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

saveComment Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
createCommentParamsCreateCommentParamsYes
optionsconst SaveCommentOptions&Yes

Respuesta

Devuelve: APISaveCommentResponse

Ejemplo

Ejemplo de 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

setCommentText Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
commentTextUpdateRequestCommentTextUpdateRequestSí
optionsconst SetCommentTextOptions&Sí

Respuesta

Devuelve: PublicAPISetCommentTextResponse

Ejemplo

Ejemplo 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

unBlockUserFromComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
unBlockFromCommentParamsUnBlockFromCommentParamsSí
optionsconst UnBlockUserFromCommentOptions&Sí

Respuesta

Devuelve: UnblockSuccess

Ejemplo

Ejemplo de 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

unFlagComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
optionsconst UnFlagCommentOptions&Sí

Respuesta

Devuelve: FlagCommentResponse

Ejemplo

unFlagComment Ejemplo
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 // procesar estado si es necesario
9 }
10 })
11 .then([](pplx::task<void> previous) {
12 try {
13 previous.get();
14 } catch (const std::exception& e) {
15 // manejar error
16 }
17 });
18

unLockComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

unPinComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
broadcastIdstringSí
ssostringNo

Respuesta

Devuelve: ChangeCommentPinStatusResponse

Ejemplo

Ejemplo de 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

updateComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updatableCommentParamsUpdatableCommentParamsSí
optionsconst UpdateCommentOptions&Sí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

voteComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
urlIdstringYes
broadcastIdstringYes
voteBodyParamsVoteBodyParamsYes
optionsconst VoteCommentOptions&Yes

Respuesta

Devuelve: VoteResponse

Ejemplo

voteComment Ejemplo
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 // manejar la respuesta
19 } catch (const std::exception&) {
20 }
21 });
22

getCommentsForUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
optionsconst GetCommentsForUserOptions&Sí

Respuesta

Devuelve: GetCommentsForUserResponse

Ejemplo

Ejemplo 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

addDomainConfig Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
addDomainConfigParamsAddDomainConfigParamsSí

Respuesta

Devuelve: AddDomainConfigResponse

Ejemplo

Ejemplo 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

deleteDomainConfig Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
domainstringSí

Respuesta

Devuelve: DeleteDomainConfigResponse

Ejemplo

Ejemplo 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

getDomainConfig Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
domainstringSí

Respuesta

Devuelve: GetDomainConfigResponse

Ejemplo

Ejemplo 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 // manejar moderación habilitada
12 }
13 if (theme) {
14 // usar el valor del tema
15 }
16 })
17 .wait();
18

getDomainConfigs Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí

Respuesta

Devuelve: GetDomainConfigsResponse

Ejemplo

Ejemplo 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

patchDomainConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

Response

Devuelve: PatchDomainConfigResponse

Example

Ejemplo 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 // manejo de éxito
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception& e) { /* manejo de error */ }
15 });
16

putDomainConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
domainToUpdatestringSí
updateDomainConfigParamsUpdateDomainConfigParamsSí

Respuesta

Devuelve: PutDomainConfigResponse

Ejemplo

Ejemplo 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

createEmailTemplate Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
createEmailTemplateBodyCreateEmailTemplateBodyYes

Respuesta

Devuelve: CreateEmailTemplateResponse

Ejemplo

createEmailTemplate Ejemplo
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

deleteEmailTemplate Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

deleteEmailTemplate Ejemplo
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

deleteEmailTemplateRenderError Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
errorIdstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

getEmailTemplate Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetEmailTemplateResponse

Ejemplo

Ejemplo 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

getEmailTemplateDefinitions Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes

Respuesta

Devuelve: GetEmailTemplateDefinitionsResponse

Ejemplo

Ejemplo de 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

getEmailTemplateRenderErrors Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
skipdoubleNo

Respuesta

Devuelve: GetEmailTemplateRenderErrorsResponse

Ejemplo

getEmailTemplateRenderErrors Ejemplo
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 // Use la respuesta según sea necesario
11 } catch (const std::exception& ex) {
12 // Manejar el error
13 }
14 });
15

getEmailTemplates Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
skipdoubleNo

Respuesta

Devuelve: GetEmailTemplatesResponse

Ejemplo

Ejemplo 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

renderEmailTemplate Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
renderEmailTemplateBodyRenderEmailTemplateBodySí
localestringNo

Respuesta

Devuelve: RenderEmailTemplateResponse

Ejemplo

Ejemplo de 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

updateEmailTemplate Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateEmailTemplateBodyUpdateEmailTemplateBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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 // manejo de éxito
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception &) { /* manejo de errores */ }
14 });
15

getEventLog Internal Link

req tenantId urlId userIdWS

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
urlIdstringSí
userIdWSstringSí
startTimeint64_tSí
endTimeint64_tNo

Respuesta

Devuelve: GetEventLogResponse

Ejemplo

Ejemplo 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

getGlobalEventLog Internal Link

req tenantId urlId userIdWS

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
userIdWSstringYes
startTimeint64_tYes
endTimeint64_tNo

Respuesta

Devuelve: GetEventLogResponse

Ejemplo

getGlobalEventLog Ejemplo
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

createFeedPost Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
optionsconst CreateFeedPostOptions&Yes

Respuesta

Devuelve: CreateFeedPostsResponse

Ejemplo

Ejemplo 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

createFeedPostPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
optionsconst CreateFeedPostPublicOptions&Yes

Respuesta

Devuelve: CreateFeedPostResponse

Ejemplo

Ejemplo de 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

deleteFeedPostPublic Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
postIdstringYes
optionsconst DeleteFeedPostPublicOptions&Yes

Respuesta

Devuelve: DeleteFeedPostPublicResponse

Ejemplo

Ejemplo 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 // lógica de éxito
8 }
9 });
10

getFeedPosts Internal Link


req tenantId afterId

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetFeedPostsOptions&Sí

Respuesta

Devuelve: GetFeedPostsResponse

Ejemplo

Ejemplo de 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

getFeedPostsPublic Internal Link

req tenantId afterId

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetFeedPostsPublicOptions&Sí

Respuesta

Devuelve: PublicFeedPostsResponse

Ejemplo

Ejemplo de 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 // Usar processed según sea necesario
11 }catch(const std::exception&){
12 // Manejar error
13 }
14});
15

getFeedPostsStats Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
postIdsvector<stringSí
ssostringNo

Respuesta

Devuelve: FeedPostsStatsResponse

Ejemplo

Ejemplo de 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

getUserReactsPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetUserReactsPublicOptions&Sí

Respuesta

Devuelve: UserReactsResponse

Ejemplo

getUserReactsPublic Ejemplo
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

reactFeedPostPublic Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
postIdstringYes
reactBodyParamsReactBodyParamsYes
optionsconst ReactFeedPostPublicOptions&Yes

Respuesta

Devuelve: ReactFeedPostResponse

Ejemplo

reactFeedPostPublic Ejemplo
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

updateFeedPost Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
feedPostFeedPostSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

updateFeedPostPublic Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
postIdstringYes
updateFeedPostParamsUpdateFeedPostParamsYes
optionsconst UpdateFeedPostPublicOptions&Yes

Respuesta

Devuelve: CreateFeedPostResponse

Ejemplo

Ejemplo 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

flagCommentPublic Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
isFlaggedboolSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

getGifLarge Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
largeInternalURLSanitizedstringYes

Respuesta

Devuelve: GifGetLargeResponse

Ejemplo

getGifLarge Ejemplo
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

getGifsSearch Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
searchstringSí
optionsconst GetGifsSearchOptions&Sí

Respuesta

Devuelve: GetGifsSearchResponse

Ejemplo

Ejemplo 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

getGifsTrending Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetGifsTrendingOptions&Sí

Respuesta

Devuelve: GetGifsTrendingResponse

Ejemplo

Ejemplo 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

addHashTag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createHashTagBodyCreateHashTagBodySí

Respuesta

Retorna: CreateHashTagResponse

Ejemplo

Ejemplo 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

addHashTagsBulk Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
bulkCreateHashTagsBodyBulkCreateHashTagsBodySí

Respuesta

Devuelve: BulkCreateHashTagsResponse

Ejemplo

Ejemplo 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

deleteHashTag Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
tagstringYes
deleteHashTagRequestBodyDeleteHashTagRequestBodyYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

getHashTags Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
pagedoubleNo

Respuesta

Devuelve: GetHashTagsResponse

Ejemplo

Ejemplo de 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 // usar la respuesta
10 } catch (const std::exception&) {
11 // manejar el error
12 }
13});
14

patchHashTag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
tagstringSí
updateHashTagBodyUpdateHashTagBodySí

Respuesta

Devuelve: UpdateHashTagResponse

Ejemplo

Ejemplo 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

deleteModerationVote Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
voteIdstringSí
optionsconst DeleteModerationVoteOptions&Sí

Respuesta

Devuelve: VoteDeleteResponse

Ejemplo

Ejemplo de 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

getApiComments Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringSí
optionsconst GetApiCommentsOptions&Sí

Response

Devuelve: ModerationAPIGetCommentsResponse

Example

Ejemplo 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

getApiExportStatus Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetApiExportStatusOptions&Sí

Respuesta

Devuelve: ModerationExportStatusResponse

Ejemplo

Ejemplo 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

getApiIds Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetApiIdsOptions&Sí

Respuesta

Devuelve: ModerationAPIGetCommentIdsResponse

Ejemplo

Ejemplo 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

getBanUsersFromComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
ssostringNo

Respuesta

Devuelve: GetBannedUsersFromCommentResponse

Ejemplo

Ejemplo 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

getCommentBanStatus Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
ssostringNo

Respuesta

Devuelve: GetCommentBanStatusResponse

Ejemplo

getCommentBanStatus Ejemplo
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

getCommentChildren Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
ssostringNo

Respuesta

Devuelve: ModerationAPIChildCommentsResponse

Ejemplo

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

getCount Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
optionsconst GetCountOptions&Sí

Respuesta

Devuelve: ModerationAPICountCommentsResponse

Ejemplo

Ejemplo 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

getCounts Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: GetBannedUsersCountResponse

Ejemplo

Ejemplo 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

getLogs Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
commentIdstringSí
ssostringNo

Respuesta

Devuelve: ModerationAPIGetLogsResponse

Ejemplo

Ejemplo 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

getManualBadges Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
ssostringNo

Respuesta

Devuelve: GetTenantManualBadgesResponse

Ejemplo

Ejemplo getManualBadges
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> sso = boost::make_optional(U("user@example.com"));
4
5api->getManualBadges(tenantId, sso)
6 .then([](pplx::task<std::shared_ptr<GetTenantManualBadgesResponse>> t) {
7 try {
8 auto response = t.get();
9 // procesar la respuesta, por ejemplo, response->badgeList
10 } catch (const std::exception& ex) {
11 // manejar error
12 }
13 });
14

getManualBadgesForUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetManualBadgesForUserOptions&Sí

Respuesta

Devuelve: GetUserManualBadgesResponse

Ejemplo

Ejemplo de 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

getModerationComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
optionsconst GetModerationCommentOptions&Sí

Respuesta

Retorna: ModerationAPICommentResponse

Ejemplo

Ejemplo 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 // Procesar la respuesta según sea necesario
12 } catch (const std::exception& ex) {
13 // Manejar el error
14 }
15 });
16

getModerationCommentText Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
ssostringNo

Respuesta

Devuelve: GetCommentTextResponse

Ejemplo

getModerationCommentText Ejemplo
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

getPreBanSummary Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
optionsconst GetPreBanSummaryOptions&Sí

Respuesta

Devuelve: PreBanSummary

Ejemplo

Ejemplo 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 // procesar el resumen
12 } catch (const std::exception&) {
13 // manejar el error
14 }
15 });
16

getSearchCommentsSummary Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetSearchCommentsSummaryOptions&Sí

Respuesta

Devuelve: ModerationCommentSearchResponse

Ejemplo

Ejemplo 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

getSearchPages Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetSearchPagesOptions&Yes

Response

Returns: ModerationPageSearchResponse

Example

Ejemplo 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 // usar la respuesta
12 } catch (const std::exception& e) {
13 // manejar el error
14 }
15 });
16

getSearchSites Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetSearchSitesOptions&Sí

Respuesta

Devuelve: ModerationSiteSearchResponse

Ejemplo

Ejemplo 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 // lógica de procesamiento
14 }
15 } catch (const std::exception&) {
16 // manejo de errores
17 }
18 });
19

getSearchSuggest Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetSearchSuggestOptions&Sí

Respuesta

Devuelve: ModerationSuggestResponse

Ejemplo

Ejemplo 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

getSearchUsers Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
optionsconst GetSearchUsersOptions&Yes

Respuesta

Devuelve: ModerationUserSearchResponse

Ejemplo

Ejemplo 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

getTrustFactor Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetTrustFactorOptions&Sí

Respuesta

Devuelve: GetUserTrustFactorResponse

Ejemplo

Ejemplo 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

getUserBanPreference Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: APIModerateGetUserBanPreferencesResponse

Ejemplo

Ejemplo de 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

getUserInternalProfile Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetUserInternalProfileOptions&Sí

Respuesta

Devuelve: GetUserInternalProfileResponse

Ejemplo

Ejemplo 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

postAdjustCommentVotes Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
adjustCommentVotesParamsAdjustCommentVotesParamsYes
optionsconst PostAdjustCommentVotesOptions&Yes

Respuesta

Devuelve: AdjustVotesResponse

Ejemplo

Ejemplo de 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

postApiExport Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst PostApiExportOptions&Sí

Respuesta

Devuelve: ModerationExportResponse

Ejemplo

Ejemplo 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 // manejar la respuesta de exportación exitosa
13 }
14 })
15 .wait();
16

postBanUserFromComment Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
optionsconst PostBanUserFromCommentOptions&Yes

Respuesta

Devuelve: BanUserFromCommentResult

Ejemplo

postBanUserFromComment Ejemplo
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 // manejo del resultado
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception& e) { /* manejo de errores */ }
14 });
15

postBanUserUndo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
banUserUndoParamsBanUserUndoParamsYes
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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 // manejar el éxito
10});
11

postBulkPreBanSummary Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
bulkPreBanParamsBulkPreBanParamsYes
optionsconst PostBulkPreBanSummaryOptions&Yes

Respuesta

Devuelve: BulkPreBanSummary

Ejemplo

postBulkPreBanSummary Ejemplo
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

postCommentsByIds Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentsByIdsParamsCommentsByIdsParamsSí
ssostringNo

Respuesta

Devuelve: ModerationAPIChildCommentsResponse

Ejemplo

Ejemplo 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

postFlagComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
optionsconst PostFlagCommentOptions&Sí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

postRemoveComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
commentIdstringYes
optionsconst PostRemoveCommentOptions&Yes

Respuesta

Devuelve: PostRemoveCommentApiResponse

Ejemplo

postRemoveComment Ejemplo
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 // Procesar la respuesta
11 } catch (const std::exception& ex) {
12 // Manejar el error
13 }
14 });
15

postRestoreDeletedComment Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
optionsconst PostRestoreDeletedCommentOptions&Yes

Response

Devuelve: APIEmptyResponse

Example

postRestoreDeletedComment Ejemplo
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

postSetCommentApprovalStatus Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
optionsconst PostSetCommentApprovalStatusOptions&Sí

Respuesta

Devuelve: SetCommentApprovedResponse

Ejemplo

postSetCommentApprovalStatus Ejemplo
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

postSetCommentReviewStatus Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentReviewStatusOptions&Yes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

postSetCommentSpamStatus Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
commentIdstringSí
optionsconst PostSetCommentSpamStatusOptions&Sí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

postSetCommentText Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
setCommentTextParamsSetCommentTextParamsSí
optionsconst PostSetCommentTextOptions&Sí

Respuesta

Devuelve: SetCommentTextResponse

Ejemplo

Ejemplo 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

postUnFlagComment Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
commentIdstringSí
optionsconst PostUnFlagCommentOptions&Sí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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 // el procesamiento puede hacerse aquí
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception&) {}
12 });
13

postVote Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
optionsconst PostVoteOptions&Yes

Respuesta

Devuelve: VoteResponse

Ejemplo

Ejemplo 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

putAwardBadge Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
badgeIdstringYes
optionsconst PutAwardBadgeOptions&Yes

Respuesta

Devuelve: AwardUserBadgeResponse

Ejemplo

putAwardBadge Ejemplo
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

putCloseThread Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
urlIdstringYes
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

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

putRemoveBadge Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
badgeIdstringYes
optionsconst PutRemoveBadgeOptions&Yes

Respuesta

Devuelve: RemoveUserBadgeResponse

Ejemplo

Ejemplo 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

putReopenThread Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
ssostringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

setTrustFactor Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst SetTrustFactorOptions&Sí

Respuesta

Devuelve: SetUserTrustFactorResponse

Ejemplo

Ejemplo 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

createModerator Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createModeratorBodyCreateModeratorBodySí

Respuesta

Devuelve: CreateModeratorResponse

Ejemplo

Ejemplo 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

deleteModerator Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
sendEmailstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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 // manejar éxito
8 });
9

getModerator Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetModeratorResponse

Ejemplo

Ejemplo 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

getModerators Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
skipdoubleNo

Respuesta

Devuelve: GetModeratorsResponse

Ejemplo

getModerators Ejemplo
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

sendInvite Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
fromNamestringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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 // manejar invitación exitosa
9});
10

updateModerator Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateModeratorBodyUpdateModeratorBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

deleteNotificationCount Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

getCachedNotificationCount Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetCachedNotificationCountResponse

Ejemplo

Ejemplo 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 // procesar respuesta
10 } catch (const std::exception&) {
11 // manejar error
12 }
13 });
14

getNotificationCount Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetNotificationCountOptions&Sí

Respuesta

Devuelve: GetNotificationCountResponse

Ejemplo

Ejemplo 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

getNotifications Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetNotificationsOptions&Sí

Respuesta

Devuelve: GetNotificationsResponse

Ejemplo

Ejemplo de 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

updateNotification Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
updateNotificationBodyUpdateNotificationBodyYes
userIdstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

createV1PageReact Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
titlestringNo

Respuesta

Devuelve: CreateV1PageReact

Ejemplo

Ejemplo 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

createV2PageReact Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
idstringSí
titlestringNo

Respuesta

Devuelve: CreateV1PageReact

Ejemplo

Ejemplo 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

deleteV1PageReact Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí

Respuesta

Devuelve: CreateV1PageReact

Ejemplo

Ejemplo 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

deleteV2PageReact Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdstringYes
idstringYes

Response

Devuelve: CreateV1PageReact

Example

Ejemplo 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

getV1PageLikes Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
urlIdstringYes

Respuesta

Devuelve: GetV1PageLikes

Ejemplo

Ejemplo 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

getV2PageReacts Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí

Respuesta

Devuelve: GetV2PageReacts

Ejemplo

Ejemplo 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

getV2PageReactUsers Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
idstringSí

Respuesta

Devuelve: GetV2PageReactUsersResponse

Ejemplo

Ejemplo 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 // Utilice la respuesta según sea necesario
10 }catch(const std::exception&){
11 // Manejar el error
12 }
13});
14

addPage Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createAPIPageDataCreateAPIPageDataSí

Respuesta

Devuelve: AddPageAPIResponse

Ejemplo

addPage Ejemplo
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 // manejar la adición exitosa
11 } else {
12 // manejar error
13 }
14 });
15

deletePage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: DeletePageAPIResponse

Ejemplo

Ejemplo 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 // procesar la respuesta según sea necesario
10 } catch (const std::exception& ex) {
11 // manejar el error
12 }
13 });
14

getOfflineUsers 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.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
optionsconst GetOfflineUsersOptions&Sí

Respuesta

Devuelve: PageUsersOfflineResponse

Ejemplo

Ejemplo 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

getOnlineUsers Internal Link

Vistas actualmente en línea de una página: personas cuya sesión de websocket está suscrita a la página en este momento.
Devuelve anonCount + totalCount (suscriptores de toda la sala, incluidos los espectadores anónimos que no enumeramos).

Parámetros

NameTypeRequiredDescription
tenantIdstringSí
urlIdstringSí
optionsconst GetOnlineUsersOptions&Sí

Respuesta

Devuelve: PageUsersOnlineResponse

Ejemplo

Ejemplo 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

getPageByURLId Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí

Respuesta

Devuelve: GetPageByURLIdAPIResponse

Ejemplo

Ejemplo 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

getPages Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstringYes

Respuesta

Devuelve: GetPagesAPIResponse

Ejemplo

Ejemplo 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

getPagesPublic Internal Link

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

Parameters

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetPagesPublicOptions&Yes

Response

Returns: GetPublicPagesResponse

Example

Ejemplo 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 // procesar la respuesta si es necesario
10 }catch(const std::exception&){
11 // manejar el error si es necesario
12 }
13});
14

getUsersInfo Internal Link

Información de usuarios en bloque para un inquilino. Dado userIds, devuelve información de visualización de User / SSOUser.
Usado por el widget de comentarios para enriquecer a los usuarios que acaban de aparecer mediante un evento de presencia.
Sin contexto de página: la privacidad se aplica de manera uniforme (los perfiles privados están enmascarados).

Parameters

NameTypeRequiredDescription
tenantIdstringSí
idsstringSí

Response

Devuelve: PageUsersInfoResponse

Example

getUsersInfo Ejemplo
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 // procesar respuesta
10 }catch(const std::exception&){
11 // manejar error
12 }
13});
14

patchPage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateAPIPageDataUpdateAPIPageDataSí

Respuesta

Devuelve: PatchPageAPIResponse

Ejemplo

patchPage Ejemplo
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 // manejar el éxito
11 }
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception&) {}
15 });
16

deletePendingWebhookEvent Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

deletePendingWebhookEvent Ejemplo
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

getPendingWebhookEventCount Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetPendingWebhookEventCountOptions&Sí

Respuesta

Devuelve: GetPendingWebhookEventCountResponse

Ejemplo

Ejemplo de 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

getPendingWebhookEvents Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetPendingWebhookEventsOptions&Sí

Respuesta

Devuelve: GetPendingWebhookEventsResponse

Ejemplo

Ejemplo de 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

createQuestionConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
createQuestionConfigBodyCreateQuestionConfigBodyYes

Respuesta

Devuelve: CreateQuestionConfigResponse

Ejemplo

Ejemplo 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

deleteQuestionConfig Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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 // manejar eliminación exitosa
8 })
9 .then([](pplx::task<void> t) {
10 try {
11 t.get();
12 } catch (const std::exception&) {
13 // manejar error
14 }
15 });
16

getQuestionConfig Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstringYes
idstringYes

Response

Returns: GetQuestionConfigResponse

Example

Ejemplo 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 // Utilizar la respuesta según sea necesario
10 } catch (const std::exception&) {
11 // Manejar el error
12 }
13 });
14

getQuestionConfigs Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
skipdoubleNo

Respuesta

Devuelve: GetQuestionConfigsResponse

Ejemplo

Ejemplo 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

updateQuestionConfig Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateQuestionConfigBodyUpdateQuestionConfigBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

createQuestionResult Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createQuestionResultBodyCreateQuestionResultBodySí

Respuesta

Devuelve: CreateQuestionResultResponse

Ejemplo

Ejemplo de 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

deleteQuestionResult Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

deleteQuestionResult Ejemplo
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 // success handling
14 }
15 catch ( const std::exception& e )
16 {
17 // error handling
18 }
19 } );
20}
21

getQuestionResult Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetQuestionResultResponse

Ejemplo

Ejemplo de 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

getQuestionResults Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst GetQuestionResultsOptions&Sí

Respuesta

Devuelve: GetQuestionResultsResponse

Ejemplo

getQuestionResults Ejemplo
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 // manejar la respuesta
10 });
11

updateQuestionResult Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateQuestionResultBodyUpdateQuestionResultBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

aggregateQuestionResults Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst AggregateQuestionResultsOptions&Sí

Respuesta

Devuelve: AggregateQuestionResultsResponse

Ejemplo

Ejemplo 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

bulkAggregateQuestionResults Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestSí
forceRecalculateboolNo

Respuesta

Devuelve: BulkAggregateQuestionResultsResponse

Ejemplo

Ejemplo 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

combineCommentsWithQuestionResults Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst CombineCommentsWithQuestionResultsOptions&Sí

Respuesta

Devuelve: CombineQuestionResultsWithCommentsResponse

Ejemplo

Ejemplo de 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 // Usa combined según sea necesario
12 }catch(const std::exception&){
13 }
14 });
15

addSSOUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
createAPISSOUserDataCreateAPISSOUserDataYes

Respuesta

Devuelve: AddSSOUserAPIResponse

Ejemplo

Ejemplo 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

deleteSSOUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
optionsconst DeleteSSOUserOptions&Yes

Respuesta

Devuelve: DeleteSSOUserAPIResponse

Ejemplo

Ejemplo 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

getSSOUserByEmail Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
emailstringYes

Respuesta

Devuelve: GetSSOUserByEmailAPIResponse

Ejemplo

Ejemplo 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

getSSOUserById Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetSSOUserByIdAPIResponse

Ejemplo

Ejemplo 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

getSSOUsers Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
skipint32_tNo

Respuesta

Devuelve: GetSSOUsersResponse

Ejemplo

Ejemplo 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

patchSSOUser Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsboolNo

Respuesta

Devuelve: PatchSSOUserAPIResponse

Ejemplo

Ejemplo 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

putSSOUser Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
updateAPISSOUserDataUpdateAPISSOUserDataSí
updateCommentsboolNo

Respuesta

Devuelve: PutSSOUserAPIResponse

Ejemplo

Ejemplo 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

createSubscription Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createAPIUserSubscriptionDataCreateAPIUserSubscriptionDataSí

Respuesta

Devuelve: CreateSubscriptionAPIResponse

Ejemplo

Ejemplo 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

deleteSubscription Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
userIdstringNo

Respuesta

Devuelve: DeleteSubscriptionAPIResponse

Ejemplo

deleteSubscription Ejemplo
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

getSubscriptions Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
userIdstringNo

Respuesta

Devuelve: GetSubscriptionsAPIResponse

Ejemplo

Ejemplo 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 // procesar respuesta
10 } catch (const std::exception& e) {
11 // manejar error
12 }
13 }
14);
15

updateSubscription Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataSí
userIdstringNo

Respuesta

Devuelve: UpdateSubscriptionAPIResponse

Ejemplo

Ejemplo de 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

getTenantDailyUsages Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetTenantDailyUsagesOptions&Sí

Respuesta

Devuelve: GetTenantDailyUsagesResponse

Ejemplo

Ejemplo 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

createTenantPackage Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createTenantPackageBodyCreateTenantPackageBodySí

Respuesta

Devuelve: CreateTenantPackageResponse

Ejemplo

createTenantPackage Ejemplo
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

deleteTenantPackage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

getTenantPackage Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetTenantPackageResponse

Ejemplo

Ejemplo 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

getTenantPackages Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
skipdoubleNo

Respuesta

Devuelve: GetTenantPackagesResponse

Ejemplo

Ejemplo 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

replaceTenantPackage Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
replaceTenantPackageBodyReplaceTenantPackageBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

updateTenantPackage Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
updateTenantPackageBodyUpdateTenantPackageBodySí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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 // manejo de éxito
14 } catch (const std::exception& ex) {
15 // manejo de error
16 }
17 });
18

createTenantUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createTenantUserBodyCreateTenantUserBodySí

Respuesta

Devuelve: CreateTenantUserResponse

Ejemplo

Ejemplo 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

deleteTenantUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
optionsconst DeleteTenantUserOptions&Sí

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

getTenantUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetTenantUserResponse

Ejemplo

Ejemplo 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 // Usar la respuesta según sea necesario
9 } catch (const std::exception&) {
10 // Manejo de errores
11 }
12 });
13

getTenantUsers Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
skipdoubleNo

Respuesta

Devuelve: GetTenantUsersResponse

Ejemplo

Ejemplo 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

replaceTenantUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
replaceTenantUserBodyReplaceTenantUserBodyYes
updateCommentsstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí
redirectURLstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

updateTenantUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
updateTenantUserBodyUpdateTenantUserBodyYes
updateCommentsstringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

updateTenantUser Ejemplo
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

createTenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
createTenantBodyCreateTenantBodySí

Respuesta

Devuelve: CreateTenantResponse

Ejemplo

createTenant Ejemplo
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

deleteTenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
surestringNo

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo 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

getTenant Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: GetTenantResponse

Ejemplo

Ejemplo 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

getTenants Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetTenantsOptions&Sí

Respuesta

Devuelve: GetTenantsResponse

Ejemplo

Ejemplo 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

updateTenant Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
idstringYes
updateTenantBodyUpdateTenantBodyYes

Respuesta

Devuelve: APIEmptyResponse

Ejemplo

Ejemplo de 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

changeTicketState Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
userIdstringSí
idstringSí
changeTicketStateBodyChangeTicketStateBodySí

Respuesta

Devuelve: ChangeTicketStateResponse

Ejemplo

Ejemplo 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

createTicket Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
userIdstringSí
createTicketBodyCreateTicketBodySí

Respuesta

Devuelve: CreateTicketResponse

Ejemplo

Ejemplo 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 // Usar la respuesta según sea necesario
13 }catch(const std::exception&){
14 // Manejar el error
15 }
16});
17

getTicket Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
userIdstringNo

Respuesta

Devuelve: GetTicketResponse

Ejemplo

Ejemplo 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

getTickets Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetTicketsOptions&Sí

Respuesta

Devuelve: GetTicketsResponse

Ejemplo

Ejemplo 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

getTranslations Internal Link

Parámetros

NombreTipoObligatorioDescripción
r_namespacestringYes
componentstringYes
optionsconst GetTranslationsOptions&Yes

Respuesta

Devuelve: GetTranslationsResponse

Ejemplo

Ejemplo de 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

uploadImage Internal Link

Cargar y redimensionar una imagen

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
fileHttpContentSí
optionsconst UploadImageOptions&Sí

Respuesta

Devuelve: UploadImageResponse

Ejemplo

Ejemplo 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

getUserBadgeProgressById Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: APIGetUserBadgeProgressResponse

Ejemplo

Ejemplo 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

getUserBadgeProgressByUserId Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
userIdstringSí

Respuesta

Devuelve: APIGetUserBadgeProgressResponse

Ejemplo

getUserBadgeProgressByUserId Ejemplo
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

getUserBadgeProgressList Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetUserBadgeProgressListOptions&Sí

Respuesta

Devuelve: APIGetUserBadgeProgressListResponse

Ejemplo

getUserBadgeProgressList Ejemplo
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 // procesar insignia
12 }
13 });
14

createUserBadge Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
createUserBadgeParamsCreateUserBadgeParamsSí

Respuesta

Devuelve: APICreateUserBadgeResponse

Ejemplo

Ejemplo 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

deleteUserBadge Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: APIEmptySuccessResponse

Ejemplo

deleteUserBadge Ejemplo
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

getUserBadge Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
idstringSí

Respuesta

Devuelve: APIGetUserBadgeResponse

Ejemplo

Ejemplo 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

getUserBadges Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
optionsconst GetUserBadgesOptions&Sí

Respuesta

Devuelve: APIGetUserBadgesResponse

Ejemplo

Ejemplo 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

updateUserBadge Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

Respuesta

Devuelve: APIEmptySuccessResponse

Ejemplo

Ejemplo 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

getUserNotificationCount Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: GetUserNotificationCountResponse

Ejemplo

Ejemplo de 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 // usar resp según sea necesario
8 }catch(const std::exception&){
9 // manejar error
10 }
11});
12

getUserNotifications Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
optionsconst GetUserNotificationsOptions&Yes

Respuesta

Devuelve: GetMyNotificationsResponse

Ejemplo

Ejemplo de 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

resetUserNotificationCount Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
ssostringNo

Respuesta

Devuelve: ResetUserNotificationsResponse

Ejemplo

Ejemplo de 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

resetUserNotifications Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
optionsconst ResetUserNotificationsOptions&Sí

Respuesta

Devuelve: ResetUserNotificationsResponse

Ejemplo

Ejemplo de 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 // Procesar respuesta
8 });
9

updateUserNotificationCommentSubscriptionStatus Internal Link

Habilitar o deshabilitar notificaciones para un comentario específico.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
notificationIdstringSí
optedInOrOutstringSí
commentIdstringSí
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationCommentSubscriptionStatusResponse

Ejemplo

Ejemplo de 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

updateUserNotificationPageSubscriptionStatus 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

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedstringYes
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationPageSubscriptionStatusResponse

Ejemplo

updateUserNotificationPageSubscriptionStatus Ejemplo
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 // procesar resp si es necesario
12 });
13

updateUserNotificationStatus Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
notificationIdstringSí
newStatusstringSí
ssostringNo

Respuesta

Devuelve: UpdateUserNotificationStatusResponse

Ejemplo

Ejemplo de 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

getUserPresenceStatuses Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

Respuesta

Devuelve: GetUserPresenceStatusesResponse

Ejemplo

Ejemplo 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

searchUsers Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí
optionsconst SearchUsersOptions&Sí

Respuesta

Devuelve: SearchUsersResult

Ejemplo

Ejemplo de 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

getUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
idstringYes

Respuesta

Devuelve: GetUserResponse

Ejemplo

Ejemplo 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 // procesar la respuesta según sea necesario
14 } catch (const std::exception&) {
15 // manejar el error
16 }
17 });
18

createVote Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringYes
commentIdstringYes
directionstringYes
optionsconst CreateVoteOptions&Yes

Respuesta

Devuelve: VoteResponse

Ejemplo

Ejemplo 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

deleteVote Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
idstringSí
editKeystringNo

Respuesta

Devuelve: VoteDeleteResponse

Ejemplo

Ejemplo 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 // Procesar la respuesta según sea necesario
10 } catch (const std::exception&) {
11 // Manejar el error
12 }
13});
14

getVotes Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstringSí
urlIdstringSí

Respuesta

Devuelve: GetVotesResponse

Ejemplo

Ejemplo 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 // manejo de errores
12 }
13});
14

getVotesForUser Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstringSí
urlIdstringSí
optionsconst GetVotesForUserOptions&Sí

Respuesta

Returns: GetVotesForUserResponse

Ejemplo

getVotesForUser Ejemplo
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

¿Necesita ayuda?

Si encuentra algún problema o tiene preguntas sobre el SDK de C++, por favor:

Contribuir

¡Se aceptan contribuciones! Por favor visite el repositorio de GitHub para las directrices de contribución.