Skip to content

holds

client.holds places and lifts legal holds. It belongs to the Owner role. A hold refuses any retire, restore or shred of what it covers.

list

list returns every legal hold in the tenant.

list(): Promise<Hold[]>

Returns: Every hold in the tenant.

Records: Nothing. Not a decision.

Who may call it: The Owner role.

Errors: locked, no-session.

place

place puts a legal hold on a dataset, a key domain or a record.

place(target: HoldTarget, reason: string, reference: string): Promise<Decided<Hold>>

Parameters

NameTypeDescription
targetHoldTargetThe dataset, key domain or record to hold.
reasonstringWhy the hold is placed.
referencestringThe customer’s own reference, such as a ticket number.

Returns: Decided<Hold>.

Records: One decision and one access event.

Who may call it: The Owner role.

Errors: locked, no-session.

lift

lift signs to lift a legal hold, after a fresh multi-factor sign-in. The hold lifts when the second Owner signs.

lift(holdId: string): Promise<Decided<{ lifted: boolean }>>

Parameters

NameTypeDescription
holdIdstringThe hold to lift.

Returns: Decided, and on allow whether the hold is now fully lifted: true once the second Owner has signed, false while the first signature waits for the second.

Records: One decision and one access event.

Who may call it: The Owner role. Lifting a hold takes two Owners.

Errors: locked, no-session, canceled if the person does not complete the fresh multi-factor sign-in.

Types

HoldTarget

type HoldTarget = { dataset: string } | { domain: Locator } | { record: Locator };

What a hold covers: an entire dataset, one key domain, or one record.

Hold

interface Hold {
holdId: string;
target: HoldTarget;
reason: string;
reference: string;
placedAt: Date;
placedBy: RecipientId;
liftSignatures: number;
}
FieldTypeDescription
holdIdstringThe hold’s id.
targetHoldTargetWhat the hold covers.
reasonstringWhy the hold was placed.
referencestringThe customer’s own reference.
placedAtDateWhen the hold was placed.
placedByRecipientIdThe device that placed it.
liftSignaturesnumberHow many Owners have signed to lift it so far. Lifting takes two. The first signature waits for the second.

Holds

interface Holds {
list(): Promise<Hold[]>;
place(target: HoldTarget, reason: string, reference: string): Promise<Decided<Hold>>;
lift(holdId: string): Promise<Decided<{ lifted: boolean }>>;
}

Holds groups the three methods above into the namespace client.holds.