## API Report File for "@digitalpersona/services"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

import { Base64UrlString } from '@digitalpersona/core';
import { ClaimNames } from '@digitalpersona/core';
import { Credential } from '@digitalpersona/core';
import { CredentialId } from '@digitalpersona/core';
import { Ticket } from '@digitalpersona/core';
import { User } from '@digitalpersona/core';

// @public
export type ADAttributeName = string & {
    brand?: "dp.services.ADAttributeName";
};

// Warning: (ae-forgotten-export) The symbol "Service" needs to be exported by the entry point index.d.ts
// 
// @public
export class AdminService extends Service implements IAdminService {
    constructor(endpointUrl: string);
    // (undocumented)
    AdminDeleteUserCredentials(ticket: Ticket, user: User, credentials: Credential[]): Promise<void>;
    // (undocumented)
    ExecuteSearch(ticket: Ticket, query: SearchQuery): Promise<Attribute[][]>;
    // (undocumented)
    GetLicenseInfo(type: LicenseType): Promise<LicenseInfo>;
    // (undocumented)
    GetServerSettings(ticket: Ticket, user: User, settings: string[]): Promise<Attribute[]>;
    // (undocumented)
    GetUserInfo(ticket: Ticket, user: User): Promise<UserInfo>;
    // (undocumented)
    GetUserRecoveryPassword(ticket: Ticket, user: User, encryptedPwd: string): Promise<string>;
    // (undocumented)
    PSKCImport(ticket: Ticket, PSKCData: string, PSKCFileName?: string | null, password?: string | null, sharedKey?: string | null): Promise<PSKCOutput[]>;
    // (undocumented)
    SetServerSettings(ticket: Ticket, type: ServerSettingType, settings: Attribute[]): Promise<void>;
    // (undocumented)
    SetUserAccountControl(ticket: Ticket, user: User, control: UACFlags): Promise<void>;
    // (undocumented)
    UnlockUserAccount(ticket: Ticket, user: User): Promise<void>;
}

// @public
export interface Attribute {
    // (undocumented)
    data: VarData | null;
    // (undocumented)
    name: string;
}

// @public
export enum AttributeAction {
    Append = 3,
    Clear = 1,
    Delete = 4,
    Update = 2
}

// @public
export type AttributeName = ADAttributeName | LDSAttributeName;

// @public
export class AuthenticationData {
    readonly data: string;
    readonly handle: AuthenticationHandle;
}

// @public
export type AuthenticationHandle = number & {
    brand?: "dp.services.AuthenticationHandle";
};

// @public
export enum AuthenticationStatus {
    Completed = 2,
    Continue = 1,
    Error = 0
}

// @public
export class AuthService extends Service implements IAuthService {
    constructor(endpointUrl: string);
    // (undocumented)
    Authenticate(identity: User | Ticket, credential: Credential): Promise<Ticket>;
    // (undocumented)
    ContinueAuthentication(authId: AuthenticationHandle, authData: string): Promise<ExtendedAuthResult>;
    // (undocumented)
    CreateAuthentication(identity: User | Ticket | null, credentialId: CredentialId): Promise<AuthenticationHandle>;
    // (undocumented)
    CustomAction(actionId: number, ticket?: Ticket, user?: User, credential?: Credential): Promise<Base64UrlString>;
    // (undocumented)
    DestroyAuthentication(authId: AuthenticationHandle): Promise<void>;
    // (undocumented)
    GetEnrollmentData(user: User, credentialId: CredentialId): Promise<Base64UrlString>;
    // (undocumented)
    GetUserCredentials(user: User): Promise<CredentialId[]>;
    // (undocumented)
    Identify(credential: Credential): Promise<Ticket>;
}

// @public
export class ClaimRequest {
    constructor(
    name: ClaimNames, 
    db: DatabaseType, 
    attr: AttributeName);
    readonly attr: AttributeName;
    readonly db: DatabaseType;
    readonly name: ClaimNames;
}

// @public
export class ClaimsService extends Service implements IClaimsService {
    constructor(endpointUrl: string);
    // (undocumented)
    GetClaims(ticket: Ticket, request: ClaimRequest[]): Promise<Ticket>;
    // (undocumented)
    GetConfiguredClaims(ticket: Ticket): Promise<Ticket>;
}

