FastComments.com

FastComments Rust SDK


Esto es el SDK oficial de Rust para FastComments.

SDK oficial de Rust para la API de FastComments

Repositorio

Ver en GitHub


Instalación Internal Link

cargo add fastcomments-sdk

El SDK requiere la edición 2021 de Rust o posterior.

Contenido de la biblioteca Internal Link

El FastComments Rust SDK consta de varios módulos:

  • Client Module - Cliente API autogenerado para las APIs REST de FastComments

    • Definiciones de tipos completas para todos los modelos de la API
    • Endpoints tanto autenticados (DefaultApi) como públicos (PublicApi)
    • Compatibilidad completa con async/await usando tokio
    • Consulte client/README.md para documentación detallada de la API
  • SSO Module - Utilidades de Single Sign-On del lado del servidor

    • Generación segura de tokens para la autenticación de usuarios
    • Soporte para modos SSO tanto simples como seguros
    • Firma de tokens basada en HMAC-SHA256
  • Core Types - Definiciones de tipos compartidos y utilidades

    • Modelos de comentarios y estructuras de metadatos
    • Configuraciones de usuario y tenant
    • Funciones auxiliares para operaciones comunes

Inicio rápido Internal Link

Uso de la API pública

use fastcomments_sdk::client::apis::configuration::Configuration;
use fastcomments_sdk::client::apis::public_api;

#[tokio::main]
async fn main() {
    // Crear la configuración de la API
    let config = Configuration::new();

    // Obtener comentarios de una página
    let result = public_api::get_comments_public(
        &config,
        public_api::GetCommentsPublicParams {
            tenant_id: "your-tenant-id".to_string(),
            urlid: Some("page-url-id".to_string()),
            url: None,
            count_only: None,
            skip: None,
            limit: None,
            sort_dir: None,
            page: None,
            sso_hash: None,
            simple_sso_hash: None,
            has_no_comment: None,
            has_comment: None,
            comment_id_filter: None,
            child_ids: None,
            start_date_time: None,
            starts_with: None,
        },
    )
    .await;

    match result {
        Ok(response) => {
            println!("Found {} comments", response.comments.len());
            for comment in response.comments {
                println!("Comment: {:?}", comment);
            }
        }
        Err(e) => eprintln!("Error fetching comments: {:?}", e),
    }
}

Uso de la API autenticada

use fastcomments_sdk::client::apis::configuration::{ApiKey, Configuration};
use fastcomments_sdk::client::apis::default_api;

#[tokio::main]
async fn main() {
    // Crear configuración con la clave de la API
    let mut config = Configuration::new();
    config.api_key = Some(ApiKey {
        prefix: None,
        key: "your-api-key".to_string(),
    });

    // Obtener comentarios usando la API autenticada
    let result = default_api::get_comments(
        &config,
        default_api::GetCommentsParams {
            tenant_id: "your-tenant-id".to_string(),
            skip: None,
            limit: None,
            sort_dir: None,
            urlid: Some("page-url-id".to_string()),
            url: None,
            is_spam: None,
            user_id: None,
            all_comments: None,
            for_moderation: None,
            parent_id: None,
            is_flagged: None,
            is_flagged_tag: None,
            is_by_verified: None,
            is_pinned: None,
            asc: None,
            include_imported: None,
            origin: None,
            tags: None,
        },
    )
    .await;

    match result {
        Ok(response) => {
            println!("Total comments: {}", response.count);
            for comment in response.comments {
                println!("Comment ID: {}, Text: {}", comment.id, comment.comment);
            }
        }
        Err(e) => eprintln!("Error: {:?}", e),
    }
}

Uso de SSO para autenticación

use fastcomments_sdk::sso::{
    fastcomments_sso::FastCommentsSSO,
    secure_sso_user_data::SecureSSOUserData,
};

fn main() {
    let api_key = "your-api-key".to_string();

    // Crear datos de usuario SSO seguros (¡solo del lado del servidor!)
    let user_data = SecureSSOUserData::new(
        "user-123".to_string(),           // ID de usuario
        "user@example.com".to_string(),   // Correo electrónico
        "John Doe".to_string(),            // Nombre de usuario
        "https://example.com/avatar.jpg".to_string(), // URL del avatar
    );

    // Generar token SSO
    let sso = FastCommentsSSO::new_secure(api_key, &user_data).unwrap();
    let token = sso.create_token().unwrap();

    println!("SSO Token: {}", token);
    // Pasa este token a tu frontend para la autenticación
}

Problemas comunes Internal Link

Errores 401 — No autorizado

Si obtienes errores 401 al usar la API autenticada:

  1. Comprueba tu clave de API: Asegúrate de que estás usando la clave de API correcta desde tu panel de FastComments
  2. Verifica el tenant ID: Asegúrate de que el tenant ID coincida con tu cuenta
  3. Formato de la clave de API: La clave de API debe pasarse en la Configuration:
let mut config = Configuration::new();
config.api_key = Some(ApiKey {
    prefix: None,
    key: "YOUR_API_KEY".to_string(),
});

Problemas con tokens SSO

Si los tokens SSO no funcionan:

  1. Usa el modo seguro en producción: Siempre usa FastCommentsSSO::new_secure() con tu clave de API en producción
  2. Sólo en el servidor: Genera los tokens SSO en tu servidor, nunca expongas tu clave de API a los clientes
  3. Verifica los datos del usuario: Asegúrate de que se proporcionen todos los campos requeridos (id, email, username)

Errores del runtime asíncrono

El SDK usa tokio para operaciones asíncronas. Asegúrate de:

  1. Añade tokio a tus dependencias:

    [dependencies]
    tokio = { version = "1", features = ["full"] }
  2. Usa el runtime de tokio:

    #[tokio::main]
    async fn main() {
     // Tu código asíncrono aquí
    }

Notas Internal Link

Identificadores de transmisión

Verás que debes pasar un broadcastId en algunas llamadas a la API. Cuando recibas eventos, obtendrás este ID de vuelta, de modo que sepas ignorar el evento si planeas aplicar los 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.

Agregación Internal Link

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

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
aggregation_request models::AggregationRequest
parent_tenant_id String No
include_stats bool No

Respuesta

Devuelve: AggregationResponse


Obtener registros de auditoría Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
limit f64 No
skip f64 No
order models::SortDir No
after f64 No
before f64 No

Respuesta

Devuelve: GetAuditLogs200Response


Bloquear desde comentario público Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
public_block_from_comment_params models::PublicBlockFromCommentParams
sso String No

Respuesta

Devuelve: BlockFromCommentPublic200Response


Desbloquear comentario público Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
public_block_from_comment_params models::PublicBlockFromCommentParams
sso String No

Respuesta

Devuelve: UnBlockCommentPublic200Response


Comprobar comentarios bloqueados Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
comment_ids String
sso String No

Respuesta

Devuelve: CheckedCommentsForBlocked200Response


Bloquear usuario desde comentario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
block_from_comment_params models::BlockFromCommentParams
user_id String No
anon_user_id String No

Respuesta

Devuelve: BlockFromCommentPublic200Response


Crear comentario público Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
url_id String
broadcast_id String
comment_data models::CommentData
session_id String No
sso String No

Respuesta

Devuelve: CreateCommentPublic200Response


Eliminar comentario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
context_user_id String No
is_live bool No

Respuesta

Devuelve: DeleteComment200Response


Eliminar comentario público Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
broadcast_id String
edit_key String No
sso String No

Respuesta

Devuelve: DeleteCommentPublic200Response


Eliminar voto de comentario Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
comment_id String
vote_id String
url_id String
broadcast_id String
edit_key String No
sso String No

Respuesta

Devuelve: DeleteCommentVote200Response


Reportar comentario Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
user_id String No
anon_user_id String No

Respuesta

Devuelve: FlagComment200Response


Obtener comentario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: GetComment200Response


Obtener texto del comentario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
edit_key String No
sso String No

Respuesta

Devuelve: GetCommentText200Response


Obtener nombres de usuarios que votaron el comentario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
dir i32
sso String No

Respuesta

Devuelve: GetCommentVoteUserNames200Response


