Pular para o conteúdo principal

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:

PropriedadeTipoDescrição
_idstringIdentificador interno
nomestringNome de exibição da missão
descriçãostringDescrição da missão
etiquetasTipoEtiquetaSimples[]Array de tags associadas à missão
objetivosTiposMissaoObjetivo[]Array de objetivos de missão
tempoDeValidadeValidityTimeType | ValidityTimePeriodType | ValidityTimeSpecificDateTypeRestrições de validade de tempo para a missão
statusEnumStatusMissaoStatus atual da missão
categoriasDeRecompensaTipoCategoriasDeRecompensaMissao[]Array de categorias de recompensa para a missão
statusDeReivindicacaoDeRecompensaTipoStatusDeReivindicacaoMissaoStatus das reivindicações de recompensa
estadoDoBundleDeMissoesTipoDeProgramaçãoDeMissãoEstado de progresso do pacote de missões
detalhesInternosDoPacoteTipoDeDetalheInternoDetalhes internos do pacote
detalhesExternosDoPacoteTranslationType[]Detalhes externos do pacote
habilitadobooleanoSe a missão está habilitada
versãonúmeroVersão da missão
estadoTipoDeProgramaçãoDeMissãoEstado de progresso da missão
idDoPacoteDeMissãocadeia de caracteresID do pacote de missão
idDoEstadoDoPacotecadeia de caracteresID do estado do pacote
idDaMissãocadeia de caracteresID da missão
dataFinalcadeia de caracteresData final da missão
dataInicialcadeia de caracteresData inicial da missão
configuraçõesDoPacoteDeMissãoqualquerConfigurações do pacote de missão
idOriginalDoPacoteDeMissãocadeia de caracteresID original do pacote de missão
idDoJogadorcadeia de caracteresID do jogador
quantidadeDeRepetiçõesnúmeroNúmero de repetições
repetiçãoHabilitadabooleanoSe 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:

PropriedadeTipoDescrição
diárioTipoDetalhesHistoricoDeBundlesDeMissoes[]Array de pacotes de missão diários
semanalTipoDetalhesHistoricoDeBundlesDeMissoes[]Array de pacotes de missão semanais
mensalTipoDetalhesHistoricoDeBundlesDeMissoes[]Array de pacotes de missão mensais
vitalícioTipoDetalhesHistoricoDeBundlesDeMissoes[]Array de pacotes de missão vitalícios
intervaloTipoDetalhesHistoricoDeBundlesDeMissoes[]Array de pacotes de missão baseados em intervalo

Cada objeto MissionHistoryBundleDetailsType contém:

PropriedadeTipoDescrição
idDoJogadorstringID do jogador
_idstringIdentificador interno (opcional)
idOriginalstringIdentificador original
estado de prazoobjetoInformações sobre o estado do prazo
elegibilidadedesconhecidoInformações sobre elegibilidade
detalhesInternosTipoDetalheInternoDetalhes internos do pacote
detalhesExternosTipoTraducao[]Detalhes externos do pacote
requireOptInDoJogadorbooleanoSe o pacote requer uma ativação manual para iniciar
oJogadorJaFezOptInbooleanoSe o jogador já fez opt-in
atribuicaoDeOrigemstringProcesso que atribuiu o pacote (por exemplo, Login, Registro, Manual)
configuracoesTipoConfiguracaoPacoteConfigurações para o pacote
statusEnumeradorStatusMissaoStatus do pacote
estadoTipoProgressoMissaoEstado de progresso do pacote
isOptInbooleanoDefine se o jogador fez opt-in no pacote ou não
missoesPorOrdembooleanoSe as missões devem ser concluídas em ordem
idsDesMissoesTipoMissao[]Array de missões no pacote
criadoEmstringData de criação
atualizadoEmstringÚltima data de atualização
dataIniciostringData de início
dataDeFinalizaçãostringData de finalização
imagemPequenastringURL da imagem pequena
imagemGrandestringURL da imagem grande
ovosDeCoelhoDaPáscoaTipoDeOvoDePáscoa[]Array de ovos de Páscoa no pacote
dataEncerradaOuCompletastringData 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:

PropriedadeTipoDescrição
_idstringIdentificador interno
ovosDeCoelhoDaPáscoaTipoDeOvoDePáscoa[]Array de ovos de Páscoa
elegibilidadedesconhecidoInformações de elegibilidade
detalhesExternosTipoDeTraduçãoo[]Detalhes externos
detalhesInternosTipoDeDetalheInternoDetalhes internos
idOriginalstringIdentificador original
idDoJogadorstringID do jogador
imagemPequenastringURL para imagem pequena
estadoTipoProgressoMissaoProgresso do estado
statusEnumStatusMissaoStatus

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:

PropriedadeTipoDescrição
estadoDoTempoDeValidadeValidityTimeType | ValidityTimePeriodType | ValidityTimeSpecificDateTypeInformaçõ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:

PropriedadeTipoObrigatórioDescrição
easterEggIdstringSimID do ovo de Páscoa a ser reivindicado
bundleIdstringSimID do pacote contendo o ovo de Páscoa

Retorna:
Uma Promise que é resolvida em um objeto SimpleResponse<EasterEggClaimResponse> com a seguinte estrutura:

PropriedadeTipoDescrição
okbooleanSe a operação foi bem-sucedida
dataEasterEggClaimResponse | nullDados de resposta se bem-sucedido, caso contrário nulo
erroobject | undefinedInformações de erro se a operação falhar

O objeto EasterEggClaimResponse contém:

PropriedadeTipoDescrição
easterEggEasterEggsMissionBundle | nullInformações sobre o ovo da páscoa, se disponível, null se não houver recompensas a serem reivindicadas
messagestringMensagem de resposta
statusCodenumberCó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.

NomeTipoObrigatórioDescrição
bundleIdstringSimIdentificador do pacote de missões para adesão.

Retorna: Uma Promise que é resolvida em um objeto SimpleResponse<MissionHistoryBundleDetailsType> com a seguinte estrutura:

PropriedadeTipoDescrição
okbooleanSe a operação foi bem-sucedida.
dataMissionHistoryBundleDetailsType | nullDetalhes do pacote em caso de sucesso, null caso contrário.
erroErrorResponse | undefinedInformaçõ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.

NomeTipoObrigatórioDescrição
bundleIdstringSimIdentificador do pacote de missões para sair.

Retorna:
Uma Promessa que é resolvida em um objeto SimpleResponse<null> com a seguinte estrutura:

PropriedadeTipoDescrição
okbooleanSe a operação foi bem-sucedida.
datanullSempre nulo em caso de sucesso.
erroobject | undefinedInformaçõ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:

NomeTipoObrigatórioPadrãoDescrição
pagenumberSim-O número da página a ser recuperada (índice baseado em 1).
limitnumberNão25O número de itens a serem retornados por página.
sortByPlayerBundlesSortOptionsNãoUPDATED_ATO campo usado para ordenar os resultados.
orderSortDirectionNãoDESCA direção da ordenação (asc ou desc).
ignoreBundlesWithRewardsTypesRewardTypeEnum[]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:

NomeTipoObrigatórioPadrãoDescrição
pagenúmeroSim-O número da página a ser recuperada (índice de base 1).
limitenúmeroNão25Número máximo de itens por página.
orderByPlayerBundlesEligibleSortOptionsNãoUPDATED_ATA propriedade usada para ordenar a lista.
ordemSortDirectionNãoDESCA direção da ordenação (asc ou desc).
ignoreBundlesWithRewardsTypesRewardTypeEnum[]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:

NomeTipoObrigatórioPadrãoDescrição
páginanúmeroSim-O número da página a ser recuperado (índice de base 1).
limitenúmeroNão25O número de itens por página.
ordenarPorPlayerBundlesHistorySortOptionsNãoUPDATED_ATO campo usado para ordenar o histórico.
ordemSortDirectionNãoDESCA direção da ordenação (asc ou desc).
intervaloDataobjetoNão-Filtro opcional para restringir os resultados entre duas datas.
intervaloData.dataInicialDataSim (se intervaloData fornecido)-O limite inicial para a pesquisa de histórico (inclusive, UTC).
intervaloData.dataFinalDataSim (se intervaloData fornecido)-O limite final para a pesquisa de histórico (inclusive, UTC).
ignorarEmpacotadoresComTiposDeRecompensaRewardTypeEnum[]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',
}