Scalable Platforms · Schema
Platform Deployment
A normalized schema for a deployment on a scalable PaaS platform such as Vercel, Netlify, Heroku, Fly.io, Railway, or Render.
Cloud InfrastructureDeploymentDeveloper ExperienceDevOpsPaaSPlatformScalabilityServerless
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Unique deployment identifier assigned by the platform. |
| provider | string | PaaS platform provider. |
| appId | string | ID of the application/project this deployment belongs to. |
| appName | string | Human-readable application name. |
| environment | string | Deployment environment. |
| status | string | Current deployment status. |
| url | string | Public URL for this deployment. |
| gitCommit | object | Source code commit triggering this deployment. |
| build | object | Build configuration and outcome. |
| runtime | object | Runtime configuration for the deployed application. |
| scaling | object | Platform-managed scaling configuration. |
| createdAt | string | |
| readyAt | string |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/scalable-platforms/main/json-schema/scalable-platforms-deployment-schema.json",
"title": "Platform Deployment",
"description": "A normalized schema for a deployment on a scalable PaaS platform such as Vercel, Netlify, Heroku, Fly.io, Railway, or Render.",
"type": "object",
"required": ["id", "provider", "appId", "status"],
"properties": {
"id": {
"type": "string",
"description": "Unique deployment identifier assigned by the platform."
},
"provider": {
"type": "string",
"description": "PaaS platform provider.",
"enum": ["vercel", "netlify", "cloudflare-pages", "heroku", "fly-io", "railway", "render", "northflank"]
},
"appId": {
"type": "string",
"description": "ID of the application/project this deployment belongs to."
},
"appName": {
"type": "string",
"description": "Human-readable application name."
},
"environment": {
"type": "string",
"description": "Deployment environment.",
"enum": ["production", "staging", "preview", "development"],
"default": "preview"
},
"status": {
"type": "string",
"description": "Current deployment status.",
"enum": ["queued", "building", "deploying", "ready", "failed", "cancelled", "error"]
},
"url": {
"type": "string",
"format": "uri",
"description": "Public URL for this deployment."
},
"gitCommit": {
"type": "object",
"description": "Source code commit triggering this deployment.",
"properties": {
"sha": {"type": "string", "description": "Full commit SHA."},
"branch": {"type": "string"},
"message": {"type": "string"},
"author": {"type": "string"}
}
},
"build": {
"type": "object",
"description": "Build configuration and outcome.",
"properties": {
"command": {"type": "string", "description": "Build command (e.g., npm run build)."},
"outputDirectory": {"type": "string", "description": "Build output directory (e.g., .next, dist, public)."},
"durationSeconds": {"type": "number", "description": "Total build duration."},
"logUrl": {"type": "string", "format": "uri", "description": "URL to build logs."}
}
},
"runtime": {
"type": "object",
"description": "Runtime configuration for the deployed application.",
"properties": {
"type": {
"type": "string",
"enum": ["static", "serverless", "server", "edge", "container"],
"description": "Execution model."
},
"region": {
"type": "string",
"description": "Primary deployment region (e.g., iad1, fra1, us-east-1)."
},
"regions": {
"type": "array",
"items": {"type": "string"},
"description": "All regions where the deployment is active."
},
"memory": {
"type": "integer",
"description": "Memory in MB for function/serverless deployments."
},
"timeout": {
"type": "integer",
"description": "Execution timeout in seconds."
}
}
},
"scaling": {
"type": "object",
"description": "Platform-managed scaling configuration.",
"properties": {
"minInstances": {"type": "integer", "minimum": 0, "description": "Minimum instances; 0 for scale-to-zero."},
"maxInstances": {"type": "integer", "minimum": 1},
"scaleToZero": {"type": "boolean", "default": false}
}
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"readyAt": {
"type": "string",
"format": "date-time"
}
}
}