Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Submit a batch of metric events
openapi: "https://admin.trophy.so/v1/openapi post /metrics/events"
---

import { RateLimitBadge } from "../../../components/rate-limit-badge.jsx";

**Rate Limits**

<RateLimitBadge tier={1} />
Comment thread
cursor[bot] marked this conversation as resolved.
10 changes: 10 additions & 0 deletions api-reference/endpoints/events/submit-a-metric-event.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Submit a metric event
openapi: "https://api.trophy.so/v1/openapi post /metrics/{key}/event"
---

import { RateLimitBadge } from "../../../components/rate-limit-badge.jsx";

**Rate Limits**

<RateLimitBadge tier={1} />
10 changes: 0 additions & 10 deletions api-reference/endpoints/metrics/send-a-metric-change-event.mdx

This file was deleted.

4 changes: 2 additions & 2 deletions api-reference/idempotency.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ import IdempotentEventTracking from "../snippets/idempotent-event-tracking.mdx";

When describing APIs, [idempotence](https://en.wikipedia.org/wiki/Idempotence) is a property of a particular operation whereby subsequent invocations after the first have no additional effect on the state of the system.

Trophy's [event tracking API](/api-reference/endpoints/metrics/send-a-metric-change-event) can be used to enforce idempotency preventing client retries from having unintended side effects such as overcounting user interactions, or awarding points to users multiple times for the same action.
Trophy's [event tracking API](/api-reference/endpoints/events/submit-a-metric-event) can be used to enforce idempotency preventing client retries from having unintended side effects such as overcounting user interactions, or awarding points to users multiple times for the same action.

This is particularly important where rewards are tied to user actions to prevent users from 'gaming the system'.

## Sending Idempotent Requests {#sending-idempotent-requests}

To ensure idempotency is respected when sending events to Trophy, include an `Idempotency-Key` header when using the [event tracking API](/api-reference/endpoints/metrics/send-a-metric-change-event). Additionally, all [client SDKs](/api-reference/client-libraries) support idempotency with built-in type safety.
To ensure idempotency is respected when sending events to Trophy, include an `Idempotency-Key` header when using the [event tracking API](/api-reference/endpoints/events/submit-a-metric-event). Additionally, all [client SDKs](/api-reference/client-libraries) support idempotency with built-in type safety.

You can choose what to use as your idempotency key, but it should reflect the level of 'uniqueness' that you want Trophy to respect.

Expand Down
30 changes: 25 additions & 5 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,9 @@
]
},
{
"group": "Metrics",
"group": "Events",
"pages": [
"api-reference/endpoints/metrics/send-a-metric-change-event"
"api-reference/endpoints/events/submit-a-metric-event"
]
},
{
Expand Down Expand Up @@ -241,6 +241,12 @@
"admin-api/endpoints/metrics/delete-metrics"
]
},
{
"group": "Events",
"pages": [
"admin-api/endpoints/events/submit-a-batch-of-metric-events"
]
},
{
"group": "Attributes",
"pages": [
Expand Down Expand Up @@ -526,9 +532,9 @@
]
},
{
"group": "Métricas",
"group": "Eventos",
"pages": [
"es/api-reference/endpoints/metrics/send-a-metric-change-event"
"es/api-reference/endpoints/events/submit-a-metric-event"
]
},
{
Expand Down Expand Up @@ -595,6 +601,12 @@
"es/admin-api/endpoints/metrics/delete-metrics"
]
},
{
"group": "Eventos",
"pages": [
"es/admin-api/endpoints/events/submit-a-batch-of-metric-events"
]
},
{
"group": "Atributos",
"pages": [
Expand Down Expand Up @@ -768,6 +780,10 @@
"source": "/platform/metrics",
"destination": "/features/metrics"
},
{
"source": "/api-reference/endpoints/metrics/send-a-metric-change-event",
"destination": "/api-reference/endpoints/events/submit-a-metric-event"
},
{
"source": "/platform/events",
"destination": "/features/events"
Expand Down Expand Up @@ -824,6 +840,10 @@
"source": "/es/platform/metrics",
"destination": "/es/features/metrics"
},
{
"source": "/es/api-reference/endpoints/metrics/send-a-metric-change-event",
"destination": "/es/api-reference/endpoints/events/submit-a-metric-event"
},
{
"source": "/es/platform/events",
"destination": "/es/features/events"
Expand Down Expand Up @@ -877,4 +897,4 @@
"destination": "/es/platform/experimentation#what-is-engagement"
}
]
}
}
10 changes: 10 additions & 0 deletions es/admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Enviar un lote de eventos de métricas
openapi: "https://admin.trophy.so/v1/openapi post /metrics/events"
---

