Módulo de Processamento de Recompensas
O Módulo de Processamento de Recompensas fornece funcionalidades para gerenciar recompensas do jogador, incluindo reivindicar recompensas, ativar boosters e recuperar informações sobre boosters e recompensas ativas no SDK da Web do Gamanza Engage.
Acessando o Módulo
O RewardsProcessorModule é inicializado internamente pelo SDK e não deve ser instanciado diretamente. Ele é acessível através da instância principal do SDK.
// Exemplo de acesso ao RewardsProcessorModule através do SDK
const { RewardsProcessor } = GamanzaEngageWebClientSDK.getInstance();
Métodos
playerClaimRewardsByGroupId
Envia uma solicitação para reivindicar recompensas do jogador pelo ID do grupo de recompensas.
Assinatura:
playerClaimRewardsByGroupId(groupId: string): Promise<SimpleResponse<ClaimableRewardsType[]>>
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
groupId | Tipo string | O identificador exclusivo do grupo de recompensas a ser reivindicado |
Retorna:
| Tipo | Descrição |
|---|---|
Promise<SimpleResponse<ClaimableRewardsType[]>> | Uma promessa que é resolvida em uma resposta simples contendo um array de recompensas reivindicadas ou um erro |
Exemplo:
// Reivindicar recompensas pelo ID do grupo
const groupId = "group-123";
const response = await sdk.RewardsProcessor.playerClaimRewardsByGroupId(groupId);
if (response.ok) {
console.log('Recompensas reivindicadas com sucesso:', response.data);
} else {
console.error('Falha ao reivindicar recompensas:', response.error);
}
playerClaimMissionRewards
Envia uma solicitação para reivindicar recompensas de missão para o jogador autenticado atual.
Reivindica uma recompensa originada de uma missão concluída.
⚠️ Este método faz parte do módulo RewardsProcessor, não do módulo Missions.
Os parâmetros necessários (bundleStateId e missionStateId) devem ser extraídos dos metadados das recompensas onde a fonte === "missions" retornada por getPlayerRewards().
Assinatura:
playerClaimMissionRewards(playerBundleStateId: string, missionStateId: string): Promise<SimpleResponse<ClaimableRewardsType[]>>
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
playerBundleStateId | Tipo string | O identificador exclusivo do estado do pacote do jogador |
missionStateId | Tipo string | O identificador exclusivo do estado da missão |
Retorna:
| Tipo | Descrição |
|---|---|
Promise<SimpleResponse<ClaimableRewardsType[]>> | Uma promessa que é resolvida em uma resposta simples contendo uma matriz de recompensas reivindicadas ou um erro |
Exemplo:
// Reivindicar recompensas da missão
const playerBundleStateId = "bundle-state-123";
const missionStateId = "mission-state-456";
const response = await sdk.RewardsProcessor.playerClaimMissionRewards(
playerBundleStateId,
missionStateId
);
if (response.ok) {
console.log('Recompensas da missão reivindicadas com sucesso:', response.data);
} else {
console.error('Falha ao reivindicar recompensas da missão:', response.error);
}
playerActivateBooster
Ativa um booster concedido ao jogador autenticado atual.
Assinatura:
playerActivateBooster(rewardId: string, payload: ActivateBoosterRequest): Promise<SimpleResponse<PlayerRewardActive>>
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
rewardId | Tipo string | O identificador exclusivo da recompensa a ser ativada |
payload | ActivateBoosterRequest | Informações adicionais necessárias para ativar o booster com base no tipo |
Retorna:
| Tipo | Descrição |
|---|---|
Promise<SimpleResponse<PlayerRewardActive>> | Uma promessa que é resolvida em uma resposta simples contendo a recompensa ativada ou um erro |
Exemplo:
// Ativar um booster de nível
const rewardId = "reward-123";
const payload = {
boosterType: "level",
levelId: "level-456"
};
const response = await sdk.RewardsProcessor.playerActivateBooster(rewardId, payload);
if (response.ok) {
console.log('Booster ativado com sucesso:', response.data);
} else {
console.error('Falha ao ativar o booster:', response.error);
}
// Ativar um booster de missão
const missionBoosterPayload = {
boosterType: "mission",
missionId: "mission-789"
};
const missionResponse = await sdk.RewardsProcessor.playerActivateBooster(
"reward-456",
missionBoosterPayload
);
getPlayerActiveLevelBooster
Retorna a lista de boosters de nível ativos para o jogador autenticado atual.
Assinatura:
getPlayerActiveLevelBooster(): Promise<PlayerLevelBooster[]>
Retorna:
| Tipo | Descrição |
|---|---|
Promise<PlayerLevelBooster[]> | Uma promessa que é resolvida em uma matriz de boosters de nível ativos |
Exemplo:
// Obter boosters de nível ativos
const levelBoosters = await sdk.RewardsProcessor.getPlayerActiveLevelBooster();
console.log(`Encontrados ${levelBoosters.length} boosters de nível ativos`);
levelBoosters.forEach(booster => {
console.log(`ID do booster: ${booster.id}`);
console.log(`Taxa do booster: ${booster.boosterRate}`);
console.log(`Ativo de ${booster.timeStart} a ${booster.timeEnd}`);
});
getPlayerActiveMissionBoosters
Retorna a lista de boosters de missão ativos para o jogador autenticado atual.
Assinatura:
getPlayerActiveMissionBoosters(): Promise<PlayerMissionsBooster[]>
Retorna:
| Tipo | Descrição |
|---|---|
Promise<PlayerMissionsBooster[]> | Uma promessa que é resolvida em um array de boosters de missão ativos |
Exemplo:
// Obter boosters de missão ativos
const missionBoosters = await sdk.RewardsProcessor.getPlayerActiveMissionBoosters();
console.log(`Encontrados ${missionBoosters.length} boosters de missão ativos`);
missionBoosters.forEach(booster => {
console.log(`ID do Booster: ${booster._id}`);
console.log(`Taxa do Booster: ${booster.boosterRate}`);
console.log(`Ativo de ${booster.timeStart} a ${booster.timeEnd}`);
});
getPlayerActiveTokenBoosters
Retorna a lista de boosters de token ativos para o jogador autenticado atual.
Assinatura:
getPlayerActiveTokenBoosters(): Promise<PlayerTokensBooster[]>
Retorna:
| Tipo | Descrição |
|---|---|
Promise<PlayerTokensBooster[]> | Uma promessa que é resolvida em um array de boosters de token ativos |
Exemplo:
// Obter boosters de token ativos
const tokenBoosters = await sdk.RewardsProcessor.getPlayerActiveTokenBoosters();
console.log(`Encontrados ${tokenBoosters.length} boosters de token ativos`);
tokenBoosters.forEach(booster => {
console.log(`ID do Booster: ${booster._id}`);
console.log(`Taxa do Booster: ${booster.boosterRate}`);
console.log(`Ativo de ${booster.timeStart} a ${booster.timeEnd}`);
});
getPlayerAllActiveBoostersByType
Retorna a lista de todos os boosters ativos por tipo para o jogador autenticado atual.
Assinatura:
getPlayerAllActiveBoostersByType(): Promise<ActiveRewardsByType>
Retorna:
| Tipo | Descrição |
|---|---|
Promise<ActiveRewardsByType> | Uma promessa que é resolvida em um objeto contendo arrays de diferentes tipos de boosters ativos |
Exemplo:
// Obter todos os boosters ativos por tipo
const allBoosters = await sdk.RewardsProcessor.getPlayerAllActiveBoostersByType();
console.log(`Boosters de Nível: ${allBoosters.levelBoosters.length}`);
console.log(`Boosters de Missão: ${allBoosters.missionBoosters.length}`);
console.log(`Boosters de Token: ${allBoosters.tokenBoosters.length}`);
// Acessar tipos de booster específicos
if (allBoosters.levelBoosters.length > 0) {
const firstLevelBooster = allBoosters.levelBoosters[0];
console.log(`Taxa do Primeiro Booster de Nível: ${firstLevelBooster.boosterRate}`);
}
getPlayerRewards
Retorna a lista de recompensas para o jogador autenticado atual. A resposta pode ser modificada com base nos argumentos de filtro da solicitação.
Assinatura:
getPlayerRewards(request: ListRewardsRequest): Promise<PaginationResponse<PlayerRewardActive[]>>
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
request | ListRewardsRequest | Objeto contendo parâmetros de filtro para a lista de recompensas |
Retorna:
| Tipo | Descrição |
|---|---|
Promise<PaginationResponse<PlayerRewardActive[]>> | Uma promessa que é resolvida em uma resposta paginada contendo um array de recompensas do jogador |
Exemplo:
// Obter recompensas do jogador com filtros
const request = {
limit: 10,
page: 1,
status: ["ativo", "concedido"],
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 da recompensa: ${reward.id}`);
console.log(`Status: ${reward.status}`);
console.log(`Ativação: ${reward.activation}`);
});
// Obter próxima página
if (response.hasNextPage) {
const nextPageRequest = {
...request,
page: response.nextPage
};
const nextPageResponse = await sdk.RewardsProcessor.getPlayerRewards(nextPageRequest);
}
playerRequestDeclineReward
Permite que o jogador autenticado recuse uma recompensa específica pelo seu ID.
Importante:
- Esta opção só terá efeito se a sua instância estiver configurada para permitir que as recompensas sejam ativadas pelo jogador. Se essa configuração estiver desligada, as recompensas são atribuídas automaticamente e esta opção não se aplica. Para ativar recompensas recusadas pelos jogadores, entre em contato com o seu Gerente de Sucesso do Cliente.
Efeitos colaterais:
- Em caso de sucesso, o SDK limpa os caches de recompensas para que as leituras subsequentes reflitam o estado atualizado.
Assinatura:
playerRequestDeclineReward(rewardId: string): Promise<SimpleResponse<ClaimableRewardsType>>
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
rewardId | Tipo string | O identificador exclusivo da recompensa a ser recusada |
Retorna:
| Tipo | Descrição |
|---|---|
Promise<SimpleResponse<ClaimableRewardsType>> | Resolve { ok: true, data: ClaimableRewardsType } em caso de sucesso; caso contrário { ok: false, data: null, error } |
Exemplo:
// Recusar uma recompensa específica pelo seu ID
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});
if (!rewards.docs.length) throw new Error('Nenhuma recompensa disponível para recusar');
const rewardToDecline = rewards.docs[0];
const declineResponse = await sdk.RewardsProcessor.playerRequestDeclineReward(rewardToDecline.id);
if (declineResponse.ok) {
console.log('Recompensa recusada:', declineResponse.data);
} else {
console.error('Falha ao recusar recompensa:', declineResponse.error);
}
playerRequestDeclineMissionRewards
Permite que o jogador autenticado recuse as recompensas concedidas por um Pacote de Missão.
Importante:
- Esta opção só terá efeito se a sua instância estiver configurada para permitir que as recompensas sejam ativadas pelo jogador. Se essa configuração estiver desligada, as recompensas são atribuídas automaticamente e esta opção não se aplica. Para ativar recompensas recusadas pelos jogadores, entre em contato com o seu Gerente de Sucesso do Cliente.
Efeitos colaterais:
- Em caso de sucesso, o SDK limpa os caches de recompensas para que as leituras subsequentes reflitam o estado atualizado.
Os parâmetros necessários (bundleStateId e missionStateId) devem ser extraídos dos metadados das recompensas onde a origem === "missions" retornada por getPlayerRewards().
Assinatura:
playerRequestDeclineMissionRewards(bundleStateId: string, missionStateId: string): Promise<SimpleResponse<null>>
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
bundleStateId | Tipo string | O identificador do estado do pacote de jogador associado ao pacote de missão |
missionStateId | Tipo string | O identificador do estado da missão cujas recompensas devem ser recusadas |
Retorna:
| Tipo | Descrição |
|---|---|
Promise<SimpleResponse<null>> | Uma promessa que é resolvida em uma resposta simples indicando sucesso com data definida como null, ou um erro quando malsucedida |
Exemplo:
// Recusar recompensas originárias de um pacote de missão
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});
// Encontre uma recompensa que tenha se originado de missões
const missionReward = rewards.docs.find(r => r.source === 'missions');
if (!missionReward || !missionReward.metadata) throw new Error('Nenhuma recompensa de missão encontrada');
const response = await sdk.RewardsProcessor.playerRequestDeclineMissionRewards(
missionReward.metadata.bundleStateId,
missionReward.metadata.missionStateId,
);
if (response.ok) {
console.log('Recompensas de missão recusadas com sucesso');
} else {
console.error('Falha ao recusar recompensas de missão:', response.error);
}
playerRequestDeclineRewardByGroupId
Permite que o jogador autenticado decline várias recompensas concedidas especificando o ID do grupo de recompensas.
Importante:
- Esta opção só terá efeito se sua instância estiver configurada para permitir que as recompensas sejam ativadas pelo jogador. Se essa configuração estiver desligada, as recompensas são atribuídas automaticamente e esta opção não se aplica. Para habilitar recompensas recusadas pelo jogador, entre em contato com seu Gerente de Sucesso do Cliente.
Efeitos colaterais:
- No caso de sucesso, o SDK limpa os caches de recompensas para que as leituras subsequentes reflitam o estado atualizado.
Observações:
- O
groupIdpode ser obtido de um item de recompensa viareward.group.groupIdao listar recompensas comgetPlayerRewards().
Assinatura:
playerRequestDeclineRewardByGroupId(groupId: string): Promise<SimpleResponse<null>>
Parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
groupId | Tipo string | O identificador único do grupo de recompensas cujas recompensas devem ser recusadas |
Retorna:
| Tipo | Descrição |
|---|---|
Promise<SimpleResponse<null>> | Uma promessa que é resolvida em uma resposta simples indicando sucesso com data definida como null, ou um erro quando malsucedida |
Exemplo:
// Recusar todas as recompensas por um ID de grupo específico
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});
if (!rewards.docs.length) throw new Error('Nenhuma recompensa disponível para recusar');
// Localizar uma recompensa com um identificador de grupo
const rewardWithGroup = rewards.docs.find(r => r.group && r.group.groupId);
if (!rewardWithGroup) throw new Error('Nenhuma recompensa agrupada encontrada');
const declineByGroupResponse = await sdk.RewardsProcessor.playerRequestDeclineRewardByGroupId(
rewardWithGroup.group.groupId
);
if (declineByGroupResponse.ok) {
console.log('As recompensas do grupo foram recusadas com sucesso');
} else {
console.error('Falha ao recusar recompensas por ID de grupo:', declineByGroupResponse.error);
}
Interfaces Relacionadas
ActivateBoosterRequest
Interface para ativar um impulsionador.
interface ActivateBoosterRequest {
boosterType: BoosterType;
levelId?: string;
missionId?: string;
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
boosterType | BoosterType | Sim | O tipo de impulsionador a ser ativado (nível, missão ou tokens) |
levelId | Tipo string | Não | O ID do nível (obrigatório quando boosterType é "level") |
missionId | Tipo string | Não | O ID da missão (obrigatório quando boosterType é "mission") |
BoosterType
Enum para tipos de impulsionadores.
enum BoosterType {
LEVEL = 'level',
MISSION = 'mission',
TOKENS = 'tokens',
}
| Valor | Descrição |
|---|---|
NÍVEL | Tipo de impulsionador de nível |
MISSÃO | Tipo de impulsionador de missão |
TOKENS | Tipo de impulsionador de tokens |
PlayerRewardActive
Interface para recompensas ativas do jogador.
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;
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | Tipo string | Sim | Identificador exclusivo da recompensa |
status | RewardStatusEnum | ExternalRewardStatus | Sim | Situação atual da recompensa |
playerId | Tipo string | Sim | Identificador do jogador que possui a recompensa |
activation | ActivationType | Sim | Como a recompensa é ativada (automática ou pelo jogador) |
playerCategoryId | Tipo string | Sim | Identificador de categoria do jogador |
earnedReward | Record<string, any> | Sim | Detalhes da recompensa obtida |
metadata | Record<string, any> | Não | Metadados adicionais para a recompensa |
trigger | Tipo string | Não | O que desencadeou a recompensa |
expirationDate | Date | Não | Quando a recompensa expira |
countdown | ActiveCountdownBoosterType | Não | Contagem regressiva até a expiração |
group | RewardGroup | Não | Informações do grupo da recompensa |
source | Tipo string | Não | A origem da recompensa, por exemplo, CRM, Missões, etc |
PlayerLevelBooster
Interface para boosters de nível de jogador.
interface PlayerLevelBooster {
id: string;
playerId: string;
rewardId: string;
boosterRate: number;
timeStart: Date;
timeEnd: Date;
status: RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE;
metadata?: Record<string, any>;
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | Tipo string | Sim | Identificador único para o booster de nível |
playerId | Tipo string | Sim | Identificador do jogador que possui o booster |
rewardId | Tipo string | Sim | Identificador da recompensa associada |
boosterRate | Tipo number | Sim | Taxa na qual o booster é aplicado |
timeStart | Date | Sim | Quando o booster começa |
timeEnd | Date | Sim | Quando o booster termina |
status | RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE | Sim | Status atual do booster |
metadata | Record<string, any> | Não | Metadados adicionais para o booster |
PlayerMissionsBooster
Interface para boosters de missões do jogador.
interface PlayerMissionsBooster extends Omit<PlayerLevelBooster, 'id'> {
_id: string;
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
_id | Tipo string | Sim | Identificador exclusivo para o impulsionador de missão |
playerId | Tipo string | Sim | Identificador do jogador que possui o impulsionador |
rewardId | Tipo string | Sim | Identificador da recompensa associada |
boosterRate | Tipo number | Sim | Taxa na qual o impulsionador é aplicado |
timeStart | Date | Sim | Quando o impulsionador começa |
timeEnd | Date | Sim | Quando o impulsionador termina |
status | RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE | Sim | Status atual do impulsionador |
metadata | Record<string, any> | Não | Metadados adicionais para o impulsionador |
PlayerTokensBooster
Interface para impulsionadores de tokens de jogador.
interface PlayerTokensBooster extends Omit<PlayerLevelBooster, 'id'> {
_id: string;
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
_id | string | Sim | Identificador exclusivo para o impulsionador de token |
playerId | string | Sim | Identificador do jogador que possui o impulsionador |
rewardId | string | Sim | Identificador da recompensa associada |
boosterRate | number | Sim | Taxa na qual o booster é aplicado |
timeStart | Date | Sim | Quando o booster começa |
timeEnd | Date | Sim | Quando o booster termina |
status | RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE | Sim | Status atual do booster |
metadata | Record<string, any> | Não | Metadados adicionais para o booster |
ActiveRewardsByType
Interface para recompensas ativas agrupadas por tipo.
interface ActiveRewardsByType {
levelBoosters: PlayerLevelBooster[];
missionBoosters: PlayerMissionsBooster[];
tokenBoosters: PlayerTokensBooster[];
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
levelBoosters | PlayerLevelBooster[] | Sim | Array de boosters de nível ativos |
missionBoosters | PlayerMissionsBooster[] | Sim | Array de boosters de missão ativos |
tokenBoosters | PlayerTokensBooster[] | Sim | Array de boosters de token ativos |
ListRewardsRequest
Interface para filtrar recompensas do jogador.
interface ListRewardsRequest extends Omit<PaginationRequest, 'order'> {
playerId?: string;
status?: RewardStatusEnum[] | RewardStatusEnum;
activation?: ActivationType;
source?: string;
rewardType?: RewardTypeEnum[] | RewardTypeEnum;
startDate?: Date;
endDate?: Date;
}
| Propriedade | Tipo | Obrigatório | Descrição | |
|---|---|---|---|---|
playerId | Tipo string | Não | Filtrar por ID do jogador | |
status | RewardStatusEnum[] | RewardStatusEnum` | Não | Filtrar por status da recompensa (aceita um único valor ou uma matriz) |
activation | ActivationType | Não | Filtrar por tipo de ativação | |
source | Tipo string | Não | Filtrar por fonte | |
rewardType | RewardTypeEnum[] | RewardTypeEnum` | Não | Filtrar por tipo de recompensa (aceita um único valor ou uma matriz) |
startDate | Date | Não | Filtrar por data de início | |
endDate | Date | Não | Filtrar por data de término | |
limit | Tipo number | Não | Número de itens por página (da PaginationRequest) | |
page | Tipo number | Não | Número da página (da PaginationRequest) |
ClaimableRewardsType
Interface para recompensas que podem ser reivindicadas.
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;
};
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | Tipo string | Sim | Identificador exclusivo da recompensa |
playerId | Tipo string | Sim | Identificador do jogador que possui a recompensa |
status | ClaimableRewardStatusEnum | Sim | Status atual da recompensa |
activation | 'automatic' | 'by_player' | Sim | Como a recompensa é ativada |
playerCategoryId | Tipo string | Sim | Identificador de categoria do jogador |
earnedReward | unknown | Sim | Detalhes da recompensa conquistada |
metadata | Record<string, unknown> | Sim | Metadados adicionais para a recompensa |
trigger | Tipo string | Não | O que ativou a recompensa |
expirationDate | Tipo string | Sim | Quando a recompensa expira (formato ISO 8601) |
countdown | Tipo string | Sim | Tempo restante até a expiração (ex.: "9d 17h 27m") |
RewardStatusEnum
Enum para status 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',
}
| Valor | Descrição |
|---|---|
ACTIVE | Recompensa está ativa |
INATIVO | Recompensa está inativa |
CONCEDIDO | Recompensa foi concedida |
PENDENTE | Recompensa está pendente |
EM_ANDAMENTO | Recompensa está em andamento |
CONCLUÍDO | Recompensa está concluída |
FALHOU | Recompensa falhou |
REIVINDICADO | Recompensa foi reivindicada |
NÃO_REIVINDICADO | Recompensa não foi reivindicada |
EXCLUÍDA | Recompensa foi excluída |
EXPIRADA | Recompensa expirou |
DEVOLVIDA | Entrega da recompensa devolvida (não pôde ser entregue) |
RECUSADA | Recompensa foi recusada pelo jogador ou 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ão 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 = 'claimed',
UNCLAIMED = 'unclaimed',
GRANTED = 'granted',
PENDING = 'pending',
IN_PROGRESS = 'in_progress',
COMPLETED = 'completed',
FAILED = 'failed',
DELETED = 'deleted',
EXPIRED = 'expired',
DECLINED = 'declined',
}
PaginationResponse
Interface genérica para respostas 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;
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
docs | T | Sim | Matriz de itens para a página atual |
totalDocs | Tipo number | Sim | Número total de itens em todas as páginas |
limit | Tipo number | Sim | Número de itens por página |
totalPages | Tipo number | Sim | Número total de páginas |
page | Tipo number | Sim | Número da página atual |
pagingCounter | Tipo number | Sim | O índice inicial da página atual |
hasPrevPage | Tipo boolean | Sim | Se existe uma página anterior |
hasNextPage | Tipo boolean | Sim | Se existe uma próxima página |
prevPage | number | null | Sim | Número da página anterior ou nulo se não houver |
nextPage | number | null | Sim | Número da próxima página ou nulo se não houver |
SimpleResponse
Interface genérica para respostas simples.
interface SimpleResponse<T> {
ok: boolean;
data: T | null;
error?: {
code: string;
message: string;
};
}
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ok | Tipo boolean | Sim | Se a operação foi bem-sucedida |
data | T | null | Sim | Dados de resposta ou nulo se a operação falhar |
erro | { code: string; message: string; } | Não | Informações de erro se a operação falhar |