FastComments.com

SDK de FastComments en C++


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

SDK oficial en C++ para la API de FastComments

Repositorio

Ver en GitHub


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 de 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
tenantIdstring
aggregationRequestAggregationRequest
optionsconst AggregateOptions&

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

Obtener registros de auditoría Internal Link

Parameters

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetAuditLogsOptions&

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

Cerrar sesión pública 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

Bloquear desde comentario (público) Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
commentIdstring
publicBlockFromCommentParamsPublicBlockFromCommentParams
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

Desbloquear comentario (público) 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

Comprobar comentarios bloqueados Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdsstring
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

Bloquear usuario por comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
blockFromCommentParamsBlockFromCommentParams
optionsconst BlockUserFromCommentOptions&

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

Crear comentario (público) Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
broadcastIdstring
commentDataCommentData
optionsconst CreateCommentPublicOptions&

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

Eliminar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
optionsconst DeleteCommentOptions&

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

Eliminar comentario (público) 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

Eliminar voto de comentario 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

Marcar comentario 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

Obtener comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

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

Obtener comentarios Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetCommentsOptions&

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

Obtener comentarios (públicos) Internal Link


solicitud tenantId urlId

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring
optionsconst GetCommentsPublicOptions&

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

Obtener texto del comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
optionsconst GetCommentTextOptions&

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

Obtener nombres de usuarios que votaron el comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
dirint32_t
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

Bloquear comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
broadcastIdstring
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

Fijar comentario 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

Guardar comentario 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

Establecer texto del comentario Internal Link


Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
broadcastIdstring
commentTextUpdateRequestCommentTextUpdateRequest
optionsconst SetCommentTextOptions&

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

Desbloquear usuario por comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
unBlockFromCommentParamsUnBlockFromCommentParams
optionsconst UnBlockUserFromCommentOptions&

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

Desmarcar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
optionsconst UnFlagCommentOptions&

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

Desbloquear comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
broadcastIdstring
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

Desfijar comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
broadcastIdstring
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

Actualizar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updatableCommentParamsUpdatableCommentParams
optionsconst UpdateCommentOptions&

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

Votar comentario 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

Obtener comentarios del usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
optionsconst GetCommentsForUserOptions&

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

Agregar configuración de dominio Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
addDomainConfigParamsAddDomainConfigParams

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

Eliminar configuración de dominio Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
domainstring

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

Obtener configuración de dominio Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
domainstring

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

Obtener configuraciones de dominio Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring

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

Actualizar parcialmente configuración de dominio 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

Reemplazar configuración de dominio Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
domainToUpdatestring
updateDomainConfigParamsUpdateDomainConfigParams

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

Crear plantilla de correo 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

Eliminar plantilla de correo 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

Eliminar error de renderizado de plantilla de correo Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
errorIdstring

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

Obtener plantilla de correo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener definiciones de plantillas de correo 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

Obtener errores de renderizado de plantilla de correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
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

Obtener plantillas de correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Renderizar plantilla de correo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
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

Actualizar plantilla de correo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateEmailTemplateBodyUpdateEmailTemplateBody

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

Obtener registro de eventos Internal Link

req tenantId urlId userIdWS

Parámetros

NameTypeRequiredDescription
tenantIdstring
urlIdstring
userIdWSstring
startTimeint64_t
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

Obtener registro global de eventos 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

Crear publicación del feed 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

Crear publicación del feed (pública) 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

Eliminar publicación del feed (pública) 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

Obtener publicaciones del feed Internal Link


req tenantId afterId

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetFeedPostsOptions&

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

Obtener publicaciones del feed (públicas) Internal Link

req tenantId afterId

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetFeedPostsPublicOptions&

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

Obtener estadísticas de publicaciones del feed Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
postIdsvector<string
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

Obtener reacciones de usuario (públicas) Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetUserReactsPublicOptions&

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

Reaccionar a publicación del feed (pública) 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

Actualizar publicación del feed Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
feedPostFeedPost

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

Actualizar publicación del feed (pública) 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

Marcar comentario (público) Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
isFlaggedbool
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

Obtener GIF grande 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

Buscar GIFs Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
searchstring
optionsconst GetGifsSearchOptions&

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

GIFs en tendencia Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetGifsTrendingOptions&

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

Agregar hashtag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createHashTagBodyCreateHashTagBody

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