Obtener comentarios Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
page i32 No
limit i32 No
skip i32 No
as_tree bool No
skip_children i32 No
limit_children i32 No
max_tree_depth i32 No
url_id String No
user_id String No
anon_user_id String No
context_user_id String No
hash_tag String No
parent_id String No
direction models::SortDirections No

Respuesta

Devuelve: GetComments200Response


Obtener comentarios públicos Internal Link

req tenantId urlId

Parámetros

Name Type Required Description
tenant_id String
url_id String
page i32 No
direction models::SortDirections No
sso String No
skip i32 No
skip_children i32 No
limit i32 No
limit_children i32 No
count_children bool No
fetch_page_for_comment_id String No
include_config bool No
count_all bool No
includei10n bool No
locale String No
modules String No
is_crawler bool No
include_notification_count bool No
as_tree bool No
max_tree_depth i32 No
use_full_translation_ids bool No
parent_id String No
search_text String No
hash_tags Vec No
user_id String No
custom_config_str String No
after_comment_id String No
before_comment_id String No

Respuesta

Devuelve: GetCommentsPublic200Response


Bloquear comentario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
comment_id String
broadcast_id String
sso String No

Respuesta

Devuelve: LockComment200Response


Fijar comentario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
broadcast_id String
sso String No

Respuesta

Devuelve: PinComment200Response


Guardar comentario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
create_comment_params models::CreateCommentParams
is_live bool No
do_spam_check bool No
send_emails bool No
populate_notifications bool No

Respuesta

Devuelve: SaveComment200Response


Guardar comentarios en bloque Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
create_comment_params Vecmodels::CreateCommentParams
is_live bool No
do_spam_check bool No
send_emails bool No
populate_notifications bool No

Respuesta

Devuelve: Vec<models::SaveComment200Response>

Establecer texto del comentario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
broadcast_id String
comment_text_update_request models::CommentTextUpdateRequest
edit_key String No
sso String No

Respuesta

Devuelve: SetCommentText200Response


Desbloquear usuario desde comentario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
un_block_from_comment_params models::UnBlockFromCommentParams
user_id String No
anon_user_id String No

Respuesta

Devuelve: UnBlockCommentPublic200Response


Quitar reporte de comentario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
user_id String No
anon_user_id String No

Respuesta

Devuelve: FlagComment200Response


Desbloquear comentario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
broadcast_id String
sso String No

Respuesta

Devuelve: LockComment200Response


Desfijar comentario Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
comment_id String
broadcast_id String
sso String No

Respuesta

Devuelve: PinComment200Response


Actualizar comentario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
body models::PickApiCommentPeriodUpdatableCommentFields
context_user_id String No
do_spam_check bool No
is_live bool No

Respuesta

Devuelve: FlagCommentPublic200Response


Votar comentario Internal Link

Parámetros

Name Type Required Description
tenant_id String
comment_id String
url_id String
broadcast_id String
vote_body_params models::VoteBodyParams
session_id String No
sso String No

Respuesta

Devuelve: VoteComment200Response


Agregar configuración de dominio Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
add_domain_config_params models::AddDomainConfigParams

Respuesta

Devuelve: AddDomainConfig200Response


Eliminar configuración de dominio Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
domain String

Respuesta

Devuelve: DeleteDomainConfig200Response


Obtener configuración de dominio Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
domain String

Respuesta

Devuelve: GetDomainConfig200Response


Obtener configuraciones de dominio Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String

Respuesta

Devuelve: GetDomainConfigs200Response

Modificar parcialmente configuración de dominio Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
domain_to_update String
patch_domain_config_params models::PatchDomainConfigParams

Respuesta

Devuelve: GetDomainConfig200Response


Reemplazar configuración de dominio Internal Link


Parámetros

Name Type Required Description
tenant_id String
domain_to_update String
update_domain_config_params models::UpdateDomainConfigParams

Respuesta

Devuelve: GetDomainConfig200Response


Crear plantilla de correo electrónico Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
create_email_template_body models::CreateEmailTemplateBody

Respuesta

Devuelve: CreateEmailTemplate200Response

Ejemplo

create_email_template Example
Copy Copy
1
2let params: CreateEmailTemplateParams = CreateEmailTemplateParams {
3 tenant_id: "acme-corp-tenant".to_string(),
4 create_email_template_body: models::CreateEmailTemplateBody {
5 name: "New Comment Notification".to_string(),
6 subject: "New comment on your article".to_string(),
7 html_body: "<p>A new comment was posted on <strong>{article_title}</strong>.</p>".to_string(),
8 text_body: Some("A new comment was posted on {article_title}.".to_string()),
9 from_email: Some("no-reply@acme-news.com".to_string()),
10 enabled: Some(true),
11 },
12};
13let response: CreateEmailTemplate200Response = create_email_template(&configuration, params).await?;
14

Eliminar plantilla de correo electrónico Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo delete_email_template
Copy Copy
1
2async fn run_delete() -> Result<FlagCommentPublic200Response, Error> {
3 let params: DeleteEmailTemplateParams = DeleteEmailTemplateParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "welcome-email-template".to_string(),
6 };
7 let response: FlagCommentPublic200Response = delete_email_template(&configuration, params).await?;
8 Ok(response)
9}
10

Eliminar error de renderizado de plantilla de correo electrónico Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
error_id String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

delete_email_template_render_error Ejemplo
Copy Copy
1
2async fn delete_email_template_render_error_example() -> Result<FlagCommentPublic200Response, Error> {
3 let params: DeleteEmailTemplateRenderErrorParams = DeleteEmailTemplateRenderErrorParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "marketing/newsletter/welcome-email".to_string(),
6 error_id: "render-err-2026-01-12-01".to_string(),
7 };
8 let response: FlagCommentPublic200Response = delete_email_template_render_error(configuration, params).await?;
9 Ok(response)
10}
11

Obtener plantilla de correo electrónico Internal Link

Parameters

Nombre Tipo Obligatorio Descripción
tenant_id String
id String

Respuesta

Devuelve: GetEmailTemplate200Response

Ejemplo

Ejemplo de get_email_template
Copy Copy
1
2async fn fetch_template() -> Result<GetEmailTemplate200Response, Error> {
3 let params: GetEmailTemplateParams = GetEmailTemplateParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "welcome-email-template".to_string(),
6 };
7 let template: GetEmailTemplate200Response = get_email_template(&configuration, params).await?;
8 Ok(template)
9}
10

Obtener definiciones de plantillas de correo electrónico Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String

Respuesta

Devuelve: GetEmailTemplateDefinitions200Response

Ejemplo

Ejemplo de get_email_template_definitions
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let config: configuration::Configuration = configuration::Configuration::default();
4 let params: GetEmailTemplateDefinitionsParams = GetEmailTemplateDefinitionsParams {
5 tenant_id: "acme-corp-tenant".to_string(),
6 locale: Some("en-US".to_string()),
7 include_inactive: Some(false),
8 };
9 let resp: GetEmailTemplateDefinitions200Response = get_email_template_definitions(&config, params).await?;
10 let _definitions = resp;
11 Ok(())
12}
13

Obtener errores de renderizado de plantillas de correo electrónico Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
skip f64 No

Respuesta

Devuelve: GetEmailTemplateRenderErrors200Response

Ejemplo

Ejemplo de get_email_template_render_errors
Copy Copy
1
2async fn example_call() -> Result<(), Error> {
3 let params: GetEmailTemplateRenderErrorsParams = GetEmailTemplateRenderErrorsParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "welcome-email-template".to_string(),
6 skip: Some(10.0),
7 };
8 let _response: GetEmailTemplateRenderErrors200Response =
9 get_email_template_render_errors(&configuration, params).await?;
10 Ok(())
11}
12

Obtener plantillas de correo electrónico Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
skip f64 No

Respuesta

Devuelve: GetEmailTemplates200Response

Ejemplo

Ejemplo de get_email_templates
Copy Copy
1
2async fn fetch_email_templates() -> Result<GetEmailTemplates200Response, Error> {
3 let params: GetEmailTemplatesParams = GetEmailTemplatesParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 skip: Some(20.0),
6 };
7 let templates: GetEmailTemplates200Response = get_email_templates(&configuration, params).await?;
8 Ok(templates)
9}
10

