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
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
