import { ArchbaseRemoteApiClient } from '@archbase/data'; import { ArchbaseSecurityEventPage, ArchbaseSecurityEventType, ArchbaseAccessDecision, ArchbaseAccessOverview, ArchbaseOverviewItemPage, ArchbaseOverviewMetric, ArchbaseGroupReport, ArchbaseReachEntry, ArchbaseTreeBranch, ArchbaseTreeNodePage, ArchbaseEffectiveAccessReport, ArchbaseSimulationRequest } from './SecurityDiagnosticsDomain'; /** * Leitura do diagnóstico de acesso — `/api/v1/security/diagnostics/*`. * *

Por que não estende `ArchbaseRemoteApiService`. A classe base modela um CRUD de * entidade: exige `getId`, `isNewRecord` e `transform`. Aqui não há entidade — há três * perguntas (o retrato do tenant, o que uma pessoa pode, e se ela pode uma coisa). Implementar * aqueles métodos com retorno inventado só para herdar seria mentir sobre o que este serviço é. * O que importava da base — o cliente HTTP injetado e os cabeçalhos de tenant — está preservado. * *

Todos os endpoints são somente leitura e exigem, no servidor, * `archbase.security.diagnostics.enabled=true` e usuário administrador. */ export declare class ArchbaseSecurityDiagnosticsService { protected client: ArchbaseRemoteApiClient; constructor(client: ArchbaseRemoteApiClient); protected configureHeaders(): Record; protected getEndpoint(): string; /** * Base própria: a trilha vive fora do diagnóstico porque tem chave própria no backend * ({@code archbase.security.audit.enabled}) e some inteira quando ela está desligada. */ protected getAuditEndpoint(): string; /** Retrato do tenant: contagens do catálogo e o estado das proteções configuráveis. */ getOverview(): Promise; /** * Os itens por trás de um número do panorama. * * Um card diz "29 ações inativas"; sozinho, isso não permite agir. Aqui vêm quais são, com o * motivo de cada uma estar na lista. */ getOverviewItems(metric: ArchbaseOverviewMetric, page?: number, size?: number): Promise; /** * Um ramo da árvore, buscado ao abrir. * * Não existe "carregar a árvore": um tenant real tem centenas de ações e recursos, e a carga * única trava o navegador. O filtro também vai para o servidor — buscar no cliente exigiria ter * carregado tudo antes. */ browse(branch: ArchbaseTreeBranch, options?: { parentId?: string; q?: string; page?: number; size?: number; }): Promise; /** Quem está no grupo e o que cada pessoa acumula de todas as origens. */ getGroup(groupId: string): Promise; /** Idem para perfil — a via mais ampla, que vale para todo mundo que o tem. */ getProfile(profileId: string): Promise; /** * Quem alcança uma capacidade — a consulta reversa. * * Inclui administrador, com a via marcada: ele alcança sem concessão nenhuma, e omiti-lo daria * a resposta errada para a pergunta "quem pode". */ getReach(actionId: string): Promise; /** O que a pessoa pode, com a origem de cada concessão. */ getEffectiveAccessByUserId(userId: string): Promise; /** Idem, buscando a pessoa pelo e-mail. */ getEffectiveAccessByEmail(email: string): Promise; /** * "Esta pessoa consegue fazer isto?" * *

A resposta traz a cadeia dos portões avaliados — é ela, e não o booleano, que diz o * que precisa mudar para o acesso passar a existir. */ simulate(request: ArchbaseSimulationRequest): Promise; /** * Os acontecimentos de segurança, do mais recente para o mais antigo. * *

Sem período informado o servidor assume os últimos trinta dias — a primeira consulta de * quem abre a tela não deve varrer a tabela inteira. * *

Devolve 403 para quem não é administrador, e 404 quando a trilha está desligada: os dois * casos precisam ser distinguidos na tela, porque significam coisas diferentes. */ getAuditEvents(options?: { usuario?: string; tipo?: ArchbaseSecurityEventType; inicio?: string; fim?: string; page?: number; size?: number; }): Promise; }