Split a manifest into contract-folder files
The inverse of assemble: one self-contained manifest → the canonical contract-folder files map (JSON text per file; zipping is the client’s mechanical concern).
Split semantics (the single source of truth): platform-injected
read-back keys (scope / status / namespace) are stripped; input /
output each shed one schema layer, with output.id_field moved back
to the top of output_schema.json; runtime / pricing / examples become
standalone files whenever present (the export is always the
split-file form); an empty readme writes no README.md; the remaining
keys are dataapp.json in their original order. A split folder
re-assembled through POST contract/assemble reproduces the manifest
with zero warnings. Optional translations ({source, locales})
additionally produces i18n.json.
Authorizations
DataHub API Key
Body
POST contract/split request body: any self-contained manifest object
(e.g. the read-back of GET /data-apps/{ref}/manifest, injected keys
included — they are stripped during the split). Optional translations
additionally produces i18n.json.
The companion i18n.json of a contract folder: source is the locale
the manifest is written in (required); locales maps each target locale
to a flat entries object (path → string or string array; see
GET/PUT /data-apps/{ref}/translations/{locale}). Never merged into the
manifest — translations are stored per app, not per release.
Response
Successful Response
Split result: canonical contract-folder form, dataapp.json first.
README.md is omitted when the readme is empty (a folder may have 6 files).
Non-slot content (_editor_state.json, code packages) never appears —
the input is an inline manifest, which carries no files map.