Renderizar plantilla de correo electrónico Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
render_email_template_body models::RenderEmailTemplateBody
locale String No

Respuesta

Devuelve: RenderEmailTemplate200Response

Ejemplo

Ejemplo de render_email_template
Copy Copy
1
2let params: RenderEmailTemplateParams = RenderEmailTemplateParams {
3 tenant_id: "acme-corp-tenant".to_string(),
4 render_email_template_body: models::RenderEmailTemplateBody {
5 template_id: "comment-notification".to_string(),
6 subject: Some("New comment on your article".to_string()),
7 placeholders: std::collections::HashMap::from([
8 ("article_title".to_string(), "Rust Gains Momentum in 2026".to_string()),
9 ("comment_author".to_string(), "Jane Doe".to_string()),
10 ("comment_snippet".to_string(), "Great insights — thanks for sharing!".to_string()),
11 ]),
12 },
13 locale: Some("en-US".to_string()),
14};
15let rendered: RenderEmailTemplate200Response = render_email_template(&configuration, params).await?;
16

Actualizar plantilla de correo electrónico Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
update_email_template_body models::UpdateEmailTemplateBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_email_template
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: UpdateEmailTemplateParams = UpdateEmailTemplateParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "welcome-template-001".to_string(),
6 update_email_template_body: models::UpdateEmailTemplateBody {
7 name: Some("Welcome Template".to_string()),
8 subject: Some("Welcome to Acme News".to_string()),
9 body_html: Some("<p>Hi , welcome to Acme News!</p>".to_string()),
10 from_address: Some("no-reply@acme-news.com".to_string()),
11 reply_to: Some("support@acme-news.com".to_string()),
12 enabled: Some(true),
13 language: Some("en-US".to_string()),
14 custom_config: Some(models::CustomConfigParameters {
15 tracking_pixel_url: Some("https://acme-news.com/pixel".to_string()),
16 }),
17 },
18 };
19
20 let response: FlagCommentPublic200Response = update_email_template(&configuration, params).await?;
21 let _ = response;
22 Ok(())
23}
24

Obtener registro de eventos Internal Link

req tenantId urlId userIdWS

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
url_id String
user_id_ws String
start_time i64
end_time i64

Respuesta

Devuelve: GetEventLog200Response


Obtener registro de eventos global Internal Link

req tenantId urlId userIdWS

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
url_id String
user_id_ws String
start_time i64
end_time i64

Respuesta

Devuelve: GetEventLog200Response


Crear publicación del feed Internal Link

Parámetros

Name Type Requerido Descripción
tenant_id String
create_feed_post_params models::CreateFeedPostParams
broadcast_id String No
is_live bool No
do_spam_check bool No
skip_dup_check bool No

Respuesta

Devuelve: CreateFeedPost200Response


Crear publicación del feed pública Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
create_feed_post_params models::CreateFeedPostParams
broadcast_id String No
sso String No

Respuesta

Devuelve: CreateFeedPostPublic200Response


Eliminar publicación del feed pública Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
post_id String
broadcast_id String No
sso String No

Respuesta

Devuelve: DeleteFeedPostPublic200Response


Obtener publicaciones del feed Internal Link

req tenantId afterId

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
after_id String No
limit i32 No
tags Vec No

Respuesta

Devuelve: GetFeedPosts200Response

Obtener publicaciones del feed públicas Internal Link

req tenantId afterId

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
after_id String No
limit i32 No
tags Vec No
sso String No
is_crawler bool No
include_user_info bool No

Respuesta

Devuelve: GetFeedPostsPublic200Response


Obtener estadísticas de publicaciones del feed Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
post_ids Vec
sso String No

Respuesta

Devuelve: GetFeedPostsStats200Response


Obtener reacciones de usuarios públicas Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
post_ids Vec No
sso String No

Respuesta

Devuelve: GetUserReactsPublic200Response

Reaccionar a publicación del feed pública Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
post_id String
react_body_params models::ReactBodyParams
is_undo bool No
broadcast_id String No
sso String No

Respuesta

Devuelve: ReactFeedPostPublic200Response


Actualizar publicación del feed Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
feed_post models::FeedPost

Respuesta

Devuelve: FlagCommentPublic200Response


Actualizar publicación del feed pública Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
post_id String
update_feed_post_params models::UpdateFeedPostParams
broadcast_id String No
sso String No

Respuesta

Devuelve: CreateFeedPostPublic200Response


Reportar comentario público Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
comment_id String
is_flagged bool
sso String No

Respuesta

Devuelve: FlagCommentPublic200Response


Agregar hashtag Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String No
create_hash_tag_body models::CreateHashTagBody No

Respuesta

Devuelve: AddHashTag200Response

Ejemplo

Ejemplo de add_hash_tag
Copy Copy
1
2async fn run_add_hash_tag(configuration: &configuration::Configuration) -> Result<(), Error> {
3 let params: AddHashTagParams = AddHashTagParams {
4 tenant_id: Some("acme-corp-tenant".to_string()),
5 create_hash_tag_body: Some(models::CreateHashTagBody {
6 tag: "breaking-news".to_string(),
7 label: Some("Breaking News".to_string()),
8 visible: Some(true),
9 }),
10 };
11
12 let created: AddHashTag200Response = add_hash_tag(configuration, params).await?;
13 println!("{:#?}", created);
14 Ok(())
15}
16

Agregar hashtags en bloque Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String No
bulk_create_hash_tags_body models::BulkCreateHashTagsBody No

Respuesta

Devuelve: AddHashTagsBulk200Response

Ejemplo

Ejemplo de add_hash_tags_bulk
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: AddHashTagsBulkParams = AddHashTagsBulkParams {
4 tenant_id: Some("acme-corp-tenant".to_string()),
5 bulk_create_hash_tags_body: Some(models::BulkCreateHashTagsBody {
6 tags: vec![
7 models::BulkCreateHashTagsBodyTagsInner {
8 name: "news/article".to_string(),
9 path: "news/article".to_string(),
10 description: Some("Article tag for front page".to_string()),
11 enabled: Some(true),
12 },
13 ],
14 }),
15 };
16
17 let response: AddHashTagsBulk200Response = add_hash_tags_bulk(&configuration, params).await?;
18 Ok(())
19}
20

Eliminar hashtag Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tag String
tenant_id String No
delete_hash_tag_request models::DeleteHashTagRequest No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

delete_hash_tag Ejemplo
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: DeleteHashTagParams = DeleteHashTagParams {
4 tag: "news/politics".to_string(),
5 tenant_id: Some("acme-corp-tenant".to_string()),
6 delete_hash_tag_request: Some(models::DeleteHashTagRequest::default()),
7 };
8 let response: FlagCommentPublic200Response = delete_hash_tag(&configuration, params).await?;
9 Ok(())
10}
11

Obtener hashtags Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
page f64 No

Respuesta

Devuelve: GetHashTags200Response

Ejemplo

get_hash_tags Ejemplo
Copy Copy
1
2async fn example_get_hash_tags() -> Result<GetHashTags200Response, Error> {
3 let params: GetHashTagsParams = GetHashTagsParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 page: Some(1.0_f64),
6 };
7 let response: GetHashTags200Response = get_hash_tags(&configuration, params).await?;
8 Ok(response)
9}
10

Modificar hashtag parcialmente Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tag String
tenant_id String No
update_hash_tag_body models::UpdateHashTagBody No

Respuesta

Devuelve: PatchHashTag200Response

Ejemplo

Ejemplo de patch_hash_tag
Copy Copy
1
2async fn run_patch_hash_tag() -> Result<PatchHashTag200Response, Error> {
3 let params: PatchHashTagParams = PatchHashTagParams {
4 tag: "breaking-news".to_string(),
5 tenant_id: Some("acme-corp-tenant".to_string()),
6 update_hash_tag_body: Some(models::UpdateHashTagBody {
7 name: "Breaking News".to_string(),
8 description: "Posts about breaking news and urgent updates".to_string(),
9 synonyms: vec!["breaking".to_string(), "urgent".to_string()],
10 is_active: true,
11 }),
12 };
13 let response: PatchHashTag200Response = patch_hash_tag(&configuration, params).await?;
14 Ok(response)
15}
16

