> ## Documentation Index
> Fetch the complete documentation index at: https://www.octoparse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Split a manifest into a contract folder

> Inverse of assemble: split one manifest into the canonical contract folder file set.

**`POST`** `https://api-datahub.octoparse.com/v1/data-apps/contract/split`

Authentication: none. Anonymous access allowed.

Inverse of assemble: one self-contained manifest → a canonical contract-folder file map (each file is JSON text; zipping is the client’s job).

Split semantics (single source of truth): platform-injected read-back keys (`scope` / `status` / `namespace`) are stripped; `input` / `output` each drop one `schema` wrapper and `output.id_field` moves back to the top level of `output_schema.json`; `runtime` / `pricing` / `examples` become standalone files whenever present; an empty README is omitted; remaining keys go into `dataapp.json` in original order. Re-assembling the split folder can reproduce the manifest with zero warnings. Optional `translations` (`{source, locales}`) additionally yields `i18n.json`.

## Request

### Request body

<ParamField body="manifest" type="object" required>
  Manifest object.
</ParamField>

<ParamField body="translations" type="object">
  Optional translation set `{source, locales}`.
</ParamField>

### Example request

```bash theme={null}
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"manifest": {"spec_version": "0.2", "identity": {"app_name": "reviews-query"}, "…": "…"}}' \
  "https://api-datahub.octoparse.com/v1/data-apps/contract/split"
```

## Response

### 200 success

```json theme={null}
{
  "data": {
    "files": {
      "dataapp.json": "{\n  \"spec_version\": \"0.2\",\n  …",
      "input_schema.json": "{…}",
      "output_schema.json": "{…}",
      "runtime.json": "{…}",
      "pricing.json": "{…}",
      "examples.json": "[…]"
    },
    "warnings": []
  }
}
```

The payload is wrapped in `data`. Fields:

<ResponseField name="files" type="object">
  File map. Keys are filenames; values are JSON text.
</ResponseField>

<ResponseField name="folder_name" type="string">
  —
</ResponseField>

## Client libraries

The Python and JavaScript SDKs do not wrap this endpoint yet. Call REST directly.
