diff --git a/admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx b/admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx new file mode 100644 index 00000000..aee426cd --- /dev/null +++ b/admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx @@ -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** + + diff --git a/api-reference/endpoints/events/submit-a-metric-event.mdx b/api-reference/endpoints/events/submit-a-metric-event.mdx new file mode 100644 index 00000000..a765d610 --- /dev/null +++ b/api-reference/endpoints/events/submit-a-metric-event.mdx @@ -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** + + diff --git a/api-reference/endpoints/metrics/send-a-metric-change-event.mdx b/api-reference/endpoints/metrics/send-a-metric-change-event.mdx deleted file mode 100644 index a208436f..00000000 --- a/api-reference/endpoints/metrics/send-a-metric-change-event.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Send a metric change event -openapi: "POST /metrics/{key}/event" ---- - -import { RateLimitBadge } from "../../../components/rate-limit-badge.jsx"; - -**Rate Limits** - - \ No newline at end of file diff --git a/api-reference/idempotency.mdx b/api-reference/idempotency.mdx index c2b1807c..8181ca7f 100644 --- a/api-reference/idempotency.mdx +++ b/api-reference/idempotency.mdx @@ -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. diff --git a/docs.json b/docs.json index 5b521eb4..f53b70c2 100644 --- a/docs.json +++ b/docs.json @@ -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" ] }, { @@ -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": [ @@ -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" ] }, { @@ -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": [ @@ -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" @@ -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" @@ -877,4 +897,4 @@ "destination": "/es/platform/experimentation#what-is-engagement" } ] -} +} \ No newline at end of file diff --git a/es/admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx b/es/admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx new file mode 100644 index 00000000..d88b385d --- /dev/null +++ b/es/admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx @@ -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** + + diff --git a/es/api-reference/endpoints/events/submit-a-metric-event.mdx b/es/api-reference/endpoints/events/submit-a-metric-event.mdx new file mode 100644 index 00000000..e439727e --- /dev/null +++ b/es/api-reference/endpoints/events/submit-a-metric-event.mdx @@ -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** + + diff --git a/es/api-reference/endpoints/metrics/send-a-metric-change-event.mdx b/es/api-reference/endpoints/metrics/send-a-metric-change-event.mdx deleted file mode 100644 index c3f900f8..00000000 --- a/es/api-reference/endpoints/metrics/send-a-metric-change-event.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Enviar un evento de cambio de métrica -openapi: "POST /metrics/{key}/event" ---- - -import { RateLimitBadge } from "../../../../es/components/rate-limit-badge.jsx"; - -**Límites de velocidad** - - \ No newline at end of file diff --git a/es/api-reference/idempotency.mdx b/es/api-reference/idempotency.mdx index c35080b4..7d43c3a9 100644 --- a/es/api-reference/idempotency.mdx +++ b/es/api-reference/idempotency.mdx @@ -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. diff --git a/es/features/achievements.mdx b/es/features/achievements.mdx index 26f32906..f71f7c69 100644 --- a/es/features/achievements.mdx +++ b/es/features/achievements.mdx @@ -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. diff --git a/es/features/events.mdx b/es/features/events.mdx index 4c0d8349..4127f569 100644 --- a/es/features/events.mdx +++ b/es/features/events.mdx @@ -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: -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ó: @@ -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: