Skip to content

Latest commit

 

History

History
101 lines (68 loc) · 3.65 KB

File metadata and controls

101 lines (68 loc) · 3.65 KB
title Approval
description Approval protocol schemas

{/* ⚠️ AUTO-GENERATED — DO NOT EDIT. Run build-docs.ts to regenerate. Hand-written docs live in the module folders under content/docs/. */}

Approval Step Approver Type

**Source:** `packages/spec/src/automation/approval.zod.ts`

TypeScript Usage

import { ApprovalDecision, ApprovalEscalation, ApprovalNodeApprover, ApprovalNodeConfig, ApproverType } from '@objectstack/spec/automation';
import type { ApprovalDecision, ApprovalEscalation, ApprovalNodeApprover, ApprovalNodeConfig, ApproverType } from '@objectstack/spec/automation';

// Validate data
const result = ApprovalDecision.parse(data);

ApprovalDecision

Allowed Values

  • approve
  • reject

ApprovalEscalation

Properties

Property Type Required Description
enabled boolean Enable SLA-based escalation for this node
timeoutHours number Hours before escalation triggers
action Enum<'reassign' | 'auto_approve' | 'auto_reject' | 'notify'> Action on escalation timeout
escalateTo string optional User id or position machine name to escalate to
notifySubmitter boolean Notify the original submitter on escalation

ApprovalNodeApprover

Properties

Property Type Required Description
type Enum<'user' | 'org_membership_level' | 'role' | 'position' | 'team' | 'department' | 'manager' | 'field' | 'queue' | 'expression'>
value string optional User id / membership tier / position / team / department / field — per type; for expression, a CEL expression over current.* / trigger.* / vars.*
resolveAs Enum<'user' | 'department' | 'position' | 'team'> optional How an expression result is expanded into approvers (default 'user')
group string optional Group label for per_group sign-off (e.g. "legal", "finance")

ApprovalNodeConfig

Properties

Property Type Required Description
approvers { type: Enum<'user' | 'org_membership_level' | 'role' | 'position' | 'team' | 'department' | 'manager' | 'field' | 'queue' | 'expression'>; value?: string; resolveAs?: Enum<'user' | 'department' | 'position' | 'team'>; group?: string }[] Allowed approvers for this node
behavior Enum<'first_response' | 'unanimous' | 'quorum' | 'per_group'> How to combine multiple approvers
minApprovals integer optional Approvals required — total (quorum) or per group (per_group). Default 1
lockRecord boolean Lock the record from editing while pending
approvalStatusField string optional Business-object field to mirror request status onto
onEmptyApprovers Enum<'admin_rescue' | 'fail' | 'auto_approve'> Behavior when no concrete approver resolves at node entry
decisionOutputs string[] optional Author-declared output keys a decision may carry (approvers fill values only)
escalation { enabled: boolean; timeoutHours: number; action: Enum<'reassign' | 'auto_approve' | 'auto_reject' | 'notify'>; escalateTo?: string; … } optional Per-node SLA escalation
maxRevisions integer Max send-backs for revision before auto-reject (0 = send-back disabled)

ApproverType

Allowed Values

  • user
  • org_membership_level
  • role
  • position
  • team
  • department
  • manager
  • field
  • queue
  • expression