{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://skoolbus.dev/schema/v1/project.json",
  "$defs": {
    "Defaults": {
      "properties": {
        "timeout": {
          "type": "string",
          "description": "Go duration between 1s and 1h; default 60s"
        },
        "memory": {
          "type": "string",
          "pattern": "^[0-9]+(Ki|Mi|Gi)$",
          "description": "Between 64Mi and 8Gi; default 512Mi"
        },
        "cpu": {
          "type": "number",
          "maximum": 8,
          "minimum": 0.1,
          "description": "CPUs between 0.1 and 8; default 1"
        }
      },
      "additionalProperties": false,
      "type": "object"
    }
  },
  "properties": {
    "version": {
      "type": "integer",
      "maximum": 1,
      "minimum": 1,
      "description": "Manifest schema version; must be 1"
    },
    "name": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9-]{0,62}$",
      "description": "Project name; a slug"
    },
    "id": {
      "type": "string",
      "pattern": "^prj_[0-9a-hjkmnp-tv-z]{26}$",
      "description": "Generated by bus init; never edited"
    },
    "description": {
      "type": "string"
    },
    "defaults": {
      "$ref": "#/$defs/Defaults",
      "description": "Per-step limits used when a step omits them"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "version",
    "name",
    "id"
  ],
  "title": "skoolbus project",
  "description": "project.yaml: the identity and defaults of a project. Unknown keys are errors."
}
