From 4a557c1050301a4181b8464d91c1f1bd2e4cff42 Mon Sep 17 00:00:00 2001 From: Charlie Hopkins-Brinicombe Date: Fri, 2 Oct 2026 14:01:31 +0100 Subject: [PATCH 1/2] Docs for resetting streaks --- admin-api/endpoints/streaks/reset-streaks.mdx | 10 + docs.json | 6 +- .../endpoints/streaks/reset-streaks.mdx | 10 + es/features/streaks.mdx | 132 ++++--- es/mcp/account-mcp-server/capabilities.mdx | 96 ++--- es/mcp/account-mcp-server/introduction.mdx | 39 +- features/streaks.mdx | 12 + i18n.lock | 72 ++-- mcp/account-mcp-server/capabilities.mdx | 8 +- openapi/admin.json | 362 +++++++++++++++++- openapi/application.json | 10 +- 11 files changed, 593 insertions(+), 164 deletions(-) create mode 100644 admin-api/endpoints/streaks/reset-streaks.mdx create mode 100644 es/admin-api/endpoints/streaks/reset-streaks.mdx diff --git a/admin-api/endpoints/streaks/reset-streaks.mdx b/admin-api/endpoints/streaks/reset-streaks.mdx new file mode 100644 index 0000000..1629df2 --- /dev/null +++ b/admin-api/endpoints/streaks/reset-streaks.mdx @@ -0,0 +1,10 @@ +--- +title: Reset streaks to zero for multiple users +openapi: "/openapi/admin.json POST /streaks/reset" +--- + +import { RateLimitBadge } from "../../../components/rate-limit-badge.jsx"; + +**Rate Limits** + + diff --git a/docs.json b/docs.json index b8e756f..904a33b 100644 --- a/docs.json +++ b/docs.json @@ -282,7 +282,8 @@ "admin-api/endpoints/streaks/grant-freezes", "admin-api/endpoints/streaks/create-pauses", "admin-api/endpoints/streaks/delete-pauses", - "admin-api/endpoints/streaks/restore-streaks" + "admin-api/endpoints/streaks/restore-streaks", + "admin-api/endpoints/streaks/reset-streaks" ] }, { @@ -697,7 +698,8 @@ "es/admin-api/endpoints/streaks/grant-freezes", "es/admin-api/endpoints/streaks/create-pauses", "es/admin-api/endpoints/streaks/delete-pauses", - "es/admin-api/endpoints/streaks/restore-streaks" + "es/admin-api/endpoints/streaks/restore-streaks", + "es/admin-api/endpoints/streaks/reset-streaks" ] }, { diff --git a/es/admin-api/endpoints/streaks/reset-streaks.mdx b/es/admin-api/endpoints/streaks/reset-streaks.mdx new file mode 100644 index 0000000..1ec4090 --- /dev/null +++ b/es/admin-api/endpoints/streaks/reset-streaks.mdx @@ -0,0 +1,10 @@ +--- +title: Restablecer las Rachas a cero para varios usuarios +openapi: /openapi/admin.json POST /streaks/reset +--- + +import { RateLimitBadge } from "../../../components/rate-limit-badge.jsx"; + +**Límites de velocidad** + + diff --git a/es/features/streaks.mdx b/es/features/streaks.mdx index 7636881..c96fde5 100644 --- a/es/features/streaks.mdx +++ b/es/features/streaks.mdx @@ -2,31 +2,31 @@ title: Rachas description: Aprende a usar rachas en una experiencia de producto gamificada con Trophy. og:description: Usa rachas diarias, semanales o mensuales para crear patrones de - uso habitual y mantener a los usuarios regresando a tu aplicación. + uso habituales y lograr que los usuarios vuelvan a tu app. icon: flame --- import MetricChangeResponseBlock from "../../snippets/metric-change-response-block.mdx"; -## ¿Qué son las Rachas? {#what-are-streaks} +## ¿Qué son las rachas? {#what-are-streaks} -Una racha es un período de días, semanas o meses consecutivos en el que un usuario ha realizado una acción clave en tu plataforma. Se ha demostrado que las rachas aumentan significativamente la retención, especialmente cuando la acción del usuario que se rastrea se alinea con el valor central de tu producto. +Una racha es un período de días, semanas o meses consecutivos en los que un usuario ha realizado una acción clave en tu plataforma. Se ha demostrado que las rachas aumentan de forma significativa la retención, en especial cuando la acción del usuario que se mide se alinea con el valor central de tu producto. -## Frecuencia de Racha {#streak-frequency} +## Frecuencia de la racha {#streak-frequency} -Las rachas en Trophy pueden ser **diarias, semanales o mensuales**. Esto significa que un usuario debe cumplir sus [condiciones de racha](#streak-conditions) al menos una vez cada día, semana o mes calendario para mantener su racha. +Las rachas en Trophy pueden ser **diarias, semanales o mensuales**. Esto significa que un usuario debe cumplir sus [condiciones de racha](#streak-conditions) al menos una vez cada día, semana o mes natural para mantener su racha. -Si has [configurado zonas horarias](/es/features/users#param-tz) para tus usuarios, Trophy rastreará automáticamente la racha de cada usuario en su zona horaria local (incluyendo cuando los usuarios cambian de zona horaria) y mantendrá las rachas intactas. +Si has [configurado zonas horarias](/es/features/users#param-tz) para tus usuarios, Trophy hará un seguimiento automático de la racha de cada usuario en su zona horaria local (incluso cuando cambien de zona horaria) y mantendrá las rachas intactas. -Trophy calcula automáticamente los datos de racha para cada frecuencia de racha, lo que significa que puedes cambiar en cualquier momento. +Trophy calcula automáticamente los datos de racha para cada frecuencia de racha, por lo que puedes cambiar de frecuencia en cualquier momento. -## Condiciones de Racha {#streak-conditions} +## Condiciones de la racha {#streak-conditions} -En Trophy puedes establecer los umbrales que un usuario debe cumplir para extender su racha basándote en tus [Métricas](/es/features/metrics) configuradas. +En Trophy puedes definir los umbrales que un usuario debe alcanzar para extender su racha según tus [Métricas](/es/features/metrics) configuradas. -Puedes elegir qué métricas deben ser parte de tu racha y, para las que elijas, puedes establecer un umbral personalizado que los usuarios deben cumplir. +Puedes elegir qué métricas forman parte de tu racha y, para las que elijas, establecer un umbral personalizado que los usuarios deben alcanzar. Al combinar métricas, puedes elegir entre dos modos de evaluación: -- `ALL` significa que un usuario debe cumplir cada umbral de métrica para extender su racha -- `OR` significa que un usuario solo tiene que cumplir uno de tus umbrales de métrica para extender su racha +- `ALL` significa que un usuario debe alcanzar todos los umbrales de las métricas para extender su racha +- `OR` significa que un usuario solo tiene que alcanzar uno de los umbrales de las métricas para extender su racha -De esta manera puedes diseñar tu lógica de racha para que coincida con el caso de uso de tu aplicación. +De este modo, puedes diseñar la lógica de tu racha para que se ajuste al caso de uso de tu aplicación. -### Días Libres {#days-off} +### Días libres {#days-off} -Para rachas diarias, puedes marcar días específicos de la semana como días libres en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy. Esos días no cuentan para la racha: los usuarios aún pueden extender su racha si están activos, pero perder un día libre no la romperá. +Para las rachas diarias, puedes marcar días concretos de la semana como días libres en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy. Esos días no cuentan para la racha: los usuarios pueden seguir ampliando su racha si están activos, pero si no hacen actividad en un día libre, la racha no se rompe. -Las congelaciones de racha son diferentes de las [pausas de racha](#streak-pauses) en que las congelaciones permiten a los usuarios perder un número determinado de períodos sin romper su racha, independientemente del motivo, mientras que las pausas de racha protegen específicamente una racha durante un rango de fechas conocido y predefinido, como unas vacaciones o descanso programado. Las congelaciones se consumen automáticamente cuando el usuario pierde una actividad requerida, mientras que las pausas se crean manualmente con anticipación para cubrir ausencias planificadas. +Las congelaciones de racha se diferencian de las [pausas de racha](#streak-pauses) en que las congelaciones permiten a los usuarios omitir un número determinado de períodos sin romper su racha, independientemente del motivo, mientras que las pausas de racha protegen una racha específicamente durante un intervalo de fechas conocido y predefinido, como unas vacaciones o un descanso programados. Las congelaciones se consumen automáticamente cuando el usuario no realiza una actividad requerida, mientras que las pausas se crean manualmente con antelación para cubrir ausencias planificadas. -### Concesión de congelamientos {#granting-freezes} +### Otorgar congelaciones {#granting-freezes} -Puede configurar cualquier número de congelamientos arbitrarios para otorgar a los nuevos usuarios cuando los identifique por primera vez con Trophy. Para configurar esto, habilite las concesiones de congelamiento y establezca el recuento inicial de congelamientos en la página de rachas del panel de Trophy. +Puedes configurar cualquier cantidad de congelaciones para otorgarlas a los nuevos usuarios cuando los identifiques por primera vez con Trophy. Para configurarlo, activa la concesión de congelaciones y define el número inicial de congelaciones en la página de rachas del panel de Trophy. -Trophy también puede otorgar automáticamente congelamientos de racha a los usuarios con el tiempo. Puede elegir un número arbitrario de días durante los cuales otorgar un número arbitrario de congelamientos a cada usuario. +Trophy también puede otorgar congelaciones de racha a los usuarios de forma automática con el tiempo. Puedes elegir el número de días durante los cuales se otorgará a cada usuario la cantidad de congelaciones que prefieras. -Para configurar esto, establezca el número de días durante los cuales otorgar congelamientos y el número de congelamientos a otorgar en la página de rachas del panel de Trophy. Aquí también puede establecer el número máximo de congelamientos que cada usuario puede tener, hasta un límite de 100. +Para configurarlo, define en la página de rachas del panel de Trophy el número de días durante los cuales se otorgarán las congelaciones y la cantidad de congelaciones que se otorgarán. Aquí también puedes establecer el número máximo de congelaciones que puede tener cada usuario, con un límite de 100. -Si ha configurado zonas horarias para sus usuarios, Trophy consumirá automáticamente los congelamientos a medianoche en la zona horaria del usuario cuando sea necesario para extender su racha, y si se deben otorgar nuevos congelamientos a un usuario, se otorgarán hasta diez minutos después. +Si has configurado zonas horarias para tus usuarios, Trophy consumirá automáticamente las congelaciones a medianoche en la zona horaria del usuario cuando sea necesario para extender su racha. Si corresponde otorgar nuevas congelaciones a un usuario, se le otorgarán hasta diez minutos después. ## Pausas de racha {#streak-pauses} -Las pausas de racha protegen la racha de un usuario durante un rango de fechas conocido, como unas vacaciones u otro descanso planificado. Mientras una pausa cubre un período, Trophy mantiene la duración de la racha del usuario en lugar de finalizar la racha si no cumple con sus [condiciones de racha](#streak-conditions). +Las pausas de racha protegen la racha de un usuario durante un intervalo de fechas conocido, como unas vacaciones u otro descanso planificado. Mientras una pausa cubre un período, Trophy mantiene la longitud de la racha del usuario en lugar de finalizarla si no cumple sus [condiciones de racha](#streak-conditions). -Las pausas de racha son diferentes de los [congelamientos de racha](#streak-freezes) en que las pausas protegen específicamente la racha de un usuario durante un rango de fechas conocido y predefinido, como unas vacaciones programadas o un descanso, mientras que los congelamientos permiten a los usuarios perder un número establecido de días (o períodos) sin romper su racha, independientemente del motivo. Las pausas se crean manualmente con anticipación para cubrir ausencias planificadas, mientras que los congelamientos se consumen automáticamente cuando el usuario pierde una actividad requerida. +Las pausas de racha se diferencian de las [congelaciones de racha](#streak-freezes) en que las pausas protegen específicamente la racha de un usuario durante un intervalo de fechas conocido y predefinido, como unas vacaciones o un descanso programado, mientras que las congelaciones permiten a los usuarios omitir un número determinado de días (o períodos) sin perder su racha, sin importar el motivo. Las pausas se crean manualmente con antelación para cubrir ausencias planificadas, mientras que las congelaciones se consumen automáticamente cuando el usuario no realiza una actividad requerida. -### Crear pausas {#creating-pauses} +### Creación de pausas {#creating-pauses} -Crea pausas con la [API de administración para crear pausas de rachas](/es/admin-api/endpoints/streaks/create-pauses). Puedes crear pausas para hasta 100 usuarios en una única solicitud. +Crea pausas con la [API de administración para crear pausas de rachas](/es/admin-api/endpoints/streaks/create-pauses). Puedes crear pausas para hasta 100 usuarios en una sola solicitud. Cada pausa requiere: -- `userId`: el usuario para el que crear una pausa +- `userId`: el usuario para el que se crea la pausa - `start`: la primera fecha que cubre la pausa - `end`: la última fecha que cubre la pausa -Las fechas de inicio en el pasado son rechazadas. Si has [configurado zonas horarias](/es/features/users#param-tz) para tus usuarios, Trophy evalúa `start` contra el día de hoy en la zona horaria local de cada usuario. +Se rechazan las fechas de inicio en el pasado. Si has [configurado zonas horarias](/es/features/users#param-tz) para tus usuarios, Trophy evalúa `start` respecto a la fecha actual en la zona horaria local de cada usuario. -### Eliminar pausas {#deleting-pauses} +### Eliminación de pausas {#deleting-pauses} -Para evitar que una pausa se aplique, elimínala con la [API de administración para eliminar pausas de rachas](/es/admin-api/endpoints/streaks/delete-pauses). +Para evitar que se aplique una pausa, elimínala con la [API de administración para eliminar pausas de rachas](/es/admin-api/endpoints/streaks/delete-pauses). -### Leer pausas {#reading-pauses} +### Lectura de pausas {#reading-pauses} -La [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-streak) devuelve las pausas próximas y actualmente activas en el campo `pauses`. Las pausas pasadas y eliminadas se omiten. +La [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-streak) devuelve las pausas próximas y las activas en el campo `pauses`. Se omiten las pausas pasadas y las eliminadas. -Cada período en `streakHistory` incluye `usedPause`, que es `true` cuando la racha del usuario estuvo en pausa durante ese período. +Cada período de `streakHistory` incluye `usedPause`, que es `true` cuando la racha del usuario estuvo en pausa durante ese período. ## Seguimiento de rachas {#tracking-streaks} -Trophy calcula automáticamente las rachas para todos los usuarios según los [eventos de métricas](/es/features/events#tracking-metric-events) que reportes a Trophy. +Trophy calcula automáticamente las rachas de todos los usuarios a partir de los [eventos de métricas](/es/features/events#tracking-metric-events) que reportas a Trophy. -No se requiere trabajo adicional para hacer seguimiento de las rachas, y puedes comenzar a usarlas de inmediato. Solo asegúrate de que las rachas estén habilitadas en el panel de Trophy. +No se requiere trabajo adicional para hacer el seguimiento de las rachas y puedes empezar a usarlas de inmediato. Solo asegúrate de que las rachas estén activadas en el panel de Trophy. -También puedes leer y actualizar la configuración de rachas de la organización — frecuencia, modo de evaluación, métricas, días libres, personalización y congelamientos — con la [API de administración de configuración de rachas](/es/admin-api/endpoints/streaks/update-streak-settings). +También puedes leer y actualizar la configuración de rachas de la organización —frecuencia, modo de evaluación, métricas, días libres, personalización y congelaciones— con la [API de administración de ajustes de rachas](/es/admin-api/endpoints/streaks/update-streak-settings). -Para un recorrido completo sobre cómo configurar una funcionalidad de rachas usando Trophy, consulta nuestra [guía oficial](/es/guides/how-to-build-a-streaks-feature). +Para ver un recorrido completo sobre cómo configurar una funcionalidad de rachas con Trophy, consulta nuestra [guía oficial](/es/guides/how-to-build-a-streaks-feature). ## Personalización de rachas {#streak-personalization} -Trophy puede permitir que los usuarios personalicen cómo funciona su racha dentro de los límites que establezcas para ellos. Para hacer esto, activa la personalización de rachas en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy. +Trophy permite que los usuarios personalicen el funcionamiento de su racha dentro de los límites que tú definas. Para ello, activa la personalización de rachas en la [página de rachas](https://app.trophy.so/streaks) del panel de Trophy. -Una vez habilitado, los usuarios podrán personalizar las [condiciones de racha](#streak-conditions) que deben cumplir para extender su racha, incluyendo el modo de evaluación de racha, el umbral para cada métrica y [días libres](#days-off), a través de las preferencias de usuario. +Una vez habilitada la función, los usuarios podrán personalizar, a través de las preferencias de usuario, las [condiciones de la racha](#streak-conditions) que deben cumplir para extender su racha, incluidos el modo de evaluación de la racha, el umbral de cada métrica y los [días libres](#days-off). -Para obtener más información sobre cómo establecer las preferencias de usuario para un usuario específico, consulta la documentación dedicada sobre [preferencias de usuario](/es/features/users#streak-preferences). +Para obtener más información sobre cómo establecer las preferencias de un usuario específico, consulta la documentación dedicada a las [preferencias de usuario](/es/features/users#streak-preferences). @@ -175,9 +175,9 @@ Para obtener más información sobre cómo establecer las preferencias de usuari Esta sección describe algunas de las operaciones que puedes realizar para gestionar las rachas de los usuarios en tu aplicación. -### Restaurar la Racha de un Usuario {#restoring-a-users-streak} +### Restauración de la Racha de un usuario {#restoring-a-users-streak} -Para restaurar la racha de un usuario, dirígete a la página de detalles del usuario y utiliza la acción 'Restaurar Racha'. Restaurar la racha de un usuario la establece a la longitud que tenía cuando la perdió por última vez. +Para restaurar la racha de un usuario, ve a la página de detalles del usuario y usa la acción 'Restaurar Racha'. Al restaurar la racha de un usuario, esta vuelve a la duración que tenía cuando la perdió por última vez. También puedes usar la [API de administración para restaurar rachas](/es/admin-api/endpoints/streaks/restore-streaks) para restaurar rachas de forma programática. @@ -194,29 +194,41 @@ También puedes usar la [API de administración para restaurar rachas](/es/admin > -## Mostrar Rachas {#displaying-streaks} +### Restablecimiento de la Racha de un usuario {#resetting-a-users-streak} -Trophy expone los datos de rachas de dos formas, que pueden utilizarse para construir elementos de interfaz dentro de tus aplicaciones y mostrar las rachas a los usuarios. +Para restablecer a cero la racha de un usuario, ve a la página de detalles del usuario y usa la acción 'Restablecer Racha'. Al restablecer la racha de un usuario, su racha actual termina de inmediato, independientemente de si ha cumplido sus [condiciones de la racha](#streak-conditions) en el período actual. + + +También puedes usar la [API de administración para restablecer rachas](/es/admin-api/endpoints/streaks/reset-streaks) para restablecer las rachas de hasta 100 usuarios en una sola solicitud. + + +Si restableces la racha de un usuario por error, puedes recuperarla [restaurando la racha del usuario](#restoring-a-users-streak). + +Cuando se restablece una racha, el período correspondiente en el campo `streakHistory` de la [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-streak) incluye una marca de tiempo `resetAt` que indica cuándo se produjo el restablecimiento. + +## Mostrar rachas {#displaying-streaks} + +Trophy expone los datos de rachas de dos maneras, que puedes usar para crear elementos de interfaz en tus aplicaciones y mostrar las rachas a los usuarios. Consulta nuestra [guía completa](/es/guides/how-to-build-a-streaks-feature) sobre cómo agregar una - funcionalidad de rachas a tu aplicación para obtener más detalles. + función de rachas a tu app para obtener más detalles. -### Respuesta de Evento de Métrica {#metric-event-response} +### Respuesta del evento de métrica {#metric-event-response} -Cuando [incrementas una métrica](/es/features/events#tracking-metric-events) para un usuario, la respuesta de la [API de métricas](/es/api-reference/endpoints/events/submit-a-metric-event) incluirá la racha actual del usuario. +Cuando [incrementas una métrica](/es/features/events#tracking-metric-events) para un usuario, la respuesta de la [API de métricas](/es/api-reference/endpoints/events/submit-a-metric-event) incluye la Racha actual del usuario. -Esto puede utilizarse para activar de forma transaccional elementos de UI/UX incluyendo: +Puedes usar esta información para activar de forma transaccional elementos de UI/UX, como: -- Mostrar ventanas emergentes en la aplicación +- Mostrar ventanas emergentes dentro de la app - Reproducir efectos de sonido -### API de Rachas de Usuario {#user-streaks-api} +### API de rachas de usuario {#user-streaks-api} -La [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-streak) devuelve la racha actual de un solo usuario, junto con su historial reciente de rachas y cualquier [pausa de racha](#streak-pauses) próxima o activa. Usa el parámetro de consulta `historyPeriods` para controlar cuántos períodos devolver. +La [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-streak) devuelve la Racha actual de un solo usuario, junto con su historial reciente de rachas y cualquier [pausa de racha](#streak-pauses) próxima o activa. Usa el parámetro de consulta `historyPeriods` para controlar cuántos períodos se devuelven. {/* vale off */} @@ -285,7 +297,7 @@ La [API de rachas de usuario](/es/api-reference/endpoints/users/get-a-users-stre {/* vale on */} -Utiliza estos datos para mostrar el historial de rachas de un usuario dentro de tu aplicación. +Usa estos datos para mostrar el historial de rachas de un usuario en tu aplicación. -### Listar las Rachas de Múltiples Usuarios {#list-multiple-users-streaks} +### Listar las rachas de varios usuarios {#list-multiple-users-streaks} -Si deseas mostrar rachas para múltiples usuarios a la vez, por ejemplo para admitir una racha de amigos o una función de grupo de usuarios, entonces utiliza la [API de listar rachas de usuario](/es/api-reference/endpoints/streaks/get-streaks). +Si quieres mostrar las rachas de varios usuarios a la vez, por ejemplo, para admitir una función de rachas entre amigos o grupos de usuarios, usa la [API de listado de rachas de usuarios](/es/api-reference/endpoints/streaks/get-streaks). ```json [expandable] [ @@ -319,6 +331,6 @@ Si deseas mostrar rachas para múltiples usuarios a la vez, por ejemplo para adm ] ``` -## Obtener Soporte {#get-support} +## Obtener soporte {#get-support} -¿Quieres ponerte en contacto con el equipo de Trophy? Contáctanos por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte! +¿Quieres ponerte en contacto con el equipo de Trophy? Escríbenos por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte! diff --git a/es/mcp/account-mcp-server/capabilities.mdx b/es/mcp/account-mcp-server/capabilities.mdx index 544899c..8859891 100644 --- a/es/mcp/account-mcp-server/capabilities.mdx +++ b/es/mcp/account-mcp-server/capabilities.mdx @@ -1,16 +1,16 @@ --- title: Capacidades -description: Aprende sobre lo que puede hacer el servidor MCP de cuenta de Trophy. -og:description: Aprende sobre lo que puede hacer el servidor MCP de cuenta de Trophy. +description: Descubre qué puede hacer el servidor MCP de cuenta de Trophy. +og:description: Descubre qué puede hacer el servidor MCP de cuenta de Trophy. icon: wrench --- Una vez conectado, el servidor MCP de cuenta expone herramientas que tu agente puede llamar para inspeccionar y gestionar tu cuenta. -La mayoría de los recursos de configuración ofrecen herramientas emparejadas de **lectura** y **escritura**: +La mayoría de los recursos de configuración ofrecen herramientas de **lectura** y **escritura** emparejadas: - Las herramientas de **lectura** listan y obtienen recursos -- Las herramientas de **escritura** crean o actualizan recursos en lote para acelerar las operaciones +- Las herramientas de **escritura** crean o actualizan recursos por lotes para agilizar las operaciones ## Referencia de herramientas {#tool-reference} @@ -18,105 +18,106 @@ La lista completa de herramientas disponibles en el servidor MCP de cuenta de Tr ### Herramientas de métricas {#metrics-tools} -Crea y gestiona las [Métricas](/es/features/metrics) que impulsan rachas, logros, puntos y clasificaciones. +Crea y gestiona las [Métricas](/es/features/metrics) que impulsan las rachas, los logros, los puntos y las clasificaciones. | Herramienta | Qué hace | | --- | --- | -| `read_metrics` | Lista métricas, u obtiene una métrica individual por ID | +| `read_metrics` | Lista métricas u obtiene una métrica concreta por ID | | `write_metrics` | Crea o actualiza métricas | ### Herramientas de atributos {#attributes-tools} -Gestiona [Atributos de usuario personalizados](/es/features/users#custom-user-attributes) y [Atributos de evento personalizados](/es/features/events#custom-event-attributes) utilizados para segmentación de funcionalidades y personalización. +Gestiona los [atributos personalizados de usuario](/es/features/users#custom-user-attributes) y los [atributos personalizados de evento](/es/features/events#custom-event-attributes) que se usan para la segmentación de funcionalidades y la personalización. | Herramienta | Qué hace | | --- | --- | -| `read_attributes` | Lista atributos, u obtiene un atributo individual por ID | +| `read_attributes` | Lista atributos u obtiene un atributo concreto por ID | | `write_attributes` | Crea o actualiza atributos | ### Herramientas de logros {#achievements-tools} -Configura [Logros](/es/features/achievements) y consulta análisis de completitud para tu cuenta. +Configura los [Logros](/es/features/achievements) y consulta las analíticas de finalización de tu cuenta. | Herramienta | Qué hace | | --- | --- | -| `read_achievements` | Lista logros, u obtiene un logro individual por ID | +| `read_achievements` | Lista logros u obtiene un logro concreto por ID | | `write_achievements` | Crea o actualiza logros | -| `read_achievements_analytics` | Lista logros con conteos de completitud y rareza; opcionalmente filtra por `user_attributes` | +| `read_achievements_analytics` | Lista logros con recuentos de finalización y rareza; opcionalmente, filtra por `user_attributes` | ### Herramientas de clasificaciones {#leaderboards-tools} -Configura [Clasificaciones](/es/features/leaderboards) y consulta rankings en vivo. +Configura las [Clasificaciones](/es/features/leaderboards) y consulta las posiciones en tiempo real. | Herramienta | Qué hace | | --- | --- | -| `read_leaderboards` | Listar clasificaciones o obtener una clasificación individual por ID | -| `write_leaderboards` | Crear o actualizar clasificaciones | -| `read_leaderboard_rankings` | Obtener una clasificación con rankings en vivo por clave (paginación, fecha de ejecución, centrado de usuario y filtros de atributos opcionales) | +| `read_leaderboards` | Lista clasificaciones u obtiene una clasificación concreta por ID | +| `write_leaderboards` | Crea o actualiza clasificaciones | +| `read_leaderboard_rankings` | Obtiene una clasificación con posiciones en tiempo real por clave (paginación opcional, fecha de ejecución, centrado en el usuario y filtros de atributos) | ### Herramientas de Puntos {#points-tools} -Configure sistemas completos de [Puntos](/es/features/points), incluyendo [Desencadenadores](/es/features/points#points-triggers), [Niveles](/es/features/points#points-levels) y [Impulsos](/es/features/points#points-boosts), y consulte análisis de distribución. +Configura sistemas completos de [Puntos](/es/features/points), incluidos los [Disparadores](/es/features/points#points-triggers), los [Niveles](/es/features/points#points-levels) y los [Potenciadores](/es/features/points#points-boosts), y consulta las analíticas de distribución. | Herramienta | Qué hace | | --- | --- | -| `read_points_systems` | Listar sistemas de puntos u obtener uno por ID | -| `write_points_systems` | Crear o actualizar sistemas de puntos (opcionalmente con desencadenadores, niveles e impulsos anidados) | -| `read_points_triggers` | Listar u obtener desencadenadores de un sistema de puntos | -| `write_points_triggers` | Crear o actualizar desencadenadores de un sistema de puntos | -| `read_points_levels` | Listar u obtener niveles de un sistema de puntos | -| `write_points_levels` | Crear o actualizar niveles de un sistema de puntos | -| `read_points_boosts` | Listar u obtener impulsos de un sistema de puntos | -| `write_points_boosts` | Crear o actualizar impulsos de un sistema de puntos | -| `read_points_analytics` | Distribución de puntos y desglose de niveles para un sistema (`summary` o `level_summary`; `user_attributes` opcional en el resumen) | +| `read_points_systems` | Lista los sistemas de puntos u obtiene uno por ID | +| `write_points_systems` | Crea o actualiza sistemas de puntos (opcionalmente con disparadores, niveles y potenciadores anidados) | +| `read_points_triggers` | Lista u obtiene los disparadores de un sistema de puntos | +| `write_points_triggers` | Crea o actualiza los disparadores de un sistema de puntos | +| `read_points_levels` | Lista u obtiene los niveles de un sistema de puntos | +| `write_points_levels` | Crea o actualiza los niveles de un sistema de puntos | +| `read_points_boosts` | Lista u obtiene los potenciadores de un sistema de puntos | +| `write_points_boosts` | Crea o actualiza los potenciadores de un sistema de puntos | +| `read_points_analytics` | Distribución de puntos y desglose por niveles de un sistema (`summary` o `level_summary`; `user_attributes` opcional en el resumen) | ### Herramientas de Clientes {#tenants-tools} -Gestione registros de organizaciones [Multi-Cliente](/es/platform/multi-tenancy) cuando la funcionalidad multi-cliente esté habilitada en su cuenta. +Gestiona los registros de organizaciones [multicliente](/es/platform/multi-tenancy) cuando la función multicliente está habilitada en tu cuenta. | Herramienta | Qué hace | | --- | --- | -| `read_tenants` | Listar clientes u obtener un cliente individual por ID | -| `write_tenants` | Crear o actualizar clientes | +| `read_tenants` | Lista clientes u obtiene un cliente concreto por ID | +| `write_tenants` | Crea o actualiza clientes | -Si la funcionalidad multi-cliente no está habilitada en su cuenta, estas herramientas no funcionarán. +Si la función multicliente no está habilitada en tu cuenta, estas herramientas no funcionarán. -### Herramientas de Entornos {#environments-tools} +### Herramientas de entornos {#environments-tools} -Lista los [Entornos](/es/platform/environments) en tu cuenta de Trophy. +Lista los [entornos](/es/platform/environments) de tu cuenta de Trophy. | Herramienta | Qué hace | | --- | --- | -| `read_environments` | Lista todos los entornos activos ordenados por prioridad (nombre, clave, prioridad; producción siempre tiene prioridad 1) | +| `read_environments` | Lista todos los entornos activos ordenados por prioridad (nombre, clave y prioridad; producción siempre tiene prioridad 1) | ### Herramientas de Rachas {#streaks-tools} -Consulta y ejecuta acciones operativas de [Rachas](/es/features/streaks) para usuarios, incluyendo la concesión de [Congelaciones de Racha](/es/features/streaks#streak-freezes), creación de [Pausas de Racha](/es/features/streaks#streak-pauses), [restauración de rachas](/es/features/streaks#restoring-a-users-streak), y lectura o actualización de la configuración de rachas de la organización. +Consulta y ejecuta acciones operativas de [Rachas](/es/features/streaks) para los usuarios, como conceder [congelaciones de racha](/es/features/streaks#streak-freezes), crear [pausas de racha](/es/features/streaks#streak-pauses), [restaurar rachas](/es/features/streaks#restoring-a-users-streak), [restablecer rachas](/es/features/streaks#resetting-a-users-streak), y leer o actualizar la configuración de rachas de la organización. | Herramienta | Qué hace | | --- | --- | -| `list_user_streaks` | Obtiene la longitud de la racha (y la marca de tiempo de la última extensión) para hasta 100 usuarios, clasificados de mayor a menor | +| `list_user_streaks` | Obtiene la longitud de la racha (y la marca de tiempo de la última extensión) de hasta 100 usuarios, ordenados de mayor a menor longitud | | `grant_streak_freezes` | Concede congelaciones de racha a uno o más usuarios | -| `restore_streaks` | Restaura una racha rota a su longitud anterior | -| `create_streak_pauses` | Crea pausas de racha para usuarios durante un rango de fechas (hasta 100 por solicitud) | +| `restore_streaks` | Restaura una racha interrumpida a su longitud anterior | +| `reset_streaks` | Restablece a cero las rachas de uno o más usuarios (hasta 100 por solicitud) | +| `create_streak_pauses` | Crea pausas de racha para usuarios en un intervalo de fechas (hasta 100 por solicitud) | | `delete_streak_pauses` | Elimina pausas de racha por ID (hasta 100 por solicitud) | | `get_streak_settings` | Obtiene la configuración de rachas de la organización (frecuencia, modo de evaluación, métricas, días libres, congelaciones) | | `update_streak_settings` | Actualiza la configuración de rachas de la organización | -### Herramientas de Configuración {#settings-tools} +### Herramientas de configuración {#settings-tools} -Lee y actualiza la configuración de la organización, incluyendo [Marca](/es/account/branding), [Experimentación](/es/platform/experimentation) y período de agregación. +Lee y actualiza la configuración de la organización, incluidas la [marca](/es/account/branding), la [experimentación](/es/platform/experimentation) y el período de agregación. | Herramienta | Qué hace | | --- | --- | | `get_settings` | Obtiene la configuración de marca, experimentación y período de agregación | | `update_settings` | Actualiza la configuración de marca, experimentación y período de agregación | -## Ejemplos de Instrucciones {#example-prompts} +## Ejemplos de prompts {#example-prompts} -Usa lenguaje natural — tu agente selecciona la herramienta y los parámetros correctos: +Usa lenguaje natural: tu agente elige la herramienta y los parámetros adecuados: ```text Create an XP system called 'Kudos' that grants 10 points for each workout completed. @@ -150,6 +151,10 @@ Grant two streak freezes to user user_123. user_123 wants their streak back, restore it to its previous length. ``` +```text +Reset the streaks for user_123 and user_456 to zero. +``` + ```text Create a streak pause for user_123 from 2026-09-15 to 2026-09-22 while they're on holiday. ``` @@ -168,12 +173,13 @@ Update our brand color to #0F766E and set the aggregation period to weekly. ## Alcance y seguridad {#scope-and-safety} -- El acceso está limitado a la organización de Trophy que autorices durante OAuth. -- Las herramientas actúan en un [entorno](/es/platform/environments) específico. Si la cuenta tiene solo uno, las llamadas de herramienta usan ese por defecto (normalmente `production`). Si hay múltiples, pasa la clave `environment` que desees, o usa `read_environments` para listarlos y elegir. -- Cuando la [multi-tenencia](/es/platform/multi-tenancy) está habilitada, las herramientas también pueden estar limitadas a un [cliente](/es/platform/multi-tenancy). Si hay solo un cliente activo, las llamadas de herramienta pueden usar ese por defecto. Si hay múltiples, pasa el id `tenant` que desees, o usa `read_tenants` para listarlos y elegir. -- Las herramientas de escritura pueden cambiar la configuración en producción. Prefiere un [entorno](/es/platform/environments) de staging o sandbox cuando estés iterando. +- El acceso se limita a la organización de Trophy que autorizas durante OAuth. +- Las herramientas actúan sobre un [entorno](/es/platform/environments) específico. Si la cuenta solo tiene uno, las llamadas a las herramientas lo usan por defecto (normalmente `production`). Si hay varios, pasa la clave `environment` que quieras, o usa `read_environments` para listarlos y elegir. +- Cuando la [multitenencia](/es/platform/multi-tenancy) está habilitada, las herramientas también pueden limitarse a un [cliente](/es/platform/multi-tenancy). Si solo hay un cliente activo, las llamadas a las herramientas pueden usarlo por defecto. Si hay varios, pasa el id de `tenant` que quieras, o usa `read_tenants` para listarlos y elegir. +- Las herramientas de escritura pueden modificar la configuración en producción. Es preferible usar un [entorno](/es/platform/environments) de staging o sandbox mientras iteras. - La mayoría de las herramientas no pueden eliminar recursos. La excepción es `delete_streak_pauses`, que elimina pausas de racha por ID. +- `reset_streaks` restablece a cero las rachas actuales de los usuarios. Usa `restore_streaks` si necesitas recuperar una racha después. ## Obtener soporte {#get-support} -¿Quieres ponerte en contacto con el equipo de Trophy? Contáctanos por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte! +¿Quieres ponerte en contacto con el equipo de Trophy? Escríbenos por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte! diff --git a/es/mcp/account-mcp-server/introduction.mdx b/es/mcp/account-mcp-server/introduction.mdx index cf73c3e..778b486 100644 --- a/es/mcp/account-mcp-server/introduction.mdx +++ b/es/mcp/account-mcp-server/introduction.mdx @@ -1,40 +1,41 @@ --- title: Introducción -description: Aprende sobre el servidor MCP de cuenta y por qué existe para agentes de IA. -subtitle: Proporciona a los agentes de IA acceso seguro y estructurado a tu - cuenta de Trophy. +description: Descubre qué es el servidor MCP de cuenta (Account MCP Server) y + por qué existe para los agentes de IA. +subtitle: Ofrece a los agentes de IA un acceso seguro y estructurado a tu cuenta + de Trophy. --- -El servidor MCP de cuenta es un servidor remoto de [Model Context Protocol](https://modelcontextprotocol.io) que permite a los agentes de IA leer y gestionar la configuración de gamificación en tu cuenta de Trophy. +El Account MCP Server es un servidor remoto de [Model Context Protocol](https://modelcontextprotocol.io) que permite a los agentes de IA leer y gestionar la configuración de gamificación en tu cuenta de Trophy. -En lugar de copiar y pegar clics del panel de control en el chat, puedes pedirle a tu agente que inspeccione métricas, cree sistemas de puntos, actualice clasificaciones, restaure rachas y más. +En lugar de copiar y pegar en el chat los clics del panel de control, puedes pedirle a tu agente que inspeccione métricas, cree sistemas de puntos, actualice clasificaciones, restaure rachas y mucho más. ```bash Server URL https://mcp.trophy.so/mcp ``` -## ¿Por qué el MCP de cuenta? {#why-the-account-mcp} +## ¿Por qué el Account MCP? {#why-the-account-mcp} -Los agentes de codificación de IA ya son donde los equipos diseñan y envían trabajo de producto, y Trophy ha simplificado esto al proporcionar infraestructura prediseñada para construir características comunes de gamificación. Sin embargo, esto implica en gran medida mirar pantallas y hacer clic en botones. +Los agentes de programación con IA ya son parte del lugar donde los equipos diseñan y lanzan productos, y Trophy ha simplificado este proceso al ofrecer infraestructura prediseñada para crear funcionalidades de gamificación comunes. Sin embargo, esto implica en gran medida mirar pantallas y hacer clic en botones. -El servidor MCP de cuenta es la **capa de acción**: después de que el agente comprende *qué* construir (a menudo a través del [servidor MCP de documentación](/es/mcp/docs-mcp-server/introduction)), puede descubrir la configuración activa de la cuenta, realizar cambios específicos y validar resultados sin que un humano toque el panel de control. +El Account MCP Server es la **capa de acción**: después de que el agente entiende *qué* debe crear (a menudo a través del [Docs MCP Server](/es/mcp/docs-mcp-server/introduction)), puede descubrir la configuración activa de la cuenta, aplicar cambios específicos y validar los resultados sin que una persona tenga que tocar el panel de control. -Esto abre un nuevo flujo de trabajo para los equipos donde los agentes pueden razonar sobre qué características de gamificación construir, comprender cómo mapear eso a las características de Trophy y configurar una cuenta de Trophy que logre todo esto dentro del chat. +Esto abre un nuevo flujo de trabajo para los equipos: los agentes pueden razonar sobre qué funcionalidades de gamificación crear, entender cómo asignarlas a las funcionalidades de Trophy y configurar una cuenta de Trophy que lo logre todo desde el chat. -Los flujos de trabajo típicos incluyen: +Flujos de trabajo habituales: -- Estructurar métricas, atributos y sistemas de puntos al integrar Trophy en una nueva aplicación -- Inspeccionar clasificaciones existentes o configuración de puntos antes de cambiar el código de producción -- Ejecutar tareas operativas como otorgar congelaciones o restaurar rachas desde el chat +- Crear la estructura base de métricas, atributos y sistemas de puntos al integrar Trophy en una nueva aplicación +- Inspeccionar las clasificaciones o la configuración de puntos existentes antes de modificar el código de producción +- Ejecutar tareas operativas, como conceder congelaciones o restaurar rachas, desde el chat ## Cómo funciona {#how-it-works} -Trophy aloja un endpoint MCP remoto. Lo instalas una vez en tu cliente MCP, inicias sesión con OAuth usando tu cuenta de Trophy (y seleccionas la organización a autorizar), y el cliente expone herramientas que tu agente puede llamar. +Trophy aloja un endpoint MCP remoto. Lo instalas una sola vez en tu cliente MCP, inicias sesión con OAuth usando tu cuenta de Trophy (y seleccionas la organización que quieres autorizar), y el cliente expone las herramientas que tu agente puede invocar. -Estas herramientas se corresponden con operaciones de cuenta: list/get para descubrimiento, create/update para configuración, y acciones dedicadas para congelaciones de rachas, pausas, restauraciones, ajustes y lectura de analíticas. +Esas herramientas se corresponden con operaciones de la cuenta: list/get para el descubrimiento, create/update para la configuración y acciones específicas para congelaciones de racha, pausas, restauraciones, reinicios, ajustes y lectura de analíticas. - El servidor MCP de cuenta está diseñado para flujos de trabajo basados en chat y agentes. Para scripts, trabajos backend o integraciones de producción, utiliza la [Admin API](/es/admin-api/introduction). + El servidor MCP de la cuenta está pensado para flujos de trabajo basados en chat y en agentes. Para scripts, tareas de backend o integraciones en producción, usa la [Admin API](/es/admin-api/introduction). ## Primeros pasos {#get-started} @@ -44,13 +45,13 @@ Estas herramientas se corresponden con operaciones de cuenta: list/get para desc Conecta el servidor MCP en Claude, Cursor, VS Code y otros clientes. - Consulta las herramientas que tu agente puede utilizar una vez conectado. + Consulta las herramientas que tu agente puede usar una vez conectado. - + Formas recomendadas de trabajar con agentes y MCP. ## Obtener soporte {#get-support} -¿Quieres ponerte en contacto con el equipo de Trophy? Contáctanos por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte! +¿Quieres ponerte en contacto con el equipo de Trophy? Escríbenos por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte! diff --git a/features/streaks.mdx b/features/streaks.mdx index 741f5b6..7ec2608 100644 --- a/features/streaks.mdx +++ b/features/streaks.mdx @@ -194,6 +194,18 @@ You can also use the [restore streak admin API](/admin-api/endpoints/streaks/res > +### Resetting A User's Streak {#resetting-a-users-streak} + +To reset a user's streak to zero, head to the user details page and use the 'Reset Streak' action. Resetting a user's streak ends their current streak immediately, regardless of whether they've met their [streak conditions](#streak-conditions) for the current period. + + +You can also use the [reset streaks admin API](/admin-api/endpoints/streaks/reset-streaks) to reset streaks for up to 100 users in a single request. + + +If you reset a user's streak by mistake, you can bring it back by [restoring the user's streak](#restoring-a-users-streak). + +When a streak has been reset, the matching period in the `streakHistory` field of the [user streaks API](/api-reference/endpoints/users/get-a-users-streak) includes a `resetAt` timestamp showing when the reset happened. + ## Displaying Streaks {#displaying-streaks} Trophy exposes streak data in two ways, which can be used to build UI elements within your applications and display streaks to users. diff --git a/i18n.lock b/i18n.lock index bdae07b..c087e1c 100644 --- a/i18n.lock +++ b/i18n.lock @@ -3122,26 +3122,31 @@ checksums: content/56: 9e4d09a957ca66f58d4248300fbe2662 content/57: 758ecef4a7a0b5d55fb97febe4184ec2 content/58: 9aec72901fcecb0cdf45f729387b9742 - content/59: 71d6882b2ae9220e3bb0c6abc98fc236 - content/60: bfa82570db14cd44d636f90e20080898 - content/61: 59f82b2e0dbec73340a007cb020ab2ce - content/62: 54e6b1cb90e203d05d06a5d188238cd4 - content/63: 4f72e470a0dbe75e396f57952f29901a - content/64: 380be3ed5af370f2d36a66f4c55f7f0b - content/65: 5a5f6f25f2b2cf4ebbb5f018bb0d5824 - content/66: ed7cd0fb6f61c823f39fe089a7f62e1f - content/67: b3bc9605c19967a6162e1c72333251a9 - content/68: ac3267698b45c30fea7622d6f38767b5 - content/69: 40a3888d076524edcb9716f64683c5b3 - content/70: f8bc90b1b7d0108fdfad2e3bd7641dbf - content/71: 98200505f691d3dcb12fa6833d0e88ad - content/72: df90d3b6267199a3dd86d820374aa785 - content/73: 286a2716711641435b4b996d8b22e881 - content/74: 29e769123cc029c8c9657dcd8d384b83 - content/75: 08345a94bd6f9b9539d128e5db15184a - content/76: 47770b5654a1f47d56eba81273ff08d9 - content/77: 10e8e9a59847ddd720c6d06b12c7b120 - content/78: 9799b973234bf2d10d5c971b267f55a5 + content/59: 8bc7c2e96a3e6b3eab90705a2c959f74 + content/60: c9b0901d7da023c51034c0fa5127edce + content/61: 3f9a0102498509b03dcee403a34960cf + content/62: d4d9b94a3256563087f27380196a4c2e + content/63: 970e0c036985bd992d57046d09b8747e + content/64: 71d6882b2ae9220e3bb0c6abc98fc236 + content/65: bfa82570db14cd44d636f90e20080898 + content/66: 59f82b2e0dbec73340a007cb020ab2ce + content/67: 54e6b1cb90e203d05d06a5d188238cd4 + content/68: 4f72e470a0dbe75e396f57952f29901a + content/69: 380be3ed5af370f2d36a66f4c55f7f0b + content/70: 5a5f6f25f2b2cf4ebbb5f018bb0d5824 + content/71: ed7cd0fb6f61c823f39fe089a7f62e1f + content/72: b3bc9605c19967a6162e1c72333251a9 + content/73: ac3267698b45c30fea7622d6f38767b5 + content/74: 40a3888d076524edcb9716f64683c5b3 + content/75: f8bc90b1b7d0108fdfad2e3bd7641dbf + content/76: 98200505f691d3dcb12fa6833d0e88ad + content/77: df90d3b6267199a3dd86d820374aa785 + content/78: 286a2716711641435b4b996d8b22e881 + content/79: 29e769123cc029c8c9657dcd8d384b83 + content/80: 08345a94bd6f9b9539d128e5db15184a + content/81: 47770b5654a1f47d56eba81273ff08d9 + content/82: 10e8e9a59847ddd720c6d06b12c7b120 + content/83: 9799b973234bf2d10d5c971b267f55a5 9f5464896b543cfd1d607b30a9997155: meta/title: e771f23130f9aab4f3e2e99acacf5d5a meta/description: 8539ebe90ff733bef6498db1933f3a57 @@ -6980,8 +6985,8 @@ checksums: content/25: 353a70e616dae63862d9dd0c6b81bb55 content/26: 414754fdbb9eb3081d2681b673516f59 content/27: 272a90796e7e3397baab13f3ca781e5c - content/28: ce9b52d1f0fddd252c51bae43ecc6993 - content/29: 8d162ba5232a3c7a4ac9390b3535caaf + content/28: 9a9dcd0ac2104aa4d31317beb2549a71 + content/29: a332c0f9c1d6b3d304f38c8962e5b4d3 content/30: 1347350b3967531f1b5ec06ab9f58935 content/31: 5b207a184a7047a0bcee99a654321695 content/32: 1b5723f7c8275a52a808cb105aa04823 @@ -6995,14 +7000,15 @@ checksums: content/40: b8568fa5375e6ed038dc2c99bb7147e2 content/41: 419d6be21d20157b54608511f2dfe724 content/42: 6985387a741e8e465ddc4bf3f8b338a3 - content/43: 7d96a55c06199ab4ae5cb368cac67a86 - content/44: 154ac84fcc2954cc8d0c296690cb9e9c - content/45: 971c4b437f7c3b6c1087bd063f86b13b - content/46: 15e604d376406bf7724bd5fb32f3e16b - content/47: 1df98519caec0282fe7b984ffd11efb9 - content/48: 766538463ca4830371af694b963910d5 - content/49: 10e8e9a59847ddd720c6d06b12c7b120 - content/50: 9799b973234bf2d10d5c971b267f55a5 + content/43: 361182c3c0fdf447d3a24f9d37f53f86 + content/44: 7d96a55c06199ab4ae5cb368cac67a86 + content/45: 154ac84fcc2954cc8d0c296690cb9e9c + content/46: 971c4b437f7c3b6c1087bd063f86b13b + content/47: 15e604d376406bf7724bd5fb32f3e16b + content/48: 1df98519caec0282fe7b984ffd11efb9 + content/49: bf2ae60be320dcb55e148e9ecc45373c + content/50: 10e8e9a59847ddd720c6d06b12c7b120 + content/51: 9799b973234bf2d10d5c971b267f55a5 8526e0bfc63d38ab4ff24fc5b4332813: meta/title: 439cb79e8dfd7923d35b85cfbb6fd201 meta/description: 9a92512ff148e565070ea4b09bc7bd0f @@ -7235,3 +7241,9 @@ checksums: content/35: f787576def79d901e78006d8ec376ef5 content/36: 68256a2c31bee1a8202cc744b404e9ea content/37: bb510f929be90e357007553f458c4a92 + dc245ee44041bae3483bb28c55cd2504: + meta/title: c7063054e5eb60d9c9a14da7217a003e + meta/openapi: 218c599e8c583cd99881210d6975fc8d + content/0: c3d96e3528a55b20b8fbcae10af25b02 + content/1: 264d832bc605beaf5168c080bfed567c + content/2: 580af53aa9812f2ec29a632e145669a5 diff --git a/mcp/account-mcp-server/capabilities.mdx b/mcp/account-mcp-server/capabilities.mdx index fc2eefe..aeab46b 100644 --- a/mcp/account-mcp-server/capabilities.mdx +++ b/mcp/account-mcp-server/capabilities.mdx @@ -93,13 +93,14 @@ List the [Environments](/platform/environments) in your Trophy account. ### Streaks Tools {#streaks-tools} -Look up and run operational [Streaks](/features/streaks) actions for users, including granting [Streak Freezes](/features/streaks#streak-freezes), creating [Streak Pauses](/features/streaks#streak-pauses), [restoring streaks](/features/streaks#restoring-a-users-streak), and reading or updating organization streak settings. +Look up and run operational [Streaks](/features/streaks) actions for users, including granting [Streak Freezes](/features/streaks#streak-freezes), creating [Streak Pauses](/features/streaks#streak-pauses), [restoring streaks](/features/streaks#restoring-a-users-streak), [resetting streaks](/features/streaks#resetting-a-users-streak), and reading or updating organization streak settings. | Tool | What it does | | --- | --- | | `list_user_streaks` | Get streak length (and last extension timestamp) for up to 100 users, ranked longest first | | `grant_streak_freezes` | Grant streak freezes to one or more users | | `restore_streaks` | Restore a broken streak to its previous length | +| `reset_streaks` | Reset streaks to zero for one or more users (up to 100 per request) | | `create_streak_pauses` | Create streak pauses for users over a date range (up to 100 per request) | | `delete_streak_pauses` | Delete streak pauses by ID (up to 100 per request) | | `get_streak_settings` | Get organization streak configuration (frequency, evaluation mode, metrics, days off, freezes) | @@ -150,6 +151,10 @@ Grant two streak freezes to user user_123. user_123 wants their streak back, restore it to its previous length. ``` +```text +Reset the streaks for user_123 and user_456 to zero. +``` + ```text Create a streak pause for user_123 from 2026-09-15 to 2026-09-22 while they're on holiday. ``` @@ -173,6 +178,7 @@ Update our brand color to #0F766E and set the aggregation period to weekly. - When [multi-tenancy](/platform/multi-tenancy) is enabled, tools can also be scoped to a [tenant](/platform/multi-tenancy). If there is only one active tenant, tool calls can default to it. If there are multiple, pass the `tenant` id you want, or use `read_tenants` to list them and choose. - Write tools can change live configuration. Prefer a staging or sandbox [environment](/platform/environments) when iterating. - Most tools cannot delete resources. The exception is `delete_streak_pauses`, which removes streak pauses by ID. +- `reset_streaks` sets users' current streaks to zero. Use `restore_streaks` if you need to bring a streak back afterwards. ## Get Support {#get-support} diff --git a/openapi/admin.json b/openapi/admin.json index 56c5456..a412e57 100644 --- a/openapi/admin.json +++ b/openapi/admin.json @@ -2,13 +2,13 @@ "openapi": "3.1.0", "info": { "title": "Trophy", - "version": "1.24.0" + "version": "1.26.0" }, "x-fern-global-headers": [ { "header": "X-SDK-VERSION", "name": "sdkVersion", - "x-fern-default": "1.24.0" + "x-fern-default": "1.26.0" } ], "paths": { @@ -633,7 +633,7 @@ } } }, - "summary": "Get an attribute by ID", + "summary": "Get an attribute", "security": [ { "ApiKeyAuth": [] @@ -5364,7 +5364,7 @@ } } }, - "summary": "Get a leaderboard by ID", + "summary": "Get a leaderboard", "security": [ { "ApiKeyAuth": [] @@ -6019,6 +6019,161 @@ ] } }, + "/streaks/reset": { + "servers": [ + { + "url": "https://admin.trophy.so/v1", + "description": "Admin API" + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/TenantId" + } + ], + "post": { + "description": "Reset the current streak to zero for multiple users.", + "operationId": "admin_streaks_reset", + "x-fern-server-name": "admin", + "x-fern-sdk-group-name": [ + "admin", + "streaks" + ], + "x-fern-sdk-method-name": "reset", + "tags": [ + "Admin" + ], + "x-codeSamples": [ + { + "lang": "javascript", + "source": "import { TrophyApiClient } from '@trophyso/node';\n\nconst trophy = new TrophyApiClient({\n apiKey: 'YOUR_API_KEY'\n});\n\nconst response = await trophy.admin.streaks.reset({\n users: [{ id: 'user-123' }, { id: 'user-456' }]\n});\n" + }, + { + "lang": "python", + "source": "from trophy import TrophyApi\n\nclient = TrophyApi(api_key='YOUR_API_KEY')\n\nresponse = client.admin.streaks.reset({\n \"users\": [{\"id\": \"user-123\"}, {\"id\": \"user-456\"}]\n})\n" + }, + { + "lang": "go", + "source": "import (\n \"context\"\n\n api \"github.com/trophyso/trophy-go\"\n trophyclient \"github.com/trophyso/trophy-go/client\"\n \"github.com/trophyso/trophy-go/option\"\n)\n\nclient := trophyclient.NewClient(\n option.WithApiKey(\"YOUR_API_KEY\"),\n)\n\nresponse, err := client.Admin.Streaks.Reset(context.TODO(), nil)\n" + } + ], + "requestBody": { + "description": "Array of users to reset streaks for", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResetStreaksRequest" + }, + "examples": { + "Reset streaks for multiple users": { + "value": { + "users": [ + { + "id": "user-123" + }, + { + "id": "user-456" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResetStreaksResponse" + }, + "examples": { + "Success with no issues": { + "value": { + "resetUsers": [ + "user-123", + "user-456" + ], + "issues": [] + } + }, + "Success with warnings": { + "value": { + "resetUsers": [], + "issues": [ + { + "userId": "user-123", + "severity": "warning", + "message": "No streak to reset" + } + ] + } + }, + "Mixed success and errors": { + "value": { + "resetUsers": [ + "user-123" + ], + "issues": [ + { + "userId": "non-existent-user", + "severity": "error", + "message": "User does not exist" + }, + { + "userId": "user-789", + "severity": "warning", + "message": "No streak to reset" + } + ] + } + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminErrorBody" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminErrorBody" + } + } + } + }, + "422": { + "description": "Unprocessible Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminErrorBody" + } + } + } + } + }, + "summary": "Reset streaks to zero for multiple users", + "security": [ + { + "ApiKeyAuth": [] + } + ] + } + }, "/settings": { "servers": [ { @@ -6757,6 +6912,100 @@ ] } }, + "/environments": { + "servers": [ + { + "url": "https://admin.trophy.so/v1", + "description": "Admin API" + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/TenantId" + } + ], + "get": { + "description": "List active environments.", + "operationId": "admin_environments_list", + "x-fern-server-name": "admin", + "x-fern-sdk-group-name": [ + "admin", + "environments" + ], + "x-fern-sdk-method-name": "list", + "tags": [ + "Admin" + ], + "x-codeSamples": [ + { + "lang": "javascript", + "source": "import { TrophyApiClient } from '@trophyso/node';\n\nconst trophy = new TrophyApiClient({\n apiKey: 'YOUR_API_KEY'\n});\n\nconst environments = await trophy.admin.environments.list();\n" + }, + { + "lang": "python", + "source": "from trophy import TrophyApi\n\nclient = TrophyApi(api_key='YOUR_API_KEY')\n\nenvironments = client.admin.environments.list()\n" + }, + { + "lang": "go", + "source": "import (\n \"context\"\n\n api \"github.com/trophyso/trophy-go\"\n trophyclient \"github.com/trophyso/trophy-go/client\"\n \"github.com/trophyso/trophy-go/option\"\n)\n\nclient := trophyclient.NewClient(\n option.WithApiKey(\"YOUR_API_KEY\"),\n)\n\nresponse, err := client.Admin.Environments.List(context.TODO(), nil)\n" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListEnvironmentsResponse" + }, + "examples": { + "Environments list": { + "value": [ + { + "name": "Production", + "key": "production", + "priority": 1 + }, + { + "name": "Staging", + "key": "staging", + "priority": 2 + } + ] + } + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminErrorBody" + } + } + } + }, + "422": { + "description": "Unprocessible Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminErrorBody" + } + } + } + } + }, + "summary": "List environments", + "security": [ + { + "ApiKeyAuth": [] + } + ] + } + }, "/tenants": { "servers": [ { @@ -7317,7 +7566,7 @@ } } }, - "summary": "Get a tenant by ID", + "summary": "Get a tenant", "security": [ { "ApiKeyAuth": [] @@ -10108,6 +10357,43 @@ "issues" ] }, + "ResetStreaksRequest": { + "title": "ResetStreaksRequest", + "type": "object", + "description": "Request body for resetting streaks to zero for multiple users.", + "properties": { + "users": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the user to reset the streak for.", + "example": "user-123" + } + }, + "required": [ + "id" + ] + }, + "description": "Array of users to reset streaks for. Maximum 100 users per request.", + "maxItems": 100, + "minItems": 1, + "example": [ + { + "id": "user-123" + }, + { + "id": "user-456" + } + ] + } + }, + "required": [ + "users" + ] + }, "RestoreStreaksRequest": { "title": "RestoreStreaksRequest", "type": "object", @@ -10644,6 +10930,35 @@ } } }, + "ResetStreaksResponse": { + "title": "ResetStreaksResponse", + "type": "object", + "description": "Response containing users whose streaks were reset and any issues encountered.", + "properties": { + "resetUsers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of user IDs whose streaks were successfully reset to zero.", + "example": [ + "user-123", + "user-456" + ] + }, + "issues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AdminIssue" + }, + "description": "Array of issues encountered during streak reset." + } + }, + "required": [ + "resetUsers", + "issues" + ] + }, "RestoreStreaksResponse": { "title": "RestoreStreaksResponse", "type": "object", @@ -11065,6 +11380,43 @@ "issues" ] }, + "AdminEnvironment": { + "title": "AdminEnvironment", + "type": "object", + "description": "An active environment in the organisation.", + "properties": { + "name": { + "type": "string", + "description": "Human-readable name for the environment.", + "example": "Production" + }, + "key": { + "type": "string", + "description": "Machine-readable identifier for the environment.", + "example": "production" + }, + "priority": { + "type": "integer", + "minimum": 1, + "maximum": 10, + "description": "Environment precedence. Lower numbers take priority. Production is always 1.", + "example": 1 + } + }, + "required": [ + "name", + "key", + "priority" + ] + }, + "ListEnvironmentsResponse": { + "title": "ListEnvironmentsResponse", + "type": "array", + "description": "Array of active environments ordered by priority.", + "items": { + "$ref": "#/components/schemas/AdminEnvironment" + } + }, "AdminTenant": { "title": "AdminTenant", "type": "object", diff --git a/openapi/application.json b/openapi/application.json index 6ed7d1c..889318f 100644 --- a/openapi/application.json +++ b/openapi/application.json @@ -2,13 +2,13 @@ "openapi": "3.1.0", "info": { "title": "Trophy", - "version": "1.24.0" + "version": "1.26.0" }, "x-fern-global-headers": [ { "header": "X-SDK-VERSION", "name": "sdkVersion", - "x-fern-default": "1.24.0" + "x-fern-default": "1.26.0" } ], "paths": { @@ -5738,6 +5738,12 @@ "type": "boolean", "description": "Whether the user's streak was paused during this period.", "example": false + }, + "resetAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp the streak was reset to zero using the admin API.", + "example": "2026-09-29T18:00:00.000Z" } }, "required": [ From 3e024304ac58c3431c1e5cb5f14ca38d92a1d34e Mon Sep 17 00:00:00 2001 From: Charlie Hopkins-Brinicombe Date: Fri, 2 Oct 2026 14:11:17 +0100 Subject: [PATCH 2/2] Fix openapi spec matching error --- admin-api/endpoints/attributes/get-an-attribute.mdx | 2 +- admin-api/endpoints/leaderboards/get-a-leaderboard.mdx | 2 +- admin-api/endpoints/tenants/get-a-tenant.mdx | 2 +- es/admin-api/endpoints/attributes/get-an-attribute.mdx | 2 +- es/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx | 2 +- es/admin-api/endpoints/tenants/get-a-tenant.mdx | 2 +- es/mcp/account-mcp-server/introduction.mdx | 2 +- i18n.lock | 6 +++--- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/admin-api/endpoints/attributes/get-an-attribute.mdx b/admin-api/endpoints/attributes/get-an-attribute.mdx index 0ec89d8..a435933 100644 --- a/admin-api/endpoints/attributes/get-an-attribute.mdx +++ b/admin-api/endpoints/attributes/get-an-attribute.mdx @@ -1,5 +1,5 @@ --- -title: Get an attribute by ID +title: Get an attribute openapi: "/openapi/admin.json GET /attributes/{id}" --- diff --git a/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx b/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx index 25da551..55fb17f 100644 --- a/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx +++ b/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx @@ -1,5 +1,5 @@ --- -title: Get a leaderboard by ID +title: Get a leaderboard openapi: "/openapi/admin.json GET /leaderboards/{id}" --- diff --git a/admin-api/endpoints/tenants/get-a-tenant.mdx b/admin-api/endpoints/tenants/get-a-tenant.mdx index c266630..84c83cb 100644 --- a/admin-api/endpoints/tenants/get-a-tenant.mdx +++ b/admin-api/endpoints/tenants/get-a-tenant.mdx @@ -1,5 +1,5 @@ --- -title: Get a tenant by ID +title: Get a tenant openapi: "/openapi/admin.json GET /tenants/{id}" --- diff --git a/es/admin-api/endpoints/attributes/get-an-attribute.mdx b/es/admin-api/endpoints/attributes/get-an-attribute.mdx index dbb1970..c16a97e 100644 --- a/es/admin-api/endpoints/attributes/get-an-attribute.mdx +++ b/es/admin-api/endpoints/attributes/get-an-attribute.mdx @@ -1,5 +1,5 @@ --- -title: Obtener un atributo por ID +title: Obtener un atributo openapi: "/openapi/admin.json GET /attributes/{id}" --- diff --git a/es/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx b/es/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx index de98901..2130d25 100644 --- a/es/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx +++ b/es/admin-api/endpoints/leaderboards/get-a-leaderboard.mdx @@ -1,5 +1,5 @@ --- -title: Obtener una clasificación por ID +title: Obtener una clasificación openapi: "/openapi/admin.json GET /leaderboards/{id}" --- diff --git a/es/admin-api/endpoints/tenants/get-a-tenant.mdx b/es/admin-api/endpoints/tenants/get-a-tenant.mdx index 7609ebb..7d55970 100644 --- a/es/admin-api/endpoints/tenants/get-a-tenant.mdx +++ b/es/admin-api/endpoints/tenants/get-a-tenant.mdx @@ -1,5 +1,5 @@ --- -title: Obtener un cliente por ID +title: Obtener un cliente openapi: "/openapi/admin.json GET /tenants/{id}" --- diff --git a/es/mcp/account-mcp-server/introduction.mdx b/es/mcp/account-mcp-server/introduction.mdx index 778b486..1a6df59 100644 --- a/es/mcp/account-mcp-server/introduction.mdx +++ b/es/mcp/account-mcp-server/introduction.mdx @@ -32,7 +32,7 @@ Flujos de trabajo habituales: Trophy aloja un endpoint MCP remoto. Lo instalas una sola vez en tu cliente MCP, inicias sesión con OAuth usando tu cuenta de Trophy (y seleccionas la organización que quieres autorizar), y el cliente expone las herramientas que tu agente puede invocar. -Esas herramientas se corresponden con operaciones de la cuenta: list/get para el descubrimiento, create/update para la configuración y acciones específicas para congelaciones de racha, pausas, restauraciones, reinicios, ajustes y lectura de analíticas. +Esas herramientas se corresponden con operaciones de la cuenta: list/get para el descubrimiento, create/update para la configuración y acciones específicas para congelaciones de racha, pausas, restauraciones, ajustes y lectura de analíticas. El servidor MCP de la cuenta está pensado para flujos de trabajo basados en chat y en agentes. Para scripts, tareas de backend o integraciones en producción, usa la [Admin API](/es/admin-api/introduction). diff --git a/i18n.lock b/i18n.lock index c087e1c..a83c0fd 100644 --- a/i18n.lock +++ b/i18n.lock @@ -2408,7 +2408,7 @@ checksums: content/1: 264d832bc605beaf5168c080bfed567c content/2: 580af53aa9812f2ec29a632e145669a5 738b59e21fdab2928556ce570256b3d0: - meta/title: fcea899265e846c4bfb9bb2774f72f1b + meta/title: 4a0417878be2b69b372844870758e18d meta/openapi: 8fb82df671ba1dd34f65d7e15cf8d098 content/0: c3d96e3528a55b20b8fbcae10af25b02 content/1: 264d832bc605beaf5168c080bfed567c @@ -2438,7 +2438,7 @@ checksums: content/1: 264d832bc605beaf5168c080bfed567c content/2: 580af53aa9812f2ec29a632e145669a5 b8af879dacafc5fd3abdd5d560e6eedf: - meta/title: f030a0c1cf7a6e43182fac4ff29ed0f6 + meta/title: cb6eee9d29302e212aa7c84375d9e183 meta/openapi: 2c16f530b0e0509d411da6bd34add9dd content/0: c3d96e3528a55b20b8fbcae10af25b02 content/1: 264d832bc605beaf5168c080bfed567c @@ -2701,7 +2701,7 @@ checksums: content/1: 264d832bc605beaf5168c080bfed567c content/2: 580af53aa9812f2ec29a632e145669a5 d08dac3a954b395aa154a46e23dc9456: - meta/title: 3cc6f91d57cca53cf63fd42d5063b150 + meta/title: bd0215a6587ed15a35293cdfb5fb6f04 meta/openapi: bbb2d9800a873a257c3ac977d175ff01 content/0: c3d96e3528a55b20b8fbcae10af25b02 content/1: 264d832bc605beaf5168c080bfed567c