// @public
export class ContextualInfo {
    // (undocumented)
    altusInstalled?: boolean;
    // (undocumented)
    behavior?: boolean;
    // (undocumented)
    computer?: string;
    // (undocumented)
    device?: boolean;
    // (undocumented)
    domain?: string;
    // (undocumented)
    insideFirewall?: boolean;
    // (undocumented)
    ip?: boolean;
    // (undocumented)
    remoteSession?: boolean;
    // (undocumented)
    user?: string;
}

// @public
export enum DatabaseType {
    AD = "AD",
    LDS = "ADLDS"
}

// @public
export class EnrollService extends Service implements IEnrollService {
    constructor(endpointUrl: string);
    // (undocumented)
    CreateUser(secOfficer: Ticket, user: User, password: string): Promise<void>;
    // (undocumented)
    CustomAction(ticket: Ticket, user: User, credential: Credential, actionId: number): Promise<Base64UrlString>;
    // (undocumented)
    DeleteAltusUserCredentials(secOfficer: Ticket, user: User, credential: Credential): Promise<void>;
    // (undocumented)
    DeleteUser(secOfficer: Ticket, user: User): Promise<void>;
    // (undocumented)
    DeleteUserCredentials(secOfficer: Ticket, owner: Ticket, credential: Credential): Promise<void>;
    // (undocumented)
    EnrollAltusUserCredentials(secOfficer: Ticket, user: User, credential: Credential): Promise<void>;
    // (undocumented)
    EnrollUserCredentials(secOfficer: Ticket, owner: Ticket, credential: Credential): Promise<void>;
    // (undocumented)
    GetEnrollmentData(user: User, credentialId: CredentialId): Promise<Base64UrlString>;
    // (undocumented)
    GetUserAttribute(ticket: Ticket, user: User, attributeName: string): Promise<Attribute>;
    // (undocumented)
    GetUserCredentials(user: User): Promise<CredentialId[]>;
    // (undocumented)
    IsEnrollmentAllowed(secOfficer: Ticket, user: User, credentialId: CredentialId): Promise<void>;
    // (undocumented)
    PutUserAttribute(ticket: Ticket, user: User, attribute: Attribute, action: AttributeAction): Promise<void>;
    // (undocumented)
    UnlockUser(user: User, credential: Credential): Promise<void>;
}

// @public
export interface ExtendedAuthResult extends Ticket {
    readonly authData?: string;
    readonly status: AuthenticationStatus;
}

// @public
export interface IAdminService {
    AdminDeleteUserCredentials(ticket: Ticket, user: User, credentials: Credential[]): Promise<void>;
    ExecuteSearch(ticket: Ticket, query: SearchQuery): Promise<Attribute[][]>;
    GetLicenseInfo(licenseType: LicenseType): Promise<LicenseInfo>;
    GetServerSettings(ticket: Ticket, user: User, settings: string[]): Promise<Attribute[]>;
    GetUserInfo(ticket: Ticket, user: User): Promise<UserInfo>;
    GetUserRecoveryPassword(ticket: Ticket, user: User, encryptedPwd: string): Promise<string>;
    PSKCImport(ticket: Ticket, PSKCData: Base64UrlString, PSKCFileName?: string | null, password?: string | null, sharedKey?: string | null): Promise<PSKCOutput[]>;
    SetServerSettings(ticket: Ticket, type: ServerSettingType, settings: Attribute[]): Promise<void>;
    SetUserAccountControl(ticket: Ticket, user: User, control: UACFlags): Promise<void>;
    UnlockUserAccount(ticket: Ticket, user: User): Promise<void>;
}

// @public
export interface IAuthenticationClient {
    continue(handle: number, data: string): Promise<Base64UrlString>;
    init(): Promise<AuthenticationData>;
    term(handle: number): Promise<void>;
}

// @public
export interface IAuthService {
    // (undocumented)
    Authenticate(identity: User | Ticket, credential: Credential): Promise<Ticket>;
    // (undocumented)
    ContinueAuthentication(auth: AuthenticationHandle, data: string): Promise<ExtendedAuthResult>;
    // (undocumented)
    CreateAuthentication(identity: User | Ticket | null, credentialId: CredentialId): Promise<AuthenticationHandle>;
    // (undocumented)
    CustomAction(actionId: number, ticket: Ticket, user: User, credential: Credential): Promise<Base64UrlString>;
    // (undocumented)
    DestroyAuthentication(auth: AuthenticationHandle): Promise<void>;
    // (undocumented)
    GetEnrollmentData(user: User, credentialId: CredentialId): Promise<Base64UrlString>;
    // (undocumented)
    GetUserCredentials(user: User): Promise<CredentialId[]>;
    // (undocumented)
    Identify(credential: Credential): Promise<Ticket>;
}

