Módulo de Misiones
El Módulo de Misiones proporciona funcionalidad para recuperar información sobre las misiones de los jugadores, los paquetes de misiones y los huevos de Pascua. También permite a los jugadores reclamar recompensas de los huevos de Pascua. Este módulo es parte del SDK del Cliente Web de Gamanza Engage y se instancia automáticamente cuando se inicializa el SDK.
Accediendo al Módulo
El MissionsModule se inicializa internamente por el SDK y no debe ser instanciado directamente. Es accesible a través de la instancia principal del SDK.
// Ejemplo de acceder al CrmModule a través del SDK
const { Missions } = GamanzaEngageWebClientSDK.getInstance();
Métodos Públicos
obtenerMisionesPendientesDelJugador
Recupera la lista de misiones activas en curso para el jugador autenticado actual.
obtenerMisionesPendientesDelJugador(): Promise<TipoMision[]>
Descripción:
Este método recupera una lista de todas las misiones activas que se encuentran actualmente en curso para el jugador autenticado. Utiliza un mecanismo de almacenamiento en caché para optimizar el rendimiento: primero verifica si hay datos disponibles en la caché antes de realizar una llamada a la API. Si la llamada a la API falla, intenta devolver datos obsoletos de la caché.
Parámetros:
Ninguno
Devuelve:
Una Promesa que se resuelve en un array de objetos MissionType con las siguientes propiedades:
| Propiedad | Tipo | Descripción |
|---|---|---|
| _id | cadena | Identificador interno |
| nombre | cadena | Nombre para mostrar de la misión |
| descripción | cadena | Descripción de la misión |
| etiquetas | TipoEtiquetaReducido[] | Array de etiquetas asociadas con la misión |
| objetivos | TipoObjetivoMision[] | Array de objetivos de la misión |
| tiempoDeValidez | TipoTiempoDeValidez | TipoPeriodoTiempoDeValidez | TipoFechaTiempoDeValidez | Restricciones de validez de tiempo para la misión |
| estado | EnumEstadoMision | Estado actual de la misión |
| categoriasDeRecompensa | TipoCategoriadeRecompensaMision[] | Array de categorías de recompensas para la misión |
| estadoDeReclamacionDeRecompensa | TipoEstadoReclamacionMision | Estado de las reclamaciones de recompensas |
| estadoDelPaqueteDeMisiones | TipoDeProgresoDeMisión | Estado de progreso del paquete de misiones |
| detallesInternosDePaquete | TipoDeDetalleInterno | Detalles internos del paquete |
| detallesExternosDePaquete | TipoTraduccion[] | Detalles externos del paquete |
| habilitado | booleano | Si la misión está habilitada |
| versión | número | Versión de la misión |
| estado | TipoDeProgresoDeMisión | Estado de progreso de la misión |
| idDePaqueteDeMisión | cadena | ID del paquete de misiones |
| idDeEstadoDePaquete | cadena | ID del estado del paquete |
| idDeMisión | cadena | ID de la misión |
| fechaFin | cadena | Fecha de finalización de la misión |
| fechaInicio | cadena | Fecha de inicio de la misión |
| configuracionesDePaqueteDeMisión | any | Configuraciones para el paquete de misiones |
| idOriginalDePaqueteDeMisión | cadena | ID original del paquete de misiones |
| idDeJugador | cadena | ID del jugador |
| conteoDeRepeticiones | número | Número de repeticiones |
| repeticiónHabilitada | booleano | Si la repetición está habilitada |
Ejemplo:
// Obtener todas las misiones activas en curso
const missions = await sdk.Missions.getPlayerMissionsInProgress();
console.log(missions);
// [
// {
// _id: "123",
// name: "Inicio de sesión diario",
// description: "Inicia sesión todos los días durante una semana",
// status: "active",
// // ... otras propiedades
// },
// // ... más misiones
// ]
obtenerPaquetesDeMisionesActivosDelJugador
Recupera la lista de paquetes activos para el jugador autenticado actual.
obtenerPaquetesDeMisionesActivosDelJugador(cacheTTLEnSegundos?: number): Promise<TipoPaqueteDeMisionesPorMarcoTemporal | null>
Descripción:
Recupera los paquetes de misiones activos para el jugador autenticado, agrupados por intervalo de tiempo. Admite almacenamiento en caché del lado del cliente con una duración de caché configurable. De forma predeterminada, se usa una caché de 15 minutos (900 s). Pasa 0 para deshabilitar la caché para esta llamada. Si falla la llamada a la API, el método devolverá los últimos datos almacenados en caché cuando estén disponibles; de lo contrario, se devolverá nulo.
Parámetros:
- cacheTTLInSeconds (número, opcional): Tiempo de vida de la caché en segundos. El valor predeterminado es TTL.MINUTES_15 (900). Usa 0 para deshabilitar la caché para esta llamada.
Devuelve:
Una promesa que se resuelve en un objeto MissionBundleListByTimeFrameType o nulo si no se encuentran paquetes activos. El objeto tiene las siguientes propiedades:
| Propiedad | Tipo | Descripción |
|---|---|---|
| diario | TipoDetallesDePaqueteDeMisionesHistorial[] | Matriz de paquetes de misiones diarios |
| semanal | TipoDetallesDePaqueteDeMisionesHistorial[] | Matriz de paquetes de misiones semanales |
| mensual | TipoDetallesDePaqueteDeMisionesHistorial[] | Matriz de paquetes de misiones mensuales |
| de por vida | TipoDetallesDePaqueteDeMisionesHistorial[] | Matriz de paquetes de misiones de por vida |
| rango | TipoDetallesDePaqueteDeMisionesHistorial[] | Matriz de paquetes de misiones basados en rango |
Cada objeto MissionHistoryBundleDetailsType contiene:
| Propiedad | Tipo | Descripción |
|---|---|---|
| idJugador | string | ID del jugador |
| _id | string | Identificador interno (opcional) |
| idOriginal | string | Identificador original |
| estado de la línea de tiempo | objeto | Información del estado de la línea de tiempo |
| elegibilidad | desconocido | Información de elegibilidad |
| detallesInternos | TipoDeTalleInterno | Detalles internos del paquete |
| detallesExternos | TipoDeTraducción[] | Detalles externos del paquete |
| elJugadorRequiereOpt-in | booleano | Si el paquete requiere la activación manual para comenzar |
| elJugadorHaOptado | booleano | Si el jugador ya se ha activado |
| asignaciónOrigen | cadena de texto | Proceso que asignó el paquete (p. ej., Inicio de sesión, registro, manual) |
| ajustes | TipoDeAjustesDePaquete | Ajustes para el paquete |
| estado | EnumeraciónDeEstadosDeMisión | Estado del paquete |
| estado | TipoDeProcesoDeMisión | Estado de progreso del paquete |
| esActivado | booleano | Define si el jugador se ha activado en el paquete o no |
| misionesenOrden | booleano | Si las misiones deben completarse en orden |
| idDeMisiones | TipoMisión[] | Matriz de misiones en el paquete |
| creadoEn | cadena de texto | Fecha de creación |
| actualizadoEn | cadena de texto | Última fecha de actualización |
| fechaDeInicio | cadena de texto | Fecha de inicio |
| fecha de finalización | cadena | Fecha de finalización |
| imagen pequeña | cadena | URL a la imagen pequeña |
| imagen grande | cadena | URL a la imagen grande |
| huevosDeNavidad | TipoHuevosDeNavidad[] | Matriz de huevos de Pascua en el paquete |
| fechaFinalizadaOCompletada | cadena | Fecha en la que finalizó o se completó el paquete |
Ejemplo:
// Caché predeterminado de 15 minutos
const bundlesDefault = await sdk.Missions.getPlayerBundlesActive();
// Caché personalizado de 5 minutos
const bundles5m = await sdk.Missions.getPlayerBundlesActive(TTL.MINUTES_5);
// Desactivar el caché para esta llamada
const bundlesNoCache = await sdk.Missions.getPlayerBundlesActive(0);
obtenerHuevosDeNavidadActivosDelJugador
Recupera la lista de huevos de Pascua activos para el jugador autenticado.
obtenerHuevosDeNavidadActivosDelJugador(): Promise<TipoPaqueteDeMisionesHuevoDeNavidad[]>
Descripción:
Este método obtiene una lista de todos los huevos de Pascua activos para el jugador autenticado. Los huevos de Pascua son recompensas especiales que se pueden reclamar cuando se cumplen ciertas condiciones. Utiliza un mecanismo de almacenamiento en caché para optimizar el rendimiento: primero comprueba si hay datos disponibles en la caché antes de realizar una llamada a la API. Si la llamada a la API falla, intenta devolver datos obsoletos de la caché.
Parámetros:
Ninguno
Devuelve:
Una Promesa que se resuelve en una matriz de objetos MissionBundleEasterEggType con las siguientes propiedades:
| Propiedad | Tipo | Descripción |
|---|---|---|
| _id | cadena | Identificador interno |
| huevosDeNavidad | TipoHuevosDeNavidad[] | Matriz de huevos de Pascua |
| elegibilidad | desconocido | Información de elegibilidad |
| detallesExternos | TipoTraduccion[] | Detalles externos |
| detallesInternos | TipoDetalleInterno | Detalles internos |
| idOriginal | cadena | Identificador original |
| idJugador | cadena | ID del jugador |
| imagenPequena | cadena | URL a la imagen pequeña |
| estado | TipoProgresoMision | Estado de progreso |
| estado | EnumEstadoMision | Estado |
Ejemplo:
// Obtener todos los Huevos de Pascua activos
const easterEggs = await sdk.Missions.getPlayerEasterEggsActive();
console.log(easterEggs);
// [
// {
// _id: "123",
// originalId: "456",
// easterEggs: [
// {
// condition: {
// easterEggId: "egg1",
// onRepetition: 3,
// amountOfMissions: 5,
// secretAreaCode: "SECRET123",
// status: "claimable",
// animation: "confetti"
// },
// // ... otras propiedades
// }
// ],
// // ... otras propiedades
// },
// // ... más Huevos de Pascua
// ]
obtenerPaquetesDeMisionesExpiradosDelJugador
Recupera la lista de paquetes caducados para el jugador autenticado actual.
obtenerPaquetesDeMisionesExpiradosDelJugador(): Promise<TipoPaqueteDeMisionesPorMarcoTemporal | null>
Descripción:
Este método recupera una lista de todos los paquetes de misiones caducados para el jugador autenticado, organizados por marco temporal. Utiliza un mecanismo de caché para optimizar el rendimiento, primero comprobando si los datos están disponibles en la caché antes de hacer una llamada a la API. Si la llamada a la API falla, intenta devolver datos obsoletos de la caché.
Parámetros:
Ninguno
Devuelve:
Una promesa que se resuelve en un objeto MissionBundleListByTimeFrameType o null si no se encuentran paquetes caducados. La estructura es la misma que el tipo de retorno para getPlayerBundlesActive().
Ejemplo:
// Obtener todos los paquetes de misiones caducados
const expiredBundles = await sdk.Missions.getPlayerBundlesExpired();
console.log(expiredBundles);
// {
// daily: [
// {
// _id: "123",
// originalId: "456",
// externalDetails: [{ language: "en", name: "Misiones diarias", description: "Completa estas misiones cada día" }],
// status: "ended",
// // ... otras propiedades
// }
// ],
// weekly: [...],
// montly: [...],
// lifetime: [...],
// range: [...]
// }
obtenerMisionesExpirasDelJugador
Recupera la lista de misiones caducadas para el jugador autenticado actual.
obtenerMisionesExpirasDelJugador(): Promise<MisionExpirada[]>
Descripción:
Este método recupera una lista de todas las misiones caducadas para el jugador autenticado. Utiliza un mecanismo de caché para optimizar el rendimiento, primero comprobando si los datos están disponibles en la caché antes de hacer una llamada a la API. Si la llamada a la API falla, intenta devolver datos obsoletos de la caché.
Parámetros:
Ninguno
Devuelve:
Una promesa que se resuelve en una matriz de objetos MissionExpired. Esto extiende el MissionType con una propiedad adicional:
| Propiedad | Tipo | Descripción |
|---|---|---|
| estadoTiempoDeValidez | TipoTiempoDeValidez | TipoPeriodoTiempoDeValidez | TipoFechaTiempoDeValidez | Información sobre el estado de validez del tiempo |
Todas las demás propiedades son las mismas que en MissionType.
Ejemplo:
// Obtener todas las misiones vencidas
const expiredMissions = await sdk.Missions.getPlayerMissionsExpired();
console.log(expiredMissions);
// [
// {
// _id: "123",
// name: "Daily Login",
// description: "Inicia sesión todos los días durante una semana",
// status: "ended",
// validityTimeState: {
// timeType: "period",
// periodType: "day",
// periodValue: 7
// },
// // ... otras propiedades
// },
// // ... más misiones
// ]
obtenerImpulsoresActivosDelJugador
Recupera la lista de potenciadores de misiones activas disponibles para el jugador autenticado actual.
obtenerImpulsoresActivosDelJugador(): Promise<DatosEventoImpulsorActivo[]>
Descripción:
Este método recupera una lista de todos los potenciadores de misión activos para el jugador autenticado. Los potenciadores pueden mejorar el progreso o las recompensas de la misión.
Parámetros:
Ninguno
Devuelve:
Una promesa que se resuelve en un arreglo de objetos ActiveBoosterEventData.
Ejemplo:
// Obtener todos los potenciadores de misión activos
const boosters = await sdk.Missions.getPlayerMissionsActiveBoosters();
console.log(boosters);
// [
// {
// // Propiedades de ActiveBoosterEventData
// },
// // ... más potenciadores
// ]
reclamarHuevosDeNavidadDeMisiones
Solicita el proceso de reclamación de un huevo de Pascua de misión para el jugador autenticado actual.
reclamarHuevosDeNavidadDeMisiones(payload: CargaReclamarHuevosDeNavidadMisiones): Promise<RespuestaSimple<RespuestaReclamarHuevoDePascua>>
Descripción:
Este método inicia el proceso de reclamación de un huevo de Pascua de misión. Los huevos de Pascua son recompensas especiales que se pueden reclamar cuando se cumplen ciertas condiciones.
Parámetros:
payload - Un objeto de tipo MissionsClaimEasterEggsPayload con las siguientes propiedades:
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
| idHuevoDePascua | cadena | Sí | ID del huevo de Pascua a reclamar |
| idDePaquete | cadena | Sí | ID del paquete que contiene el huevo de Pascua |
Devuelve:
Una promesa que se resuelve en un objeto SimpleResponse<EasterEggClaimResponse> con la siguiente estructura:
| Propiedad | Tipo | Descripción |
|---|---|---|
| aceptar | booleano | Si la operación tuvo éxito |
| datos | RespuestaDeReclamoDeEasterEgg | nulo | Datos de respuesta si se realizó correctamente, de lo contrario null |
| error | objeto | indefinido | Información de error si la operación falló |
El objeto EasterEggClaimResponse contiene:
| Propiedad | Tipo | Descripción |
|---|---|---|
| easterEgg | EasterEggsMissionBundle | null | Información del huevo de Pascua si está disponible, null si no hay recompensas que reclamar |
| mensaje | cadena | Mensaje de respuesta |
| códigoDeEstado | número | Código de estado HTTP |
Ejemplo:
// Reclama un huevo de Pascua
const claimResponse = await sdk.Missions.playerClaimMissionsEasterEggs({
easterEggId: "egg123",
bundleId: "bundle456"
});
if (claimResponse.ok) {
console.log("Huevo de Pascua reclamado con éxito:", claimResponse.data);
} else {
console.error("No se pudo reclamar el huevo de Pascua:", claimResponse.error);
}
solicitudDelJugadorParaOptarPorUnPaqueteDeMisión
Permite al jugador autenticado actual optar por un paquete de misiones cuando se requiere la opción manual y el jugador cumple con las condiciones necesarias.
solicitudDelJugadorParaOptarPorUnPaqueteDeMisión(idDePaquete: cadena): Promesa<RespuestaSimple<TipoDeTallesDeBundleDeMisionesHistóricas>>
Descripción:
Envía una solicitud de optar por el paquete de misiones especificado. En caso de éxito, devuelve los detalles actualizados del paquete para el jugador. Ciertos paquetes pueden requerir un token de compra; en tales casos, el jugador debe tener suficiente divisa virtual para completar la opción.
Parámetros:
bundleId - El identificador del paquete de misiones en el que el jugador quiere optar.
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| idDePaquete | cadena | Sí | Identificador del paquete de misiones para optar. |
Devuelve:
Una Promesa que se resuelve en un objeto SimpleResponse<MissionHistoryBundleDetailsType> con la siguiente estructura:
| Propiedad | Tipo | Descripción |
|---|---|---|
| aceptar | booleano | Si la operación fue exitosa. |
| datos | MissionHistoryBundleDetailsType | null | Detalles del paquete en caso de éxito, null de lo contrario. |
| error | ErrorResponse | undefined | Información de error si la operación falló. |
Manejo de errores:
- Fondos insuficientes para la compra de token:
error.details.faultCode === 402(Pago requerido) - Otros posibles errores: bundle no encontrado, ya comenzado/terminado, ya incluido, no elegible
Ejemplo para el manejo de fondos insuficientes:
const result = await sdk.Missions.playerRequestOptInMissionBundle('bundle_123');
if (!result.ok) {
if (result.error?.details.faultCode === 402) {
alert('¡Necesitas más monedas para entrar a este paquete!');
} else {
alert(`Error: ${result.error?.message}`);
}
} else {
console.log('Ingresó al paquete:', result.data?.internalDetails.name);
}
Efectos secundarios: En caso de participar con éxito, el SDK borra las cachés relacionadas con las misiones del jugador actual para que las lecturas posteriores reflejen el estado actualizado:
${CLAVES_DE_CACHÉ.PREFIJO_DE_CACHÉ_DE_PAQUETES_ACTIVOS}.${idDelJugador}${CLAVES_DE_CACHÉ.PREFIJO_DE_CACHÉ_DE_MISIONES_EN_PROGRESO}.${idDelJugador}
Ejemplo:
// Participar en un paquete de misiones
const optIn = await sdk.Missions.playerRequestOptInMissionBundle('bundle_123');
if (optIn.ok) {
console.log('Participación exitosa. Paquete:', optIn.data);
} else {
console.error('No se pudo participar:', optIn.error);
}
solicitudDelJugadorParaOptarPorNoParticiparEnUnPaqueteDeMisión
Permite al jugador autenticado actual optar por no participar (o rechazar) en un paquete de misiones, deshabilitando su participación. Si el jugador ya había participado, el estado creado se establecerá como finalizado.
solicitudDelJugadorParaOptarPorNoParticiparEnUnPaqueteDeMisión(idDePaquete: cadena): Promesa<RespuestaSimple<nulo>>
Descripción:
Inicia una solicitud de exclusión del paquete de misiones especificado. En caso de éxito, no se devuelve ningún valor (los datos son nulos). En caso de error, se proporciona información sobre el error.
Parámetros:
bundleId - El identificador del paquete de misiones del que el jugador quiere excluirse.
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| idDePaquete | cadena | Sí | Identificador del paquete de misiones del que se quiere excluir. |
Devuelve:
Una promesa que se resuelve en un objeto SimpleResponse<null> con la siguiente estructura:
| Propiedad | Tipo | Descripción |
|---|---|---|
| aceptar | booleano | Indica si la operación fue exitosa. |
| datos | nulo | Siempre es nulo en caso de éxito. |
| error | objeto | indefinido | Información sobre el error si la operación falló. |
Ejemplo:
// Excluirse de un paquete de misiones
const optOut = await sdk.Missions.playerRequestOptOutMissionBundle('bundle_123');
if (optOut.ok) {
console.log('Exclusión exitosa.');
} else {
console.error('No se pudo excluir:', optOut.error);
}
obtenerBundlesDePaquetesActivosPaginados
Recupera una lista paginada de paquetes de misiones activos para el jugador actual.
obtenerBundlesDePaquetesActivosPaginados(
página: número,
límite?: número,
ordenarPor?: OpcionesDeSorteoDeBundle,
orden?: DirecciónDeOrdenamiento,
ignorarBundlesConTiposDeRecompensas?: TipoDeRecompensaEnum[]
): Promesa<RespuestaPaginada<BundlesActivosDelJugador[]>>
Descripción:
Este método obtiene los paquetes que están actualmente disponibles o en progreso. Devuelve una respuesta paginada y utiliza un mecanismo de almacenamiento en caché (TTL de 30 minutos) si falla la llamada a la API.
Parámetros:
| Nombre | Tipo | Requerido | Predeterminado | Descripción |
|---|---|---|---|---|
| página | número | Sí | - | El número de página a recuperar (índice con base 1). |
| límite | número | No | 25 | El número de elementos a devolver por página. |
| ordenarPor | OpcionesDeSorteoDeBundle | No | UPDATED_AT | El campo utilizado para ordenar los resultados. |
| orden | DirecciónDeOrdenamiento | No | DESC | La dirección de la clasificación (asc o desc). |
| ignorarBundlesConTiposDeRecompensas | TipoDeRecompensaEnum[] | No | [] | Una matriz opcional de tipos de recompensa a excluir de los resultados. |
Devuelve:
Una Promesa que se resuelve en una RespuestaPaginada que contiene una matriz de objetos BundlesActivosDelJugador.
Ejemplo:
// Uso básico con parámetros predeterminados
const resultado = await sdk.Missions.obtenerBundlesDePaquetesActivosPaginados(1);
console.log(`Mostrando ${resultado.docs.length} de ${resultado.totalDocs} paquetes.`);
// Uso avanzado con clasificación personalizada, límite y filtro de tipo de recompensa
const resultado = await sdk.Missions.obtenerBundlesDePaquetesActivosPaginados(
2,
10,
OpcionesDeSorteoDeBundle.START_DATE,
DirecciónDeOrdenamiento.ASC,
[TipoDeRecompensaEnum.EFECTIVO, TipoDeRecompensaEnum.TOKEN]
);
obtenerBundlesDePaquetesElegiblesPaginados
Recupera una lista paginada de paquetes de misiones para los cuales el jugador es elegible pero no necesariamente ha comenzado.
obtenerBundlesDePaquetesElegiblesPaginados(
página: número,
límite?: número,
ordenarPor?: OpcionesDeSorteoDeBundle,
orden?: DirecciónDeOrdenamiento,
ignorarBundlesConTiposDeRecompensas?: TipoDeRecompensaEnum[]
): Promesa<RespuestaPaginada<BundlesElegiblesDelJugador[]>>
Descripción:
Este método obtiene los paquetes para los que el jugador califica según la segmentación u otros criterios. Devuelve una respuesta paginada y utiliza un mecanismo de almacenamiento en caché (TTL de 30 minutos) si falla la llamada a la API.
Parámetros:
| Nombre | Tipo | Requerido | Predeterminado | Descripción |
|---|---|---|---|---|
| página | número | Sí | - | El número de página a recuperar (índice basado en 1). |
| límite | número | No | 25 | Número máximo de elementos por página. |
| ordenarPor | OpcionesDeSorteoDeBundle | No | UPDATED_AT | La propiedad utilizada para ordenar la lista. |
| orden | DirecciónDeOrdenamiento | No | DESC | La dirección de ordenamiento (asc o desc). |
| ignorarPaquetesConTiposDeRecompensa | RecompensasTipoEnum[] | No | [] | Una matriz opcional de tipos de recompensa a excluir de los resultados. |
Devuelve:
Una Promesa que se resuelve en una PaginationResponse que contiene elementos PlayerBundlesEligible.
Ejemplo:
// Recuperar la primera página de paquetes elegibles
const eligible = await sdk.Missions.getPlayerBundlesEligiblePaginated(1);
if (eligible.docs.length > 0) {
console.log(`El jugador es elegible para ${eligible.totalDocs} paquetes.`);
}
// Recuperar con clasificación y filtrado de tipos de recompensa específicos
const result = await sdk.Missions.getPlayerBundlesEligiblePaginated(
1,
10,
PlayerBundlesEligibleSortOptions.UPDATED_AT,
SortDirection.ASC,
[RewardTypeEnum.CASH]
);
obtenerHistorialPaginadoDePacksDeJugador
Recupera un historial paginado de paquetes de misiones vencidos o completados para el jugador.
obtenerHistorialPaginadoDePacksDeJugador(
página: number,
límite?: number,
ordenarPor?: OpcionesDeOrdenamientoDeHistorialDePacksDeJugador,
orden?: DirecciónDeOrdenamiento,
rangoFecha?: {
fechaInicio: Date;
fechaFin: Date;
},
ignorarPacksConTiposDeRecompensas?: RecompensasTipoEnum[]
): Promise<RespuestaDePaginación<JugadorPacksVencidos[]>>
Descripción:
Este método recupera la actividad de misiones pasadas del jugador. Admite el filtrado por un rango de fechas específico. Nota: Todas las fechas deben estar en UTC.
Parámetros:
| Nombre | Tipo | Requerido | Predeterminado | Descripción |
|---|---|---|---|---|
| página | número | Sí | - | El número de página a recuperar (índice de base 1). |
| límite | número | No | 25 | El número de elementos por página. |
| ordenarPor | OpcionesDeOrdenamientoDeHistorialDePacksDeJugador | No | ACTUALIZADO_EN | El campo utilizado para ordenar el historial. |
| orden | DirecciónDeOrdenamiento | No | DESC | La dirección de la clasificación (asc o desc). |
| rangoFecha | objeto | No | - | Filtro opcional para restringir los resultados entre dos fechas. |
| rangoFecha.fechaInicio | Fecha | Sí (si se proporcionó rangoFecha) | - | El límite de inicio para la búsqueda de historial (inclusivo, UTC). |
| rangoFecha.fechaFin | Fecha | Sí (si se proporcionó rangoFecha) | - | El límite de finalización para la búsqueda de historial (inclusivo, UTC). |
| ignorarBundlesConTiposDeRecompensa | RecompensasTipoEnum[] | No | [] | Una matriz opcional de tipos de recompensa a excluir de los resultados. |
Devuelve:
Una Promesa que se resuelve en una PaginationResponse que contiene objetos PlayerBundlesExpired.
Ejemplo:
// Uso básico: obtener los paquetes caducados más recientes
const history = await sdk.Missions.getPlayerBundlesHistoryPaginated(1);
// Filtrado por un rango de fechas UTC específico y un tipo de recompensa
const filteredHistory = await sdk.Missions.getPlayerBundlesHistoryPaginated(
1,
10,
PlayerBundlesHistorySortOptions.UPDATED_AT,
SortDirection.DESC,
{
// Usando fechas UTC explícitas
startDate: new Date('2023-01-01T00:00:00Z'),
endDate: new Date('2023-12-31T23:59:59Z')
},
[RewardTypeEnum.CASH]
);
console.log(`Se encontraron ${filteredHistory.totalDocs} paquetes en 2023.`);
Interfaces Relacionadas
TipoMisión
interfaz MissionType {
_id: cadena;
name: cadena;
description: cadena;
tags: SlimTagType[];
objectives: ObjectiveMissionTypes[];
validityTime: ValidityTimeType | ValidityTimePeriodType | ValidityTimeSpecificDateType;
status: MissionStatusEnum;
rewardCategories: MissionRewardCategoryType[];
rewardClaimStatus?: MissionClaimStatusType;
missionBundleState?: MissionProgressType;
bundleInternalDetails: InternalDetailType;
bundleExternalDetails: TranslationType[];
enabled: boolean;
version: number;
state?: MissionProgressType;
missionBundleId?: cadena;
bundleStateId?: cadena;
missionId?: cadena;
endDate?: cadena;
startDate?: cadena;
missionBundleSettings: any;
originalMissionBundleId: cadena;
playerId: cadena;
repetitionCount?: number;
repetitionEnabled: boolean;
}
TipoDeProgresoDeMisión
type TipoDeProgresoDeMisión = {
total: number;
completado: number;
progreso: number;
};
EnumEstadoDeMisión
enum EnumEstadoDeMisión {
ACTIVO = 'activo',
INACTIVO = 'inactivo',
PENDIENTE = 'pendiente',
PAUSADO = 'pausado',
COMPLETADO = 'completado',
FINALIZADO = 'finalizado',
ABORTADO = 'abortado',
}
MisiónVencida
type MisiónVencida = TipoMisión & {
estadoDeTiempoDeValidez: TipoTiempoDeValidez | TipoPeriodoDeValidez | TipoFechaEspecíficaDeValidez;
};
TipoDeListaDePacksDeMisionesPorMarcoTemporal
type TipoDeListaDeBundleDeMisionesPorMarcoTemporal = {
daily: MisionHistoryBundleDetailsType[];
montly: MisionHistoryBundleDetailsType[];
weekly: MisionHistoryBundleDetailsType[];
lifetime: MisionHistoryBundleDetailsType[];
range: MisionHistoryBundleDetailsType[];
};
TipoDeDetallesDeHistorialDePaqueteDeMisiones
type TipoDeDetallesDeHistorialDePaqueteDeMisiones = {
idJugador: string;
_id?: string;
idOriginal: string;
estadoMarcoTemporal?: {
tipoMarcoTemporal: EnumMarcoTemporal;
};
elegibilidad: unknown;
detallesInternos: TipoDetalleInterno;
detallesExternos: TipoDeTraducción[];
/**
* Determina si el Paquete de Misiones requiere la opción de participación del jugador
* para iniciar el mecanismo.
*
* Si `true`, el jugador necesita optar por participar manualmente en el paquete antes de
* iniciar el mecanismo.
* Si `false`, el jugador puede iniciar el mecanismo sin optar por participar.
*/
elJugadorRequiereOptarPorParticipar: boolean;
/**
* Determina si el jugador realizó la acción de optar por participar.
*
* Si `true` el jugador ya aceptó el mecanismo, por lo que puede contribuir
* a las reglas del objetivo de la misión
*/
elJugadorHaOptadoPorParticipar: boolean;
/**
* Indica qué proceso asignó la misión. Por ejemplo
* - Inicio de sesión
* - Registro
* - Volver a comprobar la elegibilidad debido a cambios en la segmentación
* - Asignación manual
* - Fecha de inicio del paquete
*/
origenAsignación: string;
settings?: TipoDeConfiguraciónDePaquete;
estado?: EnumEstadoDeMisión;
state?: TipoDeProgresoDeMisión;
misionesEnOrden?: boolean;
idsMisiones?: TipoMisión[];
createdAt?: string;
updatedAt?: string;
fechaInicio?: string;
fechaFin?: string;
imagenPequeña?: string;
imagenGrande?: string;
huevosDesPascua?: TipoHuevoDePascua[];
fechaFinalizadaOCompletada?: string;
esOpcionParaParticipar?: boolean;
};
TipoDePaqueteDeHuevoDePascua
type TipoDePaqueteDeHuevoDePascua = Pick<
TipoDeDetallesDeHistorialDePaqueteDeMisiones,
| '_id'
| 'huevosDesPascua'
| 'elegibilidad'
| 'detallesExternos'
| 'detallesInternos'
| 'idOriginal'
| 'idJugador'
| 'imagenPequeña'
| 'state'
| 'estado'
>
MisionesReclamarHuevosDesPascuaPayload
type MisionesReclamarHuevosDesPascuaPayload = {
idHuevoDePascua: string;
idPaquete: string;
};
RespuestaDeReclamoDeHuevoDePascua
interfaz EasterEggClaimResponse {
/**
* Devuelve nulo si el huevo de pascua no tiene recompensas para reclamar
*/
easterEgg: EasterEggsMissionBundle | null;
message: cadena;
statusCode: number;
}
PaqueteDeMisiónDeHuevoDePascua
interfaz EasterEggsMissionBundle {
condition: EasterEggConditionMissionBundle;
categories: RewardCategoryEasterEggs[];
}
CondiciónDeHuevoDePascuaEnPaqueteDeMisión
interfaz EasterEggConditionMissionBundle {
easterEggId: cadena;
onRepetition: number;
amountOfMissions: number;
secretAreaCode: cadena;
status: EasterEggsStatus;
animation: cadena;
}
EstatusDeHuevosDeVelorio
enum EasterEggsStatus {
Pendiente = 'pending',
Reclamable = 'claimable',
Reclamado = 'claimed',
}
TiposDeMisionesObjetivo
type TiposDeMisionesObjetivo =
| TipoBaseDeMisionObjetivo
| TipoMisionObjetivoCompletadaDeTransaccion
| TipoMisionObjetivoDeApostarYGanar
| TipoMisionObjetivoDeReferirAUnAmigo
| TipoMisionObjetivoDeOptarPorYVerificarCuenta
| TipoMisionObjetivoDeSubirDeNivel;
EnumeradorDeTipoDeEventoDeMision
enum MisionEventTypeEnum {
COMPLETED_DEPOSIT = 'completed_deposit',
COMPLETED_WITHDRAWAL = 'completed_withdrawal',
WAGER = 'wager',
WIN = 'win',
REFER_A_FRIEND = 'refer_a_friend',
LOGIN = 'login',
ACTIVATE_ACCOUNT = 'activate_account',
ACCOUNT_VERIFICATION = 'account_verification',
SELF_ASSESSMENT_TEST = 'self_assessment_test',
OPT_IN = 'opt_in',
LEVEL_UP = 'level_up',
SPORT_WIN = 'sport_win',
SPORT_WAGER = 'sport_wager',
}
### PaginationResponse
```typescript
interface PaginacionRespuesta<T> {
docs: T;
tieneSiguientePagina: boolean;
tienePaginaAnterior: boolean;
limite: number;
siguientePagina: number;
pagina: number;
contadorPaginacion: number;
paginaAnterior: number | null;
totalDocs: number;
totalPaginas: number;
}
PaquetesDeJugadorActivos
type PlayerBundlesActive = Omitir<MissionHistoryBundleDetailsType, 'internalDetails'>;
PaquetesDeJugadorElegibles
type PlayerBundlesEligible = Omitir<
MissionHistoryBundleDetailsType,
'internalDetails' | 'startDate' | 'endDate' | 'state'
>;
PaquetesDeJugadorExpirados
type PlayerBundlesExpired = Omitir<MissionHistoryBundleDetailsType, 'internalDetails'> & {};
OpcionesDeSorteoParaPaquetesDeJugador
enum OpcionesDeSorteoParaPaquetesDeJugador {
CREATED_AT = 'createdAt',
UPDATED_AT = 'updatedAt',
START_DATE = 'startDate',
END_DATE = 'endDate',
}
OpcionesDeSorteoParaPaquetesDeJugadorElegibles
enum OpcionesDeSorteoParaPaquetesDeJugadorElegibles {
CREATED_AT = 'createdAt',
UPDATED_AT = 'updatedAt',
}
OpcionesDeSorteoParaHistorialDePaquetesDeJugador
enum OpcionesDeSorteoParaHistorialDePaquetesDeJugador {
CREATED_AT = 'createdAt',
UPDATED_AT = 'updatedAt',
}
DireccionDeSorteo
enum DireccionDeSorteo {
ASC = 'asc',
DESC = 'desc',
}