Aprende a usar Trophy para añadir una funcionalidad de logros a tu aplicación web o móvil.
Esta guía describe el proceso completo para añadir una funcionalidad de logros a tu aplicación web o móvil usando Trophy.A modo ilustrativo, usaremos el ejemplo de una plataforma de estudio que utiliza logros para incentivar y recompensar a los usuarios por ver tarjetas de memoria.
En Trophy, las Métricas son los componentes fundamentales de la gamificación y modelan las diferentes interacciones que los usuarios realizan con tu producto.En esta guía, la interacción que nos interesa es flashcards-viewed, pero puedes crear una métrica que mejor represente la interacción en torno a la cual quieres construir logros.En el panel de Trophy, dirígete a la página de métricas y crea una métrica.
Una vez que hayas creado tu métrica, dirígete a la página de logros y crea los logros que desees. Puedes encontrar todos los detalles sobre los tipos de logros y los diferentes casos de uso en la documentación de logros.Para los propósitos de esta guía, hemos configurado un par de logros basados en un número creciente de tarjetas volteadas:
10 tarjetas de estudio
50 tarjetas de estudio
100 tarjetas de estudio
250 tarjetas de estudio
1,000 tarjetas de estudio
También hemos configurado algunos logros relacionados con Rachas, pero no entraremos en detalle sobre estos en esta guía.
Para una guía completa sobre cómo agregar una función de rachas a tu aplicación web o móvil, consulta
nuestra guía completa.
También puedes crear logros de aniversario que se desbloquean cuando los usuarios alcanzan hitos anuales desde su fecha de registro.En Trophy rastreas las interacciones de los usuarios enviando Eventos desde tu código a las API de Trophy contra una métrica específica.Cuando se registran eventos para un usuario específico, cualquier logro vinculado a la métrica especificada se completará automáticamente si se cumplen los requisitos.Esto es lo que hace que construir experiencias gamificadas con Trophy sea tan fácil: hace todo el trabajo por ti entre bastidores.
Para interactuar con Trophy desde tu código, utilizarás el SDK de Trophy disponible en los principales lenguajes de programación.Instala el SDK de Trophy:
var user = new EventRequestUser { Id = "18", Email = "user@example.com"};var request = new MetricsEventRequest { User = user, Value = 750};await trophy.Metrics.EventAsync("flashcards-flipped", request);
La respuesta a esta llamada de API es el conjunto completo de cambios en cualquier característica que hayas construido con Trophy, incluyendo cualquier logro que se haya desbloqueado como resultado del evento.
Podemos usar la respuesta de la API de cambio de métrica para mostrar notificaciones emergentes (o ‘toasts’) cuando los usuarios completen logros.Aquí tienes un ejemplo de esto en acción:
Achievement Completed Pop-up
// Sends event to Trophyconst response = await viewFlashcard();if (!response) { return;}// Show toasts if the user has unlocked any new achievementsresponse.achievements.forEach((achievement) => { toast({ title: achievement.name, description: achievement.description, image: { src: achievement.badgeUrl, alt: achievement.name, }, });});
Si en cambio deseas mostrar todos los logros que has configurado en Trophy como parte de una interfaz de usuario globalmente accesible que no está vinculada a un usuario en particular, puedes utilizar la API de todos los logros.
curl --request GET \ --url https://api.trophy.so/v1/achievements \ --header 'X-API-KEY: <api-key>'
Tanto la API de logros de usuario como la API de todos los logros incluyen estadísticas de completado como completions (el número de usuarios que han completado un logro) y rarity (el porcentaje de usuarios que han completado un logro).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Trophy Docs","colors":{"primary":"#4CC74A","light":"#4CC74A","dark":"#4CC74A"},"logo":{"light":"https://mintcdn.com/trophy-ci-i18n-auto-translations/LOPVA88viP-iZWXu/logo/logo_light.svg?fit=max\u0026auto=format\u0026n=LOPVA88viP-iZWXu\u0026q=85\u0026s=6e5a8f68dd54acfe22ac00691b035350","dark":"https://mintcdn.com/trophy-ci-i18n-auto-translations/LOPVA88viP-iZWXu/logo/logo_dark.svg?fit=max\u0026auto=format\u0026n=LOPVA88viP-iZWXu\u0026q=85\u0026s=0304730912af991c3703cab22953d065","href":"https://trophy.so"},"favicon":{"light":"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_light.svg?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=6f91e644c139bc21a7c0dd0bf3b98360","dark":"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_dark.svg?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=8f7412e437e7339250d4d9ab88153f1f"},"api":{"openapi":["openapi/application.json","openapi/admin.json"]},"background":{"color":{"light":"#F9F9FB","dark":"#181818"}},"footer":{"socials":{"x":"https://x.com/trophylabs","github":"https://github.com/trophyso","youtube":"https://youtube.com/@trophylabsinc","linkedin":"https://linkedin.com/company/trophylabs"}},"seo":{"metatags":{"og:description":"Trophy is a developer-friendly platform for building gamified product experiences that retain users in any mobile or web app. Add features like achievements, streaks, points systems and leaderboards plus deliver personalized progress report and reactivation emails with no code.","og:image":"https://trophy.so/opengraph-image"}},"fonts":{"family":"Plus Jakarta Sans"},"icons":{"library":"lucide"},"integrations":{"ga4":{"measurementId":"G-R146N3CQHE"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"navbar":{"links":[{"href":"https://trophy.so/contact-sales?utm_source=docs\u0026utm_medium=navbar-links","label":"Book a call"},{"href":"https://app.trophy.so","label":"Dashboard"}],"primary":{"type":"button","label":"Get started","href":"https://app.trophy.so/sign-up?utm_source=docs\u0026utm_medium=navbar-links"}},"href":"getting-started/introduction"},{"language":"es","navbar":{"links":[{"href":"https://app.trophy.so","label":"Panel"}],"primary":{"type":"button","label":"Comenzar gratis","href":"https://app.trophy.so/sign-up?utm_source=docs\u0026utm_medium=navbar-links"}},"href":"es/getting-started/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"trophy-ci-i18n-auto-translations","hasAudioNarration":false,"actualSubdomain":"trophy-ci-i18n-auto-translations","customDomains":[],"gitSource":{"type":"github","owner":"trophyso","repo":"docs","deployBranch":"ci/i18n/auto-translations","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae48c6039bc6f1b8c4fe65d","collectionId":"9a8b4e7b-1f25-4e1e-98ed-1d748883b80e","liveDeploymentHistoryId":"6ae48c6039bc6f1b8c4fe65d","schemaVersion":"v3"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"}},"buildId":"6ae48c6039bc6f1b8c4fe65d:success","clientVersion":"0.0.4043","preview":{"mainDeploymentId":"6802207f7adb6df074424dfc","changedFiles":[{"path":"admin-api/endpoints/points/archive-boosts-batch.mdx","status":"modified"},{"path":"es/platform/achievements.mdx","status":"modified"},{"path":"es/platform/leaderboards.mdx","status":"modified"},{"path":"platform/achievements.mdx","status":"modified"},{"path":"platform/leaderboards.mdx","status":"modified"},{"path":"admin-api/authentication.mdx","status":"modified"},{"path":"platform/environments.mdx","status":"modified"},{"path":"platform/multi-tenancy.mdx","status":"modified"},{"path":"features/emails.mdx","status":"modified"},{"path":"platform/data-sync.mdx","status":"modified"},{"path":"account/billing.mdx","status":"modified"},{"path":"es/account/billing.mdx","status":"modified"},{"path":"api-reference/authentication.mdx","status":"modified"},{"path":"admin-api/endpoints/application-api-keys/create-application-api-keys.mdx","status":"modified"},{"path":"admin-api/endpoints/application-api-keys/delete-application-api-keys.mdx","status":"modified"},{"path":"admin-api/endpoints/attributes/create-attributes.mdx","status":"modified"},{"path":"admin-api/endpoints/attributes/delete-attributes.mdx","status":"modified"},{"path":"admin-api/endpoints/attributes/get-an-attribute.mdx","status":"modified"},{"path":"admin-api/endpoints/attributes/list-attributes.mdx","status":"modified"},{"path":"admin-api/endpoints/attributes/update-attributes.mdx","status":"modified"},{"path":"admin-api/endpoints/leaderboards/create-leaderboards.mdx","status":"modified"},{"path":"admin-api/endpoints/leaderboards/delete-leaderboards.mdx","status":"modified"},{"path":"admin-api/endpoints/leaderboards/get-a-leaderboard.mdx","status":"modified"},{"path":"admin-api/endpoints/leaderboards/list-leaderboards.mdx","status":"modified"},{"path":"admin-api/endpoints/leaderboards/update-leaderboards.mdx","status":"modified"},{"path":"admin-api/endpoints/metrics/create-metrics.mdx","status":"modified"},{"path":"admin-api/endpoints/metrics/delete-metrics.mdx","status":"modified"},{"path":"admin-api/endpoints/metrics/get-a-metric.mdx","status":"modified"},{"path":"admin-api/endpoints/metrics/list-metrics.mdx","status":"modified"},{"path":"admin-api/endpoints/metrics/update-metrics.mdx","status":"modified"},{"path":"admin-api/endpoints/points/create-boosts.mdx","status":"modified"},{"path":"admin-api/endpoints/points/create-levels.mdx","status":"modified"},{"path":"admin-api/endpoints/points/create-points-systems.mdx","status":"modified"},{"path":"admin-api/endpoints/points/create-points-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/points/delete-boosts.mdx","status":"modified"},{"path":"admin-api/endpoints/points/delete-levels.mdx","status":"modified"},{"path":"admin-api/endpoints/points/delete-points-systems.mdx","status":"modified"},{"path":"admin-api/endpoints/points/delete-points-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/points/get-a-boost.mdx","status":"modified"},{"path":"admin-api/endpoints/points/get-a-level.mdx","status":"modified"},{"path":"admin-api/endpoints/points/get-a-points-system.mdx","status":"modified"},{"path":"admin-api/endpoints/points/get-a-points-trigger.mdx","status":"modified"},{"path":"admin-api/endpoints/points/list-boosts.mdx","status":"modified"},{"path":"admin-api/endpoints/points/list-levels.mdx","status":"modified"},{"path":"admin-api/endpoints/points/list-points-systems.mdx","status":"modified"},{"path":"admin-api/endpoints/points/list-points-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/points/update-boosts.mdx","status":"modified"},{"path":"admin-api/endpoints/points/update-levels.mdx","status":"modified"},{"path":"admin-api/endpoints/points/update-points-systems.mdx","status":"modified"},{"path":"admin-api/endpoints/points/update-points-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/streaks/grant-freezes.mdx","status":"modified"},{"path":"admin-api/endpoints/streaks/restore-streaks.mdx","status":"modified"},{"path":"admin-api/endpoints/tenants/create-tenants.mdx","status":"modified"},{"path":"admin-api/endpoints/tenants/delete-tenants.mdx","status":"modified"},{"path":"admin-api/endpoints/tenants/get-a-tenant.mdx","status":"modified"},{"path":"admin-api/endpoints/tenants/list-tenants.mdx","status":"modified"},{"path":"admin-api/endpoints/tenants/update-tenants.mdx","status":"modified"},{"path":"api-reference/endpoints/achievements/all-achievements.mdx","status":"modified"},{"path":"api-reference/endpoints/achievements/mark-an-achievement-as-completed.mdx","status":"modified"},{"path":"api-reference/endpoints/leaderboards/get-all-active-leaderboards.mdx","status":"modified"},{"path":"api-reference/endpoints/leaderboards/get-leaderboard.mdx","status":"modified"},{"path":"api-reference/endpoints/metrics/send-a-metric-change-event.mdx","status":"modified"},{"path":"api-reference/endpoints/points/get-points-boosts.mdx","status":"modified"},{"path":"api-reference/endpoints/points/get-points-level-summary.mdx","status":"modified"},{"path":"api-reference/endpoints/points/get-points-levels.mdx","status":"modified"},{"path":"api-reference/endpoints/points/get-points-summary.mdx","status":"modified"},{"path":"api-reference/endpoints/points/get-points.mdx","status":"modified"},{"path":"api-reference/endpoints/streaks/get-streaks.mdx","status":"modified"},{"path":"api-reference/endpoints/users/create-a-user.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-single-metric-event-summary-for-a-user.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-single-metric-for-a-user.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-single-user.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-completed-achievements.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-leaderboard.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-points-boosts.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-points-summary.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-points.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-streak.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-wrapped.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-all-metrics-for-a-user.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-user-preferences.mdx","status":"modified"},{"path":"api-reference/endpoints/users/identify-a-user.mdx","status":"modified"},{"path":"api-reference/endpoints/users/update-a-user.mdx","status":"modified"},{"path":"api-reference/endpoints/users/update-user-preferences.mdx","status":"modified"},{"path":"webhooks/events/achievements/achievement-completed.mdx","status":"modified"},{"path":"webhooks/events/emails/achievement-due.mdx","status":"modified"},{"path":"webhooks/events/emails/reactivation-due.mdx","status":"modified"},{"path":"webhooks/events/emails/recap-due.mdx","status":"modified"},{"path":"webhooks/events/emails/streak-reminder-due.mdx","status":"modified"},{"path":"webhooks/events/leaderboards/leaderboard-changed.mdx","status":"modified"},{"path":"webhooks/events/leaderboards/leaderboard-finished.mdx","status":"modified"},{"path":"webhooks/events/leaderboards/leaderboard-rank-changed.mdx","status":"modified"},{"path":"webhooks/events/leaderboards/leaderboard-started.mdx","status":"modified"},{"path":"webhooks/events/points/points-boost-finished.mdx","status":"modified"},{"path":"webhooks/events/points/points-boost-started.mdx","status":"modified"},{"path":"webhooks/events/points/points-changed.mdx","status":"modified"},{"path":"webhooks/events/points/points-level-changed.mdx","status":"modified"},{"path":"webhooks/events/streaks/streak-extended.mdx","status":"modified"},{"path":"webhooks/events/streaks/streak-freeze-consumed.mdx","status":"modified"},{"path":"webhooks/events/streaks/streak-freeze-earned.mdx","status":"modified"},{"path":"webhooks/events/streaks/streak-lost.mdx","status":"modified"},{"path":"webhooks/events/streaks/streak-started.mdx","status":"modified"},{"path":"admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx","status":"modified"},{"path":"api-reference/endpoints/events/submit-a-metric-event.mdx","status":"modified"},{"path":"mcp/account-mcp-server/installation.mdx","status":"modified"},{"path":"mcp/docs-mcp-server/installation.mdx","status":"modified"},{"path":"mcp/docs-mcp-server/introduction.mdx","status":"modified"},{"path":"admin-api/endpoints/streaks/create-pauses.mdx","status":"modified"},{"path":"admin-api/endpoints/streaks/delete-pauses.mdx","status":"modified"},{"path":"admin-api/endpoints/achievements/create-achievements.mdx","status":"modified"},{"path":"admin-api/endpoints/achievements/delete-achievements.mdx","status":"modified"},{"path":"admin-api/endpoints/achievements/get-an-achievement.mdx","status":"modified"},{"path":"admin-api/endpoints/achievements/list-achievements.mdx","status":"modified"},{"path":"admin-api/endpoints/achievements/update-achievements.mdx","status":"modified"},{"path":"admin-api/endpoints/settings/get-organization-settings.mdx","status":"modified"},{"path":"admin-api/endpoints/settings/update-organization-settings.mdx","status":"modified"},{"path":"admin-api/endpoints/streaks/get-streak-settings.mdx","status":"modified"},{"path":"admin-api/endpoints/streaks/update-streak-settings.mdx","status":"modified"},{"path":"es/features/events.mdx","status":"modified"},{"path":"es/features/points.mdx","status":"modified"},{"path":"es/features/users.mdx","status":"modified"},{"path":"features/events.mdx","status":"modified"},{"path":"features/points.mdx","status":"modified"},{"path":"features/users.mdx","status":"modified"},{"path":"api-reference/client-libraries.mdx","status":"modified"},{"path":"api-reference/introduction.mdx","status":"modified"},{"path":"getting-started/introduction.mdx","status":"modified"},{"path":"getting-started/production-checklist.mdx","status":"modified"},{"path":"getting-started/quickstart.mdx","status":"modified"},{"path":"admin-api/endpoints/streaks/reset-streaks.mdx","status":"modified"},{"path":"account/security.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/create-reward-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/create-rewards.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/delete-reward-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/delete-rewards.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/get-a-reward-trigger.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/get-a-reward.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/list-reward-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/list-rewards.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/update-reward-triggers.mdx","status":"modified"},{"path":"admin-api/endpoints/rewards/update-rewards.mdx","status":"modified"},{"path":"api-reference/endpoints/rewards/redeem-a-reward.mdx","status":"modified"},{"path":"api-reference/endpoints/users/get-a-users-rewards.mdx","status":"modified"},{"path":"webhooks/events/rewards/reward-awarded.mdx","status":"modified"},{"path":"webhooks/events/rewards/reward-redeemed.mdx","status":"modified"}],"mainDeployment":{"subdomain":"trophy","customDomains":["docs.trophy.so"],"basePath":""}},"searchFilterCounts":[{"language":"en","tag":"Admin API","count":71},{"language":"es","tag":"API de Administración","count":71},{"language":"en","tag":"Application API","count":35},{"language":"es","tag":"API de Aplicación","count":35},{"language":"en","tag":"Points","count":29},{"language":"es","tag":"Puntos","count":29},{"language":"en","tag":"Webhooks","count":26},{"language":"es","tag":"Webhooks","count":26},{"language":"en","tag":"Home","count":24},{"language":"es","tag":"Inicio","count":24},{"language":"en","tag":"Users","count":17},{"language":"es","tag":"Usuarios","count":17},{"language":"en","tag":"Overview","count":16},{"language":"es","tag":"Resumen","count":16},{"language":"en","tag":"Rewards","count":13},{"language":"en","tag":"Streaks","count":13},{"language":"es","tag":"Recompensas","count":13},{"language":"es","tag":"Rachas","count":13},{"language":"en","tag":"Leaderboards","count":11},{"language":"es","tag":"Clasificaciones","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"preview":{"mainDeploymentId":"6802207f7adb6df074424dfc","changedFiles":[{"path":"getting-started/introduction","rawPath":"getting-started/introduction.mdx","status":"modified","pageMetadata":{"title":"Welcome to Trophy","description":"Trophy is the gamification layer for consumer apps. Build points, achievements, streaks, and leaderboards in minutes with Trophy's pre-built APIs and SDKs.","og:description":"Trophy is the gamification layer for consumer apps. Build points, achievements, streaks, and leaderboards in minutes with Trophy's pre-built APIs and SDKs.","href":"/getting-started/introduction"}},{"path":"getting-started/quickstart","rawPath":"getting-started/quickstart.mdx","status":"modified","pageMetadata":{"title":"Quick Start","description":"Install a Trophy SDK, authenticate, identify a user, and submit your first metric event in about five minutes.","og:description":"Install a Trophy SDK, authenticate, identify a user, and submit your first metric event in about five minutes.","href":"/getting-started/quickstart"}},{"path":"getting-started/production-checklist","rawPath":"getting-started/production-checklist.mdx","status":"modified","pageMetadata":{"title":"Production Checklist","description":"Idempotency, retries, errors, rate limits, webhooks, and environment configuration for production Trophy integrations.","og:description":"Idempotency, retries, errors, rate limits, webhooks, and environment configuration for production Trophy integrations.","href":"/getting-started/production-checklist"}},{"path":"features/events","rawPath":"features/events.mdx","status":"modified","pageMetadata":{"title":"Events","description":"Events are data objects that represent individual user interactions against metrics in Trophy.","og:description":"Events are data objects that represent individual user interactions against metrics in Trophy.","href":"/features/events","icon":"radio"}},{"path":"features/users","rawPath":"features/users.mdx","status":"modified","pageMetadata":{"title":"Users","description":"Learn how to track interactions across your userbase using Trophy.","og:description":"Users are the people that use your platform. Learn how to tell Trophy about them.","href":"/features/users","icon":"users"}},{"path":"features/points","rawPath":"features/points.mdx","status":"modified","pageMetadata":{"title":"Points","description":"Learn how to build points-based systems using Trophy","og:description":"Use points systems to reward users for in-app actions.","href":"/features/points","icon":"sparkle"}},{"path":"features/emails","rawPath":"features/emails.mdx","status":"modified","pageMetadata":{"title":"Emails","description":"Learn how to use emails in a gamified product experience with Trophy.","og:description":"Use automated email flows to extend your gamification experience outside your app and remind users to keep coming back.","href":"/features/emails","icon":"mail"}},{"path":"platform/environments","rawPath":"platform/environments.mdx","status":"modified","pageMetadata":{"title":"Environments","description":"Learn how to use environments to help you test and review changes before releasing to production.","og:description":"Learn how to use environments to help you test and review changes before releasing to production.","href":"/platform/environments","icon":"layers"}},{"path":"platform/multi-tenancy","rawPath":"platform/multi-tenancy.mdx","status":"modified","pageMetadata":{"title":"Multi-Tenancy","description":"Learn how to use multi-tenancy to help you set up and customize gamification features for each of your customers.","og:description":"Learn how to use multi-tenancy to help you set up and customize gamification features for each of your customers.","href":"/platform/multi-tenancy","icon":"building"}},{"path":"platform/data-sync","rawPath":"platform/data-sync.mdx","status":"modified","pageMetadata":{"title":"Data sync","description":"Learn how to sync Trophy data to your warehouse or database for analytics and reporting.","og:description":"Learn how to sync Trophy data to your warehouse or database for analytics and reporting.","href":"/platform/data-sync","icon":"database"}},{"path":"account/security","rawPath":"account/security.mdx","status":"modified","pageMetadata":{"title":"Security","description":"Account security features for your Trophy organization, including single sign-on, multi-factor authentication and role-based access control.","og:description":"Account security features for your Trophy organization, including single sign-on, multi-factor authentication and role-based access control.","href":"/account/security","icon":"shield-check"}},{"path":"account/billing","rawPath":"account/billing.mdx","status":"modified","pageMetadata":{"title":"Billing","description":"Learn how Trophy controls costs by charging based on monthly active users.","og:description":"Learn how Trophy controls costs by charging based on monthly active users.","href":"/account/billing","icon":"gauge"}},{"path":"api-reference/introduction","rawPath":"api-reference/introduction.mdx","status":"modified","pageMetadata":{"title":"Introduction","description":"Authenticate, handle errors and rate limits, use idempotency, and explore Trophy Application API SDKs.","subtitle":"Learn about the Trophy API and get started building your integration.","href":"/api-reference/introduction"}},{"path":"api-reference/authentication","rawPath":"api-reference/authentication.mdx","status":"modified","pageMetadata":{"title":"Authentication","description":"Authenticate with the Application API using user-scoped application API keys transmitted in the `X-API-KEY` header.","og:description":"Authenticate with the Trophy Application API using user-scoped application API keys transmitted in the `X-API-KEY` header.","href":"/api-reference/authentication","icon":"key"}},{"path":"api-reference/client-libraries","rawPath":"api-reference/client-libraries.mdx","status":"modified","pageMetadata":{"title":"Client Libraries","description":"Official Trophy SDKs for Node, Go, Java, .NET, PHP, Python, and Ruby with install commands and GitHub repositories.","og:description":"Official Trophy SDKs for Node, Go, Java, .NET, PHP, Python, and Ruby with install commands and GitHub repositories.","href":"/api-reference/client-libraries","icon":"code-xml"}},{"path":"api-reference/endpoints/achievements/mark-an-achievement-as-completed","rawPath":"api-reference/endpoints/achievements/mark-an-achievement-as-completed.mdx","status":"modified","pageMetadata":{"title":"Mark an achievement as completed","openapi":"openapi/application.json POST /achievements/{key}/complete","description":"Mark an achievement as completed for a user.","href":"/api-reference/endpoints/achievements/mark-an-achievement-as-completed"}},{"path":"api-reference/endpoints/achievements/all-achievements","rawPath":"api-reference/endpoints/achievements/all-achievements.mdx","status":"modified","pageMetadata":{"title":"Get all achievements and their completion stats","openapi":"openapi/application.json GET /achievements","description":"Get all achievements and their completion stats.","href":"/api-reference/endpoints/achievements/all-achievements"}},{"path":"api-reference/endpoints/streaks/get-streaks","rawPath":"api-reference/endpoints/streaks/get-streaks.mdx","status":"modified","pageMetadata":{"title":"Get the streak lengths of a list of users","openapi":"openapi/application.json GET /streaks","description":"Get the streak lengths of a list of users, ranked by streak length from longest to shortest.","href":"/api-reference/endpoints/streaks/get-streaks"}},{"path":"api-reference/endpoints/events/submit-a-metric-event","rawPath":"api-reference/endpoints/events/submit-a-metric-event.mdx","status":"modified","pageMetadata":{"title":"Submit a metric event","openapi":"openapi/application.json POST /metrics/{key}/event","description":"Increment or decrement the value of a metric for a user.","href":"/api-reference/endpoints/events/submit-a-metric-event"}},{"path":"api-reference/endpoints/points/get-points","rawPath":"api-reference/endpoints/points/get-points.mdx","status":"modified","pageMetadata":{"title":"Get a points system with its triggers","openapi":"openapi/application.json GET /points/{key}","description":"Get a points system with its triggers.","href":"/api-reference/endpoints/points/get-points"}},{"path":"api-reference/endpoints/points/get-points-boosts","rawPath":"api-reference/endpoints/points/get-points-boosts.mdx","status":"modified","pageMetadata":{"title":"Get boosts for a points system","openapi":"openapi/application.json GET /points/{key}/boosts","description":"Get all global boosts for a points system. Finished boosts are excluded by default.","href":"/api-reference/endpoints/points/get-points-boosts"}},{"path":"api-reference/endpoints/points/get-points-levels","rawPath":"api-reference/endpoints/points/get-points-levels.mdx","status":"modified","pageMetadata":{"title":"Get levels for a points system","openapi":"openapi/application.json GET /points/{key}/levels","description":"Get all levels for a points system.","href":"/api-reference/endpoints/points/get-points-levels"}},{"path":"api-reference/endpoints/points/get-points-level-summary","rawPath":"api-reference/endpoints/points/get-points-level-summary.mdx","status":"modified","pageMetadata":{"title":"Get level summary for a points system","openapi":"openapi/application.json GET /points/{key}/level-summary","description":"Get a breakdown of the number of users at each level in a points system.","href":"/api-reference/endpoints/points/get-points-level-summary"}},{"path":"api-reference/endpoints/points/get-points-summary","rawPath":"api-reference/endpoints/points/get-points-summary.mdx","status":"modified","pageMetadata":{"title":"Get a breakdown of users by points","openapi":"openapi/application.json GET /points/{key}/summary","description":"Get a breakdown of the number of users with points in each range.","href":"/api-reference/endpoints/points/get-points-summary"}},{"path":"api-reference/endpoints/leaderboards/get-all-active-leaderboards","rawPath":"api-reference/endpoints/leaderboards/get-all-active-leaderboards.mdx","status":"modified","pageMetadata":{"title":"Get all leaderboards","openapi":"openapi/application.json GET /leaderboards","description":"Get all leaderboards for your organization. Finished leaderboards are excluded by default.","href":"/api-reference/endpoints/leaderboards/get-all-active-leaderboards"}},{"path":"api-reference/endpoints/leaderboards/get-leaderboard","rawPath":"api-reference/endpoints/leaderboards/get-leaderboard.mdx","status":"modified","pageMetadata":{"title":"Get a single leaderboard","openapi":"openapi/application.json GET /leaderboards/{key}","description":"Get a specific leaderboard by its key.","href":"/api-reference/endpoints/leaderboards/get-leaderboard"}},{"path":"api-reference/endpoints/rewards/redeem-a-reward","rawPath":"api-reference/endpoints/rewards/redeem-a-reward.mdx","status":"modified","pageMetadata":{"title":"Redeem a reward","openapi":"openapi/application.json POST /rewards/{key}/redeem","description":"Redeem a reward for a user.","href":"/api-reference/endpoints/rewards/redeem-a-reward"}},{"path":"api-reference/endpoints/users/identify-a-user","rawPath":"api-reference/endpoints/users/identify-a-user.mdx","status":"modified","pageMetadata":{"title":"Identify a user","openapi":"openapi/application.json PUT /users/{id}","description":"Identify a user.","href":"/api-reference/endpoints/users/identify-a-user"}},{"path":"api-reference/endpoints/users/create-a-user","rawPath":"api-reference/endpoints/users/create-a-user.mdx","status":"modified","pageMetadata":{"title":"Create a new user","openapi":"openapi/application.json POST /users","description":"Create a new user.","href":"/api-reference/endpoints/users/create-a-user"}},{"path":"api-reference/endpoints/users/get-a-single-user","rawPath":"api-reference/endpoints/users/get-a-single-user.mdx","status":"modified","pageMetadata":{"title":"Get a single user","openapi":"openapi/application.json GET /users/{id}","description":"Get a single user.","href":"/api-reference/endpoints/users/get-a-single-user"}},{"path":"api-reference/endpoints/users/update-a-user","rawPath":"api-reference/endpoints/users/update-a-user.mdx","status":"modified","pageMetadata":{"title":"Update a user","openapi":"openapi/application.json PATCH /users/{id}","description":"Update a user.","href":"/api-reference/endpoints/users/update-a-user"}},{"path":"api-reference/endpoints/users/get-all-metrics-for-a-user","rawPath":"api-reference/endpoints/users/get-all-metrics-for-a-user.mdx","status":"modified","pageMetadata":{"title":"Get all metrics for a user","openapi":"openapi/application.json GET /users/{id}/metrics","description":"Get a single user's progress against all active metrics.","href":"/api-reference/endpoints/users/get-all-metrics-for-a-user"}},{"path":"api-reference/endpoints/users/get-a-single-metric-for-a-user","rawPath":"api-reference/endpoints/users/get-a-single-metric-for-a-user.mdx","status":"modified","pageMetadata":{"title":"Get a single metric for a user","openapi":"openapi/application.json GET /users/{id}/metrics/{key}","description":"Get a user's progress against a single active metric.","href":"/api-reference/endpoints/users/get-a-single-metric-for-a-user"}},{"path":"api-reference/endpoints/users/get-a-single-metric-event-summary-for-a-user","rawPath":"api-reference/endpoints/users/get-a-single-metric-event-summary-for-a-user.mdx","status":"modified","pageMetadata":{"title":"Get a summary of metric events over time","openapi":"openapi/application.json GET /users/{id}/metrics/{key}/event-summary","description":"Get a summary of metric events over time for a user.","href":"/api-reference/endpoints/users/get-a-single-metric-event-summary-for-a-user"}},{"path":"api-reference/endpoints/users/get-a-users-completed-achievements","rawPath":"api-reference/endpoints/users/get-a-users-completed-achievements.mdx","status":"modified","pageMetadata":{"title":"Get a user's achievements","openapi":"openapi/application.json GET /users/{id}/achievements","description":"Get a user's achievements.","href":"/api-reference/endpoints/users/get-a-users-completed-achievements"}},{"path":"api-reference/endpoints/users/get-a-users-streak","rawPath":"api-reference/endpoints/users/get-a-users-streak.mdx","status":"modified","pageMetadata":{"title":"Get a user's streak status","openapi":"openapi/application.json GET /users/{id}/streak","description":"Get a user's streak data.","href":"/api-reference/endpoints/users/get-a-users-streak"}},{"path":"api-reference/endpoints/users/get-a-users-points","rawPath":"api-reference/endpoints/users/get-a-users-points.mdx","status":"modified","pageMetadata":{"title":"Get a user's points data","openapi":"openapi/application.json GET /users/{id}/points/{key}","description":"Get a user's points for a specific points system.","href":"/api-reference/endpoints/users/get-a-users-points"}},{"path":"api-reference/endpoints/users/get-a-users-points-boosts","rawPath":"api-reference/endpoints/users/get-a-users-points-boosts.mdx","status":"modified","pageMetadata":{"title":"Get a user's active points boosts","openapi":"openapi/application.json GET /users/{id}/points/{key}/boosts","description":"Get active points boosts for a user in a specific points system. Returns both global boosts the user is eligible for and user-specific boosts.","href":"/api-reference/endpoints/users/get-a-users-points-boosts"}},{"path":"api-reference/endpoints/users/get-a-users-points-summary","rawPath":"api-reference/endpoints/users/get-a-users-points-summary.mdx","status":"modified","pageMetadata":{"title":"Get a summary of points events over time","openapi":"openapi/application.json GET /users/{id}/points/{key}/event-summary","description":"Get a summary of points awards over time for a user for a specific points system.","href":"/api-reference/endpoints/users/get-a-users-points-summary"}},{"path":"api-reference/endpoints/users/get-a-users-leaderboard","rawPath":"api-reference/endpoints/users/get-a-users-leaderboard.mdx","status":"modified","pageMetadata":{"title":"Get a user's leaderboard data","openapi":"openapi/application.json GET /users/{id}/leaderboards/{key}","description":"Get a user's rank, value, and daily ranking history for a specific leaderboard.","href":"/api-reference/endpoints/users/get-a-users-leaderboard"}},{"path":"api-reference/endpoints/users/get-a-users-rewards","rawPath":"api-reference/endpoints/users/get-a-users-rewards.mdx","status":"modified","pageMetadata":{"title":"Get a user's rewards","openapi":"openapi/application.json GET /users/{id}/rewards","description":"Get rewards awarded to a user. Filter by redeemed state and the date the reward was awarded.","href":"/api-reference/endpoints/users/get-a-users-rewards"}},{"path":"api-reference/endpoints/users/get-a-users-wrapped","rawPath":"api-reference/endpoints/users/get-a-users-wrapped.mdx","status":"modified","pageMetadata":{"title":"Get a user's wrapped data","openapi":"openapi/application.json GET /users/{id}/wrapped","description":"Get a user's year-in-review wrapped data.","href":"/api-reference/endpoints/users/get-a-users-wrapped"}},{"path":"api-reference/endpoints/users/get-user-preferences","rawPath":"api-reference/endpoints/users/get-user-preferences.mdx","status":"modified","pageMetadata":{"title":"Get a user's preferences","openapi":"openapi/application.json GET /users/{id}/preferences","description":"Get a user's notification preferences.","href":"/api-reference/endpoints/users/get-user-preferences"}},{"path":"api-reference/endpoints/users/update-user-preferences","rawPath":"api-reference/endpoints/users/update-user-preferences.mdx","status":"modified","pageMetadata":{"title":"Update a user's preferences","openapi":"openapi/application.json PATCH /users/{id}/preferences","description":"Update a user's notification and streak preferences. Streak preferences other than `streak.enabled` require streak customization to be enabled in your Trophy dashboard settings.","href":"/api-reference/endpoints/users/update-user-preferences"}},{"path":"admin-api/authentication","rawPath":"admin-api/authentication.mdx","status":"modified","pageMetadata":{"title":"Authentication","description":"Integrate securely with the Admin API using account-level admin API keys transmitted in the `X-API-KEY` header.","og:description":"Integrate securely with the Trophy Admin API using account-level admin API keys transmitted in the `X-API-KEY` header.","href":"/admin-api/authentication","icon":"key"}},{"path":"admin-api/endpoints/metrics/list-metrics","rawPath":"admin-api/endpoints/metrics/list-metrics.mdx","status":"modified","pageMetadata":{"title":"List metrics","openapi":"openapi/admin.json GET /metrics","description":"List metrics.","href":"/admin-api/endpoints/metrics/list-metrics"}},{"path":"admin-api/endpoints/metrics/get-a-metric","rawPath":"admin-api/endpoints/metrics/get-a-metric.mdx","status":"modified","pageMetadata":{"title":"Get a metric by ID","openapi":"openapi/admin.json GET /metrics/{id}","description":"Get a metric by ID.","href":"/admin-api/endpoints/metrics/get-a-metric"}},{"path":"admin-api/endpoints/metrics/update-metrics","rawPath":"admin-api/endpoints/metrics/update-metrics.mdx","status":"modified","pageMetadata":{"title":"Update metrics","openapi":"openapi/admin.json PATCH /metrics","description":"Update metrics by ID.","href":"/admin-api/endpoints/metrics/update-metrics"}},{"path":"admin-api/endpoints/metrics/create-metrics","rawPath":"admin-api/endpoints/metrics/create-metrics.mdx","status":"modified","pageMetadata":{"title":"Create metrics","openapi":"openapi/admin.json POST /metrics","description":"Create metrics.","href":"/admin-api/endpoints/metrics/create-metrics"}},{"path":"admin-api/endpoints/metrics/delete-metrics","rawPath":"admin-api/endpoints/metrics/delete-metrics.mdx","status":"modified","pageMetadata":{"title":"Delete metrics","openapi":"openapi/admin.json DELETE /metrics","description":"Delete metrics by ID.","href":"/admin-api/endpoints/metrics/delete-metrics"}},{"path":"admin-api/endpoints/events/submit-a-batch-of-metric-events","rawPath":"admin-api/endpoints/events/submit-a-batch-of-metric-events.mdx","status":"modified","pageMetadata":{"title":"Submit a batch of metric events","openapi":"openapi/admin.json POST /metrics/events","description":"Submit up to 1,000 metric events for asynchronous processing.\n","href":"/admin-api/endpoints/events/submit-a-batch-of-metric-events"}},{"path":"admin-api/endpoints/attributes/list-attributes","rawPath":"admin-api/endpoints/attributes/list-attributes.mdx","status":"modified","pageMetadata":{"title":"List attributes","openapi":"openapi/admin.json GET /attributes","description":"List attributes.","href":"/admin-api/endpoints/attributes/list-attributes"}},{"path":"admin-api/endpoints/attributes/get-an-attribute","rawPath":"admin-api/endpoints/attributes/get-an-attribute.mdx","status":"modified","pageMetadata":{"title":"Get an attribute","openapi":"openapi/admin.json GET /attributes/{id}","description":"Get an attribute by ID.","href":"/admin-api/endpoints/attributes/get-an-attribute"}},{"path":"admin-api/endpoints/attributes/update-attributes","rawPath":"admin-api/endpoints/attributes/update-attributes.mdx","status":"modified","pageMetadata":{"title":"Update attributes","openapi":"openapi/admin.json PATCH /attributes","description":"Update attributes by ID.","href":"/admin-api/endpoints/attributes/update-attributes"}},{"path":"admin-api/endpoints/attributes/create-attributes","rawPath":"admin-api/endpoints/attributes/create-attributes.mdx","status":"modified","pageMetadata":{"title":"Create attributes","openapi":"openapi/admin.json POST /attributes","description":"Create attributes.","href":"/admin-api/endpoints/attributes/create-attributes"}},{"path":"admin-api/endpoints/attributes/delete-attributes","rawPath":"admin-api/endpoints/attributes/delete-attributes.mdx","status":"modified","pageMetadata":{"title":"Delete attributes","openapi":"openapi/admin.json DELETE /attributes","description":"Delete attributes by ID.","href":"/admin-api/endpoints/attributes/delete-attributes"}},{"path":"admin-api/endpoints/achievements/list-achievements","rawPath":"admin-api/endpoints/achievements/list-achievements.mdx","status":"modified","pageMetadata":{"title":"List achievements","openapi":"openapi/admin.json GET /achievements","description":"List achievements.","href":"/admin-api/endpoints/achievements/list-achievements"}},{"path":"admin-api/endpoints/achievements/get-an-achievement","rawPath":"admin-api/endpoints/achievements/get-an-achievement.mdx","status":"modified","pageMetadata":{"title":"Get an achievement by ID","openapi":"openapi/admin.json GET /achievements/{id}","description":"Get an achievement by ID.","href":"/admin-api/endpoints/achievements/get-an-achievement"}},{"path":"admin-api/endpoints/achievements/update-achievements","rawPath":"admin-api/endpoints/achievements/update-achievements.mdx","status":"modified","pageMetadata":{"title":"Update achievements","openapi":"openapi/admin.json PATCH /achievements","description":"Update achievements by ID. Maximum 100 achievements per request. Only provided fields are updated; omitted fields are preserved.","href":"/admin-api/endpoints/achievements/update-achievements"}},{"path":"admin-api/endpoints/achievements/create-achievements","rawPath":"admin-api/endpoints/achievements/create-achievements.mdx","status":"modified","pageMetadata":{"title":"Create achievements","openapi":"openapi/admin.json POST /achievements","description":"Create achievements. Trigger-specific fields are required based on `trigger`.","href":"/admin-api/endpoints/achievements/create-achievements"}},{"path":"admin-api/endpoints/achievements/delete-achievements","rawPath":"admin-api/endpoints/achievements/delete-achievements.mdx","status":"modified","pageMetadata":{"title":"Delete achievements","openapi":"openapi/admin.json DELETE /achievements","description":"Delete achievements by ID.","href":"/admin-api/endpoints/achievements/delete-achievements"}},{"path":"admin-api/endpoints/streaks/get-streak-settings","rawPath":"admin-api/endpoints/streaks/get-streak-settings.mdx","status":"modified","pageMetadata":{"title":"Get streak settings","openapi":"openapi/admin.json GET /streaks/settings","description":"Get the organization's streak configuration.","href":"/admin-api/endpoints/streaks/get-streak-settings"}},{"path":"admin-api/endpoints/streaks/update-streak-settings","rawPath":"admin-api/endpoints/streaks/update-streak-settings.mdx","status":"modified","pageMetadata":{"title":"Update streak settings","openapi":"openapi/admin.json PATCH /streaks/settings","description":"Update the organization's streak configuration.","href":"/admin-api/endpoints/streaks/update-streak-settings"}},{"path":"admin-api/endpoints/streaks/grant-freezes","rawPath":"admin-api/endpoints/streaks/grant-freezes.mdx","status":"modified","pageMetadata":{"title":"Create streak freezes for multiple users","openapi":"openapi/admin.json POST /streaks/freezes","description":"Create streak freezes for multiple users.","href":"/admin-api/endpoints/streaks/grant-freezes"}},{"path":"admin-api/endpoints/streaks/create-pauses","rawPath":"admin-api/endpoints/streaks/create-pauses.mdx","status":"modified","pageMetadata":{"title":"Create streak pauses for multiple users","openapi":"openapi/admin.json POST /streaks/pauses","description":"Create streak pauses for multiple users. A pause covers a specific date range and maintains the user's streak length during that range instead of ending the streak. Start dates in the past are rejected.","href":"/admin-api/endpoints/streaks/create-pauses"}},{"path":"admin-api/endpoints/streaks/delete-pauses","rawPath":"admin-api/endpoints/streaks/delete-pauses.mdx","status":"modified","pageMetadata":{"title":"Delete streak pauses","openapi":"openapi/admin.json DELETE /streaks/pauses","description":"Delete streak pauses by ID.","href":"/admin-api/endpoints/streaks/delete-pauses"}},{"path":"admin-api/endpoints/streaks/restore-streaks","rawPath":"admin-api/endpoints/streaks/restore-streaks.mdx","status":"modified","pageMetadata":{"title":"Restore streaks for multiple users","openapi":"openapi/admin.json POST /streaks/restore","description":"Restore streaks for multiple users to the maximum previously achieved streak length found within the current restore window: the last 90 days for daily streaks, weekly periods starting with the week containing the start of the current calendar year for weekly streaks, and monthly periods starting at the beginning of the previous calendar year for monthly streaks.","href":"/admin-api/endpoints/streaks/restore-streaks"}},{"path":"admin-api/endpoints/streaks/reset-streaks","rawPath":"admin-api/endpoints/streaks/reset-streaks.mdx","status":"modified","pageMetadata":{"title":"Reset streaks to zero for multiple users","openapi":"openapi/admin.json POST /streaks/reset","description":"Reset the current streak to zero for multiple users.","href":"/admin-api/endpoints/streaks/reset-streaks"}},{"path":"admin-api/endpoints/points/list-points-systems","rawPath":"admin-api/endpoints/points/list-points-systems.mdx","status":"modified","pageMetadata":{"title":"List points systems","openapi":"openapi/admin.json GET /points","description":"List points systems.","href":"/admin-api/endpoints/points/list-points-systems"}},{"path":"admin-api/endpoints/points/get-a-points-system","rawPath":"admin-api/endpoints/points/get-a-points-system.mdx","status":"modified","pageMetadata":{"title":"Get a points system by ID","openapi":"openapi/admin.json GET /points/{id}","description":"Get a points system by ID.","href":"/admin-api/endpoints/points/get-a-points-system"}},{"path":"admin-api/endpoints/points/update-points-systems","rawPath":"admin-api/endpoints/points/update-points-systems.mdx","status":"modified","pageMetadata":{"title":"Update points systems","openapi":"openapi/admin.json PATCH /points","description":"Update points systems by ID.","href":"/admin-api/endpoints/points/update-points-systems"}},{"path":"admin-api/endpoints/points/create-points-systems","rawPath":"admin-api/endpoints/points/create-points-systems.mdx","status":"modified","pageMetadata":{"title":"Create points systems","openapi":"openapi/admin.json POST /points","description":"Create points systems. Optionally include sub-entities (levels, boosts, triggers) in each system payload to create them alongside the system.","href":"/admin-api/endpoints/points/create-points-systems"}},{"path":"admin-api/endpoints/points/delete-points-systems","rawPath":"admin-api/endpoints/points/delete-points-systems.mdx","status":"modified","pageMetadata":{"title":"Delete points systems","openapi":"openapi/admin.json DELETE /points","description":"Delete points systems by ID.","href":"/admin-api/endpoints/points/delete-points-systems"}},{"path":"admin-api/endpoints/points/list-points-triggers","rawPath":"admin-api/endpoints/points/list-points-triggers.mdx","status":"modified","pageMetadata":{"title":"List points triggers","openapi":"openapi/admin.json GET /points/{systemId}/triggers","description":"List points triggers for a system.","href":"/admin-api/endpoints/points/list-points-triggers"}},{"path":"admin-api/endpoints/points/get-a-points-trigger","rawPath":"admin-api/endpoints/points/get-a-points-trigger.mdx","status":"modified","pageMetadata":{"title":"Get a points trigger by ID","openapi":"openapi/admin.json GET /points/{systemId}/triggers/{id}","description":"Get a single points trigger by ID.","href":"/admin-api/endpoints/points/get-a-points-trigger"}},{"path":"admin-api/endpoints/points/update-points-triggers","rawPath":"admin-api/endpoints/points/update-points-triggers.mdx","status":"modified","pageMetadata":{"title":"Update points triggers","openapi":"openapi/admin.json PATCH /points/{systemId}/triggers","description":"Update points triggers in bulk. Maximum 100 triggers per request. Only provided fields are updated; omitted fields are preserved.","href":"/admin-api/endpoints/points/update-points-triggers"}},{"path":"admin-api/endpoints/points/create-points-triggers","rawPath":"admin-api/endpoints/points/create-points-triggers.mdx","status":"modified","pageMetadata":{"title":"Create points triggers","openapi":"openapi/admin.json POST /points/{systemId}/triggers","description":"Create points triggers in bulk.","href":"/admin-api/endpoints/points/create-points-triggers"}},{"path":"admin-api/endpoints/points/delete-points-triggers","rawPath":"admin-api/endpoints/points/delete-points-triggers.mdx","status":"modified","pageMetadata":{"title":"Delete points triggers","openapi":"openapi/admin.json DELETE /points/{systemId}/triggers","description":"Delete points triggers by ID. Maximum 100 trigger IDs per request.","href":"/admin-api/endpoints/points/delete-points-triggers"}},{"path":"admin-api/endpoints/points/list-levels","rawPath":"admin-api/endpoints/points/list-levels.mdx","status":"modified","pageMetadata":{"title":"List points levels","openapi":"openapi/admin.json GET /points/{systemId}/levels","description":"List points levels for a system.","href":"/admin-api/endpoints/points/list-levels"}},{"path":"admin-api/endpoints/points/get-a-level","rawPath":"admin-api/endpoints/points/get-a-level.mdx","status":"modified","pageMetadata":{"title":"Get a points level by ID","openapi":"openapi/admin.json GET /points/{systemId}/levels/{id}","description":"Get a single points level by ID.","href":"/admin-api/endpoints/points/get-a-level"}},{"path":"admin-api/endpoints/points/update-levels","rawPath":"admin-api/endpoints/points/update-levels.mdx","status":"modified","pageMetadata":{"title":"Update multiple points levels","openapi":"openapi/admin.json PATCH /points/{systemId}/levels","description":"Update multiple points levels. Each item must include an ID. `key` cannot be changed.","href":"/admin-api/endpoints/points/update-levels"}},{"path":"admin-api/endpoints/points/create-levels","rawPath":"admin-api/endpoints/points/create-levels.mdx","status":"modified","pageMetadata":{"title":"Create points levels","openapi":"openapi/admin.json POST /points/{systemId}/levels","description":"Create points levels.","href":"/admin-api/endpoints/points/create-levels"}},{"path":"admin-api/endpoints/points/delete-levels","rawPath":"admin-api/endpoints/points/delete-levels.mdx","status":"modified","pageMetadata":{"title":"Delete multiple points levels","openapi":"openapi/admin.json DELETE /points/{systemId}/levels","description":"Delete multiple points levels by ID.","href":"/admin-api/endpoints/points/delete-levels"}},{"path":"admin-api/endpoints/points/list-boosts","rawPath":"admin-api/endpoints/points/list-boosts.mdx","status":"modified","pageMetadata":{"title":"List points boosts","openapi":"openapi/admin.json GET /points/{systemId}/boosts","description":"List points boosts for a system.","href":"/admin-api/endpoints/points/list-boosts"}},{"path":"admin-api/endpoints/points/get-a-boost","rawPath":"admin-api/endpoints/points/get-a-boost.mdx","status":"modified","pageMetadata":{"title":"Get a points boost by ID","openapi":"openapi/admin.json GET /points/{systemId}/boosts/{id}","description":"Get a single points boost by ID.","href":"/admin-api/endpoints/points/get-a-boost"}},{"path":"admin-api/endpoints/points/update-boosts","rawPath":"admin-api/endpoints/points/update-boosts.mdx","status":"modified","pageMetadata":{"title":"Update multiple points boosts","openapi":"openapi/admin.json PATCH /points/{systemId}/boosts","description":"Update multiple points boosts.","href":"/admin-api/endpoints/points/update-boosts"}},{"path":"admin-api/endpoints/points/create-boosts","rawPath":"admin-api/endpoints/points/create-boosts.mdx","status":"modified","pageMetadata":{"title":"Create points boosts","openapi":"openapi/admin.json POST /points/{systemId}/boosts","description":"Create points boosts.","href":"/admin-api/endpoints/points/create-boosts"}},{"path":"admin-api/endpoints/points/delete-boosts","rawPath":"admin-api/endpoints/points/delete-boosts.mdx","status":"modified","pageMetadata":{"title":"Delete multiple points boosts","openapi":"openapi/admin.json DELETE /points/{systemId}/boosts","description":"Delete multiple points boosts by ID.","href":"/admin-api/endpoints/points/delete-boosts"}},{"path":"admin-api/endpoints/leaderboards/list-leaderboards","rawPath":"admin-api/endpoints/leaderboards/list-leaderboards.mdx","status":"modified","pageMetadata":{"title":"List leaderboards","openapi":"openapi/admin.json GET /leaderboards","description":"List leaderboards.","href":"/admin-api/endpoints/leaderboards/list-leaderboards"}},{"path":"admin-api/endpoints/leaderboards/get-a-leaderboard","rawPath":"admin-api/endpoints/leaderboards/get-a-leaderboard.mdx","status":"modified","pageMetadata":{"title":"Get a leaderboard","openapi":"openapi/admin.json GET /leaderboards/{id}","description":"Get a leaderboard by ID.","href":"/admin-api/endpoints/leaderboards/get-a-leaderboard"}},{"path":"admin-api/endpoints/leaderboards/update-leaderboards","rawPath":"admin-api/endpoints/leaderboards/update-leaderboards.mdx","status":"modified","pageMetadata":{"title":"Update leaderboards","openapi":"openapi/admin.json PATCH /leaderboards","description":"Update leaderboards by ID. Updating `status` behaves the same as activating, scheduling, deactivating, or finishing a leaderboard in the dashboard.","href":"/admin-api/endpoints/leaderboards/update-leaderboards"}},{"path":"admin-api/endpoints/leaderboards/create-leaderboards","rawPath":"admin-api/endpoints/leaderboards/create-leaderboards.mdx","status":"modified","pageMetadata":{"title":"Create leaderboards","openapi":"openapi/admin.json POST /leaderboards","description":"Create leaderboards.","href":"/admin-api/endpoints/leaderboards/create-leaderboards"}},{"path":"admin-api/endpoints/leaderboards/delete-leaderboards","rawPath":"admin-api/endpoints/leaderboards/delete-leaderboards.mdx","status":"modified","pageMetadata":{"title":"Delete leaderboards","openapi":"openapi/admin.json DELETE /leaderboards","description":"Delete leaderboards by ID.","href":"/admin-api/endpoints/leaderboards/delete-leaderboards"}},{"path":"admin-api/endpoints/rewards/list-rewards","rawPath":"admin-api/endpoints/rewards/list-rewards.mdx","status":"modified","pageMetadata":{"title":"List rewards","openapi":"openapi/admin.json GET /rewards","description":"List rewards.","href":"/admin-api/endpoints/rewards/list-rewards"}},{"path":"admin-api/endpoints/rewards/get-a-reward","rawPath":"admin-api/endpoints/rewards/get-a-reward.mdx","status":"modified","pageMetadata":{"title":"Get a reward by ID","openapi":"openapi/admin.json GET /rewards/{id}","description":"Get a reward by ID.","href":"/admin-api/endpoints/rewards/get-a-reward"}},{"path":"admin-api/endpoints/rewards/update-rewards","rawPath":"admin-api/endpoints/rewards/update-rewards.mdx","status":"modified","pageMetadata":{"title":"Update rewards","openapi":"openapi/admin.json PATCH /rewards","description":"Update rewards by ID. Maximum 100 rewards per request. Only provided fields are updated; omitted fields are preserved. Use the reward triggers endpoints to change a reward's triggers.","href":"/admin-api/endpoints/rewards/update-rewards"}},{"path":"admin-api/endpoints/rewards/create-rewards","rawPath":"admin-api/endpoints/rewards/create-rewards.mdx","status":"modified","pageMetadata":{"title":"Create rewards","openapi":"openapi/admin.json POST /rewards","description":"Create rewards. Optionally include triggers in each reward payload to create them alongside the reward. A reward with any invalid trigger is not created.","href":"/admin-api/endpoints/rewards/create-rewards"}},{"path":"admin-api/endpoints/rewards/delete-rewards","rawPath":"admin-api/endpoints/rewards/delete-rewards.mdx","status":"modified","pageMetadata":{"title":"Delete rewards","openapi":"openapi/admin.json DELETE /rewards","description":"Delete rewards by ID. Maximum 100 reward IDs per request. A deleted reward's triggers are deleted too.","href":"/admin-api/endpoints/rewards/delete-rewards"}},{"path":"admin-api/endpoints/rewards/list-reward-triggers","rawPath":"admin-api/endpoints/rewards/list-reward-triggers.mdx","status":"modified","pageMetadata":{"title":"List reward triggers","openapi":"openapi/admin.json GET /rewards/{rewardId}/triggers","description":"List triggers for a reward. Active triggers are listed first.","href":"/admin-api/endpoints/rewards/list-reward-triggers"}},{"path":"admin-api/endpoints/rewards/get-a-reward-trigger","rawPath":"admin-api/endpoints/rewards/get-a-reward-trigger.mdx","status":"modified","pageMetadata":{"title":"Get a reward trigger by ID","openapi":"openapi/admin.json GET /rewards/{rewardId}/triggers/{id}","description":"Get a single reward trigger by ID.","href":"/admin-api/endpoints/rewards/get-a-reward-trigger"}},{"path":"admin-api/endpoints/rewards/update-reward-triggers","rawPath":"admin-api/endpoints/rewards/update-reward-triggers.mdx","status":"modified","pageMetadata":{"title":"Update reward triggers","openapi":"openapi/admin.json PATCH /rewards/{rewardId}/triggers","description":"Update reward triggers in bulk. Maximum 100 triggers per request. Only provided fields are updated; omitted fields are preserved. A trigger keeps its ID when its criteria change.","href":"/admin-api/endpoints/rewards/update-reward-triggers"}},{"path":"admin-api/endpoints/rewards/create-reward-triggers","rawPath":"admin-api/endpoints/rewards/create-reward-triggers.mdx","status":"modified","pageMetadata":{"title":"Create reward triggers","openapi":"openapi/admin.json POST /rewards/{rewardId}/triggers","description":"Create reward triggers in bulk. Maximum 100 triggers per request.","href":"/admin-api/endpoints/rewards/create-reward-triggers"}},{"path":"admin-api/endpoints/rewards/delete-reward-triggers","rawPath":"admin-api/endpoints/rewards/delete-reward-triggers.mdx","status":"modified","pageMetadata":{"title":"Delete reward triggers","openapi":"openapi/admin.json DELETE /rewards/{rewardId}/triggers","description":"Delete reward triggers by ID. Maximum 100 trigger IDs per request. A reward with no triggers is not awarded until a trigger is added.","href":"/admin-api/endpoints/rewards/delete-reward-triggers"}},{"path":"admin-api/endpoints/tenants/list-tenants","rawPath":"admin-api/endpoints/tenants/list-tenants.mdx","status":"modified","pageMetadata":{"title":"List tenants","openapi":"openapi/admin.json GET /tenants","description":"List tenants in the current environment.","href":"/admin-api/endpoints/tenants/list-tenants"}},{"path":"admin-api/endpoints/tenants/get-a-tenant","rawPath":"admin-api/endpoints/tenants/get-a-tenant.mdx","status":"modified","pageMetadata":{"title":"Get a tenant","openapi":"openapi/admin.json GET /tenants/{id}","description":"Get a tenant by ID.","href":"/admin-api/endpoints/tenants/get-a-tenant"}},{"path":"admin-api/endpoints/tenants/update-tenants","rawPath":"admin-api/endpoints/tenants/update-tenants.mdx","status":"modified","pageMetadata":{"title":"Update tenants","openapi":"openapi/admin.json PATCH /tenants","description":"Update tenants by ID.","href":"/admin-api/endpoints/tenants/update-tenants"}},{"path":"admin-api/endpoints/tenants/create-tenants","rawPath":"admin-api/endpoints/tenants/create-tenants.mdx","status":"modified","pageMetadata":{"title":"Create tenants","openapi":"openapi/admin.json POST /tenants","description":"Create tenants.","href":"/admin-api/endpoints/tenants/create-tenants"}},{"path":"admin-api/endpoints/tenants/delete-tenants","rawPath":"admin-api/endpoints/tenants/delete-tenants.mdx","status":"modified","pageMetadata":{"title":"Delete tenants","openapi":"openapi/admin.json DELETE /tenants","description":"Delete tenants by ID.","href":"/admin-api/endpoints/tenants/delete-tenants"}},{"path":"admin-api/endpoints/application-api-keys/create-application-api-keys","rawPath":"admin-api/endpoints/application-api-keys/create-application-api-keys.mdx","status":"modified","pageMetadata":{"title":"Create application API keys for users","openapi":"openapi/admin.json POST /application-api-keys","description":"Create application API keys scoped to specific users. Each key can only perform operations on behalf of the user it was created for.","href":"/admin-api/endpoints/application-api-keys/create-application-api-keys"}},{"path":"admin-api/endpoints/application-api-keys/delete-application-api-keys","rawPath":"admin-api/endpoints/application-api-keys/delete-application-api-keys.mdx","status":"modified","pageMetadata":{"title":"Delete application API keys","openapi":"openapi/admin.json DELETE /application-api-keys","description":"Delete application API keys by ID.","href":"/admin-api/endpoints/application-api-keys/delete-application-api-keys"}},{"path":"admin-api/endpoints/settings/get-organization-settings","rawPath":"admin-api/endpoints/settings/get-organization-settings.mdx","status":"modified","pageMetadata":{"title":"Get organization settings","openapi":"openapi/admin.json GET /settings","description":"Get branding, experimentation, and aggregation settings.","href":"/admin-api/endpoints/settings/get-organization-settings"}},{"path":"admin-api/endpoints/settings/update-organization-settings","rawPath":"admin-api/endpoints/settings/update-organization-settings.mdx","status":"modified","pageMetadata":{"title":"Update organization settings","openapi":"openapi/admin.json PATCH /settings","description":"Update branding, experimentation, and aggregation settings.","href":"/admin-api/endpoints/settings/update-organization-settings"}},{"path":"webhooks/events/achievements/achievement-completed","rawPath":"webhooks/events/achievements/achievement-completed.mdx","status":"modified","pageMetadata":{"title":"Achievement completed","openapi":"openapi/application.json webhook achievement.completed","description":"Triggered when a user completes an achievement.","href":"/webhooks/events/achievements/achievement-completed"}},{"path":"webhooks/events/streaks/streak-started","rawPath":"webhooks/events/streaks/streak-started.mdx","status":"modified","pageMetadata":{"title":"Streak started","openapi":"openapi/application.json webhook streak.started","description":"Triggered when a user starts a streak.","href":"/webhooks/events/streaks/streak-started"}},{"path":"webhooks/events/streaks/streak-extended","rawPath":"webhooks/events/streaks/streak-extended.mdx","status":"modified","pageMetadata":{"title":"Streak extended","openapi":"openapi/application.json webhook streak.extended","description":"Triggered when a user extends an existing active streak.","href":"/webhooks/events/streaks/streak-extended"}},{"path":"webhooks/events/streaks/streak-lost","rawPath":"webhooks/events/streaks/streak-lost.mdx","status":"modified","pageMetadata":{"title":"Streak lost","openapi":"openapi/application.json webhook streak.lost","description":"Triggered when a user loses their streak.","href":"/webhooks/events/streaks/streak-lost"}},{"path":"webhooks/events/streaks/streak-freeze-consumed","rawPath":"webhooks/events/streaks/streak-freeze-consumed.mdx","status":"modified","pageMetadata":{"title":"Streak freeze consumed","openapi":"openapi/application.json webhook streak.freeze_consumed","description":"Triggered when a user consumes a streak freeze.","href":"/webhooks/events/streaks/streak-freeze-consumed"}},{"path":"webhooks/events/streaks/streak-freeze-earned","rawPath":"webhooks/events/streaks/streak-freeze-earned.mdx","status":"modified","pageMetadata":{"title":"Streak freeze earned","openapi":"openapi/application.json webhook streak.freeze_earned","description":"Triggered when a user earns streak freezes.","href":"/webhooks/events/streaks/streak-freeze-earned"}},{"path":"webhooks/events/points/points-changed","rawPath":"webhooks/events/points/points-changed.mdx","status":"modified","pageMetadata":{"title":"Points changed","openapi":"openapi/application.json webhook points.changed","description":"Triggered when a user is awarded or loses points. This event is fired a maximum of once per user per points system every fifteen minutes.","href":"/webhooks/events/points/points-changed"}},{"path":"webhooks/events/points/points-level-changed","rawPath":"webhooks/events/points/points-level-changed.mdx","status":"modified","pageMetadata":{"title":"Points level changed","openapi":"openapi/application.json webhook points.level_changed","description":"Triggered when a user's level changes within a points system as a result of earning or losing points.","href":"/webhooks/events/points/points-level-changed"}},{"path":"webhooks/events/points/points-boost-started","rawPath":"webhooks/events/points/points-boost-started.mdx","status":"modified","pageMetadata":{"title":"Points boost started","openapi":"openapi/application.json webhook points.boost_started","description":"Triggered when a points boost goes live (its start time has been reached).","href":"/webhooks/events/points/points-boost-started"}},{"path":"webhooks/events/points/points-boost-finished","rawPath":"webhooks/events/points/points-boost-finished.mdx","status":"modified","pageMetadata":{"title":"Points boost finished","openapi":"openapi/application.json webhook points.boost_finished","description":"Triggered when a points boost ends (its end time has been reached).","href":"/webhooks/events/points/points-boost-finished"}},{"path":"webhooks/events/leaderboards/leaderboard-started","rawPath":"webhooks/events/leaderboards/leaderboard-started.mdx","status":"modified","pageMetadata":{"title":"Leaderboard started","openapi":"openapi/application.json webhook leaderboard.started","description":"Triggered when a run of a leaderboard begins.","href":"/webhooks/events/leaderboards/leaderboard-started"}},{"path":"webhooks/events/leaderboards/leaderboard-changed","rawPath":"webhooks/events/leaderboards/leaderboard-changed.mdx","status":"modified","pageMetadata":{"title":"Leaderboard changed","openapi":"openapi/application.json webhook leaderboard.changed","description":"Triggered when leaderboard rankings change. This event is fired a maximum of once per leaderboard every fifteen minutes.","href":"/webhooks/events/leaderboards/leaderboard-changed"}},{"path":"webhooks/events/leaderboards/leaderboard-rank-changed","rawPath":"webhooks/events/leaderboards/leaderboard-rank-changed.mdx","status":"modified","pageMetadata":{"title":"Leaderboard rank changed","openapi":"openapi/application.json webhook leaderboard.rank_changed","description":"Triggered when a user's leaderboard rank changes. This event is fired a maximum of once per user per leaderboard every fifteen minutes.","href":"/webhooks/events/leaderboards/leaderboard-rank-changed"}},{"path":"webhooks/events/leaderboards/leaderboard-finished","rawPath":"webhooks/events/leaderboards/leaderboard-finished.mdx","status":"modified","pageMetadata":{"title":"Leaderboard finished","openapi":"openapi/application.json webhook leaderboard.finished","description":"Triggered when a run of a leaderboard finishes.","href":"/webhooks/events/leaderboards/leaderboard-finished"}},{"path":"webhooks/events/rewards/reward-awarded","rawPath":"webhooks/events/rewards/reward-awarded.mdx","status":"modified","pageMetadata":{"title":"Reward awarded","openapi":"openapi/application.json webhook reward.awarded","description":"Triggered when a reward is awarded to a user. The reward is not fulfilled until it is redeemed.","href":"/webhooks/events/rewards/reward-awarded"}},{"path":"webhooks/events/rewards/reward-redeemed","rawPath":"webhooks/events/rewards/reward-redeemed.mdx","status":"modified","pageMetadata":{"title":"Reward redeemed","openapi":"openapi/application.json webhook reward.redeemed","description":"Triggered when a reward is fulfilled. For points rewards this is when points are granted. For custom rewards the customer handles fulfillment.","href":"/webhooks/events/rewards/reward-redeemed"}},{"path":"webhooks/events/emails/recap-due","rawPath":"webhooks/events/emails/recap-due.mdx","status":"modified","pageMetadata":{"title":"Recap due","openapi":"openapi/application.json webhook emails.recap_due","description":"Triggered when a recap message is due to be sent to a user.","href":"/webhooks/events/emails/recap-due"}},{"path":"webhooks/events/emails/reactivation-due","rawPath":"webhooks/events/emails/reactivation-due.mdx","status":"modified","pageMetadata":{"title":"Reactivation due","openapi":"openapi/application.json webhook emails.reactivation_due","description":"Triggered when a reactivation message is due to be sent to a user.","href":"/webhooks/events/emails/reactivation-due"}},{"path":"webhooks/events/emails/streak-reminder-due","rawPath":"webhooks/events/emails/streak-reminder-due.mdx","status":"modified","pageMetadata":{"title":"Streak reminder due","openapi":"openapi/application.json webhook emails.streak_reminder_due","description":"Triggered when a streak reminder message is due to be sent to a user.","href":"/webhooks/events/emails/streak-reminder-due"}},{"path":"webhooks/events/emails/achievement-due","rawPath":"webhooks/events/emails/achievement-due.mdx","status":"modified","pageMetadata":{"title":"Achievement due","openapi":"openapi/application.json webhook emails.achievement_due","description":"Triggered when an achievement message is due to be sent to a user.","href":"/webhooks/events/emails/achievement-due"}},{"path":"mcp/docs-mcp-server/introduction","rawPath":"mcp/docs-mcp-server/introduction.mdx","status":"modified","pageMetadata":{"title":"Introduction","description":"Learn about the Trophy Docs MCP Server and why agents should use it for live documentation context.","subtitle":"On-demand Trophy docs for any AI coding agent.","href":"/mcp/docs-mcp-server/introduction"}},{"path":"mcp/docs-mcp-server/installation","rawPath":"mcp/docs-mcp-server/installation.mdx","status":"modified","pageMetadata":{"title":"Installation","description":"Install the Trophy Docs MCP Server in Claude, Claude Code, Cursor, VS Code, and other MCP clients.","subtitle":"Connect live Trophy documentation to your coding agent.","href":"/mcp/docs-mcp-server/installation","icon":"download"}},{"path":"mcp/account-mcp-server/installation","rawPath":"mcp/account-mcp-server/installation.mdx","status":"modified","pageMetadata":{"title":"Installation","description":"Install the Account MCP Server in Claude, Claude Code, Cursor, ChatGPT, VS Code, and other MCP clients.","subtitle":"Connect the remote Account MCP Server to your coding agent.","href":"/mcp/account-mcp-server/installation","icon":"download"}},{"path":"es/features/events","rawPath":"es/features/events.mdx","status":"modified","pageMetadata":{"title":"Eventos","description":"Los eventos son objetos de datos que representan interacciones individuales de usuarios contra métricas en Trophy.","og:description":"Los eventos son objetos de datos que representan interacciones individuales de usuarios contra métricas en Trophy.","href":"/es/features/events","icon":"radio"}},{"path":"es/features/users","rawPath":"es/features/users.mdx","status":"modified","pageMetadata":{"title":"Usuarios","description":"Aprende a rastrear las interacciones en tu base de usuarios utilizando Trophy.","og:description":"Los usuarios son las personas que utilizan tu plataforma. Aprende cómo informar a Trophy sobre ellos.","href":"/es/features/users","icon":"users"}},{"path":"es/features/points","rawPath":"es/features/points.mdx","status":"modified","pageMetadata":{"title":"Puntos","description":"Aprende a construir sistemas basados en puntos usando Trophy","og:description":"Usa sistemas de puntos para recompensar a los usuarios por acciones dentro de la aplicación.","href":"/es/features/points","icon":"sparkle"}},{"path":"es/account/billing","rawPath":"es/account/billing.mdx","status":"modified","pageMetadata":{"title":"Facturación","description":"Aprende cómo Trophy controla los costos cobrando según los usuarios activos mensuales.","og:description":"Aprende cómo Trophy controla los costos cobrando según los usuarios activos mensuales.","href":"/es/account/billing","icon":"gauge"}},{"path":"admin-api/endpoints/points/archive-boosts-batch","rawPath":"admin-api/endpoints/points/archive-boosts-batch.mdx","status":"modified"},{"path":"es/platform/achievements","rawPath":"es/platform/achievements.mdx","status":"modified"},{"path":"es/platform/leaderboards","rawPath":"es/platform/leaderboards.mdx","status":"modified"},{"path":"platform/achievements","rawPath":"platform/achievements.mdx","status":"modified"},{"path":"platform/leaderboards","rawPath":"platform/leaderboards.mdx","status":"modified"},{"path":"api-reference/endpoints/metrics/send-a-metric-change-event","rawPath":"api-reference/endpoints/metrics/send-a-metric-change-event.mdx","status":"modified"}],"mainDeployment":{"subdomain":"trophy","customDomains":["docs.trophy.so"],"basePath":""}},"editorBaseUrl":"https://app.mintlify.com/trophy/trophy/editor/ci%2Fi18n%2Fauto-translations/~","googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"a.nav-tabs-item:has(img[src*=\"/icons/mcp.svg\"])::before{content:\"\";display:block;width:1rem;height:1rem;flex-shrink:0;background-color:currentColor;-webkit-mask:url(/icons/mcp.svg) center/contain no-repeat;mask:url(/icons/mcp.svg) center/contain no-repeat}a.nav-tabs-item img[src*=\"/icons/mcp.svg\"]{display:none}"}],"page":{"pagePath":"es/guides/how-to-build-an-achievements-feature","slug":"/es/guides/how-to-build-an-achievements-feature","pageMetadata":{"title":"Cómo Crear una Funcionalidad de Logros","description":"Aprende a usar Trophy para añadir una funcionalidad de logros a tu aplicación web o móvil.","subtitle":"Aprende a usar Trophy para añadir una funcionalidad de logros a tu aplicación web o móvil.","noindex":true,"href":"/es/guides/how-to-build-an-achievements-feature"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Aprende a usar Trophy para añadir una funcionalidad de logros a tu aplicación web o móvil.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,CodeGroup,Frame,Heading,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Esta guía describe el proceso completo para añadir una funcionalidad de logros a tu aplicación web o móvil usando Trophy.`}),`\n`,_jsx(_components.p,{children:`A modo ilustrativo, usaremos el ejemplo de una plataforma de estudio que utiliza logros para incentivar y recompensar a los usuarios por ver tarjetas de memoria.`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Para ver un ejemplo completamente funcional de esto en la práctica, consulta la `,_jsx(_components.a,{href:`https://examples.trophy.so`,children:`demostración en vivo`}),` o el `,_jsx(_components.a,{href:`https://github.com/trophyso/example-study-platform/tree/demo`,children:`repositorio de github`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`pre-requisites`,children:`Requisitos previos`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Una cuenta de `,_jsx(_components.a,{href:`https://app.trophy.so/sign-up`,children:`Trophy`})]}),`\n`,_jsx(_components.li,{children:`Aproximadamente 10 minutos`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`trophy-setup`,children:`Configuración de Trophy`}),`\n`,_jsxs(_components.p,{children:[`En Trophy, las `,_jsx(_components.a,{href:`/es/features/metrics`,children:`Métricas`}),` son los componentes fundamentales de la gamificación y modelan las diferentes interacciones que los usuarios realizan con tu producto.`]}),`\n`,_jsxs(_components.p,{children:[`En esta guía, la interacción que nos interesa es `,_jsx(_components.code,{children:`flashcards-viewed`}),`, pero puedes crear una métrica que mejor represente la interacción en torno a la cual quieres construir logros.`]}),`\n`,_jsxs(_components.p,{children:[`En el panel de Trophy, dirígete a la `,_jsx(_components.a,{href:`https://app.trophy.so/metrics`,children:`página de métricas`}),` y crea una métrica.`]}),`\n`,_jsx(Frame,{children:_jsx(`video`,{autoPlay:true,muted:true,loop:true,playsInline:true,className:`mint-w-full mint-aspect-video`,src:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/create_new_metric.mp4?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=9c66a4444b21eae410158df64d14f3c6`,\"data-path\":`assets/guides/achievements-feature/create_new_metric.mp4`})}),`\n`,_jsxs(_components.p,{children:[`Una vez que hayas creado tu métrica, dirígete a la `,_jsx(_components.a,{href:`https://app.trophy.so/achievements`,children:`página de logros`}),` y crea los logros que desees. Puedes encontrar todos los detalles sobre los tipos de logros y los diferentes casos de uso en la `,_jsx(_components.a,{href:`/es/features/achievements`,children:`documentación de logros`}),`.`]}),`\n`,_jsx(_components.p,{children:`Para los propósitos de esta guía, hemos configurado un par de logros basados en un número creciente de tarjetas volteadas:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`10 tarjetas de estudio`}),`\n`,_jsx(_components.li,{children:`50 tarjetas de estudio`}),`\n`,_jsx(_components.li,{children:`100 tarjetas de estudio`}),`\n`,_jsx(_components.li,{children:`250 tarjetas de estudio`}),`\n`,_jsx(_components.li,{children:`1,000 tarjetas de estudio`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`También hemos configurado algunos logros relacionados con `,_jsx(_components.a,{href:`/es/features/streaks`,children:`Rachas`}),`, pero no entraremos en detalle sobre estos en esta guía.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Para una guía completa sobre cómo agregar una función de rachas a tu aplicación web o móvil, consulta\nnuestra `,_jsx(_components.a,{href:`/es/guides/how-to-build-a-streaks-feature`,children:`guía completa`}),`.`]})}),`\n`,_jsxs(_components.p,{children:[`También puedes crear `,_jsx(_components.a,{href:`/es/features/achievements#anniversary-achievements`,children:`logros de aniversario`}),` que se desbloquean cuando los usuarios alcanzan hitos anuales desde su fecha de registro.`]}),`\n`,_jsxs(_components.p,{children:[`En Trophy rastreas las interacciones de los usuarios enviando `,_jsx(_components.a,{href:`/es/features/events`,children:`Eventos`}),` desde tu código a las API de Trophy contra una métrica específica.`]}),`\n`,_jsxs(_components.p,{children:[`Cuando se registran eventos para un usuario específico, cualquier logro vinculado a la métrica especificada se `,_jsx(_components.strong,{children:`completará automáticamente`}),` si se cumplen los requisitos.`]}),`\n`,_jsx(_components.p,{children:`Esto es lo que hace que construir experiencias gamificadas con Trophy sea tan fácil: hace todo el trabajo por ti entre bastidores.`}),`\n`,_jsx(Heading,{level:`2`,id:`installing-trophy-sdk`,children:`Instalación del SDK de Trophy`}),`\n`,_jsxs(_components.p,{children:[`Para interactuar con Trophy desde tu código, utilizarás el SDK de Trophy disponible en los principales `,_jsx(_components.a,{href:`/es/api-reference/client-libraries`,children:`lenguajes de programación`}),`.`]}),`\n`,_jsx(_components.p,{children:`Instala el SDK de Trophy:`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Node`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @trophyso/node`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`gem`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` trophy_api_client`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` trophy`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`PHP`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`composer`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` require`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` trophyso/php`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java (Gradle)`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`implementation`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'so.trophy:trophy-java:1.0.0'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java (Maven)`,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`dependency`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`groupId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`so.trophy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c/groupId>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`artifactId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`trophy-java`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c/artifactId>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`version`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`1.0.0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c/version>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/dependency`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`go`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` github.com/trophy-so/trophy-go`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`.NET (C#)`,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`//`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` .NET`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Core`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` CLI`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dotnet`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` package`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Trophy`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`//`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Nuget`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Package`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Manager`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`nuget`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Trophy`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`//`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Visual`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Studio`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`Install-Package`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` Trophy`})]}),`\n`]})})})]}),`\n`,_jsxs(_components.p,{children:[`A continuación, obtén tu clave de API desde la `,_jsx(_components.a,{href:`https://app.trophy.so/integration`,children:`página de integración`}),` de Trophy y agrégala como una variable de entorno `,_jsx(_components.strong,{children:`solo del lado del servidor`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`TROPHY_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'*******'`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Asegúrate de `,_jsx(_components.strong,{children:`no`}),` exponer tu clave de API en código del lado del cliente.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`tracking-user-interactions`,children:`Rastreo de Interacciones de Usuarios`}),`\n`,_jsxs(_components.p,{children:[`Para rastrear un evento (interacción de usuario) contra tu métrica, utiliza la `,_jsx(_components.a,{href:`/es/api-reference/endpoints/events/submit-a-metric-event`,children:`API de cambio de métrica`}),`.`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`12`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.trophy.so/v1/metrics/flashcards-flipped/event`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-API-KEY: \u003capiKey>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Idempotency-Key: flashcard-view-42\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"user\": {`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"id\": \"18\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"email\": \"user@example.com\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"tz\": \"Europe/London\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"value\": 750`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`}'`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node`,numberOfLines:`14`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`EventResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@trophyso/node/api\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` EventResponse`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` trophy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`metrics`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"flashcards-flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` user:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` id:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"18\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` email:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"user@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` tz:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Europe/London\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` value:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 750`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` idempotencyKey:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"flashcard-view-42\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`9`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client.metrics.event(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` key`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"flashcards-flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` user`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`EventRequestUser(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"18\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` email`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` tz`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Europe/London\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` value`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`750.0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`PHP`,numberOfLines:`11`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$user`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` EventRequestUser`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'id'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '18'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'email'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'user@example.com'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]);`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:` MetricsEventRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`([`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'user'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'value'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 750`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]);`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$trophy`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`metrics`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"flashcards-flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`11`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`MetricsEventRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` MetricsEventRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`builder`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` EventRequestUser`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`builder`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"18\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`email`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`750`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`EventResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`metrics`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"flashcards-flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, request);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`10`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Metrics`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"flashcards-flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u0026`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`MetricsEventRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` User`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u0026`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`api`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`EventRequestUser`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"18\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Email`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`750`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`C#`,numberOfLines:`11`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`11`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` user`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` EventRequestUser`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"18\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Email`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"user@example.com\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`var`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` request`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MetricsEventRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` User`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Value`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 750`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`};`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` trophy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Metrics`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`EventAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"flashcards-flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`request`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`8`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`metrics`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`event`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` :key`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` => `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'flashcards-flipped'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` :user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` => {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` :id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` => `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'18'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` :email`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` => `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'user@example.com'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` :value`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` => `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`750`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})})]}),`\n`,_jsx(_components.p,{children:`La respuesta a esta llamada de API es el conjunto completo de cambios en cualquier característica que hayas construido con Trophy, incluyendo cualquier logro que se haya desbloqueado como resultado del evento.`}),`\n`,_jsx(CodeBlock,{filename:`Response`,expandable:`true`,numberOfLines:`18`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`18`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metricId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"d01dcbcb-d51e-4c12-b054-dc811dcdc623\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"eventId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"0040fe51-6bce-4b44-b0ad-bddc4e123534\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"total\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`750`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"achievements\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5100fe51-6bce-6j44-b0hs-bddc4e123682\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"trigger\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"metric\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metricId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"5100fe51-6bce-6j44-b0hs-bddc4e123682\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metricName\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Flashcards Flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metricValue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`500`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"500 Flashcards Flipped\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"description\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Write 500 words in the app.\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"achievedAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2020-01-01T00:00:00Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#82071E`,\"--shiki-light-font-style\":`italic`,\"--shiki-dark\":`#F44747`,\"--shiki-dark-font-style\":`inherit`},children:` ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Valida que esto funciona revisando el `,_jsx(_components.a,{href:`https://app.trophy.so`,children:`panel`}),` de Trophy.`]}),`\n`,_jsx(Frame,{children:_jsx(`img`,{height:`200`,width:`100%`,noZoom:true,src:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/top-users.png?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=afa254213e4d180a01213aacd271ce7f`,\"data-og-width\":`2688`,\"data-og-height\":`472`,\"data-path\":`assets/guides/achievements-feature/top-users.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/top-users.png?w=280\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=2298bc1898cac34d462536a124b3b99d 280w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/top-users.png?w=560\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=e096e6a937e2291f6354451c8bf4253f 560w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/top-users.png?w=840\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=6e695072d5a8a5b536745323e9b50f83 840w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/top-users.png?w=1100\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=5f2d328c8eb2256ec9a932869ea59a86 1100w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/top-users.png?w=1650\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=31649f1e68d4fdee06c2f31c71460806 1650w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/top-users.png?w=2500\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=6c83e1825e34fc064ae9cae787c55b3f 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`displaying-achievements`,children:`Visualización de Logros`}),`\n`,_jsx(_components.p,{children:`Tienes varias opciones para mostrar logros en tu aplicación. Aquí veremos las opciones más comunes.`}),`\n`,_jsx(Heading,{level:`3`,id:`pop-up-notifications`,children:`Notificaciones Emergentes`}),`\n`,_jsxs(_components.p,{children:[`Podemos usar la respuesta de la `,_jsx(_components.a,{href:`/es/api-reference/endpoints/events/submit-a-metric-event`,children:`API de cambio de métrica`}),` para mostrar notificaciones emergentes (o ‘toasts’) cuando los usuarios completen logros.`]}),`\n`,_jsx(_components.p,{children:`Aquí tienes un ejemplo de esto en acción:`}),`\n`,_jsx(CodeBlock,{filename:`Achievement Completed Pop-up`,numberOfLines:`18`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`18`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Sends event to Trophy`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` viewFlashcard`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Show toasts if the user has unlocked any new achievements`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`forEach`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`achievement`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` toast`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` title:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` achievement`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` description:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` achievement`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`description`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` image:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` src:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` achievement`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`badgeUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` alt:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` achievement`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),`\n`,_jsx(Frame,{children:_jsx(`video`,{autoPlay:true,muted:true,loop:true,playsInline:true,className:`mint-w-full mint-aspect-video`,src:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/displaying-toasts.mp4?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=9f4d15686cab455a7c278a31772bf056`,\"data-path\":`assets/guides/achievements-feature/displaying-toasts.mp4`})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Si deseas reproducir efectos de sonido, utiliza la `,_jsx(_components.a,{href:`https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API`,children:`API de Audio HTML5`}),` y siéntete libre de usar estos `,_jsx(_components.a,{href:`https://github.com/trophyso/example-study-platform/tree/demo/public/sounds`,children:`archivos de audio`}),` que recomendamos.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`displaying-user-achievements`,children:`Mostrar Logros del Usuario`}),`\n`,_jsxs(_components.p,{children:[`Para obtener todos los logros que un usuario ha completado, utiliza la `,_jsx(_components.a,{href:`/es/api-reference/endpoints/users/get-a-users-completed-achievements`,children:`API de logros de usuario`}),`.`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.trophy.so/v1/users/{id}/achievements`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-API-KEY: \u003capi-key>'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node`,numberOfLines:`1`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`trophy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`users`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client.users.achievements(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`PHP`,numberOfLines:`1`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$trophy`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`users`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`1`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`UserAchievementsResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`users`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`1`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Users`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`C#`,numberOfLines:`1`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` trophy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Users`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`AchievementsAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user-id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`3`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`users`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` :id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` => `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'user-id'`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`También puedes obtener logros incompletos al mismo tiempo pasando `,_jsx(_components.code,{children:`includeIncomplete`}),` como `,_jsx(_components.code,{children:`'true'`}),`.`]})}),`\n`,_jsx(Frame,{children:_jsx(`video`,{autoPlay:true,muted:true,loop:true,playsInline:true,className:`mint-w-full mint-aspect-video`,src:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/displaying_trophy_cabinet.mp4?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=e316bae438a83d826cdcbc82a058337b`,\"data-path\":`assets/guides/achievements-feature/displaying_trophy_cabinet.mp4`})}),`\n`,_jsx(Heading,{level:`3`,id:`displaying-all-achievements`,children:`Mostrar Todos los Logros`}),`\n`,_jsxs(_components.p,{children:[`Si en cambio deseas mostrar todos los logros que has configurado en Trophy como parte de una interfaz de usuario globalmente accesible que no está vinculada a un usuario en particular, puedes utilizar la `,_jsx(_components.a,{href:`/es/api-reference/endpoints/achievements/all-achievements`,children:`API de todos los logros`}),`.`]}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.trophy.so/v1/achievements`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'X-API-KEY: \u003capi-key>'`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Node`,numberOfLines:`1`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`trophy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client.achievements()`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`PHP`,numberOfLines:`1`,language:`php`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`php`,children:_jsxs(_components.code,{language:`php`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$trophy`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`->`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`1`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`UserAchievementsResponse`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`1`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`response`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`C#`,numberOfLines:`1`,language:`csharp`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csharp`,children:_jsxs(_components.code,{language:`csharp`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` trophy`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`AchievementsAsync`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Ruby`,numberOfLines:`1`,language:`ruby`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ruby`,children:_jsxs(_components.code,{language:`ruby`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`achievements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`3`,id:`achievement-completion-stats`,children:`Estadísticas de Completado de Logros`}),`\n`,_jsxs(_components.p,{children:[`Tanto la API de logros de usuario como la API de todos los logros incluyen estadísticas de completado como `,_jsx(_components.code,{children:`completions`}),` (el número de usuarios que han completado un logro) y `,_jsx(_components.code,{children:`rarity`}),` (el porcentaje de usuarios que han completado un logro).`]}),`\n`,_jsx(Frame,{children:_jsx(`img`,{height:`200`,width:`100%`,noZoom:true,src:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/completion-stats.png?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=4bdca8d2595fb3d031ba4f2d688bbe97`,\"data-og-width\":`970`,\"data-og-height\":`804`,\"data-path\":`assets/guides/achievements-feature/completion-stats.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/completion-stats.png?w=280\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=b29d57f27a04fd5b9615e54b4e2b296c 280w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/completion-stats.png?w=560\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=1e37359b5b3fd87bbecf44e3f480e0da 560w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/completion-stats.png?w=840\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=a2bdc241dd340b418c938c0f59350392 840w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/completion-stats.png?w=1100\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=db4e134bd728f1506190332cc49617c5 1100w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/completion-stats.png?w=1650\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=fb3effcceadf8bd6fd97997d00923909 1650w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/completion-stats.png?w=2500\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=d04a9b1a7a2c90f84aaac4639e360aeb 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`analytics`,children:`Análisis`}),`\n`,_jsxs(_components.p,{children:[`La `,_jsx(_components.a,{href:`https://app.trophy.so/achievements`,children:`página de logros`}),` en Trophy muestra cuántos usuarios han completado cada logro que has configurado.`]}),`\n`,_jsx(Frame,{children:_jsx(`img`,{height:`200`,width:`100%`,noZoom:true,src:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/check_user_completions.png?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=06037c2017935f83dddb2b1deb63c73e`,\"data-og-width\":`1898`,\"data-og-height\":`476`,\"data-path\":`assets/guides/achievements-feature/check_user_completions.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/check_user_completions.png?w=280\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=45cc792f034b15298836c65e1406384c 280w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/check_user_completions.png?w=560\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=5682b485935ef6d7bbe511777aa6ade7 560w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/check_user_completions.png?w=840\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=b313c1e0b8535cb0e2b3134e373cf51e 840w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/check_user_completions.png?w=1100\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=12c220ffc573ac1725e1cb567820aadf 1100w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/check_user_completions.png?w=1650\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=b9ee83757da1af08d5e00a1862b0fe4a 1650w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/check_user_completions.png?w=2500\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=ef235d4cbc1ed60d9cdf55ac5948c510 2500w`})}),`\n`,_jsx(_components.p,{children:`Además, la página de análisis de cualquier métrica en Trophy incluye un gráfico que muestra el progreso de los usuarios a través de tus logros.`}),`\n`,_jsx(Frame,{children:_jsx(`img`,{height:`200`,width:`100%`,noZoom:true,src:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/achievement_completions.png?fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=13ea25ba8f3eb4e6b0f44dca8092d8b2`,\"data-og-width\":`2668`,\"data-og-height\":`1054`,\"data-path\":`assets/guides/achievements-feature/achievement_completions.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/achievement_completions.png?w=280\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=acbc4da1884175f8ec1a7bad139819a4 280w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/achievement_completions.png?w=560\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=2622dc96ed36eba95e762833e729a165 560w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/achievement_completions.png?w=840\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=f8789dd4c6b9242d57d5294546f91290 840w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/achievement_completions.png?w=1100\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=3a4550103a693d5ff8f37a76325878dd 1100w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/achievement_completions.png?w=1650\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=491b3570b3088179c4f6fe1f51c57381 1650w, https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/guides/achievements-feature/achievement_completions.png?w=2500\u0026fit=max\u0026auto=format\u0026n=kq20NZCpkjuLyTvG\u0026q=85\u0026s=b5520b925df4035345661e360fb6d565 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`get-support`,children:`Obtener Soporte`}),`\n`,_jsxs(_components.p,{children:[`¿Quieres ponerte en contacto con el equipo de Trophy? Contáctanos por `,_jsx(_components.a,{href:`mailto:support@trophy.so`,children:`correo electrónico`}),`. ¡Estamos aquí para ayudarte!`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Cómo Crear una Funcionalidad de Logros","description":"Aprende a usar Trophy para añadir una funcionalidad de logros a tu aplicación web o móvil.","subtitle":"Aprende a usar Trophy para añadir una funcionalidad de logros a tu aplicación web o móvil.","noindex":true,"href":"/es/guides/how-to-build-an-achievements-feature"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Requisitos previos","slug":"pre-requisites","depth":2,"children":[]},{"title":"Configuración de Trophy","slug":"trophy-setup","depth":2,"children":[]},{"title":"Instalación del SDK de Trophy","slug":"installing-trophy-sdk","depth":2,"children":[]},{"title":"Rastreo de Interacciones de Usuarios","slug":"tracking-user-interactions","depth":2,"children":[]},{"title":"Visualización de Logros","slug":"displaying-achievements","depth":2,"children":[{"title":"Notificaciones Emergentes","slug":"pop-up-notifications","depth":3,"children":[]},{"title":"Mostrar Logros del Usuario","slug":"displaying-user-achievements","depth":3,"children":[]},{"title":"Mostrar Todos los Logros","slug":"displaying-all-achievements","depth":3,"children":[]},{"title":"Estadísticas de Completado de Logros","slug":"achievement-completion-stats","depth":3,"children":[]}]},{"title":"Análisis","slug":"analytics","depth":2,"children":[]},{"title":"Obtener Soporte","slug":"get-support","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-aspect-video {\n aspect-ratio: 16 / 9\n}\n.mint-w-full {\n width: 100%\n}","subdomain":"trophy-ci-i18n-auto-translations","siteName":"Trophy Docs","title":"Cómo Crear una Funcionalidad de Logros - Trophy Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guides/how-to-build-an-achievements-feature","matchLevel":1,"noindex":true},"es":{"href":"/es/guides/how-to-build-an-achievements-feature","matchLevel":0}}},"lastModified":"2026-10-30T12:24:20.217Z","originalFileLocation":"es/guides/how-to-build-an-achievements-feature.mdx","locale":"es"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Aprende a usar Trophy para añadir una funcionalidad de logros a tu aplicación web o móvil.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Trophy Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"noindex, nofollow\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/svg+xml\" sizes=\"180x180\" href=\"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_light.svg?fit=max\u0026amp;auto=format\u0026amp;n=kq20NZCpkjuLyTvG\u0026amp;q=85\u0026amp;s=6f91e644c139bc21a7c0dd0bf3b98360\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"32x32\" href=\"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_light.svg?fit=max\u0026amp;auto=format\u0026amp;n=kq20NZCpkjuLyTvG\u0026amp;q=85\u0026amp;s=6f91e644c139bc21a7c0dd0bf3b98360\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"16x16\" href=\"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_light.svg?fit=max\u0026amp;auto=format\u0026amp;n=kq20NZCpkjuLyTvG\u0026amp;q=85\u0026amp;s=6f91e644c139bc21a7c0dd0bf3b98360\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/svg+xml\" href=\"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_light.svg?fit=max\u0026amp;auto=format\u0026amp;n=kq20NZCpkjuLyTvG\u0026amp;q=85\u0026amp;s=6f91e644c139bc21a7c0dd0bf3b98360\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"32x32\" href=\"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_dark.svg?fit=max\u0026amp;auto=format\u0026amp;n=kq20NZCpkjuLyTvG\u0026amp;q=85\u0026amp;s=8f7412e437e7339250d4d9ab88153f1f\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/svg+xml\" sizes=\"16x16\" href=\"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_dark.svg?fit=max\u0026amp;auto=format\u0026amp;n=kq20NZCpkjuLyTvG\u0026amp;q=85\u0026amp;s=8f7412e437e7339250d4d9ab88153f1f\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/svg+xml\" href=\"https://mintcdn.com/trophy-ci-i18n-auto-translations/kq20NZCpkjuLyTvG/assets/logomark_dark.svg?fit=max\u0026amp;auto=format\u0026amp;n=kq20NZCpkjuLyTvG\u0026amp;q=85\u0026amp;s=8f7412e437e7339250d4d9ab88153f1f\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Cómo Crear una Funcionalidad de Logros - Trophy Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Trophy is a developer-friendly platform for building gamified product experiences that retain users in any mobile or web app. Add features like achievements, streaks, points systems and leaderboards plus deliver personalized progress report and reactivation emails with no code.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Trophy Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://trophy-ci-i18n-auto-translations.mintlify.app/es/guides/how-to-build-an-achievements-feature\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://trophy.so/opengraph-image\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Cómo Crear una Funcionalidad de Logros - Trophy Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Trophy is a developer-friendly platform for building gamified product experiences that retain users in any mobile or web app. Add features like achievements, streaks, points systems and leaderboards plus deliver personalized progress report and reactivation emails with no code.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://trophy.so/opengraph-image\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/trophy-ci-i18n-auto-translations/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Trophy Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4CC74A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://trophy-ci-i18n-auto-translations.mintlify.app/es/guides/how-to-build-an-achievements-feature\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/es/guides/how-to-build-an-achievements-feature.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Trophy Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Trophy Docs","nav":{"global":null,"languages":[{"language":"en","default":true,"navbar":{"links":[{"href":"https://trophy.so/contact-sales?utm_source=docs\u0026utm_medium=navbar-links","label":"Book a call"},{"href":"https://app.trophy.so","label":"Dashboard"}],"primary":{"type":"button","label":"Get started","href":"https://app.trophy.so/sign-up?utm_source=docs\u0026utm_medium=navbar-links"}},"pages":[{"title":"en","href":"/guides/how-to-build-an-achievements-feature"}]},{"language":"es","navbar":{"links":[{"href":"https://app.trophy.so","label":"Panel"}],"primary":{"type":"button","label":"Comenzar gratis","href":"https://app.trophy.so/sign-up?utm_source=docs\u0026utm_medium=navbar-links"}},"tabs":[{"tab":"Inicio","icon":"house","pages":[{"title":"Inicio","href":"/es/getting-started/introduction"}]},{"tab":"Guías","icon":"rocket","groups":[{"group":"Guías de funcionalidades","pages":[{"title":"Cómo Crear una Funcionalidad de Logros","href":"/es/guides/how-to-build-an-achievements-feature"},{"title":"Cómo Crear una Funcionalidad de Rachas","description":"Aprende a usar Trophy para añadir una funcionalidad de rachas a tu aplicación web o móvil.","href":"/es/guides/how-to-build-a-streaks-feature"},{"title":"Cómo construir una función de XP","href":"/es/guides/how-to-build-an-xp-feature"},{"title":"Cómo crear una función de energía","href":"/es/guides/how-to-build-an-energy-feature"},{"title":"Cómo Crear una Funcionalidad de Clasificaciones","href":"/es/guides/how-to-build-a-leaderboards-feature"}]},{"group":"Casos de uso","pages":[{"title":"Cómo construir una plataforma de estudio gamificada","href":"/es/guides/gamified-study-platform"},{"title":"Cómo Crear un Rastreador de Fitness Gamificado","href":"/es/guides/gamified-fitness-platform"}]}]},{"tab":"API de Aplicación","icon":"globe","pages":[{"title":"API de Aplicación","href":"/es/api-reference/introduction"}]},{"tab":"API de Administración","icon":"globe-lock","pages":[{"title":"API de Administración","href":"/es/admin-api/introduction"}]},{"tab":"Webhooks","icon":"webhook","pages":[{"title":"Webhooks","href":"/es/webhooks/introduction"}]},{"tab":"MCP","icon":"https://mintlify.s3.us-west-1.amazonaws.com/trophy-ci-i18n-auto-translations/icons/mcp.svg","pages":[{"title":"MCP","href":"/es/mcp/overview"}]},{"tab":"Kit de UI","icon":"shapes","pages":[{"title":"Kit de UI","href":"/es/uikit/overview"}]}],"global":{"anchors":[{"anchor":"Seguridad","icon":"shield-check","href":"https://trust.trophy.so"},{"anchor":"Estado","icon":"radio-tower","href":"https://status.trophy.so"},{"anchor":"llms.txt","icon":"bot","href":"https://docs.trophy.so/llms-full.txt"},{"anchor":"Ayuda","icon":"life-buoy","href":"mailto:support@trophy.so"}]}}]},"basePath":"","title":"Cómo Crear una Funcionalidad de Logros - Trophy Docs","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["07c022d89b","6d89261695"],"chunks":["Frame-Bpq2Z6jK.js","DynamicMarkdown-D5M2At0B.js","preview-widget-Bk0oq5I_.js"]}