Skip to main content

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.