{
    "description": "OpenEmbedder Layer Setup Manifest",
    "type": "object",
    "additionalProperties": false,
    "required": [
        "version"
    ],
    "properties": {
        "version": {
            "description": "The version of this document; currently '1.0'",
            "enum": ["1.0"]
        },
        "sources": {
            "description": "The dict of layer sources",
            "type": "object",
            "patternProperties": { ".*" : {
                "type": "object",
                "description": "The upstream source from which a set of layers may be fetched",
                "additionalProperties": false,
                "required": [
                    "path"
                ],
                "properties": {
                    "path": {
                        "description": "The path where this layer source will be placed when fetching",
                        "type": "string"
                    },
                    "contains_this_file": {
                        "description": "Whether the directory with the layer source also contains this json description. Tools may want to skip the checkout of the source then.",
                        "type": "boolean"
                    },
                    "git-remote": {
                                "description": "A remote git source from which to fetch",
                                "type": "object",
                                "additionalProperties": false,
                                "required": [
                                    "rev"
                                ],
                                "properties": {
                                    "branch": {
                                        "description": "The git branch to fetch (optional)",
                                        "type": "string"
                                    },
                                    "rev": {
                                        "description": "The git revision to checkout",
                                        "type": "string"
                                    },
                                    "describe": {
                                        "description": "The output of 'git describe' (human readable description of the revision using tags in revision history).",
                                        "type": "string"
                                    },
                                    "remotes": {
                                        "description": "The dict of git remotes to add to this repository",
                                        "type": "object",
                                        "patternProperties": { ".*" : {
                                            "description": "A git remote",
                                            "type": "object",
                                            "addtionalProperties": false,
                                            "required": [
                                                "uri"
                                            ],
                                            "properties": {
                                                "uri": {
                                                    "description": "The URI for the remote",
                                                    "type": "string"
                                                }
                                            }
                                        }}
                                    }
                                }
                    }
                }
            }
        }}
    }
}
