buildpacks-io · Schema

project.toml (Project Descriptor)

Schema for the Cloud Native Buildpacks Project Descriptor (project.toml). Defined by the buildpacks/spec extensions/project-descriptor.md. Lets app authors declare build-time inputs, includes/excludes, environment variables, and the desired builder.

Properties

Name Type Description
_ object Project metadata table.
io object
View JSON Schema on GitHub

JSON Schema

buildpacks-project-toml-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/buildpacks-io/main/json-schema/buildpacks-project-toml-schema.json",
  "title": "project.toml (Project Descriptor)",
  "description": "Schema for the Cloud Native Buildpacks Project Descriptor (project.toml). Defined by the buildpacks/spec extensions/project-descriptor.md. Lets app authors declare build-time inputs, includes/excludes, environment variables, and the desired builder.",
  "type": "object",
  "properties": {
    "_": {
      "type": "object",
      "description": "Project metadata table.",
      "properties": {
        "schema-version": {"type": "string"},
        "id": {"type": "string"},
        "name": {"type": "string"},
        "version": {"type": "string"},
        "authors": {
          "type": "array",
          "items": {"type": "string"}
        },
        "documentation-url": {"type": "string", "format": "uri"},
        "source-url": {"type": "string", "format": "uri"},
        "licenses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {"type": "string"},
              "uri": {"type": "string", "format": "uri"}
            }
          }
        },
        "metadata": {
          "type": "object",
          "additionalProperties": true
        }
      }
    },
    "io": {
      "type": "object",
      "properties": {
        "buildpacks": {
          "type": "object",
          "properties": {
            "builder": {
              "type": "string",
              "description": "OCI image reference of the builder used to build this app."
            },
            "include": {
              "type": "array",
              "items": {"type": "string"},
              "description": "Glob patterns whose matches are uploaded to the builder."
            },
            "exclude": {
              "type": "array",
              "items": {"type": "string"},
              "description": "Glob patterns whose matches are NOT uploaded to the builder."
            },
            "group": {
              "type": "array",
              "items": {"$ref": "#/$defs/BuildpackEntry"}
            },
            "pre": {
              "type": "object",
              "properties": {
                "group": {
                  "type": "array",
                  "items": {"$ref": "#/$defs/BuildpackEntry"}
                }
              }
            },
            "post": {
              "type": "object",
              "properties": {
                "group": {
                  "type": "array",
                  "items": {"$ref": "#/$defs/BuildpackEntry"}
                }
              }
            },
            "build": {
              "type": "object",
              "properties": {
                "env": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": ["name", "value"],
                    "properties": {
                      "name": {"type": "string"},
                      "value": {"type": "string"}
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "$defs": {
    "BuildpackEntry": {
      "type": "object",
      "properties": {
        "id": {"type": "string"},
        "version": {"type": "string"},
        "uri": {"type": "string"},
        "script": {
          "type": "object",
          "properties": {
            "api": {"type": "string"},
            "shell": {"type": "string"},
            "inline": {"type": "string"}
          }
        }
      }
    }
  }
}