Skip to content
Proud to collaborate with Microsoft for Startups

apphost.release.create ​

Create a pending_upload HostedRelease for a claimed apphost site and return a presigned S3 POST (size-capped) for the bundle upload. POST every upload_fields key (including x-amz-credential and x-amz-security-token), then file=@bundle.zip last. Publish/activation is a separate workflow (apphost.release.publish).

Open a new pending_upload HostedRelease and presign its bundle upload.

Overview ​

PropertyValue
Workflow typeAtomic
LibraryApp-apphost
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
site_uuiduuidYes—UUID of the HostedSite to open a release for.
organization_uuiduuidYes—Organization UUID for tenant isolation; must match the site's owner.
created_by_user_uuiduuidNo—Wire identity of the member opening the release (stored on hosted_release).

Output Schema ​

FieldTypeRequiredDefaultDescription
site_uuiduuidNo—Echoed HostedSite UUID.
release_uuiduuidNo—UUID of the new HostedRelease (status=pending_upload).
prefixstringNo—Immutable S3 prefix of the release: apps/<slug>/<release_uuid>/.
upload_urlstringNo—Presigned S3 POST URL for the bundle upload.
upload_fieldsjsonNo—SigV4 POST form. Required keys: key, policy, x-amz-algorithm, x-amz-credential, x-amz-date, x-amz-signature, x-amz-security-token. POST every returned field, then file=@bundle.zip last. If x-amz-credential or x-amz-security-token is missing, stop — do not invent fields or decode policy.
expires_in_secondsintegerNo—Validity window of the presigned upload.
max_bundle_bytesintegerNo—Size ceiling enforced by the POST policy (APPHOST_MAX_BUNDLE_BYTES).
failure_reasonstringNo——
failure_typestringNo——
failed_actionstringNo——
failed_at_statestringNo——
failed_stepjsonNo——
failed_layerjsonNo——
errorstringNo——
error_typestringNo——
failed_atstringNo——

States ​

StateInitialTerminalSuccessAuto-advanceDescription
PENDINGYesNo—executeRelease-create request accepted; will create row + presign upload
COMPLETEDNoYesYes—HostedRelease created; presigned upload returned
FAILEDNoYesNo—Release-create rejected or presign failed

State Diagram ​

Transitions ​

FromActionToDescription
PENDINGexecuteCOMPLETED—
* (any state)failFAILED—

Outcomes ​

OutcomeTypeDescriptionState Data Keys
createdSUCCESSPending upload HostedRelease created with presigned POSTrelease_uuid, upload_url
failedFAILUREApphost workflow failedfailure_reason

API Usage ​

bash
POST /api/workflows/start
Content-Type: application/json

{
  "workflow_type": "apphost.release.create",
  "initial_data": {
    "site_uuid": "value",
    "organization_uuid": "value"
  }
}