---
title: "POST /config/export"
method: POST
path: "/config/export"
tags: ["config"]
---

# POST /config/export

`POST /config/export`

Pack the current installation into an encrypted `.ucbundle` written to
`targetPath`, sealed with the installation's own key material (no export
password; opening it later requires the space passphrase). The facade
enforces the preconditions (initialized + unlocked) before any material is
read. D14: session-JWT gated; the handler MUST NOT log the request body (no
path on any span here).

## Request body

- ExportConfigRequest — Request body for `POST /config/export`. No export password is taken: the bundle is sealed with the installation's own key material, so opening it later requires the space passphrase. `target_path` is the absolute destination the daemon writes the `.ucbundle` file to.
  - `targetPath` string, required

## Response `200`

Configuration bundle written

- ExportConfigEnvelope — Canonical success envelope: `{ "data": T, "ts": <unix millis i64> }`. `ts` is `chrono::Utc::now().timestamp_millis()`, set in the webserver handler via [`ApiEnvelope::now`] (the contract carries only the type + the clock helper, not a hard dependency on when the handler reads the clock). `rename_all = "camelCase"` is a no-op for the single-word fields here but is declared for forward-compat. IMPORTANT (utoipa v4): every concrete `ApiEnvelope<X>` that needs a named OpenAPI component is declared in the `#[aliases(...)]` block below. Add a new alias line whenever a new payload type needs enveloping. NEVER register the bare `ApiEnvelope` in `components(schemas(...))` — utoipa errors on a bare generic, and an un-aliased generic inlines an anonymous schema.
  - `data` ExportConfigResponse, required — Response payload for `POST /config/export` on success.
    - `path` string, required — Absolute path the bundle was written to.
  - `ts` integer, required — Server time when the response was built (unix epoch milliseconds).

## Other responses

- `409` — Source installation is not initialized
- `423` — Session is locked
- `500` — Internal server error

---

[API](https://skmtc.net/uniclipboard/apis/uniclipboard-daemon-api.md) · [All operations](https://skmtc.net/uniclipboard/apis/uniclipboard-daemon-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/uniclipboard/uniclipboard-daemon-api/revisions/a5d29889448a/schema)