Agregar hashtags en masa Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
bulkCreateHashTagsBodyBulkCreateHashTagsBody

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

Eliminar hashtag 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

Obtener hashtags Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Actualizar parcialmente hashtag Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
tagstring
updateHashTagBodyUpdateHashTagBody

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

Eliminar voto de moderación Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
voteIdstring
optionsconst DeleteModerationVoteOptions&

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

Obtener comentarios (API) Internal Link

Parameters

NameTypeRequiredDescription
tenantIdstring
optionsconst GetApiCommentsOptions&

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

Obtener estado de exportación (API) Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetApiExportStatusOptions&

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

Obtener IDs (API) Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetApiIdsOptions&

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

Obtener usuarios baneados por comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
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

Obtener estado de baneo del comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
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

Obtener respuestas (hijos) del comentario 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

Obtener conteo Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
optionsconst GetCountOptions&

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

Obtener conteos Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Obtener registros Internal Link

Parámetros

NameTypeRequiredDescription
tenantIdstring
commentIdstring
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

Obtener insignias manuales 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

Obtener insignias manuales para el usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetManualBadgesForUserOptions&

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

Obtener comentario de moderación Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
optionsconst GetModerationCommentOptions&

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

Obtener texto del comentario de moderación 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

Obtener resumen previo al baneo Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
optionsconst GetPreBanSummaryOptions&

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

Obtener resumen de búsqueda de comentarios Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetSearchCommentsSummaryOptions&

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

Buscar páginas 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

Buscar sitios Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetSearchSitesOptions&

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

Obtener sugerencias de búsqueda Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetSearchSuggestOptions&

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

Buscar usuarios 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

Obtener factor de confianza Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetTrustFactorOptions&

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

Obtener preferencia de baneo del usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Obtener perfil interno del usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetUserInternalProfileOptions&

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

Ajustar votos de comentario 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

Iniciar exportación (API) Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst PostApiExportOptions&

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

Banear usuario por comentario 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

Deshacer baneo de usuario 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

Resumen previo al baneo en masa 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

Obtener comentarios por IDs Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentsByIdsParamsCommentsByIdsParams
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

Reportar comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
optionsconst PostFlagCommentOptions&

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

Eliminar comentario 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

Restaurar comentario eliminado 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

Establecer estado de aprobación del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
optionsconst PostSetCommentApprovalStatusOptions&

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

Establecer estado de revisión del comentario 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

Establecer estado de spam del comentario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
commentIdstring
optionsconst PostSetCommentSpamStatusOptions&

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

Establecer texto del comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
setCommentTextParamsSetCommentTextParams
optionsconst PostSetCommentTextOptions&

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

Quitar reporte del comentario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
commentIdstring
optionsconst PostUnFlagCommentOptions&

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

Enviar voto 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

Conceder insignia 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

Cerrar hilo 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

Quitar insignia 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

Reabrir hilo Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
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

Establecer factor de confianza Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst SetTrustFactorOptions&

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

Crear moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createModeratorBodyCreateModeratorBody

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

Eliminar moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
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

Obtener moderador Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener moderadores Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
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

Enviar invitación Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
fromNamestring

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

Actualizar moderador Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateModeratorBodyUpdateModeratorBody

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

Eliminar conteo de notificaciones Internal Link


Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

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

Obtener conteo de notificaciones en caché Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener conteo de notificaciones Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetNotificationCountOptions&

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

Obtener notificaciones Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetNotificationsOptions&

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

Actualizar notificación 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

Crear reacción de página V1 Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring
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

Crear reacción de página V2 Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
idstring
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

Eliminar reacción de página V1 Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring

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

Eliminar reacción de página V2 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

Obtener me gusta de página V1 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

Obtener reacciones de página V2 Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring

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

Obtener usuarios que reaccionaron en página V2 Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
idstring

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

Agregar página Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createAPIPageDataCreateAPIPageData

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

Eliminar página Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

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

Obtener usuarios desconectados 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
tenantIdstring
urlIdstring
optionsconst GetOfflineUsersOptions&

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

Obtener usuarios conectados 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
tenantIdstring
urlIdstring
optionsconst GetOnlineUsersOptions&

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

Obtener página por URL/ID Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring

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

Obtener páginas 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

Obtener páginas (públicas) 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

Obtener información de usuarios 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
tenantIdstring
idsstring

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