Crear moderador Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
create_moderator_body models::CreateModeratorBody

Respuesta

Devuelve: CreateModerator200Response

Ejemplo

Ejemplo de create_moderator
Copy Copy
1
2async fn run_create_moderator() -> Result<(), Error> {
3 let params: CreateModeratorParams = CreateModeratorParams {
4 tenant_id: "acme-corp-tenant".to_owned(),
5 create_moderator_body: models::CreateModeratorBody {
6 email: "jane.doe@acme.com".to_owned(),
7 display_name: "Jane Doe".to_owned(),
8 role: Some("moderator".to_owned()),
9 active: Some(true),
10 notes: Some("Handles product and support forums".to_owned()),
11 permissions: Some(vec!["approve_comment".to_owned(), "delete_comment".to_owned()]),
12 },
13 };
14
15 let _response: CreateModerator200Response = create_moderator(&configuration, params).await?;
16 Ok(())
17}
18

Eliminar moderador Internal Link

Parámetros

Name Type Required Description
tenant_id String
id String
send_email String No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de delete_moderator
Copy Copy
1
2async fn run(configuration: &configuration::Configuration) -> Result<FlagCommentPublic200Response, Error> {
3 let params: DeleteModeratorParams = DeleteModeratorParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "moderator-1234".to_string(),
6 send_email: Some("true".to_string()),
7 };
8 let response: FlagCommentPublic200Response = delete_moderator(configuration, params).await?;
9 Ok(response)
10}
11

Obtener moderador Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: GetModerator200Response

Ejemplo

Ejemplo de get_moderator
Copy Copy
1
2async fn example() -> Result<(), Error> {
3 let params: GetModeratorParams = GetModeratorParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "moderator-42".to_string(),
6 include: Some(vec!["roles".to_string(), "recent_comments".to_string()]),
7 };
8 let moderator: GetModerator200Response = get_moderator(&configuration, params).await?;
9 println!("{:#?}", moderator);
10 Ok(())
11}
12

Obtener moderadores Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
skip f64 No

Respuesta

Devuelve: GetModerators200Response

Ejemplo

Ejemplo de get_moderators
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: GetModeratorsParams = GetModeratorsParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 skip: Some(10.0),
6 };
7 let moderators: GetModerators200Response = get_moderators(&configuration, params).await?;
8 let _moderators = moderators;
9 Ok(())
10}
11

Enviar invitación Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
from_name String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de send_invite
Copy Copy
1
2let params: SendInviteParams = SendInviteParams {
3 tenant_id: "acme-corp-tenant".to_string(),
4 id: "articles/2026/01/ai-news-12345".to_string(),
5 from_name: "Acme Newsroom".to_string(),
6 reply_to: Some("editorial@acme.com".to_string()),
7 message: Some("You have been invited to moderate comments on this article.".to_string()),
8};
9
10let invite_response: FlagCommentPublic200Response = send_invite(&configuration, params).await?;
11

Actualizar moderador Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
update_moderator_body models::UpdateModeratorBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_moderator
Copy Copy
1
2let params: UpdateModeratorParams = UpdateModeratorParams {
3 tenant_id: "acme-corp-tenant".to_string(),
4 id: "moderator-12345".to_string(),
5 update_moderator_body: models::UpdateModeratorBody {
6 username: "jane.doe".to_string(),
7 display_name: Some("Jane Doe".to_string()),
8 email: Some("jane.doe@acme.com".to_string()),
9 is_active: Some(true),
10 permissions: Some(vec!["moderate_comments".to_string(), "view_reports".to_string()]),
11 },
12};
13let response: FlagCommentPublic200Response = update_moderator(&configuration, params).await?;
14

Eliminar contador de notificaciones Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de delete_notification_count
Copy Copy
1
2async fn run_delete_notification_count(configuration: &configuration::Configuration) -> Result<FlagCommentPublic200Response, Error> {
3 let params: DeleteNotificationCountParams = DeleteNotificationCountParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "notification-9f8b7a6".to_string(),
6 };
7 let response: FlagCommentPublic200Response = delete_notification_count(configuration, params).await?;
8 Ok(response)
9}
10

Obtener contador de notificaciones en caché Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String

Respuesta

Devuelve: GetCachedNotificationCount200Response

Ejemplo

Ejemplo de get_cached_notification_count
Copy Copy
1
2async fn run_get_cached_notification_count() -> Result<(), Error> {
3 let params: GetCachedNotificationCountParams = GetCachedNotificationCountParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "news/article-12345".to_string(),
6 };
7 let preferred_channel: Option<String> = Some("email".to_string());
8 let response: GetCachedNotificationCount200Response =
9 get_cached_notification_count(&configuration, params).await?;
10 Ok(())
11}
12

Obtener contador de notificaciones Internal Link

Parámetros

Name Type Required Description
tenant_id String
user_id String No
url_id String No
from_comment_id String No
viewed bool No

Respuesta

Devuelve: GetNotificationCount200Response

Ejemplo

Ejemplo de get_notification_count
Copy Copy
1
2async fn example_get_notification_count() -> Result<GetNotificationCount200Response, Error> {
3 let params: GetNotificationCountParams = GetNotificationCountParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 user_id: Some(String::from("user-12345")),
6 url_id: Some(String::from("news/article/2026/product-launch")),
7 from_comment_id: Some(String::from("cmt-000987")),
8 viewed: Some(false),
9 };
10 let response: GetNotificationCount200Response = get_notification_count(&configuration, params).await?;
11 Ok(response)
12}
13

Obtener notificaciones Internal Link

Parámetros

Name Type Requerido Descripción
tenant_id String
user_id String No
url_id String No
from_comment_id String No
viewed bool No
skip f64 No

Respuesta

Devuelve: GetNotifications200Response

Ejemplo

Ejemplo de get_notifications
Copy Copy
1
2async fn fetch_notifications() -> Result<(), Error> {
3 let params: GetNotificationsParams = GetNotificationsParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 user_id: Some("user-1234".to_string()),
6 url_id: Some("news/politics/article-2026-01-12".to_string()),
7 from_comment_id: Some("cmt-98765".to_string()),
8 viewed: Some(false),
9 skip: Some(0.0),
10 };
11 let notifications: GetNotifications200Response = get_notifications(&configuration, params).await?;
12 let _ = notifications;
13 Ok(())
14}
15

Actualizar notificación Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
update_notification_body models::UpdateNotificationBody
user_id String No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_notification
Copy Copy
1
2pub async fn run_update_notification(configuration: &configuration::Configuration) -> Result<FlagCommentPublic200Response, Error> {
3 let params: UpdateNotificationParams = UpdateNotificationParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "notification-67890".to_string(),
6 update_notification_body: models::UpdateNotificationBody {
7 title: Some("Flag Review Complete".to_string()),
8 message: Some("A moderator reviewed the flagged comment and marked it resolved.".to_string()),
9 resolved: Some(true),
10 channels: Some(vec!["email".to_string(), "in_app".to_string()]),
11 },
12 user_id: Some("moderator-007".to_string()),
13 };
14 let response: FlagCommentPublic200Response = update_notification(configuration, params).await?;
15 Ok(response)
16}
17

Agregar página Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
create_api_page_data models::CreateApiPageData

Respuesta

Devuelve: AddPageApiResponse


Eliminar página Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: DeletePageApiResponse


Obtener página por URL ID Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
url_id String

Respuesta

Devuelve: GetPageByUrlidApiResponse


Obtener páginas Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String

Respuesta

Devuelve: GetPagesApiResponse


Modificar página parcialmente Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
update_api_page_data models::UpdateApiPageData

Respuesta

Devuelve: PatchPageApiResponse


