Módulo de Missões
O Módulo de Missões fornece funcionalidade para recuperar informações sobre missões do jogador, pacotes de missões e ovos de Páscoa. Ele também permite que os jogadores reivindiquem recompensas de ovos de Páscoa. Este módulo faz parte do SDK do Cliente Web Gamanza Engage e é instanciado automaticamente quando o SDK é inicializado.
Acessando o Módulo
O MissionsModule é 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 CrmModule através do SDK
const { Missions } = GamanzaEngageWebClientSDK.getInstance();
Métodos Públicos
obterMissoesDoJogadorEmProgresso
Recupera a lista de missões ativas em andamento para o jogador autenticado atual.
obterMissoesDoJogadorEmProgresso(): Promise<TipoMissao[]>
Descrição: Este método busca uma lista de todas as missões ativas que estão atualmente em andamento para o jogador autenticado. Ele usa um mecanismo de cache para otimizar o desempenho - primeiro verificando se os dados estão disponíveis no cache antes de fazer uma chamada de API. Se a chamada de API falhar, ela tenta retornar dados desatualizados do cache.
Parâmetros: Nenhum
Retorna:
Uma Promise que é resolvida com um array de objetos MissionType com as seguintes propriedades:
| Propriedade | Tipo | Descrição |
|---|---|---|
| _id | string | Identificador interno |
| nome | string | Nome de exibição da missão |
| descrição | string | Descrição da missão |
| etiquetas | TipoEtiquetaSimples[] | Array de tags associadas à missão |
| objetivos | TiposMissaoObjetivo[] | Array de objetivos de missão |
| tempoDeValidade | ValidityTimeType | ValidityTimePeriodType | ValidityTimeSpecificDateType | Restrições de validade de tempo para a missão |
| status | EnumStatusMissao | Status atual da missão |
| categoriasDeRecompensa | TipoCategoriasDeRecompensaMissao[] | Array de categorias de recompensa para a missão |
| statusDeReivindicacaoDeRecompensa | TipoStatusDeReivindicacaoMissao | Status das reivindicações de recompensa |
| estadoDoBundleDeMissoes | TipoDeProgramaçãoDeMissão | Estado de progresso do pacote de missões |
| detalhesInternosDoPacote | TipoDeDetalheInterno | Detalhes internos do pacote |
| detalhesExternosDoPacote | TranslationType[] | Detalhes externos do pacote |
| habilitado | booleano | Se a missão está habilitada |
| versão | número | Versão da missão |
| estado | TipoDeProgramaçãoDeMissão | Estado de progresso da missão |
| idDoPacoteDeMissão | cadeia de caracteres | ID do pacote de missão |
| idDoEstadoDoPacote | cadeia de caracteres | ID do estado do pacote |
| idDaMissão | cadeia de caracteres | ID da missão |
| dataFinal | cadeia de caracteres | Data final da missão |
| dataInicial | cadeia de caracteres | Data inicial da missão |
| configuraçõesDoPacoteDeMissão | qualquer | Configurações do pacote de missão |
| idOriginalDoPacoteDeMissão | cadeia de caracteres | ID original do pacote de missão |
| idDoJogador | cadeia de caracteres | ID do jogador |
| quantidadeDeRepetições | número | Número de repetições |
| repetiçãoHabilitada | booleano | Se a repetição está habilitada |
Exemplo:
// Obter todas as missões ativas em andamento
const missions = await sdk.Missions.getPlayerMissionsInProgress();
console.log(missions);
// [
// {
// _id: "123",
// name: "Login Diário",
// description: "Faça login todos os dias por uma semana",
// status: "ativo",
// // ... outras propriedades
// },
// // ... mais missões
// ]
obterBundlesAtivosDoJogador
Recupera a lista de pacotes ativos para o jogador autenticado atual.
obterBundlesAtivosDoJogador(cacheTTLEmSegundos?: number): Promise<TipoDaListaDeBundlesDeMissoesPorIntervaloDeHoras | null>
Descrição:
Recupera os pacotes de missão ativos para o jogador autenticado, agrupados por faixa de tempo. Suporta cache no lado do cliente com TTL configurável. Por padrão, é usado um cache de 15 minutos (900s). Passe 0 para desabilitar o cache para esta chamada. Se a chamada da API falhar, o método retornará os dados em cache mais recentes, se disponíveis; caso contrário, retorna null.
Parâmetros:
- cacheTTLInSeconds (number, opcional): Tempo de vida do cache em segundos. Padrão é TTL.MINUTES_15 (900). Use 0 para desabilitar o cache para esta chamada.
Retorna:
Uma Promise que resolve em um objeto MissionBundleListByTimeFrameType ou null se nenhum pacote ativo for encontrado. O objeto possui as seguintes propriedades:
| Propriedade | Tipo | Descrição |
|---|---|---|
| diário | TipoDetalhesHistoricoDeBundlesDeMissoes[] | Array de pacotes de missão diários |
| semanal | TipoDetalhesHistoricoDeBundlesDeMissoes[] | Array de pacotes de missão semanais |
| mensal | TipoDetalhesHistoricoDeBundlesDeMissoes[] | Array de pacotes de missão mensais |
| vitalício | TipoDetalhesHistoricoDeBundlesDeMissoes[] | Array de pacotes de missão vitalícios |
| intervalo | TipoDetalhesHistoricoDeBundlesDeMissoes[] | Array de pacotes de missão baseados em intervalo |
Cada objeto MissionHistoryBundleDetailsType contém:
| Propriedade | Tipo | Descrição |
|---|---|---|
| idDoJogador | string | ID do jogador |
| _id | string | Identificador interno (opcional) |
| idOriginal | string | Identificador original |
| estado de prazo | objeto | Informações sobre o estado do prazo |
| elegibilidade | desconhecido | Informações sobre elegibilidade |
| detalhesInternos | TipoDetalheInterno | Detalhes internos do pacote |
| detalhesExternos | TipoTraducao[] | Detalhes externos do pacote |
| requireOptInDoJogador | booleano | Se o pacote requer uma ativação manual para iniciar |
| oJogadorJaFezOptIn | booleano | Se o jogador já fez opt-in |
| atribuicaoDeOrigem | string | Processo que atribuiu o pacote (por exemplo, Login, Registro, Manual) |
| configuracoes | TipoConfiguracaoPacote | Configurações para o pacote |
| status | EnumeradorStatusMissao | Status do pacote |
| estado | TipoProgressoMissao | Estado de progresso do pacote |
| isOptIn | booleano | Define se o jogador fez opt-in no pacote ou não |
| missoesPorOrdem | booleano | Se as missões devem ser concluídas em ordem |
| idsDesMissoes | TipoMissao[] | Array de missões no pacote |
| criadoEm | string | Data de criação |
| atualizadoEm | string | Última data de atualização |
| dataInicio | string | Data de início |
| dataDeFinalização | string | Data de finalização |
| imagemPequena | string | URL da imagem pequena |
| imagemGrande | string | URL da imagem grande |
| ovosDeCoelhoDaPáscoa | TipoDeOvoDePáscoa[] | Array de ovos de Páscoa no pacote |
| dataEncerradaOuCompleta | string | Data em que o pacote terminou ou foi concluído |
Exemplo:
// Cache padrão de 15 minutos
const bundlesDefault = await sdk.Missions.getPlayerBundlesActive();
// Cache personalizado de 5 minutos
const bundles5m = await sdk.Missions.getPlayerBundlesActive(TTL.MINUTES_5);
// Desabilitar cache para esta chamada
const bundlesNoCache = await sdk.Missions.getPlayerBundlesActive(0);
obterOvosDeCoelhasAtivosDoJogador
Recupera a lista de ovos de Páscoa ativos para o jogador autenticado.
obterOvosDeCoelhasAtivosDoJogador(): Promise<TipoOvoDePáscoaDaMissão[]>
Descrição:
Este método recupera uma lista de todos os ovos de Páscoa ativos para o jogador autenticado. Os ovos de Páscoa são recompensas especiais que podem ser reivindicadas quando certas condições são atendidas. Ele usa um mecanismo de cache para otimizar o desempenho - primeiro verificando se os dados estão disponíveis no cache antes de fazer uma chamada à API. Se a chamada à API falhar, ele tenta retornar dados desatualizados do cache.
Parâmetros:
Nenhum
Retorna:
Uma Promessa que é resolvida em um array de objetos TipoDeOvoDePáscoaDaMissão com as seguintes propriedades:
| Propriedade | Tipo | Descrição |
|---|---|---|
| _id | string | Identificador interno |
| ovosDeCoelhoDaPáscoa | TipoDeOvoDePáscoa[] | Array de ovos de Páscoa |
| elegibilidade | desconhecido | Informações de elegibilidade |
| detalhesExternos | TipoDeTraduçãoo[] | Detalhes externos |
| detalhesInternos | TipoDeDetalheInterno | Detalhes internos |
| idOriginal | string | Identificador original |
| idDoJogador | string | ID do jogador |
| imagemPequena | string | URL para imagem pequena |
| estado | TipoProgressoMissao | Progresso do estado |
| status | EnumStatusMissao | Status |
Exemplo:
// Obter todos os ovos da Páscoa ativos
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"
// },
// // ... outras propriedades
// }
// ],
// // ... outras propriedades
// },
// // ... mais ovos da Páscoa
// ]
obterBundlesExpiradosDoJogador
Recupera a lista de pacotes expirados para o jogador autenticado atual.
obterBundlesExpiradosDoJogador(): Promise<TipoDaListaDeBundlesDeMissoesPorIntervaloDeHoras | null>
Descrição:
Este método busca uma lista de todos os pacotes de missão expirados para o jogador autenticado, organizados por período. Ele usa um mecanismo de cache para otimizar o desempenho - primeiro verifica se os dados estão disponíveis no cache antes de fazer uma chamada à API. Se a chamada à API falhar, ele tenta retornar dados antigos do cache.
Parâmetros:
Nenhum
Retorno:
Uma Promise que é resolvida em um objeto MissionBundleListByTimeFrameType ou nulo se não forem encontrados pacotes expirados. A estrutura é a mesma que o tipo de retorno para getPlayerBundlesActive().
Exemplo:
// Obter todos os pacotes de missão expirados
const expiredBundles = await sdk.Missions.getPlayerBundlesExpired();
console.log(expiredBundles);
// {
// daily: [
// {
// _id: "123",
// originalId: "456",
// externalDetails: [{ language: "en", name: "Missões Diárias", description: "Conclua estas missões todos os dias" }],
// status: "encerrado",
// // ... outras propriedades
// }
// ],
// weekly: [...],
// montly: [...],
// lifetime: [...],
// range: [...]
// }
obterMissoesExpiradosDoJogador
Recupera a lista de missões expiradas para o jogador autenticado atual.
obterMissoesExpiradosDoJogador(): Promise<MissaoExpirada[]>
Descrição:
Este método busca uma lista de todas as missões expiradas para o jogador autenticado. Ele usa um mecanismo de cache para otimizar o desempenho - primeiro verifica se os dados estão disponíveis no cache antes de fazer uma chamada à API. Se a chamada à API falhar, ele tenta retornar dados antigos do cache.
Parâmetros:
Nenhum
Retorno:
Uma Promise que é resolvida em uma matriz de objetos MissionExpired. Isso estende o MissionType com uma propriedade adicional:
| Propriedade | Tipo | Descrição |
|---|---|---|
| estadoDoTempoDeValidade | ValidityTimeType | ValidityTimePeriodType | ValidityTimeSpecificDateType | Informações sobre o estado de validade do tempo |
Todas as outras propriedades são as mesmas que em MissionType.
Exemplo:
// Obtenha todas as missões expiradas
const expiredMissions = await sdk.Missions.getPlayerMissionsExpired();
console.log(expiredMissions);
// [
// {
// _id: "123",
// name: "Entrada diária",
// description: "Entre todos os dias por uma semana",
// status: "terminada",
// validityTimeState: {
// timeType: "período",
// periodType: "dia",
// periodValue: 7
// },
// // ... outras propriedades
// },
// // ... mais missões
// ]
obterImpulsionadoresAtivosDoJogadorNasMissoes
Recupera a lista de boosters de missões ativas disponíveis para o jogador autenticado atual.
getPlayerMissionsActiveBoosters(): Promise<ActiveBoosterEventData[]>
Descrição:
Este método recupera uma lista de todos os boosters de missão ativos para o jogador autenticado. Os boosters podem melhorar o progresso ou as recompensas da missão.
Parâmetros:
Nenhum
Retorna:
Uma Promise que é resolvida em um array de objetos ActiveBoosterEventData.
Exemplo:
// Obtenha todos os boosters de missão ativos
const boosters = await sdk.Missions.getPlayerMissionsActiveBoosters();
console.log(boosters);
// [
// {
// // Propriedades ActiveBoosterEventData
// },
// // ... mais boosters
// ]
playerClaimMissionsEasterEggs
Solicita o processo de reivindicação de um ovo de Páscoa de missão para o jogador autenticado atual.
playerClaimMissionsEasterEggs(payload: MissionsClaimEasterEggsPayload): Promise<SimpleResponse<EasterEggClaimResponse>>
Descrição:
Este método inicia o processo de reivindicação de um ovo de Páscoa de missão. Ovos de Páscoa são recompensas especiais que podem ser reivindicadas quando certas condições são atendidas.
Parâmetros:
payload - Um objeto do tipo MissionsClaimEasterEggsPayload com as seguintes propriedades:
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| easterEggId | string | Sim | ID do ovo de Páscoa a ser reivindicado |
| bundleId | string | Sim | ID do pacote contendo o ovo de Páscoa |
Retorna:
Uma Promise que é resolvida em um objeto SimpleResponse<EasterEggClaimResponse> com a seguinte estrutura:
| Propriedade | Tipo | Descrição |
|---|---|---|
| ok | boolean | Se a operação foi bem-sucedida |
| data | EasterEggClaimResponse | null | Dados de resposta se bem-sucedido, caso contrário nulo |
| erro | object | undefined | Informações de erro se a operação falhar |
O objeto EasterEggClaimResponse contém:
| Propriedade | Tipo | Descrição |
|---|---|---|
| easterEgg | EasterEggsMissionBundle | null | Informações sobre o ovo da páscoa, se disponível, null se não houver recompensas a serem reivindicadas |
| message | string | Mensagem de resposta |
| statusCode | number | Código de status HTTP |
Exemplo:
// Reivindicar um ovo da páscoa
const claimResponse = await sdk.Missions.playerClaimMissionsEasterEggs({
easterEggId: "egg123",
bundleId: "bundle456"
});
if (claimResponse.ok) {
console.log("Ovo da páscoa reivindicado com sucesso:", claimResponse.data);
} else {
console.error("Falha ao reivindicar o ovo da páscoa:", claimResponse.error);
}
playerRequestOptInMissionBundle
Permite que o jogador autenticado atualmente opte por um pacote de missões quando a adesão manual for necessária e o jogador atender às condições necessárias.
playerRequestOptInMissionBundle(bundleId: string): Promise<SimpleResponse<MissionHistoryBundleDetailsType>>
Descrição: Envia uma solicitação de adesão para o pacote de missões especificado. Em caso de sucesso, retorna os detalhes do pacote atualizado para o jogador. Alguns pacotes podem exigir uma compra de token; nesses casos, o jogador deve ter moeda virtual suficiente para completar a adesão.
Parâmetros:
bundleId - O identificador do pacote de missões no qual o jogador deseja aderir.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| bundleId | string | Sim | Identificador do pacote de missões para adesão. |
Retorna:
Uma Promise que é resolvida em um objeto SimpleResponse<MissionHistoryBundleDetailsType> com a seguinte estrutura:
| Propriedade | Tipo | Descrição |
|---|---|---|
| ok | boolean | Se a operação foi bem-sucedida. |
| data | MissionHistoryBundleDetailsType | null | Detalhes do pacote em caso de sucesso, null caso contrário. |
| erro | ErrorResponse | undefined | Informações de erro se a operação falhar. |
Tratamento de Erros:
- Fundos insuficientes para compra de token:
error.details.faultCode === 402(Pagamento Necessário) - Outros possíveis erros: pacote não encontrado, já iniciado/finalizado, já optou por, não elegível
Exemplo de tratamento de fundos insuficientes:
const result = await sdk.Missions.playerRequestOptInMissionBundle('bundle_123');
if (!result.ok) {
if (result.error?.details.faultCode === 402) {
alert('Você precisa de mais moedas para entrar neste pacote!');
} else {
alert(`Erro: ${result.error?.message}`);
}
} else {
console.log('Pacote Acessado:', result.data?.internalDetails.name);
}
Efeitos Colaterais: Na adesão bem-sucedida, o SDK limpa os caches relacionados a missões do jogador atual para que as leituras subsequentes reflitam o estado atualizado:
${CACHE_KEYS.BUNDLES_ACTIVE_CACHE_KEY_PREFIX}.${playerId}${CACHE_KEYS.MISSIONS_IN_PROGRESS_CACHE_KEY_PREFIX}.${playerId}
Exemplo:
// Aderir a um pacote de missões
const optIn = await sdk.Missions.playerRequestOptInMissionBundle('bundle_123');
if (optIn.ok) {
console.log('Adesão bem-sucedida. Pacote:', optIn.data);
} else {
console.error('Falha na adesão:', optIn.error);
}
playerRequestOptOutMissionBundle
Permite que o jogador autenticado atual opte por sair (ou rejeitar) de um pacote de missões, desativando sua participação. Se o jogador já tiver optado por entrar, o estado criado será definido como finalizado.
playerRequestOptOutMissionBundle(bundleId: string): Promise<SimpleResponse<null>>
Descrição:
Inicia uma solicitação de saída para o pacote de missões especificado. No sucesso, nenhuma carga útil é retornada (dados são nulos). No fracasso, as informações de erro são fornecidas.
Parâmetros:
bundleId - O identificador do pacote de missões do qual o jogador deseja sair.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| bundleId | string | Sim | Identificador do pacote de missões para sair. |
Retorna:
Uma Promessa que é resolvida em um objeto SimpleResponse<null> com a seguinte estrutura:
| Propriedade | Tipo | Descrição |
|---|---|---|
| ok | boolean | Se a operação foi bem-sucedida. |
| data | null | Sempre nulo em caso de sucesso. |
| erro | object | undefined | Informações de erro se a operação falhar. |
Exemplo:
// Sair de um pacote de missões
const optOut = await sdk.Missions.playerRequestOptOutMissionBundle('bundle_123');
if (optOut.ok) {
console.log('Saída bem-sucedida.');
} else {
console.error('Falha na saída:', optOut.error);
}
getPlayerBundlesActivePaginated
Recupera uma lista paginada de pacotes de missões ativos para o jogador atual.
getPlayerBundlesActivePaginated(
page: number,
limit?: number,
sortBy?: PlayerBundlesSortOptions,
order?: SortDirection,
ignoreBundlesWithRewardsTypes?: RewardTypeEnum[]
): Promise<PaginationResponse<PlayerBundlesActive[]>>
Descrição:
Este método busca os pacotes que estão atualmente disponíveis ou em andamento. Ele retorna uma resposta paginada e usa um mecanismo de cache (TTL de 30 minutos) se a chamada da API falhar.
Parâmetros:
| Nome | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
| page | number | Sim | - | O número da página a ser recuperada (índice baseado em 1). |
| limit | number | Não | 25 | O número de itens a serem retornados por página. |
| sortBy | PlayerBundlesSortOptions | Não | UPDATED_AT | O campo usado para ordenar os resultados. |
| order | SortDirection | Não | DESC | A direção da ordenação (asc ou desc). |
| ignoreBundlesWithRewardsTypes | RewardTypeEnum[] | Não | [] | Uma matriz opcional de tipos de recompensa a serem excluídos dos resultados. |
Retorna:
Uma Promise que é resolvida em uma PaginationResponse contendo uma matriz de objetos PlayerBundlesActive.
Exemplo:
// Uso básico com parâmetros padrão
const result = await sdk.Missions.getPlayerBundlesActivePaginated(1);
console.log(`Mostrando ${result.docs.length} de ${result.totalDocs} pacotes.`)
// Uso avançado com ordenação personalizada, limite e filtragem de tipos de recompensa
const result = await sdk.Missions.getPlayerBundlesActivePaginated(
2,
10,
PlayerBundlesSortOptions.START_DATE,
SortDirection.ASC,
[RewardTypeEnum.CASH, RewardTypeEnum.TOKEN]
);
getPlayerBundlesEligiblePaginated
Recupera uma lista paginada de pacotes de missão para os quais o jogador é elegível, mas não necessariamente começou.
getPlayerBundlesEligiblePaginated(
page: number,
limit?: number,
sortBy?: PlayerBundlesEligibleSortOptions,
order?: SortDirection,
ignoreBundlesWithRewardsTypes?: RewardTypeEnum[]
): Promise<PaginationResponse<PlayerBundlesEligible[]>>
Descrição:
Este método busca pacotes para os quais o jogador se qualifica com base em segmentação ou outros critérios. Ele retorna uma resposta paginada e usa um mecanismo de cache (TTL de 30 minutos) se a chamada da API falhar.
Parâmetros:
| Nome | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
| page | número | Sim | - | O número da página a ser recuperada (índice de base 1). |
| limite | número | Não | 25 | Número máximo de itens por página. |
| orderBy | PlayerBundlesEligibleSortOptions | Não | UPDATED_AT | A propriedade usada para ordenar a lista. |
| ordem | SortDirection | Não | DESC | A direção da ordenação (asc ou desc). |
| ignoreBundlesWithRewardsTypes | RewardTypeEnum[] | Não | [] | Uma matriz opcional de tipos de recompensa a excluir dos resultados. |
Retorna:
Uma Promise que é resolvida com um PaginationResponse contendo os itens PlayerBundlesEligible.
Exemplo:
// Buscar a primeira página de pacotes elegíveis
const eligible = await sdk.Missions.getPlayerBundlesEligiblePaginated(1);
if (eligible.docs.length > 0) {
console.log(`O jogador é elegível para ${eligible.totalDocs} pacotes.`);
}
// Buscar com ordenação específica e filtro de tipo de recompensa
const result = await sdk.Missions.getPlayerBundlesEligiblePaginated(
1,
10,
PlayerBundlesEligibleSortOptions.UPDATED_AT,
SortDirection.ASC,
[RewardTypeEnum.CASH]
);
getPlayerBundlesHistoryPaginated
Recupera um histórico paginado de pacotes de missões expirados ou concluídos para o jogador.
getPlayerBundlesHistoryPaginated(
page: number,
limit?: number,
sortBy?: PlayerBundlesHistorySortOptions,
order?: SortDirection,
dateRange?: {
startDate: Date;
endDate: Date;
},
ignoreBundlesWithRewardsTypes?: RewardTypeEnum[]
): Promise<PaginationResponse<PlayerBundlesExpired[]>>
Descrição:
Este método busca a atividade de missão passada do jogador. Ele suporta filtragem por um intervalo de datas específico. Observação: Todas as datas devem estar em UTC.
Parâmetros:
| Nome | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
| página | número | Sim | - | O número da página a ser recuperado (índice de base 1). |
| limite | número | Não | 25 | O número de itens por página. |
| ordenarPor | PlayerBundlesHistorySortOptions | Não | UPDATED_AT | O campo usado para ordenar o histórico. |
| ordem | SortDirection | Não | DESC | A direção da ordenação (asc ou desc). |
| intervaloData | objeto | Não | - | Filtro opcional para restringir os resultados entre duas datas. |
| intervaloData.dataInicial | Data | Sim (se intervaloData fornecido) | - | O limite inicial para a pesquisa de histórico (inclusive, UTC). |
| intervaloData.dataFinal | Data | Sim (se intervaloData fornecido) | - | O limite final para a pesquisa de histórico (inclusive, UTC). |
| ignorarEmpacotadoresComTiposDeRecompensa | RewardTypeEnum[] | Não | [] | Uma matriz opcional de tipos de recompensa a serem excluídos dos resultados. |
Retorna:
Uma Promise que resolve para um PaginationResponse contendo objetos PlayerBundlesExpired.
Exemplo:
// Uso básico: obter os pacotes expirados mais recentes
const history = await sdk.Missions.getPlayerBundlesHistoryPaginated(1);
// Filtrando por um intervalo de datas UTC específico e tipo de recompensa
const filteredHistory = await sdk.Missions.getPlayerBundlesHistoryPaginated(
1,
10,
PlayerBundlesHistorySortOptions.UPDATED_AT,
SortDirection.DESC,
{
// Usando datas UTC explícitas
dataInicial: new Date('2023-01-01T00:00:00Z'),
dataFinal: new Date('2023-12-31T23:59:59Z')
},
[RewardTypeEnum.CASH]
);
console.log(`Encontrados ${filteredHistory.totalDocs} pacotes em 2023.`);
Interfaces Relacionadas
MissionType
interface Tipo de Missão {
_id: string;
nome: string;
descrição: string;
tags: Tipo de Etiqueta Simples[];
objetivos: Tipos de Objetivos de Missão[];
tempoDeValidade: Tipo de Tempo de Validade | Tipo de Período de Tempo de Validade | Tipo de Data Específica de Validade;
status: Enum de Status de Missão;
categorias de recompensa: Tipo de Categoria de Recompensa de Missão[];
status de reivindicação de recompensa?: Tipo de Status de Reivindicação de Missão;
estado do pacote de missão?: Tipo de Progresso de Missão;
detalhes internos do pacote: Tipo de Detalhe Interno;
detalhes externos do pacote: Tipo de Tradução[];
ativado: boolean;
versão: number;
estado?: Tipo de Progresso de Missão;
id do pacote de missão?: string;
id do estado do pacote?: string;
id da missão?: string;
data de término?: string;
data de início?: string;
configurações do pacote de missão: any;
id original do pacote de missão: string;
id do jogador: string;
contagem de repetição?: number;
repetição ativada: boolean;
}
Tipo de Progresso de Missão
type Tipo de Progresso de Missão = {
total: number;
concluído: number;
progresso: number;
};
Enum de Status de Missão
enum Enum de Status de Missão {
ATIVO = 'ativo',
INATIVO = 'inativo',
PENDENTE = 'pendente',
PAUSADO = 'pausado',
CONCLUÍDO = 'concluído',
ENCERRADO = 'encerrado',
ABORTADO = 'abortado',
}
Missão Expirada
type Missão Expirada = Tipo de Missão & {
estado de tempo de validade: Tipo de Tempo de Validade | Tipo de Período de Tempo de Validade | Tipo de Data Específica de Validade;
};
Tipo de Lista de Pacotes de Missão por Período de Tempo
type Tipo de Lista de Pacotes de Missão por Período de Tempo = {
diário: Tipo de Detalhes do Histórico do Pacote de Missão[];
mensal: Tipo de Detalhes do Histórico do Pacote de Missão[];
semanal: Tipo de Detalhes do Histórico do Pacote de Missão[];
vitalício: Tipo de Detalhes do Histórico do Pacote de Missão[];
intervalo: Tipo de Detalhes do Histórico do Pacote de Missão[];
};
Tipo de Detalhes do Histórico do Pacote de Missão
type Tipo de Detalhes do Histórico do Pacote de Missão = {
id do jogador: string;
_id?: string;
id original: string;
estado do período de tempo?: {
tipo de período de tempo: Enum de Período de Tempo;
};
elegibilidade: unknown;
detalhes internos: Tipo de Detalhe Interno;
detalhes externos: Tipo de Tradução[];
/**
* Determine se o Pacote de Missão requer opt-in do jogador
* para iniciar o recurso.
*
* Se `true `, o jogador precisa fazer opt-in manualmente no pacote antes
* de iniciar o recurso.
* Se `false `, o jogador pode iniciar o recurso sem opt-in.
*/
o jogador requer opt-in: boolean;
/**
* Determine se o jogador realizou a ação de opt-in.
*
* Se `true` o jogador já aceitou o recurso, então pode contribuir
* para as regras do objetivo da missão
*/
o jogador fez opt-in: boolean;
/**
* Indica qual processo atribuiu a missão. Por exemplo
* - Login
* - Registro
* - Revalidar elegibilidade por alterações de segmentação
* - Atribuição manual
* - Data de Início do Pacote
*/
atribuição de origem: string;
configurações?: Tipo de Configurações de Pacote;
status?: Enum de Status de Missão;
estado?: Tipo de Progresso de Missão;
missões em ordem?: boolean;
ids das missões?: Tipo de Missão[];
criado em?: string;
atualizado em?: string;
data de início?: string;
data de término?: string;
imagem pequena?: string;
imagem grande?: string;
ovos de páscoa?: Tipo de Ovos de Páscoa[];
data de encerramento ou conclusão?: string;
é opt-in?: boolean;
};
Tipo de Ovo de Páscoa do Pacote de Missão
type Tipo de Ovo de Páscoa do Pacote de Missão = Pick<
Tipo de Detalhes do Histórico do Pacote de Missão,
| '_id'
| 'ovos de páscoa'
| 'elegibilidade'
| 'detalhes externos'
| 'detalhes internos'
| 'id original'
| 'id do jogador'
| 'imagem pequena'
| 'estado'
| 'status'
>;
Carga Útil de Reivindicação de Ovos de Páscoa de Missões
type Carga Útil de Reivindicação de Ovos de Páscoa de Missões = {
id do ovo de páscoa: string;
id do pacote: string;
};
Resposta de Reivindicação de Ovo de Páscoa
interface Resposta de Reivindicação de Ovo de Páscoa {
/**
* Retorna nulo se o ovo de páscoa não tiver recompensas para reivindicar
*/
ovo de páscoa: Pacote de Missão de Ovo de Páscoa | null;
mensagem: string;
código de status: number;
}
Pacote de Missão de Ovo de Páscoa
interface Pacote de Missão de Ovo de Páscoa {
condição: Condição de Pacote de Missão de Ovo de Páscoa;
categorias: Categorias de Recompensa de Ovo de Páscoa[];
}
Condição de Pacote de Missão de Ovo de Páscoa
interface Condição de Pacote de Missão de Ovo de Páscoa {
id do ovo de páscoa: string;
em repetição: number;
quantidade de missões: number;
código da área secreta: string;
status: Status de Ovos de Páscoa;
animação: string;
}
Status de Ovos de Páscoa
enum Status de Ovos de Páscoa {
Pendente = 'pendente',
Reivindicável = 'reivindicável',
Reivindicado = 'reivindicado',
}
Tipos de Objetivos de Missão
type Tipos de Objetivos de Missão =
| Tipo Básico de Objetivo de Missão
| Tipo de Objetivo de Missão de Transação Concluída
| Tipo de Objetivo de Missão de Aposta e Ganho
| Tipo de Objetivo de Missão de Indicação de Amigo
| Tipo de Objetivo de Missão de Opt-In e Verificação de Conta
| Tipo de Objetivo de Missão de Avanço de Nível;
Enum de Tipo de Evento de Missão
enum MissionEventTypeEnum {
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 PaginationResponse<T> {
docs: T;
hasNextPage: boolean;
hasPrevPage: boolean;
limit: number;
nextPage: number;
page: number;
pagingCounter: number;
prevPage: number | null;
totalDocs: number;
totalPages: number;
}
Pacotes Ativos do Jogador
type PlayerBundlesActive = Omit<MissionHistoryBundleDetailsType, 'internalDetails'>;
Pacotes Elegíveis do Jogador
type PlayerBundlesEligible = Omit<
MissionHistoryBundleDetailsType,
'internalDetails' | 'startDate' | 'endDate' | 'state'
>;
Pacotes Expirados do Jogador
type PlayerBundlesExpired = Omit<MissionHistoryBundleDetailsType, 'internalDetails'> & {};
Opções de Ordenação de Pacotes do Jogador
enum PlayerBundlesSortOptions {
CREATED_AT = 'createdAt',
UPDATED_AT = 'updatedAt',
START_DATE = 'startDate',
END_DATE = 'endDate',
}
Opções de Ordenação de Pacotes Elegíveis do Jogador
enum PlayerBundlesEligibleSortOptions {
CREATED_AT = 'createdAt',
UPDATED_AT = 'updatedAt',
}
Opções de Ordenação do Histórico de Pacotes do Jogador
enum PlayerBundlesHistorySortOptions {
CREATED_AT = 'createdAt',
UPDATED_AT = 'updatedAt',
}
Direção de Ordenação
enum SortDirection {
ASC = 'asc',
DESC = 'desc',
}