Actualizar parcialmente página Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateAPIPageDataUpdateAPIPageData

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

Eliminar evento de webhook pendiente Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener conteo de eventos de webhook pendientes Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetPendingWebhookEventCountOptions&

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

Obtener eventos de webhook pendientes Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetPendingWebhookEventsOptions&

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

Crear configuración de pregunta 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

Eliminar configuración de pregunta 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

Obtener configuración de pregunta 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

Obtener configuraciones de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Actualizar configuración de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateQuestionConfigBodyUpdateQuestionConfigBody

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

Crear resultado de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createQuestionResultBodyCreateQuestionResultBody

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

Eliminar resultado de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener resultado de pregunta Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener resultados de preguntas Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst GetQuestionResultsOptions&

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

Actualizar resultado de pregunta Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateQuestionResultBodyUpdateQuestionResultBody

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

Agregación de resultados de preguntas Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst AggregateQuestionResultsOptions&

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

Agregación masiva de resultados de preguntas Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequest
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

Combinar comentarios con resultados de preguntas Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst CombineCommentsWithQuestionResultsOptions&

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

Agregar usuario SSO 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

Eliminar usuario SSO 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

Obtener usuario SSO por correo electrónico 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

Obtener usuario SSO por ID Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

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

Obtener usuarios SSO Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Actualizar parcialmente usuario SSO 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

Reemplazar usuario SSO Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
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

Crear suscripción Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData

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

Eliminar suscripción 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

Obtener suscripciones Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Actualizar suscripción Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionData
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

Obtener usos diarios del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetTenantDailyUsagesOptions&

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

Crear paquete del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

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

Eliminar paquete del inquilino Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring

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

Obtener paquete del inquilino 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

Obtener paquetes del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
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

Reemplazar paquete del inquilino Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

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

Actualizar paquete del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
updateTenantPackageBodyUpdateTenantPackageBody

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

Crear usuario del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createTenantUserBodyCreateTenantUserBody

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

Eliminar usuario del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring
optionsconst DeleteTenantUserOptions&

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

Obtener usuario del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener usuarios del inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
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

Reemplazar usuario del inquilino 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
tenantIdstring
idstring
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

Actualizar usuario del inquilino 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

Crear inquilino Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
createTenantBodyCreateTenantBody

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

Eliminar inquilino Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
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

Obtener inquilino Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener inquilinos Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetTenantsOptions&

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

Actualizar inquilino 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

Cambiar estado del ticket Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
userIdstring
idstring
changeTicketStateBodyChangeTicketStateBody

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

Crear ticket Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstring
createTicketBodyCreateTicketBody

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

Obtener ticket Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
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

Obtener tickets Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetTicketsOptions&

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

Obtener traducciones 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

Subir imagen Internal Link

Cargar y redimensionar una imagen

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
fileHttpContent
optionsconst UploadImageOptions&

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

Obtener progreso de insignia por ID 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

Obtener progreso de insignia por ID de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
userIdstring

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

Obtener lista de progreso de insignias de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetUserBadgeProgressListOptions&

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

Crear insignia de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

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

Eliminar insignia de usuario 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

Obtener insignia de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
idstring

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

Obtener insignias de usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
optionsconst GetUserBadgesOptions&

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

Actualizar insignia de usuario 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

Obtener conteo de notificaciones del usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
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

Obtener notificaciones del usuario 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

Restablecer conteo de notificaciones del usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
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

Restablecer notificaciones del usuario Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
optionsconst ResetUserNotificationsOptions&

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

Actualizar estado de suscripción a comentarios del usuario Internal Link

Habilitar o deshabilitar notificaciones para un comentario específico.

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
notificationIdstring
optedInOrOutstring
commentIdstring
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

Actualizar estado de suscripción a páginas del usuario 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

Actualizar estado de notificación del usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
notificationIdstring
newStatusstring
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

Obtener estados de presencia de usuarios 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

Buscar usuarios Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring
optionsconst SearchUsersOptions&

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

Obtener usuario 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

Crear voto 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

Eliminar voto Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
idstring
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

Obtener votos Internal Link

Parámetros

NombreTipoObligatorioDescripción
tenantIdstring
urlIdstring

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

Obtener votos del usuario Internal Link

Parámetros

NombreTipoRequeridoDescripción
tenantIdstring
urlIdstring
optionsconst GetVotesForUserOptions&

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.