Scope and keys
- Per-source uniqueness — Profile keys are unique within a source. Two sources can reuse the same key.
- API usage — You reference a profile key when writing resources, defining relationships, configuring partitions, or declaring pipelines.
- Versioning — Updating a profile changes which data future writes must respect. Existing records remain untouched until revalidated through a pipeline or reingested.
Properties and validation
Each property declares:- A type (
symbol,integer,address, custom objects, arrays…) - Optional
rulesfor validation (required, min/max, enum, pattern, vocabulary bindings) - Whether it can repeat (
array) or embed structured objects (object)
Contained resources
Contained profiles let you model complex data without multiplying top-level resources.When to use contained profiles
- The component depends entirely on a single parent resource.
- You must allow multiple instances (for example, a clinic with many insurance contracts).
When not to use contained profiles
- The component should be discoverable on its own (queryable partition collection).
- Multiple parent resources must reference the same record.
- You need graph relationships to or from that component.
Example profile
- Uses the Clinia
addresscomplex type while layering custom validation. - Embeds a contained profile to track opening hours without creating an independent resource.
- Keeps ingestion strict by validating enums and required fields.