External identifiers¶
An external identifier consists of an extensible scheme string, an opaque value, and an optional qualifier. Multiple identifiers, including multiple values from one scheme, may be attached to an object.
Core validation is intentionally small: text must be non-empty, bounded, and free of NUL characters so every public language boundary can transport it. PostProject preserves unknown schemes and values exactly. Applications may opt into a scheme-specific validator when they need to verify syntax; storing an identifier never triggers a registry or network lookup.
Identifiers may target assets, representations, resources, or activities. An activity identifier names the operation itself, such as a render-farm job or workflow task; it is distinct from the optional identifier of the agent that performed the activity.
Scheme identifiers are strings rather than a closed enum so new standards and application namespaces do not require an ABI redesign. The small built-in registry currently describes:
Scheme |
Stored value |
Local check |
|---|---|---|
|
the UMID namespace-specific hex value |
SMPTE ST 2029 lexical form |
|
the ISAN namespace-specific value |
RFC 4246 lexical form |
|
the EIDR prefix and suffix, such as |
RFC 7972 lexical form |
|
application-owned opaque text |
generic limits only |
These are opt-in syntax hints, not a closed allow-list. Checks do not normalize case, validate registry assignment, verify every standard checksum, or contact a network service. See SMPTE ST 2029, RFC 4246, and RFC 7972 for the authoritative formats.