Schema, CSV & pod export
Back up field definitions, move entry data with CSV, or copy entire pods between projects — all from the admin UI.
Schema export
Open the Schema section in the admin and select a collection. Click the Export schema button in the edit panel. The browser downloads a file named {collection}-schema.json containing the full field definition for that collection:
{
"name": "posts",
"fields": [
{ "name": "title", "type": "text", "required": true },
{ "name": "body", "type": "richtext", "required": false },
{ "name": "tags", "type": "multitext", "required": false }
]
} The exported file is self-contained and can be checked into version control alongside your site code.
Schema import
In the same edit panel, click Import schema and select a previously exported -schema.json file. Orbiter reads the file and repopulates the field list in the editor. Review the fields, then click Save to apply them to the collection.
- Importing does not delete existing entries — only the field definitions are replaced.
- Fields present in the schema but missing from existing entries will appear blank for those entries.
- Fields that existed before the import but are absent from the JSON file are removed from the schema.
CSV export
In the Entries list for any collection, click the ↓ CSV button in the toolbar. The browser downloads a {collection}.csv file containing all entries (all statuses, excluding trashed). The format is:
| Column | Description |
|---|---|
slug | Entry slug — primary key for import matching |
status | draft, published, or scheduled |
| field columns | One column per field defined in the collection schema, in schema order |
Rich text fields are exported as raw HTML. Multi-value fields (e.g. multitext) are newline-separated within the cell.
CSV import
Click the ↑ CSV button in the entries toolbar and select a CSV file. Orbiter processes each row:
- Create — if no entry with that
slugexists, a new entry is created. - Update — if an entry with that
slugalready exists, its fields and status are overwritten.
The slug column is required. Rows with a missing or empty slug are skipped. The status column is optional — if omitted, created entries default to draft and existing entries keep their current status.
After import, a summary shows the number of entries created, updated, and skipped, along with any row-level errors.
Pod export & import (cross-pod copy)
The Import page has a Pod / JSON tab for copying entire pods between projects.
Export
Click ↓ Export as JSON to download all collections and their entries as a single JSON file. The file includes collection schemas, so the receiving pod can recreate missing collections automatically.
GET /api/import/export-pod
Import
Drop a .json export file or a raw .pod SQLite file onto the import zone. Orbiter reads all collections and entries from the source and merges them into the current pod:
- New collections are created with the source schema.
- Existing collections are left untouched (schema is not overwritten).
- Entries are matched by slug — choose Skip to keep existing entries or Overwrite to replace them.
POST /api/import/pod Content-Type: multipart/form-data pod_file: (file) .pod or .json file on_duplicate: skip | overwrite
Typical workflows
Migrate field definitions
- Export the schema from a staging pod.
- Import the schema on the production pod to synchronise field definitions.
Migrate entry data
- Export entry data as CSV from staging.
- Import the CSV on production.
Clone a pod
- On the source pod, go to Import → Pod / JSON → ↓ Export as JSON.
- On the target pod, go to Import → Pod / JSON → drop the JSON file → Import Pod.