{
    "title": "A JSON Schema for the Google API Discovery Format.",
    "id": "http://openapis.org/v3/schema.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "description": "This is the root document object of the Discovery Format.",
    "required": [
        "kind",
        "discoveryVersion"
    ],
    "additionalProperties": false,
    "properties": {
        "kind": {
            "type": "string"
        },
        "discoveryVersion": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "version": {
            "type": "string"
        },
        "revision": {
            "type": "string"
        },
        "title": {
            "type": "string"
        },
        "description": {
            "type": "string"
        },
        "icons": {
            "$ref": "#/definitions/icons"
        },
        "documentationLink": {
            "type": "string"
        },
        "labels": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "protocol": {
            "type": "string"
        },
        "baseUrl": {
            "type": "string"
        },
        "basePath": {
            "type": "string"
        },
        "rootUrl": {
            "type": "string"
        },
        "servicePath": {
            "type": "string"
        },
        "batchPath": {
            "type": "string"
        },
        "parameters": {
            "$ref": "#/definitions/parameters"
        },
        "auth": {
            "$ref": "#/definitions/auth"
        },
        "features": {
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "schemas": {
            "$ref": "#/definitions/schemas"
        },
        "methods": {
            "$ref": "#/definitions/methods"
        },
        "resources": {
            "$ref": "#/definitions/resources"
        },
        "etag": {
            "type": "string"
        },
        "ownerDomain": {
            "type": "string"
        },
        "ownerName": {
            "type": "string"
        },
        "version_module": {
            "type": "boolean"
        },
        "canonicalName": {
            "type": "string"
        },
        "fullyEncodeReservedExpansion": {
            "type": "boolean"
        },
        "packagePath": {
            "type": "string"
        },
        "mtlsRootUrl": {
            "type": "string"
        }
    },
    "definitions": {
        "icons": {
            "type": "object",
            "description": "Icons that represent the API.",
            "required": [
                "x16",
                "x32"
            ],
            "additionalProperties": false,
            "properties": {
                "x16": {
                    "type": "string"
                },
                "x32": {
                    "type": "string"
                }
            }
        },
        "parameters": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/parameter"
            }
        },
        "parameter": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "$ref": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "default": {
                    "type": "string"
                },
                "required": {
                    "type": "boolean"
                },
                "format": {
                    "type": "string"
                },
                "pattern": {
                    "type": "string"
                },
                "minimum": {
                    "type": "string"
                },
                "maximum": {
                    "type": "string"
                },
                "enum": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "enumDescriptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "repeated": {
                    "type": "boolean"
                },
                "location": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/schemas"
                },
                "additionalProperties": {
                    "$ref": "#/definitions/schema"
                },
                "items": {
                    "$ref": "#/definitions/schema"
                },
                "annotations": {
                    "$ref": "#/definitions/annotations"
                }
            }
        },
        "auth": {
            "type": "object",
            "properties": {
                "oauth2": {
                    "type": "object",
                    "properties": {
                        "scopes": {
                            "$ref": "#/definitions/scopes"
                        }
                    }
                }
            }
        },
        "schemas": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/schema"
            }
        },
        "schema": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "default": {
                    "type": "string"
                },
                "required": {
                    "type": "boolean"
                },
                "format": {
                    "type": "string"
                },
                "pattern": {
                    "type": "string"
                },
                "minimum": {
                    "type": "string"
                },
                "maximum": {
                    "type": "string"
                },
                "enum": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "enumDescriptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "repeated": {
                    "type": "boolean"
                },
                "location": {
                    "type": "string"
                },
                "properties": {
                    "$ref": "#/definitions/schemas"
                },
                "additionalProperties": {
                    "$ref": "#/definitions/schema"
                },
                "items": {
                    "$ref": "#/definitions/schema"
                },
                "$ref": {
                    "type": "string"
                },
                "annotations": {
                    "$ref": "#/definitions/annotations"
                },
                "readOnly": {
                    "type": "boolean"
                }
            }
        },
        "methods": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/method"
            }
        },
        "method": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "httpMethod": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "parameters": {
                    "$ref": "#/definitions/parameters"
                },
                "parameterOrder": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "request": {
                    "type": "object",
                    "properties": {
                        "$ref": {
                            "type": "string"
                        },
                        "parameterName": {
                            "type": "string"
                        }
                    }
                },
                "response": {
                    "type": "object",
                    "properties": {
                        "$ref": {
                            "type": "string"
                        }
                    }
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "supportsMediaDownload": {
                    "type": "boolean"
                },
                "supportsMediaUpload": {
                    "type": "boolean"
                },
                "useMediaDownloadService": {
                    "type": "boolean"
                },
                "mediaUpload": {
                    "$ref": "#/definitions/mediaUpload"
                },
                "supportsSubscription": {
                    "type": "boolean"
                },
                "flatPath": {
                    "type": "string"
                },
                "etagRequired": {
                    "type": "boolean"
                }
            }
        },
        "resources": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/resource"
            }
        },
        "resource": {
            "type": "object",
            "properties": {
                "methods": {
                    "$ref": "#/definitions/methods"
                },
                "resources": {
                    "$ref": "#/definitions/resources"
                }
            }
        },
        "annotations": {
            "type": "object",
            "properties": {
                "required": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "scopes": {
            "type": "object",
            "additionalProperties": {
                "$ref": "#/definitions/scope"
            }
        },
        "scope": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                }
            }
        },
        "mediaUpload": {
            "type": "object",
            "properties": {
                "accept": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "maxSize": {
                    "type": "string"
                },
                "protocols": {
                    "type": "object",
                    "properties": {
                        "simple": {
                            "type": "object",
                            "properties": {
                                "multipart": {
                                    "type": "boolean"
                                },
                                "path": {
                                    "type": "string"
                                }
                            }
                        },
                        "resumable": {
                            "type": "object",
                            "properties": {
                                "multipart": {
                                    "type": "boolean"
                                },
                                "path": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                },
                "supportsSubscription": {
                    "type": "boolean"
                }
            }
        }
    }
}