Eliminar evento de webhook pendiente Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de delete_pending_webhook_event
Copy Copy
1
2async fn run() -> Result<FlagCommentPublic200Response, Error> {
3 let event_id_opt: Option<String> = Some("webhook-event/news-article-2026-01-10-1234".to_string());
4 let event_id: String = event_id_opt.unwrap();
5 let params: DeletePendingWebhookEventParams = DeletePendingWebhookEventParams {
6 tenant_id: "acme-corp-tenant".to_string(),
7 id: event_id,
8 };
9 let response: FlagCommentPublic200Response = delete_pending_webhook_event(&configuration, params).await?;
10 Ok(response)
11}
12

Obtener contador de eventos de webhook pendientes Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
comment_id String No
external_id String No
event_type String No
domain String No
attempt_count_gt f64 No

Respuesta

Devuelve: GetPendingWebhookEventCount200Response

Ejemplo

Ejemplo de get_pending_webhook_event_count
Copy Copy
1
2async fn example() -> Result<GetPendingWebhookEventCount200Response, Error> {
3 let params: GetPendingWebhookEventCountParams = GetPendingWebhookEventCountParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 comment_id: Some("cmt-12345".to_string()),
6 external_id: Some("news/article-98765".to_string()),
7 event_type: Some("comment.created".to_string()),
8 domain: Some("news.example.com".to_string()),
9 attempt_count_gt: Some(2.0),
10 };
11 let response: GetPendingWebhookEventCount200Response =
12 get_pending_webhook_event_count(&configuration, params).await?;
13 Ok(response)
14}
15

Obtener eventos de webhook pendientes Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
comment_id String No
external_id String No
event_type String No
domain String No
attempt_count_gt f64 No
skip f64 No

Respuesta

Devuelve: GetPendingWebhookEvents200Response

Ejemplo

Ejemplo de get_pending_webhook_events
Copy Copy
1
2let params: GetPendingWebhookEventsParams = GetPendingWebhookEventsParams {
3 tenant_id: "acme-corp-tenant".to_string(),
4 comment_id: Some("cmt-12345".to_string()),
5 external_id: Some("article-98765".to_string()),
6 event_type: Some("comment.create".to_string()),
7 domain: Some("news.example.com".to_string()),
8 attempt_count_gt: Some(1.0),
9 skip: Some(0.0),
10};
11
12let pending: GetPendingWebhookEvents200Response = get_pending_webhook_events(&configuration, params).await?;
13

Crear configuración de pregunta Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
create_question_config_body models::CreateQuestionConfigBody

Respuesta

Devuelve: CreateQuestionConfig200Response

Ejemplo

Ejemplo de create_question_config
Copy Copy
1
2let params: CreateQuestionConfigParams = CreateQuestionConfigParams {
3 tenant_id: String::from("acme-corp-tenant"),
4 create_question_config_body: models::CreateQuestionConfigBody {
5 key: String::from("article-usefulness"),
6 label: Some(String::from("Was this article useful?")),
7 description: Some(String::from("Help us improve by rating this article.")),
8 required: Some(true),
9 rendering_type: Some(models::QuestionRenderingType::MultipleChoice),
10 custom_options: Some(vec![
11 models::QuestionConfigCustomOptionsInner { value: String::from("1"), label: Some(String::from("Not useful")) },
12 models::QuestionConfigCustomOptionsInner { value: String::from("3"), label: Some(String::from("Somewhat useful")) },
13 models::QuestionConfigCustomOptionsInner { value: String::from("5"), label: Some(String::from("Very useful")) },
14 ]),
15 enabled: Some(true),
16 },
17};
18let response: CreateQuestionConfig200Response = create_question_config(configuration, params).await?;
19

Eliminar configuración de pregunta Internal Link

Parámetros

Name Type Required Description
tenant_id String
id String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de delete_question_config
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: DeleteQuestionConfigParams = DeleteQuestionConfigParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "news/article-comments-config-2025".to_string(),
6 force: Some(true),
7 };
8 let response: FlagCommentPublic200Response = delete_question_config(&configuration, params).await?;
9 Ok(())
10}
11

Obtener configuración de pregunta Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: GetQuestionConfig200Response

Ejemplo

Ejemplo de get_question_config
Copy Copy
1
2async fn fetch_question_config() -> Result<(), Error> {
3 let tenant_env: Option<&str> = Some("prod");
4 let tenant_id: String = match tenant_env {
5 Some(env) => format!("acme-corp-tenant-{}", env),
6 None => "acme-corp-tenant".to_string(),
7 };
8 let params: GetQuestionConfigParams = GetQuestionConfigParams {
9 tenant_id,
10 id: "news/article/2026/01/12-politics".to_string(),
11 };
12 let response: GetQuestionConfig200Response = get_question_config(&configuration, params).await?;
13 let _status: ApiStatus = response.0;
14 Ok(())
15}
16

Obtener configuraciones de preguntas Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String Yes
skip f64 No

Respuesta

Devuelve: GetQuestionConfigs200Response

Ejemplo

Ejemplo de get_question_configs
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: GetQuestionConfigsParams = GetQuestionConfigsParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 skip: Some(10.0),
6 };
7 let response: GetQuestionConfigs200Response = get_question_configs(&configuration, params).await?;
8 let _cfgs: GetQuestionConfigs200Response = response;
9 Ok(())
10}
11

Actualizar configuración de pregunta Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
update_question_config_body models::UpdateQuestionConfigBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_question_config
Copy Copy
1
2async fn run_update() -> Result<(), Error> {
3 let params: UpdateQuestionConfigParams = UpdateQuestionConfigParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 id: String::from("news/article-2026-01-12"),
6 update_question_config_body: models::UpdateQuestionConfigBody {
7 question_text: String::from("Did you find this reporting accurate?"),
8 required: Some(true),
9 rendering_type: Some(models::QuestionRenderingType::Inline),
10 options: Some(vec![
11 models::QuestionConfigCustomOptionsInner { id: String::from("opt-yes"), label: String::from("Yes"), value: String::from("yes") },
12 models::QuestionConfigCustomOptionsInner { id: String::from("opt-no"), label: String::from("No"), value: String::from("no") },
13 ]),
14 when_save: Some(models::QuestionWhenSave::OnSubmit),
15 },
16 };
17 let response: FlagCommentPublic200Response = update_question_config(&configuration, params).await?;
18 Ok(())
19}
20

Crear resultado de pregunta Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
create_question_result_body models::CreateQuestionResultBody

Respuesta

Devuelve: CreateQuestionResult200Response

Ejemplo

create_question_result Ejemplo
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: CreateQuestionResultParams = CreateQuestionResultParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 create_question_result_body: models::CreateQuestionResultBody {
6 question_id: "feedback-article-2026".to_string(),
7 comment_id: Some("cmt-2026-001".to_string()),
8 user_id: Some("reader-007".to_string()),
9 answer: "yes".to_string(),
10 score: Some(4),
11 metadata: Some(std::collections::HashMap::from([(
12 "path".to_string(),
13 "news/politics/2026-election".to_string(),
14 )])),
15 anonymous: Some(false),
16 submitted_at: Some("2026-01-12T09:15:00Z".to_string()),
17 },
18 };
19
20 let created: CreateQuestionResult200Response = create_question_result(&configuration, params).await?;
21 Ok(())
22}
23

Eliminar resultado de pregunta Internal Link

Parámetros

Name Type Required Description
tenant_id String
id String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de delete_question_result
Copy Copy
1
2async fn run_delete() -> Result<(), Error> {
3 let params: DeleteQuestionResultParams = DeleteQuestionResultParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "news/article/12345/question/67890".to_string(),
6 dry_run: Some(false),
7 request_id: Some("req-20260112-7a3b".to_string()),
8 };
9 let response: FlagCommentPublic200Response = delete_question_result(&configuration, params).await?;
10 Ok(())
11}
12

Obtener resultado de pregunta Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: GetQuestionResult200Response

Ejemplo

Ejemplo de get_question_result
Copy Copy
1
2async fn run() -> Result<GetQuestionResult200Response, Error> {
3 let include_metadata: Option<bool> = Some(true);
4 let params: GetQuestionResultParams = GetQuestionResultParams {
5 tenant_id: "acme-corp-tenant".to_string(),
6 id: "news/article/2026/12345".to_string(),
7 };
8 let response: GetQuestionResult200Response = get_question_result(&configuration, params).await?;
9 Ok(response)
10}
11