import { RateLimitBadge } from "../../../components/rate-limit-badge.jsx";

**Límites de velocidad**

<RateLimitBadge tier={1} />
10 changes: 10 additions & 0 deletions es/api-reference/endpoints/events/submit-a-metric-event.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Enviar un evento de métrica
openapi: "https://api.trophy.so/v1/openapi post /metrics/{key}/event"
---

import { RateLimitBadge } from "../../../components/rate-limit-badge.jsx";

**Límites de velocidad**

<RateLimitBadge tier={1} />
10 changes: 0 additions & 10 deletions es/api-reference/endpoints/metrics/send-a-metric-change-event.mdx

This file was deleted.

4 changes: 2 additions & 2 deletions es/api-reference/idempotency.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ import IdempotentEventTracking from "../../snippets/idempotent-event-tracking.md

Al describir APIs, la [idempotencia](https://en.wikipedia.org/wiki/Idempotence) es una propiedad de una operación particular en la que las invocaciones subsecuentes después de la primera no tienen ningún efecto adicional sobre el estado del sistema.

La [API de seguimiento de eventos](/es/api-reference/endpoints/metrics/send-a-metric-change-event) de Trophy puede utilizarse para garantizar la idempotencia, evitando que los reintentos del cliente tengan efectos secundarios no deseados como el conteo excesivo de interacciones del usuario o la asignación múltiple de puntos a los usuarios por la misma acción.
La [API de seguimiento de eventos](/es/api-reference/endpoints/events/submit-a-metric-event) de Trophy puede utilizarse para garantizar la idempotencia, evitando que los reintentos del cliente tengan efectos secundarios no deseados como el conteo excesivo de interacciones del usuario o la asignación múltiple de puntos a los usuarios por la misma acción.

Esto es particularmente importante cuando las recompensas están vinculadas a acciones del usuario para evitar que los usuarios "manipulen el sistema".

## Envío de Solicitudes Idempotentes {#sending-idempotent-requests}

Para garantizar que se respete la idempotencia al enviar eventos a Trophy, incluye un encabezado `Idempotency-Key` al usar la [API de seguimiento de eventos](/es/api-reference/endpoints/metrics/send-a-metric-change-event). Además, todos los [SDKs de cliente](/es/api-reference/client-libraries) admiten idempotencia con seguridad de tipos integrada.
Para garantizar que se respete la idempotencia al enviar eventos a Trophy, incluye un encabezado `Idempotency-Key` al usar la [API de seguimiento de eventos](/es/api-reference/endpoints/events/submit-a-metric-event). Además, todos los [SDKs de cliente](/es/api-reference/client-libraries) admiten idempotencia con seguridad de tipos integrada.

Puedes elegir qué utilizar como clave de idempotencia, pero debe reflejar el nivel de 'unicidad' que deseas que Trophy respete.

Expand Down
2 changes: 1 addition & 1 deletion es/features/achievements.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ En este caso crearías una métrica llamada _Tarjetas Volteadas_ y crearías log

Dado que estos logros están directamente vinculados a la métrica _Tarjetas Volteadas_, Trophy rastreará automáticamente cuándo los usuarios desbloquean estos logros a medida que [incrementan la métrica](/es/features/events#tracking-metric-events).

Cuando se desbloquean logros, Trophy incluye información sobre los logros desbloqueados en la respuesta del [API de Eventos](/es/api-reference/endpoints/metrics/send-a-metric-change-event) y activa automáticamente [Correos de Logros](/es/features/emails#achievement-emails) si está configurado.
Cuando se desbloquean logros, Trophy incluye información sobre los logros desbloqueados en la respuesta del [API de Eventos](/es/api-reference/endpoints/events/submit-a-metric-event) y activa automáticamente [Correos de Logros](/es/features/emails#achievement-emails) si está configurado.

<MetricChangeResponseBlock />

Expand Down
30 changes: 16 additions & 14 deletions es/features/events.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -167,13 +167,15 @@ Hay un gran número de posibilidades aquí, ¡así que sé creativo!

Cada métrica tiene un `key` único que puedes usar para referenciar y rastrear eventos en tu código. Puedes encontrar el `key` en la página de configuración de la métrica.

Para comenzar a rastrear las interacciones de usuarios como eventos en tus Métricas de Trophy, usa la [API de Métricas](/es/api-reference/endpoints/metrics/send-a-metric-change-event) o una de nuestras [Bibliotecas cliente](/es/api-reference/client-libraries) con tipos seguros, compatibles con la mayoría de los principales lenguajes de programación.
Para comenzar a rastrear las interacciones de usuarios como eventos en tus Métricas de Trophy, usa la [API de Métricas](/es/api-reference/endpoints/events/submit-a-metric-event) o una de nuestras [Bibliotecas cliente](/es/api-reference/client-libraries) con tipos seguros, compatibles con la mayoría de los principales lenguajes de programación.

Aquí hay un ejemplo donde una plataforma de estudio ficticia utiliza una métrica para rastrear el número de tarjetas de estudio volteadas por cada estudiante. Cada vez que un estudiante interactúa, la plataforma envía un evento a Trophy indicándole cuántas tarjetas de estudio vieron:
Si estás enviando eventos en lote desde tu backend (por ejemplo, vaciados de cola, migraciones o importaciones por lotes), utiliza el endpoint de la Admin API [Enviar un lote de eventos de métrica](/es/admin-api/endpoints/events/submit-a-batch-of-metric-events) para enviar hasta 1,000 eventos de métrica en una sola solicitud.

Aquí hay un ejemplo donde una plataforma de estudio ficticia está usando una métrica para rastrear el número de tarjetas didácticas volteadas por cada estudiante. Cada vez que un estudiante interactúa, la plataforma envía un evento a Trophy indicándole cuántas tarjetas vieron:

<MetricChangeRequestBlock />

Cualquier [Logro](/es/features/achievements), [Racha](/es/features/streaks), [Puntos](/es/features/points) o [Clasificación](/es/features/leaderboards) que se haya configurado para esta métrica se procesará automáticamente, y la respuesta contendrá cualquier actualización del progreso del usuario que sea un resultado directo del evento ocurrido:
Cualquier [Logro](/es/features/achievements), [Racha](/es/features/streaks), [Puntos](/es/features/points) o [Clasificación](/es/features/leaderboards) que se haya configurado para esta métrica se procesará automáticamente, y la respuesta contendrá cualquier actualización del progreso del usuario que sea resultado directo del evento que ocurrió:

<MetricChangeResponseBlock />

Expand All @@ -182,15 +184,15 @@ En este ejemplo, la respuesta incluye lo siguiente:
- Los logros recién desbloqueados del usuario como resultado del evento
- La racha más reciente del usuario como resultado del evento
- Los puntos más recientes del usuario para cada sistema de puntos que cambió como resultado del evento
- Los datos de clasificación más recientes del usuario para cada clasificación que cambió como resultado del evento
- Los datos más recientes de clasificación del usuario para cada clasificación que cambió como resultado del evento

Con un poco de código personalizado, estos datos de respuesta se pueden utilizar para impulsar cualquier experiencia dentro de la aplicación que desees, incluyendo:
Con un poco de código personalizado, estos datos de respuesta pueden utilizarse para impulsar cualquier experiencia dentro de la aplicación que desees, incluyendo:

- Activar notificaciones dentro de la aplicación
- Efectos de sonido
- Animaciones

Observa cómo Charlie integra el seguimiento de métricas en una aplicación simple de NextJS usando el SDK de Trophy para [Node.js](/es/api-reference/client-libraries):
Observa a Charlie integrar el seguimiento de métricas en una aplicación NextJS simple usando el SDK de [Node.js](/es/api-reference/client-libraries) de Trophy:

<Frame>
<iframe
Expand All @@ -207,24 +209,24 @@ Observa cómo Charlie integra el seguimiento de métricas en una aplicación sim

### Eventos Idempotentes {#idempotent-events}

Trophy permite garantizar la unicidad en los eventos para que los usuarios no puedan aumentar una métrica realizando la misma acción exacta una y otra vez.
Trophy permite garantizar la unicidad de los eventos para que los usuarios no puedan incrementar una métrica repitiendo la misma acción una y otra vez.

Por ejemplo, una aplicación de aprendizaje de idiomas podría especificar que los usuarios solo pueden aumentar la métrica `lessons-completed` en 1 por cada lección única completada, por lo que si completan la misma lección dos veces, solo la primera cuenta.
Por ejemplo, una aplicación de aprendizaje de idiomas podría especificar que los usuarios solo pueden incrementar la métrica `lessons-completed` en 1 por cada lección única completada, de modo que si completan la misma lección dos veces, solo cuenta la primera.

<IdempotentEventTracking />

Esto ayuda a mantener tu código libre de lógica que verifique si los usuarios han completado acciones anteriormente, y en su lugar puedes confiar en que Trophy mantendrá las restricciones que necesitas.
Esto ayuda a mantener tu código libre de lógica que verifique si los usuarios han completado acciones previamente, y en su lugar puedes confiar en que Trophy mantendrá las restricciones que necesitas.

Para usar eventos idempotentes, utiliza el encabezado `Idempotency-Key` en la [API de eventos de métricas](/es/api-reference/endpoints/metrics/send-a-metric-change-event).
Para usar eventos idempotentes, utiliza el encabezado `Idempotency-Key` en la [API de eventos de métricas](/es/api-reference/endpoints/events/submit-a-metric-event).

[Más información sobre idempotencia](/es/api-reference/idempotency).

### Eventos Paralelos {#parallel-events}
### Eventos paralelos {#parallel-events}

Trophy no admite eventos paralelos para la misma métrica del mismo usuario. En su lugar, utiliza el parámetro `value` para incrementar la métrica por la cantidad total de todos los eventos individuales que necesitas rastrear.
Trophy no admite eventos paralelos a la misma métrica para el mismo usuario. En su lugar, usa el parámetro `value` para incrementar la métrica por el monto total de todos los eventos individuales que necesitas rastrear.

<ParallelEventsValueExample />

## 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 contactar al equipo de Trophy? Comunícate con nosotros por [correo electrónico](mailto:support@trophy.so). ¡Estamos aquí para ayudarte!
4 changes: 2 additions & 2 deletions es/features/points.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ Combina `total` con la lista de niveles ordenada del paso anterior para dibujar

#### Notificaciones de cambio de nivel {#level-change-notifications}

Cuando envías un [evento de cambio de métrica](/es/api-reference/endpoints/metrics/send-a-metric-change-event), la respuesta incluirá un mapa `points` indexado por las claves de tu sistema de puntos para cada sistema que cambió como resultado del evento.
Cuando envías un [evento de cambio de métrica](/es/api-reference/endpoints/events/submit-a-metric-event), la respuesta incluirá un mapa `points` indexado por las claves de tu sistema de puntos para cada sistema que cambió como resultado del evento.

Los datos contienen una clave `level` solo cuando el nivel del usuario cambió debido a este evento. Si su nivel permaneció igual, esa clave se omite, por lo que puedes tratar de forma segura un `level` presente como una señal de cambio de nivel sin necesidad de seguimiento adicional.

Expand Down Expand Up @@ -408,7 +408,7 @@ Existen varias formas de usar Trophy para obtener y mostrar puntos en tu aplicac

### Activación de UI transaccional {#triggering-transactional-ui}

En primer lugar, cualquier punto otorgado o deducido de los usuarios como resultado de un evento de cambio de métrica se devuelve en la respuesta al usar la [API de evento de cambio de métrica](/es/api-reference/endpoints/metrics/send-a-metric-change-event).
En primer lugar, cualquier punto otorgado o deducido de los usuarios como resultado de un evento de cambio de métrica se devuelve en la respuesta al usar la [API de evento de cambio de métrica](/es/api-reference/endpoints/events/submit-a-metric-event).

La respuesta incluye el nuevo total de puntos del usuario, cuántos puntos se otorgaron o dedujeron como resultado del evento, y los detalles de los activadores de puntos específicos que se dispararon. Cuando los [Niveles de Puntos](#points-levels) están habilitados, cada objeto de puntos en esa respuesta también puede incluir **`level`**: Trophy incluye el **nuevo** nivel del usuario **solo cuando cambió** como resultado de ese evento. El mismo comportamiento opcional de `level` se aplica cuando los puntos cambian debido a la [finalización de un logro](/es/api-reference/endpoints/achievements/mark-an-achievement-as-completed).

Expand Down
2 changes: 1 addition & 1 deletion es/features/push-notifications.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ Sigue los pasos a continuación para comenzar a enviar notificaciones push usand

Trophy utilizará los tokens de dispositivo que asocies con cada usuario al comunicarse con los [canales de notificaciones push](#supported-channels) compatibles para enrutar las notificaciones al dispositivo correcto.

Para asociar un token de dispositivo con un usuario en Trophy, asigna `deviceTokens` al [identificar usuarios explícitamente](https://docs.trophy.so/api-reference/endpoints/users/identify-a-user#body-device-tokens), o al [enviar eventos de métricas](https://docs.trophy.so/api-reference/endpoints/metrics/send-a-metric-change-event#body-user-device-tokens).
Para asociar un token de dispositivo con un usuario en Trophy, asigna `deviceTokens` al [identificar usuarios explícitamente](https://docs.trophy.so/api-reference/endpoints/users/identify-a-user#body-device-tokens), o al [enviar eventos de métricas](https://docs.trophy.so/api-reference/endpoints/events/submit-a-metric-event#body-user-device-tokens).

Así es como se asocian tokens de dispositivo al identificar usuarios:

Expand Down
2 changes: 1 addition & 1 deletion es/features/streaks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ Trophy expone los datos de rachas de dos formas, que pueden usarse para construi

### Respuesta de 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/metrics/send-a-metric-change-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) incluirá la racha actual del usuario.

<MetricChangeResponseBlock />

Expand Down
Loading
Loading