Source fundamentals
Each source is both a contract and a container:- Contract — Sources reference the profiles and relationship definitions that data must respect. They define which data types, validation rules, and vocabularies are allowed.
- Container — Sources persist the raw resources and relationships exactly as they were ingested, including source-specific metadata needed for traceability.
- Processing boundary — Pipelines, processors, and validation rules execute per source so that each system can keep autonomous data quality guardrails.
Resources
A resource is a record stored under a source that conforms to one of its profiles. Resources include:- Data — Properties defined by the associated profile, including nested object and array structures.
- Meta — System-managed attributes such as identifiers, timestamps, and ingestion receipts.
- Contained resources — Optional embedded structures declared by the profile. They are versioned together with the parent resource and never queried independently.
Relationships
Relationships capture graph structure between resources:- Definition — A relationship definition declares allowed
from
/to
resource types and the properties carried on each edge. - Instances — Each stored relationship references two resource identifiers, its key (the relationship type), optional data payload, and metadata.
- Traversal — Partitions can traverse relationships so that related properties become available for querying without denormalizing data.
Objects
Objects let you store binary assets—documents, images, transcripts—next to structured resources while keeping unified governance:- They are scoped by source, just like resources and relationships.
- Each object request produces a task that orchestrates storage, OCR, and downstream processors.
- Objects participate in partitions through the same query DSL (for example when joining report metadata with structured encounters).
Ingesting data into a source
Decide how much coordination each integration requires, then pick the ingestion workflow that matches:- For batched workloads, use the bulk resource and relationship APIs so that operations run asynchronously and can retry individual failures.
- When you need atomic guarantees across multiple operations, rely on bundle requests.
- For low-volume or highly targeted writes, the single resource APIs and relationship APIs provide synchronous confirmations.
Profiles & Relationships Definitions
Understand how to define your data models
Data Ingestion
Learn how to ingest resources or relationships in bulk
Bundle Ingestion
Learn how to group multiple writes in a single transaction
File Ingestion
Learn how to ingest and process binary objects into searchable content