Obtener resultados de preguntas Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
url_id String No
user_id String No
start_date String No
question_id String No
question_ids String No
skip f64 No

Respuesta

Devuelve: GetQuestionResults200Response

Ejemplo

get_question_results Ejemplo
Copy Copy
1
2async fn example_get_question_results() -> Result<(), Error> {
3 let params = GetQuestionResultsParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 url_id: Some(String::from("news/article/2026/01/12/breaking")),
6 user_id: Some(String::from("user-98765")),
7 start_date: Some(String::from("2025-12-01")),
8 question_id: Some(String::from("q-42")),
9 question_ids: Some(String::from("q-42,q-43")),
10 skip: Some(10.0),
11 };
12 let results: GetQuestionResults200Response = get_question_results(&configuration, params).await?;
13 Ok(())
14}
15

Actualizar resultado de pregunta Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
update_question_result_body models::UpdateQuestionResultBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_question_result
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let body: models::UpdateQuestionResultBody = models::UpdateQuestionResultBody {
4 question_id: "q-12345".to_string(),
5 result: true,
6 comment: Some("Marked by moderator after review".to_string()),
7 };
8
9 let params: UpdateQuestionResultParams = UpdateQuestionResultParams {
10 tenant_id: "acme-corp-tenant".to_string(),
11 id: "news/article/98765".to_string(),
12 update_question_result_body: body,
13 };
14
15 let response: FlagCommentPublic200Response = update_question_result(&configuration, params).await?;
16 println!("{:#?}", response);
17 Ok(())
18}
19

Agregación de resultados de preguntas Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
question_id String No
question_ids Vec No
url_id String No
time_bucket models::AggregateTimeBucket No
start_date String No
force_recalculate bool No

Respuesta

Devuelve: AggregateQuestionResults200Response


Agregación masiva de resultados de preguntas Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
bulk_aggregate_question_results_request models::BulkAggregateQuestionResultsRequest
force_recalculate bool No

Respuesta

Devuelve: BulkAggregateQuestionResults200Response


Combinar comentarios con resultados de preguntas Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
question_id String No
question_ids Vec No
url_id String No
start_date String No
force_recalculate bool No
min_value f64 No
max_value f64 No
limit f64 No

Respuesta

Devuelve: CombineCommentsWithQuestionResults200Response


Agregar usuario SSO Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
create_apisso_user_data models::CreateApissoUserData

Respuesta

Devuelve: AddSsoUserApiResponse


Eliminar usuario SSO Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
delete_comments bool No
comment_delete_mode String No

Respuesta

Devuelve: DeleteSsoUserApiResponse


Obtener usuario SSO por correo electrónico Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
email String

Respuesta

Devuelve: GetSsoUserByEmailApiResponse


Obtener usuario SSO por ID Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String

Respuesta

Devuelve: GetSsoUserByIdApiResponse


Obtener usuarios SSO Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
skip i32 No

Respuesta

Devuelve: GetSsoUsers200Response


Modificar usuario SSO parcialmente Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
update_apisso_user_data models::UpdateApissoUserData
update_comments bool No

Respuesta

Devuelve: PatchSsoUserApiResponse


Reemplazar usuario SSO Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
update_apisso_user_data models::UpdateApissoUserData
update_comments bool No

Respuesta

Devuelve: PutSsoUserApiResponse


Crear suscripción Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
create_api_user_subscription_data models::CreateApiUserSubscriptionData

Respuesta

Devuelve: CreateSubscriptionApiResponse


Eliminar suscripción Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
user_id String No

Respuesta

Devuelve: DeleteSubscriptionApiResponse


Obtener suscripciones Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
user_id String No

Respuesta

Devuelve: GetSubscriptionsApiResponse


Obtener usos diarios del inquilino Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
year_number f64 No
month_number f64 No
day_number f64 No
skip f64 No

Respuesta

Devuelve: GetTenantDailyUsages200Response

Ejemplo

Ejemplo de get_tenant_daily_usages
Copy Copy
1
2async fn example() -> Result<GetTenantDailyUsages200Response, Error> {
3 let params: GetTenantDailyUsagesParams = GetTenantDailyUsagesParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 year_number: Some(2024.0),
6 month_number: Some(9.0),
7 day_number: Some(15.0),
8 skip: Some(0.0),
9 };
10 let response: GetTenantDailyUsages200Response = get_tenant_daily_usages(&configuration, params).await?;
11 Ok(response)
12}
13

Crear paquete del inquilino Internal Link

Parámetros

Name Type Required Description
tenant_id String
create_tenant_package_body models::CreateTenantPackageBody

Respuesta

Devuelve: CreateTenantPackage200Response

Ejemplo

Ejemplo de create_tenant_package
Copy Copy
1
2async fn run_create_package() -> Result<(), Error> {
3 let params: CreateTenantPackageParams = CreateTenantPackageParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 create_tenant_package_body: models::CreateTenantPackageBody {
6 name: "Acme News Package".to_string(),
7 description: Some("Moderated comments for Acme News articles".to_string()),
8 plan: Some("standard".to_string()),
9 allow_gifs: Some(true),
10 gif_rating: Some(GifRating::GeneralAudience),
11 image_content_profanity_level: Some(ImageContentProfanityLevel::Moderate),
12 sso_security_level: Some(SsoSecurityLevel::Strict),
13 custom_config: Some(CustomConfigParameters {
14 max_comment_length: Some(1000),
15 require_moderation: Some(true),
16 }),
17 },
18 };
19 let response: CreateTenantPackage200Response = create_tenant_package(&configuration, params).await?;
20 let _package: TenantPackage = response.0;
21 Ok(())
22}
23

Eliminar paquete del inquilino Internal Link

Parámetros

Name Type Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de delete_tenant_package
Copy Copy
1
2let params: DeleteTenantPackageParams = DeleteTenantPackageParams {
3 tenant_id: "acme-corp-tenant".to_string(),
4 id: "pkg-news-comments-2025-01".to_string(),
5 cascade: Some(true),
6};
7let response: FlagCommentPublic200Response = delete_tenant_package(&configuration, params).await?;
8

Obtener paquete del inquilino Internal Link

Parámetros

Name Type Required Description
tenant_id String
id String

Respuesta

Devuelve: GetTenantPackage200Response

Ejemplo

Ejemplo de get_tenant_package
Copy Copy
1
2async fn example_get_tenant_package(configuration: &configuration::Configuration) -> Result<GetTenantPackage200Response, Error> {
3 let params: GetTenantPackageParams = GetTenantPackageParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "premium-plan".to_string(),
6 include_details: Some(true),
7 };
8 let package: GetTenantPackage200Response = get_tenant_package(configuration, params).await?;
9 Ok(package)
10}
11

Obtener paquetes del inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
skip f64 No

Respuesta

Devuelve: GetTenantPackages200Response

Ejemplo

Ejemplo de get_tenant_packages
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: GetTenantPackagesParams = GetTenantPackagesParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 skip: Some(20.0),
6 };
7 let _packages: GetTenantPackages200Response = get_tenant_packages(&configuration, params).await?;
8 Ok(())
9}
10

Reemplazar paquete del inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
replace_tenant_package_body models::ReplaceTenantPackageBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de replace_tenant_package
Copy Copy
1
2async fn run_replace_package() -> Result<FlagCommentPublic200Response, Error> {
3 let params: ReplaceTenantPackageParams = ReplaceTenantPackageParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "package-basic-2026".to_string(),
6 replace_tenant_package_body: models::ReplaceTenantPackageBody {
7 name: "Moderation Basic".to_string(),
8 description: Some("Standard moderation package for news sites".to_string()),
9 enabled: Some(true),
10 plan: Some("standard".to_string()),
11 custom_config_parameters: Some(models::CustomConfigParameters {
12 max_comment_length: Some(1000),
13 allow_images: Some(true),
14 }),
15 vote_style: Some(models::VoteStyle::Thumbs),
16 },
17 };
18 let response = replace_tenant_package(&configuration, params).await?;
19 Ok(response)
20}
21

