Módulo de procesamiento de recompensas
El Módulo de procesamiento de recompensas proporciona funcionalidad para gestionar las recompensas de los jugadores, incluida la reclamación de recompensas, la activación de potenciadores y la recuperación de información sobre los potenciadores y recompensas activos en el SDK del cliente web de Gamanza Engage.
Acceso al módulo
El RewardsProcessorModule se inicializa internamente por el SDK y no debe instanciarse directamente. Se puede acceder a través de la instancia principal del SDK.
// Ejemplo de acceso al RewardsProcessorModule a través del SDK
const { RewardsProcessor } = GamanzaEngageWebClientSDK.getInstance();
Métodos
playerClaimRewardsByGroupId
Envía una solicitud para reclamar las recompensas de los jugadores por el ID del grupo de recompensas.
Firma:
playerClaimRewardsByGroupId(groupId: string): Promise<SimpleResponse<ClaimableRewardsType[]>>
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
groupId | string | El identificador único del grupo de recompensas a reclamar |
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<SimpleResponse<ClaimableRewardsType[]>> | Una promesa que se resuelve en una respuesta simple que contiene un array de recompensas reclamadas o un error |
Ejemplo:
// Reclamar recompensas por ID de grupo
const groupId = "group-123";
const response = await sdk.RewardsProcessor.playerClaimRewardsByGroupId(groupId);
if (response.ok) {
console.log('Recompensas reclamadas correctamente:', response.data);
} else {
console.error('Error al reclamar recompensas:', response.error);
}
playerClaimMissionRewards
Envía una solicitud para reclamar las recompensas de misión del jugador autenticado actual.
Reclama una recompensa originada por una misión completada.
⚠️ Este método es parte del módulo RewardsProcessor, no del módulo Missions.
Los parámetros requeridos (bundleStateId y missionStateId) deben extraerse de los metadatos de las recompensas donde el origen === "misiones" devuelto por getPlayerRewards().
Firma:
playerClaimMissionRewards(playerBundleStateId: string, missionStateId: string): Promise<SimpleResponse<ClaimableRewardsType[]>>
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
playerBundleStateId | string | El identificador único del estado del paquete del jugador |
missionStateId | string | El identificador único del estado de la misión |
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<SimpleResponse<ClaimableRewardsType[]>> | Una promesa que se resuelve en una respuesta simple que contiene un arreglo de recompensas reclamadas o un error |
Ejemplo:
// Reclamar recompensas de misión
const playerBundleStateId = "bundle-state-123";
const missionStateId = "mission-state-456";
const response = await sdk.RewardsProcessor.playerClaimMissionRewards(
playerBundleStateId,
missionStateId
);
if (response.ok) {
console.log('Se reclamaron exitosamente las recompensas de la misión:', response.data);
} else {
console.error('No se pudieron reclamar las recompensas de la misión:', response.error);
}
playerActivateBooster
Activa un potenciador otorgado al jugador autenticado actual.
Firma:
playerActivateBooster(rewardId: string, payload: ActivateBoosterRequest): Promise<SimpleResponse<PlayerRewardActive>>
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
rewardId | string | El identificador único de la recompensa que se va a activar |
payload | ActivateBoosterRequest | Información adicional requerida para activar el potenciador según el tipo |
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<SimpleResponse<PlayerRewardActive>> | Una promesa que se resuelve en una respuesta simple que contiene la recompensa activada o un error |
Ejemplo:
// Activar un potenciador de nivel
const rewardId = "reward-123";
const payload = {
boosterType: "level",
levelId: "level-456"
};
const response = await sdk.RewardsProcessor.playerActivateBooster(rewardId, payload);
if (response.ok) {
console.log('Se activó exitosamente el potenciador:', response.data);
} else {
console.error('No se pudo activar el potenciador:', response.error);
}
// Activar un potenciador de misión
const missionBoosterPayload = {
boosterType: "mission",
missionId: "mission-789"
};
const missionResponse = await sdk.RewardsProcessor.playerActivateBooster(
"reward-456",
missionBoosterPayload
);
getPlayerActiveLevelBooster
Devuelve la lista de potenciadores de nivel activos para el jugador autenticado actual.
Firma:
getPlayerActiveLevelBooster(): Promise<PlayerLevelBooster[]>
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<PlayerLevelBooster[]> | Una promesa que se resuelve en un arreglo de potenciadores de nivel activos |
Ejemplo:
// Obtener potenciadores de nivel activos
const levelBoosters = await sdk.RewardsProcessor.getPlayerActiveLevelBooster();
console.log(`Se encontraron ${levelBoosters.length} potenciadores de nivel activos`);
levelBoosters.forEach(booster => {
console.log(`ID del potenciador: ${booster.id}`);
console.log(`Tasa del potenciador: ${booster.boosterRate}`);
console.log(`Activo desde ${booster.timeStart} hasta ${booster.timeEnd}`);
});
getPlayerActiveMissionBoosters
Devuelve la lista de potenciadores de misión activos para el jugador autenticado actual.
Firma:
getPlayerActiveMissionBoosters(): Promise<PlayerMissionsBooster[]>
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<PlayerMissionsBooster[]> | Una promesa que se resuelve en una matriz de potenciadores de misión activos |
Ejemplo:
// Obtener potenciadores de misión activos
const missionBoosters = await sdk.RewardsProcessor.getPlayerActiveMissionBoosters();
console.log(`Se encontraron ${missionBoosters.length} potenciadores de misión activos`);
missionBoosters.forEach(booster => {
console.log(`ID del potenciador: ${booster._id}`);
console.log(`Tasa del potenciador: ${booster.boosterRate}`);
console.log(`Activo desde ${booster.timeStart} hasta ${booster.timeEnd}`);
});
getPlayerActiveTokenBoosters
Devuelve la lista de potenciadores de token activos para el jugador autenticado actual.
Firma:
getPlayerActiveTokenBoosters(): Promise<PlayerTokensBooster[]>
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<PlayerTokensBooster[]> | Una promesa que se resuelve en una matriz de potenciadores de token activos |
Ejemplo:
// Obtener potenciadores de token activos
const tokenBoosters = await sdk.RewardsProcessor.getPlayerActiveTokenBoosters();
console.log(`Se encontraron ${tokenBoosters.length} potenciadores de token activos`);
tokenBoosters.forEach(booster => {
console.log(`ID del potenciador: ${booster._id}`);
console.log(`Tasa del potenciador: ${booster.boosterRate}`);
console.log(`Activo desde ${booster.timeStart} hasta ${booster.timeEnd}`);
});
getPlayerAllActiveBoostersByType
Devuelve la lista de todos los potenciadores activos por tipo para el jugador autenticado actual.
Firma:
getPlayerAllActiveBoostersByType(): Promise<ActiveRewardsByType>
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<ActiveRewardsByType> | Una promesa que se resuelve en un objeto que contiene matrices de diferentes tipos de potenciadores activos |
Ejemplo:
// Obtener todos los potenciadores activos por tipo
const allBoosters = await sdk.RewardsProcessor.getPlayerAllActiveBoostersByType();
console.log(`Potenciadores de nivel: ${allBoosters.levelBoosters.length}`);
console.log(`Potenciadores de misión: ${allBoosters.missionBoosters.length}`);
console.log(`Potenciadores de token: ${allBoosters.tokenBoosters.length}`);
// Acceder a tipos de potenciadores específicos
if (allBoosters.levelBoosters.length > 0) {
const firstLevelBooster = allBoosters.levelBoosters[0];
console.log(`Tasa del primer potenciador de nivel: ${firstLevelBooster.boosterRate}`);
}
getPlayerRewards
Devuelve la lista de recompensas para el jugador autenticado actual. La respuesta se puede modificar en función de los filtros de argumentos de la solicitud.
Firma:
getPlayerRewards(request: ListRewardsRequest): Promise<PaginationResponse<PlayerRewardActive[]>>
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
request | ListRewardsRequest | Objeto que contiene parámetros de filtro para la lista de recompensas |
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<PaginationResponse<PlayerRewardActive[]>> | Una promesa que se resuelve en una respuesta paginada que contiene una matriz de recompensas de jugador |
Ejemplo:
// Obtener recompensas de jugador con filtros
const request = {
limit: 10,
page: 1,
status: ["active", "granted"],
rewardType: ["tokens", "level_booster"]
};
const response = await sdk.RewardsProcessor.getPlayerRewards(request);
console.log(`Total de recompensas: ${response.totalDocs}`);
console.log(`Página ${response.page} de ${response.totalPages}`);
response.docs.forEach(reward => {
console.log(`ID de recompensa: ${reward.id}`);
console.log(`Estado: ${reward.status}`);
console.log(`Activación: ${reward.activation}`);
});
// Obtener la siguiente página
if (response.hasNextPage) {
const nextPageRequest = {
...request,
page: response.nextPage
};
const nextPageResponse = await sdk.RewardsProcessor.getPlayerRewards(nextPageRequest);
}
playerRequestDeclineReward
Permite al jugador autenticado rechazar una recompensa específica por su ID de recompensa.
Importante:
- Esta opción solo surte efecto si su instancia está configurada para permitir que el jugador active las recompensas. Si esta configuración está desactivada, las recompensas se asignan automáticamente y esta opción no se aplica. Para habilitar las recompensas rechazadas por el jugador, comuníquese con su Gerente de Éxito del Cliente.
Efectos secundarios:
- En caso de éxito, el SDK borra las memorias caché de recompensas para que las lecturas posteriores reflejen el estado actualizado.
Firma:
playerRequestDeclineReward(rewardId: string): Promise<SimpleResponse<ClaimableRewardsType>>
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
rewardId | string | El identificador único de la recompensa a rechazar |
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<SimpleResponse<ClaimableRewardsType>> | Se resuelve { ok: true, data: ClaimableRewardsType } en caso de éxito; de lo contrario { ok: false, data: null, error } |
Ejemplo:
// Rechazar una recompensa específica por su ID
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});
if (!rewards.docs.length) throw new Error('No hay recompensas disponibles para rechazar');
const rewardToDecline = rewards.docs[0];
const declineResponse = await sdk.RewardsProcessor.playerRequestDeclineReward(rewardToDecline.id);
if (declineResponse.ok) {
console.log('Recompensa rechazada:', declineResponse.data);
} else {
console.error('No se pudo rechazar la recompensa:', declineResponse.error);
}
playerRequestDeclineMissionRewards
Permite al jugador autenticado rechazar las recompensas otorgadas por un Paquete de Misiones.
Importante:
- Esta opción solo surte efecto si su instancia está configurada para permitir que el jugador active las recompensas. Si esta configuración está desactivada, las recompensas se asignan automáticamente y esta opción no se aplica. Para habilitar las recompensas rechazadas por el jugador, comuníquese con su Gerente de Éxito del Cliente.
Efectos secundarios:
- En caso de éxito, el SDK borra las memorias caché de recompensas para que las lecturas posteriores reflejen el estado actualizado.
Los parámetros requeridos (bundleStateId y missionStateId) deben extraerse de los metadatos de las recompensas donde la fuente === "missions" devueltos por getPlayerRewards().
Firma:
playerRequestDeclineMissionRewards(bundleStateId: string, missionStateId: string): Promise<SimpleResponse<null>>
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
bundleStateId | cadena | El identificador del estado del paquete de jugadores asociado con el paquete de misiones |
missionStateId | cadena | El identificador del estado de la misión cuyos premios deben ser rechazados |
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<SimpleResponse<null>> | Una promesa que se resuelve en una respuesta simple que indica éxito con data establecida en null, o un error cuando no es exitosa |
Ejemplo:
// Rechazar premios originados de un paquete de misiones
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});
// Encuentra una recompensa que se originó de misiones
const missionReward = rewards.docs.find(r => r.source === 'missions');
if (!missionReward || !missionReward.metadata) throw new Error('No se encontró ninguna recompensa de la misión');
const response = await sdk.RewardsProcessor.playerRequestDeclineMissionRewards(
missionReward.metadata.bundleStateId,
missionReward.metadata.missionStateId,
);
if (response.ok) {
console.log('Recompensas de misión rechazadas con éxito');
} else {
console.error('No se pudo rechazar las recompensas de la misión:', response.error);
}
playerRequestDeclineRewardByGroupId
Permite al jugador autenticado rechazar múltiples recompensas otorgadas especificando el ID del grupo de recompensas.
Importante:
- Esta opción solo surte efecto si su instancia está configurada para permitir que el jugador active las recompensas. Si esta configuración está desactivada, las recompensas se asignan automáticamente y esta opción no se aplica. Para habilitar las recompensas rechazadas por el jugador, comuníquese con su Gerente de Éxito del Cliente.
Efectos secundarios:
- En caso de éxito, el SDK borra las cachés de recompensas para que las lecturas posteriores reflejen el estado actualizado.
Notas:
- El
groupIdse puede obtener de un elemento de recompensa a través dereward.group.groupIdal enumerar las recompensas congetPlayerRewards().
Firma:
playerRequestDeclineRewardByGroupId(groupId: string): Promise<SimpleResponse<null>>
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
groupId | cadena | El identificador único del grupo de recompensas cuyos premios deben ser rechazados |
Devuelve:
| Tipo | Descripción |
|---|---|
Promise<SimpleResponse<null>> | Una promesa que se resuelve en una respuesta simple que indica éxito con data establecida en null, o un error cuando no es exitosa |
Ejemplo:
// Rechazar todas las recompensas por un ID de grupo específico
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});
if (!rewards.docs.length) throw new Error('No hay recompensas disponibles para rechazar');
// Ubicar una recompensa con un identificador de grupo
const rewardWithGroup = rewards.docs.find(r => r.group && r.group.groupId);
if (!rewardWithGroup) throw new Error('No se encontró una recompensa agrupada');
const declineByGroupResponse = await sdk.RewardsProcessor.playerRequestDeclineRewardByGroupId(
rewardWithGroup.group.groupId
);
if (declineByGroupResponse.ok) {
console.log('Las recompensas del grupo se rechazaron con éxito');
} else {
console.error('No se pudieron rechazar las recompensas por ID de grupo:', declineByGroupResponse.error);
}
Interfaces relacionadas
ActivateBoosterRequest
Interfaz para activar un potenciador.
interface ActivateBoosterRequest {
boosterType: BoosterType;
levelId?: string;
missionId?: string;
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
boosterType | BoosterType | Sí | El tipo de potenciador a activar (nivel, misión o tokens) |
levelId | string | No | El ID de nivel (requerido cuando boosterType es "level") |
missionId | string | No | El ID de la misión (requerido cuando boosterType es "mission") |
BoosterType
Enum para tipos de potenciadores.
enum BoosterType {
LEVEL = 'level',
MISSION = 'mission',
TOKENS = 'tokens',
}
| Valor | Descripción |
|---|---|
LEVEL | Tipo de potenciador de nivel |
MISSION | Tipo de potenciador de misión |
TOKENS | Tipo de potenciador de tokens |
PlayerRewardActive
Interfaz para recompensas activas del jugador.
interface PlayerRewardActive {
id: string;
status: RewardStatusEnum | ExternalRewardStatus;
playerId: string;
activation: ActivationType;
playerCategoryId: string;
earnedReward: Record<string, any>;
metadata?: Record<string, any>;
trigger?: string;
expirationDate?: Date;
countdown?: ActiveCountdownBoosterType;
group?: RewardGroup;
source?: string;
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | Identificador único de la recompensa |
status | RewardStatusEnum | ExternalRewardStatus | Sí | Estado actual de la recompensa |
playerId | string | Sí | Identificador del jugador que posee la recompensa |
activation | ActivationType | Sí | Cómo se activa la recompensa (automática o por el jugador) |
playerCategoryId | string | Sí | Identificador de categoría del jugador |
earnedReward | Record<string, any> | Sí | Detalles de la recompensa ganada |
metadata | Record<string, any> | No | Metadatos adicionales para la recompensa |
trigger | string | No | Qué activó la recompensa |
expirationDate | Date | No | Cuándo vence la recompensa |
countdown | ActiveCountdownBoosterType | No | Cuenta atrás hasta el vencimiento |
group | RewardGroup | No | Información de grupo para la recompensa |
source | string | No | El origen de la recompensa, por ejemplo CRM, Misiones, etc |
PlayerLevelBooster
Interfaz para los potenciadores de nivel de jugador.
interfaz PlayerLevelBooster {
id: string;
playerId: string;
rewardId: string;
boosterRate: number;
timeStart: Date;
timeEnd: Date;
status: RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE;
metadata?: Record<string, any>;
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | Identificador único para el potenciador de nivel |
playerId | string | Sí | Identificador del jugador que es dueño del potenciador |
rewardId | string | Sí | Identificador de la recompensa asociada |
boosterRate | number | Sí | Tasa a la que se aplica el potenciador |
timeStart | Date | Sí | Cuándo comienza el potenciador |
timeEnd | Fecha | Sí | Cuándo termina el potenciador |
estado | RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE | Sí | Estado actual del potenciador |
metadatos | Record<string, any> | No | Metadatos adicionales para el potenciador |
Potenciador de misiones del jugador
Interfaz para potenciadores de misiones de jugador.
interfaz PlayerMissionsBooster extiende Omit<PlayerLevelBooster, 'id'> {
_id: string;
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
_id | cadena | Sí | Identificador único para el impulsor de la misión |
playerId | cadena | Sí | Identificador del jugador que posee el impulsor |
rewardId | cadena | Sí | Identificador de la recompensa asociada |
boosterRate | número | Sí | Tasa a la que se aplica el impulsor |
timeStart | Fecha | Sí | Cuándo comienza el impulsor |
timeEnd | Fecha | Sí | Cuándo termina el impulsor |
estado | RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE | Sí | Estado actual del impulsor |
metadatos | Record<string, any> | No | Metadatos adicionales para el impulsor |
PlayerTokensBooster
Interfaz para los impulsores de fichas de jugador.
interface PlayerTokensBooster extends Omit<PlayerLevelBooster, 'id'> {
_id: string;
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
_id | cadena | Sí | Identificador único para el impulsor de fichas |
playerId | cadena | Sí | Identificador del jugador que posee el impulsor |
rewardId | cadena | Sí | Identificador de la recompensa asociada |
tasa de refuerzo | número | Sí | Tasa a la que se aplica el refuerzo |
fecha de inicio | Fecha | Sí | Cuándo comienza el refuerzo |
fecha de finalización | Fecha | Sí | Cuándo termina el refuerzo |
estado | RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE | Sí | Estado actual del refuerzo |
metadatos | Record<string, any> | No | Metadatos adicionales para el refuerzo |
Recompensas activas por tipo
Interfaz para recompensas activas agrupadas por tipo.
interfaz ActiveRewardsByType {
levelBoosters: PlayerLevelBooster[];
missionBoosters: PlayerMissionsBooster[];
tokenBoosters: PlayerTokensBooster[];
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
levelBoosters | PlayerLevelBooster[] | Sí | Matriz de refuerzos de nivel activos |
missionBoosters | PlayerMissionsBooster[] | Sí | Matriz de refuerzos de misión activos |
tokenBoosters | PlayerTokensBooster[] | Sí | Matriz de refuerzos de token activos |
Solicitud de lista de recompensas
Interfaz para filtrar las recompensas del jugador.
interfaz ListRewardsRequest extiende Omit<PaginationRequest, 'order'> {
playerId?: string;
status?: RewardStatusEnum[] | RewardStatusEnum;
activation?: ActivationType;
source?: string;
rewardType?: RewardTypeEnum[] | RewardTypeEnum;
startDate?: Date;
endDate?: Date;
}
| Propiedad | Tipo | Requerido | Descripción | |
|---|---|---|---|---|
playerId | cadena | No | Filtrar por ID de jugador | |
estado | RewardStatusEnum[] | RewardStatusEnum` | No | Filtrar por estado de recompensa (acepta un solo valor o una matriz) |
activación | ActivationType | No | Filtrar por tipo de activación | |
fuente | cadena | No | Filtrar por fuente | |
tipoRecompensa | RewardTypeEnum[] | RewardTypeEnum` | No | Filtrar por tipo de recompensa (acepta un solo valor o una matriz) |
fechaInicio | Fecha | No | Filtrar por fecha de inicio | |
fechaFin | Date | No | Filtrar por fecha de finalización | |
limit | number | No | Número de elementos por página (de PaginationRequest) | |
page | number | No | Número de página (de PaginationRequest) |
ClaimableRewardsType
Interfaz para recompensas reclamables.
type ClaimableRewardsType = {
id: string;
playerId: string;
status: ClaimableRewardStatusEnum;
activation: 'automatic' | 'by_player';
playerCategoryId: string;
earnedReward: unknown;
metadata: Record<string, unknown>;
trigger?: string;
expirationDate: string;
countdown: string;
};
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
id | string | Sí | Identificador único de la recompensa |
playerId | string | Sí | Identificador del jugador que posee la recompensa |
status | ClaimableRewardStatusEnum | Sí | Estado actual de la recompensa |
activation | 'automatic' | 'by_player' | Sí | Cómo se activa la recompensa |
playerCategoryId | string | Sí | Identificador de categoría para el jugador |
earnedReward | unknown | Sí | Detalles de la recompensa ganada |
metadata | Record<string, unknown> | Sí | Metadatos adicionales para la recompensa |
trigger | string | No | Qué activó la recompensa |
expirationDate | string | Sí | Cuándo expira la recompensa (formato ISO 8601) |
countdown | string | Sí | Tiempo restante hasta el vencimiento (p. ej., "9d 17h 27m") |
RewardStatusEnum
Enum para los estados de recompensa.
enum RewardStatusEnum {
ACTIVE = 'active',
INACTIVE = 'inactive',
GRANTED = 'granted',
PENDING = 'pending',
IN_PROGRESS = 'in_progress',
COMPLETED = 'completed',
FAILED = 'failed',
CLAIMED = 'claimed',
UNCLAIMED = 'unclaimed',
DELETED = 'deleted',
EXPIRED = 'expired',
BOUNCED = 'bounced',
DECLINED = 'declined',
}
| Value | Description |
|---|---|
ACTIVE | La recompensa está activa |
INACTIVO | La recompensa está inactiva |
OTORGADO | La recompensa ha sido otorgada |
PENDIENTE | La recompensa está pendiente |
EN_PROGRESO | La recompensa está en progreso |
COMPLETADO | La recompensa está completada |
FALLADO | La recompensa ha fallado |
RECLAMADO | La recompensa ha sido reclamada |
SIN_RECLAMAR | La recompensa no ha sido reclamada |
ELIMINADO | La recompensa ha sido eliminada |
VENCIDO | La recompensa ha vencido |
REBOTADO | La entrega de la recompensa rebotó (no se pudo entregar) |
RECHAZADO | La recompensa fue rechazada por el jugador o el sistema |
RewardTypeEnum
export enum RewardTypeEnum {
TOKENS = 'tokens',
XP = 'xp',
BONUS_OFFER = 'bonus_offer',
LEVEL_BOOSTER = 'level_booster',
MISSION_BOOSTER = 'mission_booster',
TOKEN_BOOSTER = 'token_booster',
EXTERNAL = 'external',
CASH = 'cash',
MINI_GAME = 'mini_game',
}
Recompensa (unión discriminada)
interface RewardTranslation {
language: string;
description: string;
}
interface BaseReward {
type: RewardTypeEnum;
rewardType: RewardTypeEnum;
translations?: RewardTranslation[];
level: number;
activation: string; // @TODO: define this
boosterRate: number;
expirationValidityTime?: {
timeType: string; // @TODO: define this
};
timeFrame: ISO8601Duration;
termsAndConditions?: Pick<TranslationType, 'language' | 'description'>[];
}
interface TokensReward extends Pick<BaseReward, 'type' | 'termsAndConditions' | 'translations'> {
type: RewardTypeEnum.TOKENS;
amount: number;
}
interface BonusOfferReward extends Pick<BaseReward, 'type'> {
type: RewardTypeEnum.BONUS_OFFER;
bonusId: string;
bonusByCurrency: {
[key: string]: {
name: string;
bonusOfferId: string;
};
};
}
interface LevelBoosterReward extends BaseReward {
type: RewardTypeEnum.LEVEL_BOOSTER;
}
interface MissionBoosterReward extends BaseReward {
type: RewardTypeEnum.MISSION_BOOSTER;
}
interface TokenBoosterReward extends BaseReward {
type: RewardTypeEnum.TOKEN_BOOSTER;
}
interface ExternalReward extends Pick<BaseReward, 'type'> {
type: RewardTypeEnum.EXTERNAL;
imageUrl: string;
description: string;
}
export type Reward = BaseReward & (
| TokensReward
| BonusOfferReward
| LevelBoosterReward
| MissionBoosterReward
| TokenBoosterReward
| ExternalReward
);
ClaimableRewardStatusEnum
export enum ClaimableRewardStatusEnum {
CLAIMED = 'reclamado',
UNCLAIMED = 'sin reclamar',
GRANTED = 'otorgado',
PENDING = 'pendiente',
IN_PROGRESS = 'en progreso',
COMPLETED = 'completado',
FAILED = 'fallado',
DELETED = 'eliminado',
EXPIRED = 'vencido',
DECLINED = 'rechazado',
}
PaginationResponse
Interfaz genérica para respuestas paginadas.
interface PaginationResponse<T> {
docs: T;
totalDocs: number;
limit: number;
totalPages: number;
page: number;
pagingCounter: number;
hasPrevPage: boolean;
hasNextPage: boolean;
prevPage: number | null;
nextPage: number | null;
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
docs | T | Sí | Arreglo de elementos para la página actual |
totalDocs | number | Sí | Número total de elementos en todas las páginas |
limit | number | Sí | Número de elementos por página |
totalPages | number | Sí | Número total de páginas |
page | number | Sí | Número de página actual |
pagingCounter | number | Sí | El índice de inicio de la página actual |
hasPrevPage | boolean | Sí | Si hay una página anterior |
hasNextPage | boolean | Sí | Si hay una página siguiente |
prevPage | number | null | Sí | Número de página anterior o nulo si no hay |
nextPage | number | null | Sí | Número de página siguiente o nulo si no hay |
SimpleResponse
Interfaz genérica para respuestas simples.
interface SimpleResponse<T> {
ok: boolean;
data: T | null;
error?: {
code: string;
message: string;
};
}
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
ok | booleano | Sí | Si la operación fue exitosa |
data | T | null | Sí | Datos de respuesta o nulo si la operación falló |
error | { code: string; message: string; } | No | Información de error si la operación falló |