On this page

App Engine is the dedicated workspace host for customers who need many containerized apps on one always-on MIOSA-managed runtime.

Use the regular Deployments API for the deployment object. Use the App Engine API to choose templates and provision the workspace host.

Endpoints

GET  /api/v1/docker-deploy/templates
GET  /api/v1/docker-deploy/templates/:id
GET  /api/v1/docker-deploy/hosts?workspace_id=:workspace_id
POST /api/v1/docker-deploy/hosts/ensure
GET  /api/v1/docker-deploy/hosts/:id

POST /api/v1/sandboxes/:id/publish
POST /api/v1/deployments/:id/publish

All endpoints require Authorization: Bearer <msk_*>. Mutations should include an Idempotency-Key header.

List templates

GET /api/v1/docker-deploy/templates

Returns curated container deployment templates such as Next.js app, Next.js static site, React/Vite, static HTML, Python API, Node API, and compose-backed app patterns.

Response:

{
  "data": [
    {
      "id": "nextjs-app",
      "name": "Next.js App",
      "runtime": "node",
      "build_command": "npm install && npm run build",
      "run_command": "npm start",
      "port": 3000,
      "health_check_path": "/"
    }
  ]
}

Get template

GET /api/v1/docker-deploy/templates/:id

Use this when your UI needs the template defaults before creating or publishing a deployment.

List workspace hosts

GET /api/v1/docker-deploy/hosts?workspace_id=550e8400-e29b-41d4-a716-446655440000

Returns App Engine hosts visible to the caller.

Response:

{
  "data": [
    {
      "id": "78745c76-d5e6-4541-b651-1018f7cc0d89",
      "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
      "computer_id": "cmp_...",
      "status": "active",
      "runtime_status": "healthy",
      "runtime_version": "2026.07"
    }
  ]
}

Ensure workspace host

POST /api/v1/docker-deploy/hosts/ensure

Creates or returns the dedicated App Engine host for a workspace. One host can run many deployments for that workspace.

Body:

{
  "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
  "region": "us-central",
  "size": "standard",
  "metadata": {
    "customer": "Clinic IQ"
  }
}

Response:

{
  "data": {
    "id": "78745c76-d5e6-4541-b651-1018f7cc0d89",
    "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
    "computer_id": "cmp_...",
    "status": "provisioning",
    "runtime_status": "booting"
  }
}

Get host

GET /api/v1/docker-deploy/hosts/:id

Returns the latest status for one App Engine host. A deployment is not ready until the host is active and the deployed app health check passes through that host.

Publish from sandbox

POST /api/v1/sandboxes/:id/publish

Body:

{
  "name": "Dr Smith Lead Magnet",
  "deployment_type": "docker_deploy",
  "docker_deploy_template_id": "nextjs-app",
  "workspace_id": "550e8400-e29b-41d4-a716-446655440000",
  "project_id": "660e8400-e29b-41d4-a716-446655440001",
  "build_command": "npm install && npm run build",
  "run_command": "npm start",
  "port": 3000,
  "health_check_path": "/",
  "external_workspace_id": "clinic_123",
  "external_project_id": "lead_magnet_456"
}

MIOSA packages the sandbox, ensures the workspace App Engine host exists, installs the release, waits for the app route health check, then returns the deployment and public URL.

Publish existing deployment

POST /api/v1/deployments/:id/publish

Use the same App Engine fields when publishing a new version of an existing deployment:

{
  "source_sandbox_id": "sbx_...",
  "deployment_type": "docker_deploy",
  "docker_deploy_template_id": "nextjs-app",
  "build_command": "npm install && npm run build",
  "run_command": "npm start",
  "port": 3000,
  "health_check_path": "/"
}

See also

Was this helpful?