Pular para o conteúdo principal

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:

PropiedadTipoDescripción
_idcadenaIdentificador interno
nombrecadenaNombre para mostrar de la misión
descripcióncadenaDescripción de la misión
etiquetasTipoEtiquetaReducido[]Array de etiquetas asociadas con la misión
objetivosTipoObjetivoMision[]Array de objetivos de la misión
tiempoDeValidezTipoTiempoDeValidez | TipoPeriodoTiempoDeValidez | TipoFechaTiempoDeValidezRestricciones de validez de tiempo para la misión
estadoEnumEstadoMisionEstado actual de la misión
categoriasDeRecompensaTipoCategoriadeRecompensaMision[]Array de categorías de recompensas para la misión
estadoDeReclamacionDeRecompensaTipoEstadoReclamacionMisionEstado de las reclamaciones de recompensas
estadoDelPaqueteDeMisionesTipoDeProgresoDeMisiónEstado de progreso del paquete de misiones
detallesInternosDePaqueteTipoDeDetalleInternoDetalles internos del paquete
detallesExternosDePaqueteTipoTraduccion[]Detalles externos del paquete
habilitadobooleanoSi la misión está habilitada
versiónnúmeroVersión de la misión
estadoTipoDeProgresoDeMisiónEstado de progreso de la misión
idDePaqueteDeMisióncadenaID del paquete de misiones
idDeEstadoDePaquetecadenaID del estado del paquete
idDeMisióncadenaID de la misión
fechaFincadenaFecha de finalización de la misión
fechaIniciocadenaFecha de inicio de la misión
configuracionesDePaqueteDeMisiónanyConfiguraciones para el paquete de misiones
idOriginalDePaqueteDeMisióncadenaID original del paquete de misiones
idDeJugadorcadenaID del jugador
conteoDeRepeticionesnúmeroNúmero de repeticiones
repeticiónHabilitadabooleanoSi 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:

PropiedadTipoDescripción
diarioTipoDetallesDePaqueteDeMisionesHistorial[]Matriz de paquetes de misiones diarios
semanalTipoDetallesDePaqueteDeMisionesHistorial[]Matriz de paquetes de misiones semanales
mensualTipoDetallesDePaqueteDeMisionesHistorial[]Matriz de paquetes de misiones mensuales
de por vidaTipoDetallesDePaqueteDeMisionesHistorial[]Matriz de paquetes de misiones de por vida
rangoTipoDetallesDePaqueteDeMisionesHistorial[]Matriz de paquetes de misiones basados en rango

Cada objeto MissionHistoryBundleDetailsType contiene:

PropiedadTipoDescripción
idJugadorstringID del jugador
_idstringIdentificador interno (opcional)
idOriginalstringIdentificador original
estado de la línea de tiempoobjetoInformación del estado de la línea de tiempo
elegibilidaddesconocidoInformación de elegibilidad
detallesInternosTipoDeTalleInternoDetalles internos del paquete
detallesExternosTipoDeTraducción[]Detalles externos del paquete
elJugadorRequiereOpt-inbooleanoSi el paquete requiere la activación manual para comenzar
elJugadorHaOptadobooleanoSi el jugador ya se ha activado
asignaciónOrigencadena de textoProceso que asignó el paquete (p. ej., Inicio de sesión, registro, manual)
ajustesTipoDeAjustesDePaqueteAjustes para el paquete
estadoEnumeraciónDeEstadosDeMisiónEstado del paquete
estadoTipoDeProcesoDeMisiónEstado de progreso del paquete
esActivadobooleanoDefine si el jugador se ha activado en el paquete o no
misionesenOrdenbooleanoSi las misiones deben completarse en orden
idDeMisionesTipoMisión[]Matriz de misiones en el paquete
creadoEncadena de textoFecha de creación
actualizadoEncadena de textoÚltima fecha de actualización
fechaDeIniciocadena de textoFecha de inicio
fecha de finalizacióncadenaFecha de finalización
imagen pequeñacadenaURL a la imagen pequeña
imagen grandecadenaURL a la imagen grande
huevosDeNavidadTipoHuevosDeNavidad[]Matriz de huevos de Pascua en el paquete
fechaFinalizadaOCompletadacadenaFecha 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:

