ObjectStackObjectStack

Position schema — Identity Protocol reference

Position schemas of the ObjectStack Identity Protocol: Position — each property with its type, default and a TypeScript example.

Source: packages/spec/src/identity/position.zod.ts

TypeScript Usage

import { PositionSchema } from '@objectstack/spec/identity';
import type { Position } from '@objectstack/spec/identity';

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

Position

Properties

PropertyTypeRequiredDescription
namestring✅Position name, unique within the security catalog the environment serves (lowercase snake_case)
labelstring✅Display label (e.g. VP of Sales)
descriptionstringoptional
permissionSetsstring[]optionalADR-0131 D3/D4: the permission sets this position distributes, by name (resolved in the environment catalog).
delegatablebooleanoptional (default: false)ADR-0091 D3: holders may self-service delegate this position, time-boxed (default false).
protection{ lock: Enum<'none' | 'no-overlay' | 'no-delete' | 'full'>; reason: string; docsUrl?: string }optionalPackage author protection block — lock policy for this position.
_lockEnum<'none' | 'no-overlay' | 'no-delete' | 'full'>optionalItem-level lock — controls overlay & delete (ADR-0010).
_lockReasonstringoptionalHuman-readable reason shown when a write is refused by _lock.
_lockSourceEnum<'artifact' | 'package' | 'env-forced'>optionalLayer that set _lock (artifact | package | env-forced).
_provenanceEnum<'package' | 'org' | 'env-forced'>optionalOrigin of the item (package | org | env-forced).
_packageIdstringoptionalOwning package machine id.
_packageVersionstringoptionalOwning package version.
_lockDocsUrlstringoptionalOptional documentation link surfaced next to _lockReason.

Nested Shape: Position.protection

PropertyTypeRequiredDescription
lockEnum<'none' | 'no-overlay' | 'no-delete' | 'full'>✅Lock policy — none | no-overlay | no-delete | full.
reasonstring✅User-visible reason shown when the lock blocks an action.
docsUrlstringoptionalOptional URL the Studio banner links to for more context.

On this page