Publishing
Save workspace
Save the app’s mutable draft (workspace). Invalid content can still be saved; validation results come back in the response.
PUT
Save workspace
PUT https://api-datahub.octoparse.com/v1/data-apps/{app_id}/workspace
Authentication: API key required (Authorization: Bearer <API Key>). App author only; others get 404.
Save the app’s mutable draft. Saves are never rejected for validation failure: full validation still runs, and the result (valid / issues) is returned with the response. “Save a half-finished draft and come back later” is a model guarantee.
App identity is created implicitly on the first save — there is no separate “create app” endpoint. Only three hard gates return 400: the account has a username, the payload is within size limits, and attached filenames are valid. identity.app_name inside the manifest is no longer compared to the path: the route name follows the reference, and the name declared in the file is consumed only at creation time.
expected_revision provides optimistic concurrency (409 revision-conflict) so multiple tabs cannot silently overwrite each other. Attached secrets are stored only when this save is valid; names that were not stored are reported in secrets_deferred. Deprecated apps can still be edited; only new Releases are rejected.
Request
Path parameters
string
required
App reference:
app_<hex> or <namespace>/<app_name>. Use the latter on first save.Request body
string
required
Raw manifest text.
object
Attached files: keys are relative paths, values are text content.
object
Map of secret names to plaintext values. Stored only when this save is valid.
integer
Expected current draft revision. Mismatch returns
409.Example request
Response
200 success
data. Fields:
string
required
—
string
required
Stable app id.
string
—
integer
required
Draft revision after the save.
boolean
required
Whether the current content passed validation.
object[]
Issue list.
string[]
—
string[]
Secret names not stored because this save was invalid.
string
—
Errors
Error responses use
{"error": {code, category, message, retryable}}. See Errors.