{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [
        "users",
        "releases",
        "companies",
        "repos",
        "project_types"
    ],
    "properties": {
        "users": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "launchpad_id": {
                        "type": "string",
                        "pattern": "^[a-z\\d\\.-]+$"
                    },
                    "gerrit_id": {
                        "type": "string"
                    },
                    "user_name": {
                        "type": "string"
                    },
                    "emails": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "pattern": "^[a-z\\d_\\.-]+@([a-z\\d\\.-]+\\.)+[a-z]+$"
                        },
                        "minItems": 1
                    },
                    "companies": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "company_name": {
                                    "type": "string"
                                },
                                "end_date": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "pattern": "^20\\d{2}-\\w{3}-[0-3]\\d$"
                                }
                            },
                            "required": [
                                "company_name",
                                "end_date"
                            ],
                            "additionalProperties": false
                        },
                        "minItems": 1
                    }
                },
                "required": [
                    "launchpad_id",
                    "user_name",
                    "emails"
                ],
                "additionalProperties": false
            }
        },
        "releases": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "release_name": {
                        "type": "string"
                    },
                    "end_date": {
                        "type": "string",
                        "pattern": "^20\\d{2}-\\w{3}-[0-3]\\d$"
                    }
                },
                "required": [
                    "release_name",
                    "end_date"
                ],
                "additionalProperties": false
            }
        },
        "repos": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "uri": {
                        "type": "string"
                    },
                    "organization": {
                        "type": "string"
                    },
                    "module": {
                        "type": "string"
                    },
                    "releases": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "branch": {
                                    "type": "string"
                                },
                                "tag_from": {
                                    "type": "string"
                                },
                                "tag_to": {
                                    "type": "string"
                                },
                                "release_name": {
                                    "type": "string"
                                }
                            },
                            "required": [
                                "tag_from",
                                "tag_to",
                                "release_name"
                            ]
                        }
                    },
                    "aliases": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "uri",
                    "module",
                    "organization"
                ],
                "additionalProperties": false
            }
        },
        "companies": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "company_name": {
                        "type": "string"
                    },
                    "domains": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "pattern": "^[a-z\\d\\.-]*$"
                        }
                    },
                    "aliases": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "company_name",
                    "domains"
                ],
                "additionalProperties": false
            }
        },
        "project_sources": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "organization": {
                        "type": "string"
                    },
                    "module_group_name": {
                        "type": "string",
                        "pattern": "^[\\w-]+$"
                    },
                    "exclude": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "organization"
                ],
                "additionalProperties": false
            }
        },
        "module_groups": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "module_group_name": {
                        "type": "string",
                        "pattern": "^[\\w-]+$"
                    },
                    "modules": {
                        "type": [
                            "array"
                        ],
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "module_group_name",
                    "modules"
                ],
                "additionalProperties": false
            }
        },
        "mail_lists": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "member_lists": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "voting_date": {
            "type": "string"
        },
        "project_types": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "pattern": "^[\\w-]+$"
                    },
                    "child": {
                        "type": "boolean"
                    },
                    "title": {
                        "type": "string"
                    },
                    "modules": {
                        "type": [
                            "array"
                        ],
                        "items": {
                            "type": "string",
                            "pattern": "^[\\w-]+$"
                        }
                    }
                },
                "required": [
                    "id",
                    "title",
                    "modules"
                ],
                "additionalProperties": false
            }
        }
    }
}