// @public
export interface IClaimsService {
    // (undocumented)
    GetClaims(ticket: Ticket, request: ClaimRequest[]): Promise<Ticket>;
    // (undocumented)
    GetConfiguredClaims(ticket: Ticket): Promise<Ticket>;
}

// @public
export interface IEnrollService {
    // (undocumented)
    CreateUser(securityOfficer: Ticket, user: User, password: string): Promise<void>;
    // (undocumented)
    CustomAction(ticket: Ticket, user: User, credential: Credential, actionId: number): Promise<Base64UrlString>;
    // (undocumented)
    DeleteAltusUserCredentials(securityOfficer: Ticket, user: User, credential: Credential): Promise<void>;
    // (undocumented)
    DeleteUser(securityOfficer: Ticket, user: User): Promise<void>;
    // (undocumented)
    DeleteUserCredentials(securityOfficer: Ticket, owner: Ticket, credential: Credential): Promise<void>;
    // (undocumented)
    EnrollAltusUserCredentials(securityOfficer: Ticket, user: User, credential: Credential): Promise<void>;
    // (undocumented)
    EnrollUserCredentials(securityOfficer: Ticket, owner: Ticket, credential: Credential): Promise<void>;
    // (undocumented)
    GetEnrollmentData(user: User, credentialId: CredentialId): Promise<Base64UrlString>;
    // (undocumented)
    GetUserAttribute(ticket: Ticket, user: User, attributeName: string): Promise<Attribute>;
    // (undocumented)
    GetUserCredentials(user: User): Promise<CredentialId[]>;
    // (undocumented)
    IsEnrollmentAllowed(securityOfficer: Ticket, user: User, credentialId: CredentialId): Promise<void>;
    // (undocumented)
    PutUserAttribute(ticket: Ticket, user: User, attribute: Attribute, action: AttributeAction): Promise<void>;
    // (undocumented)
    UnlockUser(user: User, credential: Credential): Promise<void>;
}

// @public
export interface IPolicyService {
    // (undocumented)
    GetPolicyInfo(user: User, resourceUri: string, action: ResourceActions, info: ContextualInfo): Promise<PolicyInfo>;
}

// @public
export interface ISecretService {
    // (undocumented)
    DeleteSecret(ticket: Ticket, secretName: string): Promise<void>;
    // (undocumented)
    DoesSecretExist(user: User, secretName: string): Promise<boolean>;
    // (undocumented)
    GetAuthPolicy(user: User, secretName: string, action: ResourceActions): Promise<Policy[]>;
    // (undocumented)
    ReadSecret(ticket: Ticket, secretName: string): Promise<Base64UrlString>;
    // (undocumented)
    WriteSecret(ticket: Ticket, secretName: string, secretData: Base64UrlString): Promise<void>;
}

// @public
export interface IService {
    Ping(): Promise<boolean>;
}

// @public
export type LDSAttributeName = string & {
    brand?: "dp.services.LDSAttributeName";
};

// @public (undocumented)
export interface LicenseInfo {
    // (undocumented)
    licenses_deployed: number;
    // (undocumented)
    licenses_used: number;
    // (undocumented)
    type: LicenseType;
}

// @public (undocumented)
export enum LicenseType {
    // (undocumented)
    ADUser = 1,
    // (undocumented)
    LDSUser = 2
}

// @public
export interface Policy {
    policy: PolicyElement[];
}

// @public
export interface PolicyElement {
    cred_id: CredentialId;
}

// @public
export interface PolicyInfo {
    policyList: Policy[];
    policyTriggers: PolicyTrigger[];
}

// @public
export class PolicyService extends Service implements IPolicyService {
    constructor(endpointUrl: string);
    // (undocumented)
    GetPolicyInfo(user: User, resourceUri: string, action: ResourceActions, info: ContextualInfo): Promise<PolicyInfo>;
}

// @public
export interface PolicyTrigger {
    // (undocumented)
    trigger: TriggerNames;
}