Actualizar paquete del inquilino Internal Link

Parámetros

Name Type Required Description
tenant_id String Yes
id String Yes
update_tenant_package_body models::UpdateTenantPackageBody Yes

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_tenant_package
Copy Copy
1
2async fn example_update_tenant_package() -> Result<FlagCommentPublic200Response, Error> {
3 let params: UpdateTenantPackageParams = UpdateTenantPackageParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "pro-plan-2026".to_string(),
6 update_tenant_package_body: models::UpdateTenantPackageBody {
7 name: Some("Pro Plan".to_string()),
8 description: Some("Priority support, custom branding, and advanced moderation tools".to_string()),
9 enabled: Some(true),
10 monthly_price_cents: Some(1999),
11 features: Some(vec![
12 "priority_support".to_string(),
13 "custom_branding".to_string(),
14 "advanced_moderation".to_string(),
15 ]),
16 },
17 };
18
19 let response: FlagCommentPublic200Response = update_tenant_package(&configuration, params).await?;
20 Ok(response)
21}
22

Crear usuario del inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String Yes
create_tenant_user_body models::CreateTenantUserBody Yes

Respuesta

Devuelve: CreateTenantUser200Response

Ejemplo

create_tenant_user Ejemplo
Copy Copy
1
2let create_tenant_user_body: models::CreateTenantUserBody = models::CreateTenantUserBody {
3 email: "jane.doe@acme.com".to_string(),
4 display_name: Some("Jane Doe".to_string()),
5 role: Some("moderator".to_string()),
6 external_id: Some("acme-12345".to_string()),
7 subscribed_to_digest: Some(false),
8};
9let params: CreateTenantUserParams = CreateTenantUserParams {
10 tenant_id: "acme-corp-tenant".to_string(),
11 create_tenant_user_body,
12};
13let response: CreateTenantUser200Response = create_tenant_user(&configuration, params).await?;
14

Eliminar usuario del inquilino Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
delete_comments String No
comment_delete_mode String No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de delete_tenant_user
Copy Copy
1
2async fn run() -> Result<FlagCommentPublic200Response, Error> {
3 let params: DeleteTenantUserParams = DeleteTenantUserParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "user-12345".to_string(),
6 delete_comments: Some("true".to_string()),
7 comment_delete_mode: Some("cascade".to_string()),
8 };
9 let resp: FlagCommentPublic200Response = delete_tenant_user(&configuration, params).await?;
10 Ok(resp)
11}
12

Obtener usuario del inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: GetTenantUser200Response

Ejemplo

Ejemplo de get_tenant_user
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: GetTenantUserParams = GetTenantUserParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "user-7a3f2b".to_string(),
6 };
7 let include_related: Option<String> = Some("roles,preferences".to_string());
8 let response: GetTenantUser200Response = get_tenant_user(&configuration, params).await?;
9 Ok(())
10}
11

Obtener usuarios del inquilino Internal Link

Parámetros

Name Type Required Description
tenant_id String
skip f64 No

Respuesta

Devuelve: GetTenantUsers200Response

Ejemplo

Ejemplo de get_tenant_users
Copy Copy
1
2async fn fetch_tenant_users() -> Result<GetTenantUsers200Response, Error> {
3 let params: GetTenantUsersParams = GetTenantUsersParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 skip: Some(10.0),
6 };
7 let response: GetTenantUsers200Response = get_tenant_users(&configuration, params).await?;
8 Ok(response)
9}
10

Reemplazar usuario del inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
replace_tenant_user_body models::ReplaceTenantUserBody
update_comments String No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de replace_tenant_user
Copy Copy
1
2let cfg: &configuration::Configuration = &configuration;
3let replace_tenant_user_body: models::ReplaceTenantUserBody = models::ReplaceTenantUserBody {
4 external_id: Some("acct-834".to_string()),
5 email: Some("jane.doe@acme-news.com".to_string()),
6 display_name: Some("Jane Doe".to_string()),
7 role: Some("moderator".to_string()),
8};
9let params: ReplaceTenantUserParams = ReplaceTenantUserParams {
10 tenant_id: "acme-corp-tenant".to_string(),
11 id: "user-834".to_string(),
12 replace_tenant_user_body,
13 update_comments: Some("true".to_string()),
14};
15let resp: FlagCommentPublic200Response = replace_tenant_user(cfg, params).await?;
16

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
redirect_url String No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de send_login_link
Copy Copy
1
2async fn example_send_login_link() -> Result<FlagCommentPublic200Response, Error> {
3 let params: SendLoginLinkParams = SendLoginLinkParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "jane.doe@acme.com".to_string(),
6 redirect_url: Some("https://acme.example.com/dashboard".to_string()),
7 };
8 let response: FlagCommentPublic200Response = send_login_link(&configuration, params).await?;
9 Ok(response)
10}
11

Actualizar usuario del inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
update_tenant_user_body models::UpdateTenantUserBody
update_comments String No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_tenant_user
Copy Copy
1
2async fn update_user_example(configuration: &configuration::Configuration) -> Result<(), Error> {
3 let params: UpdateTenantUserParams = UpdateTenantUserParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "user-78b2".to_string(),
6 update_tenant_user_body: models::UpdateTenantUserBody {
7 username: "jdoe".to_string(),
8 display_name: "John Doe".to_string(),
9 email: "john.doe@acme.com".to_string(),
10 roles: vec!["moderator".to_string()],
11 suspended: false,
12 },
13 update_comments: Some("Promoted to moderator for community moderation".to_string()),
14 };
15 let response: FlagCommentPublic200Response = update_tenant_user(configuration, params).await?;
16 println!("updated user response status: {:?}", response);
17 Ok(())
18}
19

Crear inquilino Internal Link

Parámetros

Name Type Requerido Descripción
tenant_id String
create_tenant_body models::CreateTenantBody

Respuesta

Devuelve: CreateTenant200Response

Ejemplo

Ejemplo de create_tenant
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: CreateTenantParams = CreateTenantParams {
4 tenant_id: "acme-news-tenant".to_string(),
5 create_tenant_body: models::CreateTenantBody {
6 name: "Acme News".to_string(),
7 domain: Some("news.acme.com".to_string()),
8 api_domain_configuration: Some(models::ApiDomainConfiguration {
9 domain: "api.news.acme.com".to_string(),
10 enforce_https: true,
11 }),
12 billing_info: Some(models::BillingInfo {
13 contact_email: "billing@acme.com".to_string(),
14 plan_id: "pro_monthly".to_string(),
15 }),
16 imported_site_type: Some(models::ImportedSiteType::Articles),
17 ..Default::default()
18 },
19 };
20
21 let created: CreateTenant200Response = create_tenant(&configuration, params).await?;
22 Ok(())
23}
24

Eliminar inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
sure String No

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

delete_tenant Ejemplo
Copy Copy
1
2async fn example_delete_tenant() -> Result<FlagCommentPublic200Response, Error> {
3 let params: DeleteTenantParams = DeleteTenantParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "news/article-12345".to_string(),
6 sure: Some("confirm".to_string()),
7 };
8 let response: FlagCommentPublic200Response = delete_tenant(&configuration, params).await?;
9 Ok(response)
10}
11

Obtener inquilino Internal Link

Parámetros

Name Type Required Description
tenant_id String
id String

Respuesta

Devuelve: GetTenant200Response

Ejemplo

Ejemplo de get_tenant
Copy Copy
1
2async fn run_get_tenant() -> Result<(), Error> {
3 let params: GetTenantParams = GetTenantParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 id: String::from("news/article"),
6 };
7 let include_metadata: Option<bool> = Some(true);
8 let tenant_response: GetTenant200Response = get_tenant(&configuration, params).await?;
9 Ok(())
10}
11

Obtener inquilinos Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
meta String No
skip f64 No

Respuesta

Devuelve: GetTenants200Response

Ejemplo