PropiedadTipoDescripción
_idcadenaIdentificador interno
huevosDeNavidadTipoHuevosDeNavidad[]Matriz de huevos de Pascua
elegibilidaddesconocidoInformación de elegibilidad
detallesExternosTipoTraduccion[]Detalles externos
detallesInternosTipoDetalleInternoDetalles internos
idOriginalcadenaIdentificador original
idJugadorcadenaID del jugador
imagenPequenacadenaURL a la imagen pequeña
estadoTipoProgresoMisionEstado de progreso
estadoEnumEstadoMisionEstado

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:

PropiedadTipoDescripción
estadoTiempoDeValidezTipoTiempoDeValidez | TipoPeriodoTiempoDeValidez | TipoFechaTiempoDeValidezInformació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:

PropiedadTipoRequeridoDescripción
idHuevoDePascuacadenaID del huevo de Pascua a reclamar
idDePaquetecadenaID del paquete que contiene el huevo de Pascua

Devuelve:
Una promesa que se resuelve en un objeto SimpleResponse<EasterEggClaimResponse> con la siguiente estructura:

PropiedadTipoDescripción
aceptarbooleanoSi la operación tuvo éxito
datosRespuestaDeReclamoDeEasterEgg | nuloDatos de respuesta si se realizó correctamente, de lo contrario null
errorobjeto | indefinidoInformación de error si la operación falló

El objeto EasterEggClaimResponse contiene:

PropiedadTipoDescripción
easterEggEasterEggsMissionBundle | nullInformación del huevo de Pascua si está disponible, null si no hay recompensas que reclamar
mensajecadenaMensaje de respuesta
códigoDeEstadonúmeroCó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.

NombreTipoObligatorioDescripción
idDePaquetecadenaIdentificador del paquete de misiones para optar.

Devuelve:
Una Promesa que se resuelve en un objeto SimpleResponse<MissionHistoryBundleDetailsType> con la siguiente estructura:

PropiedadTipoDescripción
aceptarbooleanoSi la operación fue exitosa.
datosMissionHistoryBundleDetailsType | nullDetalles del paquete en caso de éxito, null de lo contrario.
errorErrorResponse | undefinedInformació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.

NombreTipoRequeridoDescripción
idDePaquetecadenaIdentificador del paquete de misiones del que se quiere excluir.

Devuelve:
Una promesa que se resuelve en un objeto SimpleResponse<null> con la siguiente estructura:

PropiedadTipoDescripción
aceptarbooleanoIndica si la operación fue exitosa.
datosnuloSiempre es nulo en caso de éxito.
errorobjeto | indefinidoInformació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:

NombreTipoRequeridoPredeterminadoDescripción
páginanúmero-El número de página a recuperar (índice con base 1).
límitenúmeroNo25El número de elementos a devolver por página.
ordenarPorOpcionesDeSorteoDeBundleNoUPDATED_ATEl campo utilizado para ordenar los resultados.
ordenDirecciónDeOrdenamientoNoDESCLa dirección de la clasificación (asc o desc).
ignorarBundlesConTiposDeRecompensasTipoDeRecompensaEnum[]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:

NombreTipoRequeridoPredeterminadoDescripción
páginanúmero-El número de página a recuperar (índice basado en 1).
límitenúmeroNo25Número máximo de elementos por página.
ordenarPorOpcionesDeSorteoDeBundleNoUPDATED_ATLa propiedad utilizada para ordenar la lista.
ordenDirecciónDeOrdenamientoNoDESCLa dirección de ordenamiento (asc o desc).
ignorarPaquetesConTiposDeRecompensaRecompensasTipoEnum[]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:

NombreTipoRequeridoPredeterminadoDescripción
páginanúmero-El número de página a recuperar (índice de base 1).
límitenúmeroNo25El número de elementos por página.
ordenarPorOpcionesDeOrdenamientoDeHistorialDePacksDeJugadorNoACTUALIZADO_ENEl campo utilizado para ordenar el historial.
ordenDirecciónDeOrdenamientoNoDESCLa dirección de la clasificación (asc o desc).
rangoFechaobjetoNo-Filtro opcional para restringir los resultados entre dos fechas.
rangoFecha.fechaInicioFechaSí (si se proporcionó rangoFecha)-El límite de inicio para la búsqueda de historial (inclusivo, UTC).
rangoFecha.fechaFinFechaSí (si se proporcionó rangoFecha)-El límite de finalización para la búsqueda de historial (inclusivo, UTC).
ignorarBundlesConTiposDeRecompensaRecompensasTipoEnum[]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',
}