{
    "definitions": {
        "action-root": {
            "description": "Action file",
            "mapping": {
                "properties": {
                    "name": "string",
                    "description": "string",
                    "inputs": "inputs",
                    "runs": "runs",
                    "outputs": "outputs"
                },
                "loose-key-type": "non-empty-string",
                "loose-value-type": "any"
            }
        },
        "inputs": {
            "mapping": {
                "loose-key-type": "non-empty-string",
                "loose-value-type": "input"
            }
        },
        "input": {
            "mapping": {
                "properties": {
                    "default": "input-default-context"
                },
                "loose-key-type": "non-empty-string",
                "loose-value-type": "any"
            }
        },
        "outputs": {
            "mapping": {
                "loose-key-type": "non-empty-string",
                "loose-value-type": "output-definition"
            }
        },
        "output-definition": {
            "mapping": {
                "properties": {
                    "description": "string",
                    "value": "output-value"
                }
            }
        },
        "runs": {
            "one-of": [
                "container-runs",
                "node-runs",
                "plugin-runs",
                "composite-runs"
            ]
        },
        "container-runs": {
            "mapping": {
                "properties": {
                    "using": "non-empty-string",
                    "image": "non-empty-string",
                    "entrypoint": "non-empty-string",
                    "args": "container-runs-args",
                    "env": "container-runs-env",
                    "pre-entrypoint": "non-empty-string",
                    "pre-if": "non-empty-string",
                    "post-entrypoint": "non-empty-string",
                    "post-if": "non-empty-string"
                }
            }
        },
        "container-runs-args": {
            "sequence": {
                "item-type": "container-runs-context"
            }
        },
        "container-runs-env": {
            "context": [
                "inputs"
            ],
            "mapping": {
                "loose-key-type": "non-empty-string",
                "loose-value-type": "string"
            }
        },
        "node-runs": {
            "mapping": {
                "properties": {
                    "using": "non-empty-string",
                    "main": "non-empty-string",
                    "pre": "non-empty-string",
                    "pre-if": "non-empty-string",
                    "post": "non-empty-string",
                    "post-if": "non-empty-string"
                }
            }
        },
        "plugin-runs": {
            "mapping": {
                "properties": {
                    "plugin": "non-empty-string"
                }
            }
        },
        "composite-runs": {
            "mapping": {
                "properties": {
                    "using": "non-empty-string",
                    "steps": "composite-steps"
                }
            }
        },
        "composite-steps": {
            "sequence": {
                "item-type": "composite-step"
            }
        },
        "composite-step": {
            "one-of": [
                "run-step",
                "uses-step"
            ]
        },
        "run-step": {
            "mapping": {
                "properties": {
                    "name": "string-steps-context",
                    "id": "non-empty-string",
                    "if": "step-if",
                    "run": {
                        "type": "string-steps-context",
                        "required": true
                    },
                    "env": "step-env",
                    "continue-on-error": "boolean-steps-context",
                    "working-directory": "string-steps-context",
                    "shell": {
                        "type": "string-steps-context",
                        "required": true
                    }
                }
            }
        },
        "uses-step": {
            "mapping": {
                "properties": {
                    "name": "string-steps-context",
                    "id": "non-empty-string",
                    "if": "step-if",
                    "uses": {
                        "type": "non-empty-string",
                        "required": true
                    },
                    "continue-on-error": "boolean-steps-context",
                    "with": "step-with",
                    "env": "step-env"
                }
            }
        },
        "container-runs-context": {
            "context": [
                "inputs"
            ],
            "string": {}
        },
        "output-value": {
            "context": [
                "github",
                "strategy",
                "matrix",
                "steps",
                "inputs",
                "job",
                "runner",
                "env"
            ],
            "string": {}
        },
        "input-default-context": {
            "context": [
                "github",
                "strategy",
                "matrix",
                "job",
                "runner",
                "hashFiles(1,255)"
            ],
            "string": {}
        },
        "non-empty-string": {
            "string": {
                "require-non-empty": true
            }
        },
        "string-steps-context": {
            "context": [
                "github",
                "inputs",
                "strategy",
                "matrix",
                "steps",
                "job",
                "runner",
                "env",
                "hashFiles(1,255)"
            ],
            "string": {}
        },
        "boolean-steps-context": {
            "context": [
                "github",
                "inputs",
                "strategy",
                "matrix",
                "steps",
                "job",
                "runner",
                "env",
                "hashFiles(1,255)"
            ],
            "boolean": {}
        },
        "step-env": {
            "context": [
                "github",
                "inputs",
                "strategy",
                "matrix",
                "steps",
                "job",
                "runner",
                "env",
                "hashFiles(1,255)"
            ],
            "mapping": {
                "loose-key-type": "non-empty-string",
                "loose-value-type": "string"
            }
        },
        "step-if": {
            "context": [
              "github",
              "inputs",
              "strategy",
              "matrix",
              "steps",
              "job",
              "runner",
              "env",
              "always(0,0)",
              "failure(0,0)",
              "cancelled(0,0)",
              "success(0,0)",
              "hashFiles(1,255)"
            ],
            "string": {}
        },
        "step-with": {
            "context": [
                "github",
                "inputs",
                "strategy",
                "matrix",
                "steps",
                "job",
                "runner",
                "env",
                "hashFiles(1,255)"
            ],
            "mapping": {
                "loose-key-type": "non-empty-string",
                "loose-value-type": "string"
            }
        }
    }
}