How a file flows through a spec
1
Detection
Solya decides which spec applies to an incoming file, using the spec’s
detection rules.
2
Parsing
The file is read into a tabular form and its columns are mapped to typed fields, using
the parsing config.
3
Promotion
One or more promotion pipelines
transform the parsed data and write it to silver/gold tables.
Top-level shape
A spec is authored as JSON (snake_case keys). Its fields:Scope: GLOBAL vs ORG
- GLOBAL specs are seeded by the platform and available to every organization. They cover the standard POS formats (Polaris, Ginkoia, Kezia, …).
- ORG specs belong to a single organization (
organization_idset) and are only visible to it.
Deployment
Existence isn’t the same as activation for an org. A spec is deployed to an organization via an activation record (enabled flag) — so an org turns specs on/off without anyone
editing the spec itself. In the API/DTO this surfaces as isDeployed on each spec.
Priority & conflict resolution
When more than one spec matches a file:- Specs are ranked by
priority(descending). - Newer
spec_versiontakes precedence. - The first matching spec is applied.
Lifecycle & versioning
- A
spec_idcan have multiple versions;(spec_id, spec_version)is unique. - Seeding is idempotent (upsert on that pair); GLOBAL specs removed from the seed set are archived, not deleted, to preserve history.
Continue to the three building blocks:
Detection,
Parsing, and the
Promotion steps catalog — then see
full examples.