// @public (undocumented)
export interface PSKCOutput {
    error?: number;
    error_text?: string;
    serial_number?: string;
}

// @public
export enum ResourceActions {
    Delete = 2,
    Read = 0,
    Write = 1
}

// @public (undocumented)
export interface SearchQuery {
    attributes: string[];
    baseDN?: string;
    filter: string;
    scope: SearchScope;
    sort?: string;
}

// @public (undocumented)
export enum SearchScope {
    // (undocumented)
    Base = 0,
    // (undocumented)
    OneLevel = 1,
    // (undocumented)
    Subtree = 2
}

// @public
export class SecretService extends Service implements ISecretService {
    constructor(endpointUrl: string);
    // (undocumented)
    DeleteSecret(ticket: Ticket, secretName: string): Promise<void>;
    // (undocumented)
    DoesSecretExist(user: User, secretName: string): Promise<boolean>;
    // (undocumented)
    GetAuthPolicy(user: User, secretName: string, action: ResourceActions): Promise<Policy[]>;
    // (undocumented)
    ReadSecret(ticket: Ticket, secretName: string): Promise<Base64UrlString>;
    // (undocumented)
    WriteSecret(ticket: Ticket, secretName: string, secretData: Base64UrlString): Promise<void>;
}

// @public (undocumented)
export enum ServerSettings {
    // (undocumented)
    "LockoutDuration" = 1,
    // (undocumented)
    "LockoutReset" = 2,
    // (undocumented)
    "LockoutThreshold" = 0
}

// @public (undocumented)
export enum ServerSettingType {
    Admin = 1,
    Public = 2,
    Unknown = 0
}

// @public
export class ServiceError extends Error {
    constructor(code: number, message: string);
    readonly code: number;
    static fromServiceFault(fault: ServiceFault): ServiceError;
    isHttpError(): boolean;
}

// @public
export interface ServiceFault {
    description: string;
    error_code: number;
}

// @public
export enum TriggerName {
    // (undocumented)
    AltusInstalled = "altusInstalled",
    // (undocumented)
    Behavior = "behavior",
    // (undocumented)
    Computer = "computer",
    // (undocumented)
    Device = "device",
    // (undocumented)
    Domain = "domain",
    // (undocumented)
    InsideFirewall = "insideFirewall",
    // (undocumented)
    IP = "ip",
    // (undocumented)
    RemoteSession = "remoteSession",
    // (undocumented)
    User = "user"
}

// @public
export type TriggerNames = {
    [K in keyof ContextualInfo]: ContextualInfo[K] extends Function ? never : K;
}[keyof ContextualInfo];

// @public
export enum UACFlags {
    // (undocumented)
    FingerprintOnly = 16,
    // (undocumented)
    FingerprintRequired = 8,
    // (undocumented)
    OtpAndFingerprint = 128,
    // (undocumented)
    OtpAndPwd = 64,
    // (undocumented)
    PasswordNotAllowed = 2,
    // (undocumented)
    PinRequired = 4,
    // (undocumented)
    RevertToWindows = 1
}

// @public (undocumented)
export enum UserAccountType {
    ActiveDirectory = 2,
    ADLDS = 3,
    Local = 1,
    Unknown = 0
}

// @public (undocumented)
export interface UserInfo {
    accountControl: UACFlags;
    displayName: string;
    licensed: boolean;
    locked: boolean;
    type: UserAccountType;
    uid: string;
}

// @public
export class VarBlob {
    constructor(values: Base64UrlString[]);
    // (undocumented)
    readonly type = VarType.Blob;
    // (undocumented)
    readonly values: Base64UrlString[];
}

// @public
export class VarBool {
    constructor(values: boolean[]);
    // (undocumented)
    readonly type = VarType.Boolean;
    // (undocumented)
    readonly values: boolean[];
}

// @public
export type VarData = VarBool | VarInt | VarString | VarBlob;

// @public
export class VarInt {
    constructor(values: number[]);
    // (undocumented)
    readonly type = VarType.Integer;
    // (undocumented)
    readonly values: number[];
}

// @public
export class VarString {
    constructor(values: string[]);
    // (undocumented)
    readonly type = VarType.String;
    // (undocumented)
    readonly values: string[];
}

// @public (undocumented)
export enum VarType {
    Blob = 4,
    Boolean = 1,
    Integer = 2,
    String = 3
}


// (No @packageDocumentation comment for this package)

```