Ejemplo de get_tenants
Copy Copy
1
2async fn run() -> Result<(), Error> {
3 let params: GetTenantsParams = GetTenantsParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 meta: Some(String::from("include=domains,settings")),
6 skip: Some(10.0),
7 };
8 let response: GetTenants200Response = get_tenants(&configuration, params).await?;
9 Ok(())
10}
11

Actualizar inquilino Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
update_tenant_body models::UpdateTenantBody

Respuesta

Devuelve: FlagCommentPublic200Response

Ejemplo

Ejemplo de update_tenant
Copy Copy
1
2async fn run_update_tenant() -> Result<FlagCommentPublic200Response, Error> {
3 let params: UpdateTenantParams = UpdateTenantParams {
4 tenant_id: "acme-corp-tenant".to_owned(),
5 id: "site-42".to_owned(),
6 update_tenant_body: models::UpdateTenantBody {
7 name: Some("Acme Corporation".to_string()),
8 default_site: Some("news/article".to_string()),
9 allowed_origins: Some(vec![
10 "https://www.acme.com".to_string(),
11 "https://blog.acme.com".to_string(),
12 ]),
13 invite_only: Some(false),
14 api_domain_configuration: Some(ApiDomainConfiguration {
15 domain: "comments.acme.com".to_string(),
16 secure: Some(true),
17 ..Default::default()
18 }),
19 ..Default::default()
20 },
21 };
22 let response: FlagCommentPublic200Response = update_tenant(&configuration, params).await?;
23 Ok(response)
24}
25

Subir imagen Internal Link


Subir y redimensionar una imagen

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
file std::path::PathBuf
size_preset models::SizePreset No
url_id String No

Respuesta

Devuelve: UploadImageResponse


Obtener progreso de insignia de usuario por ID Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: GetUserBadgeProgressById200Response


Obtener progreso de insignia de usuario por ID de usuario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
user_id String

Respuesta

Devuelve: GetUserBadgeProgressById200Response


Obtener lista de progreso de insignias de usuario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
user_id String No
limit f64 No
skip f64 No

Respuesta

Devuelve: GetUserBadgeProgressList200Response


Crear insignia de usuario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
create_user_badge_params models::CreateUserBadgeParams

Respuesta

Devuelve: CreateUserBadge200Response


Eliminar insignia de usuario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: UpdateUserBadge200Response


Obtener insignia de usuario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String

Respuesta

Devuelve: GetUserBadge200Response


Obtener insignias de usuario Internal Link


Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
user_id String No
badge_id String No
displayed_on_comments bool No
limit f64 No
skip f64 No

Respuesta

Devuelve: GetUserBadges200Response


Actualizar insignia de usuario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String
update_user_badge_params models::UpdateUserBadgeParams

Respuesta

Devuelve: UpdateUserBadge200Response


Obtener contador de notificaciones del usuario Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
sso String No

Respuesta

Devuelve: GetUserNotificationCount200Response


Obtener notificaciones del usuario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
page_size i32 No
after_id String No
include_context bool No
after_created_at i64 No
unread_only bool No
dm_only bool No
no_dm bool No
include_translations bool No
sso String No

Respuesta

Devuelve: GetUserNotifications200Response


Restablecer contador de notificaciones del usuario Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
sso String No

Respuesta

Devuelve: ResetUserNotifications200Response


Restablecer notificaciones del usuario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
after_id String No
after_created_at i64 No
unread_only bool No
dm_only bool No
no_dm bool No
sso String No

Respuesta

Devuelve: ResetUserNotifications200Response


Actualizar estado de suscripción a comentarios (notificaciones de usuario) Internal Link


Habilitar o deshabilitar notificaciones para un comentario específico.

Parámetros

Nombre Type Requerido Descripción
tenant_id String
notification_id String
opted_in_or_out String
comment_id String
sso String No

Respuesta

Devuelve: UpdateUserNotificationStatus200Response


Actualizar estado de suscripción a páginas (notificaciones de usuario) Internal Link

Habilitar o deshabilitar las notificaciones para una página. Cuando los usuarios están suscritos a una página, se crean notificaciones para nuevos comentarios raíz, y también

Parámetros

Name Type Required Description
tenant_id String
url_id String
url String
page_title String
subscribed_or_unsubscribed String
sso String No

Respuesta

Devuelve: UpdateUserNotificationStatus200Response


Actualizar estado de notificación de usuario Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
notification_id String
new_status String
sso String No

Respuesta

Devuelve: UpdateUserNotificationStatus200Response


Obtener estados de presencia de usuario Internal Link


Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
url_id_ws String
user_ids String

Respuesta

Devuelve: GetUserPresenceStatuses200Response


Buscar usuarios Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
url_id String
username_starts_with String
mention_group_ids Vec No
sso String No

Respuesta

Devuelve: SearchUsers200Response


Obtener usuario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
id String

Respuesta

Devuelve: GetUser200Response

Ejemplo

Ejemplo de get_user
Copy Copy
1
2async fn run_get_user() -> Result<(), Error> {
3 let maybe_id: Option<String> = Some("user-6412".to_owned());
4 let params: GetUserParams = GetUserParams {
5 tenant_id: "acme-corp-tenant".to_owned(),
6 id: maybe_id.unwrap(),
7 };
8 let user_response: GetUser200Response = get_user(&configuration, params).await?;
9 println!("{:#?}", user_response);
10 Ok(())
11}
12

Crear voto Internal Link

Parameters

Nombre Tipo Requerido Descripción
tenant_id String
comment_id String
direction String
user_id String No
anon_user_id String No

Respuesta

Devuelve: VoteComment200Response

Ejemplo

create_vote Ejemplo
Copy Copy
1
2async fn run_vote() -> Result<VoteComment200Response, Error> {
3 let params: CreateVoteParams = CreateVoteParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 comment_id: "news/2026/01/12/local-election-12345".to_string(),
6 direction: "up".to_string(),
7 user_id: Some("user_9876".to_string()),
8 anon_user_id: None,
9 };
10 let response: VoteComment200Response = create_vote(&configuration, params).await?;
11 Ok(response)
12}
13

Eliminar voto Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
id String
edit_key String No

Respuesta

Devuelve: DeleteCommentVote200Response

Ejemplo

Ejemplo de delete_vote
Copy Copy
1
2async fn run_delete_vote() -> Result<(), Error> {
3 let params: DeleteVoteParams = DeleteVoteParams {
4 tenant_id: "acme-corp-tenant".to_string(),
5 id: "news/article/67890/comment/12345".to_string(),
6 edit_key: Some("user-editkey-7f3b".to_string()),
7 };
8 let response: DeleteCommentVote200Response = delete_vote(&configuration, params).await?;
9 Ok(())
10}
11

Obtener votos Internal Link

Parámetros

Nombre Tipo Requerido Descripción
tenant_id String
url_id String

Respuesta

Devuelve: GetVotes200Response

Ejemplo

Ejemplo de get_votes
Copy Copy
1
2async fn fetch_votes_example() -> Result<(), Error> {
3 let params: GetVotesParams = GetVotesParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 url_id: String::from("news/article/2026-01-12/housing-market"),
6 };
7 let votes: GetVotes200Response = get_votes(&configuration, params).await?;
8 let _ = votes;
9 Ok(())
10}
11

Obtener votos del usuario Internal Link

Parámetros

Nombre Tipo Obligatorio Descripción
tenant_id String
url_id String
user_id String No
anon_user_id String No

Respuesta

Devuelve: GetVotesForUser200Response

Ejemplo

Ejemplo de get_votes_for_user
Copy Copy
1
2async fn fetch_votes() -> Result<GetVotesForUser200Response, Error> {
3 let params = GetVotesForUserParams {
4 tenant_id: String::from("acme-corp-tenant"),
5 url_id: String::from("news/2026/01/12/breaking-tech"),
6 user_id: Some(String::from("user-78a3")),
7 anon_user_id: Some(String::from("anon-4f2b")),
8 };
9 let response: GetVotesForUser200Response = get_votes_for_user(&configuration, params).await?;
10 Ok(response)
11}
12

¿Necesita ayuda?

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

Contribuciones

¡Las contribuciones son bienvenidas! Por favor visite el repositorio de GitHub para las directrices de contribución.