Content export and import
Content moves between tenants and deployments as a file: export writes it, import reviews it and applies it. Both are an admin's, and neither is reachable over MCP.
- Export takes the records you choose (atoms, sequences, journeys and the rest of the content catalog) and adds everything they depend on: a journey brings its sequences, their atoms, the surfaces, tags, task types and assets they name. Every reference in the file is written as a portable code, never an id, so the file means the same thing anywhere.
- Import first reviews the file against the active tenant (
dryRun): what would be created, what would update, and what can't resolve. Applying it then writes each row through the same route a person's write would, so every check, permission and audit entry is the ordinary one. - A reference that resolves to a record in the shared library is used, not copied. A record the importing tenant already holds by code is updated.
- Rows meant for the shared library (
@tenants/DEFAULT) are applied in a separate pass (pass: default), run from the DEFAULT tenant; a normal import applies the rest to the active tenant. Import never deletes, so running a file again converges. - An id inside free-form JSON that the platform doesn't declare as a reference can't be made portable; export flags it rather than guessing.