{
 "kind": "discovery#restDescription",
 "etag": "\"kEk3sFj6Ef5_yR1-H3bAO6qw9mI/3m5rB86FE5KuW1K3jAl88AxCreg\"",
 "discoveryVersion": "v1",
 "id": "additionalpropsobjs:v1",
 "name": "additionalpropsobjs",
 "version": "v1",
 "title": "Example API",
 "description": "The Example API demonstrates an associative array.",
 "ownerDomain": "google.com",
 "ownerName": "Google",
 "protocol": "rest",
 "schemas": {
  "GeoJsonGeometry": {
   "id": "GeoJsonGeometry",
   "type": "object",
   "variant": {
    "discriminant": "type",
    "map": [
     {
      "type_value": "GeometryCollection",
      "$ref": "GeoJsonGeometryCollection"
     },
     {
      "type_value": "LineString",
      "$ref": "GeoJsonLineString"
     },
     {
      "type_value": "MultiLineString",
      "$ref": "GeoJsonMultiLineString"
     },
     {
      "type_value": "MultiPoint",
      "$ref": "GeoJsonMultiPoint"
     },
     {
      "type_value": "MultiPolygon",
      "$ref": "GeoJsonMultiPolygon"
     },
     {
      "type_value": "Point",
      "$ref": "GeoJsonPoint"
     },
     {
      "type_value": "Polygon",
      "$ref": "GeoJsonPolygon"
     }
    ]
   }
  },
  "GeoJsonGeometryCollection": {
   "id": "GeoJsonGeometryCollection",
   "type": "object",
   "description": "A heterogenous collection of GeoJsonGeometry objects.",
   "properties": {
    "geometries": {
     "type": "array",
     "description": "An array of geometry objects. There must be at least 2 different types of geometries in the array.",
     "items": {
      "$ref": "GeoJsonGeometry"
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a GeoJsonGeometryCollection.",
     "enum": [
      "GeometryCollection"
     ],
     "enumDescriptions": [
      ""
     ]
    }
   }
  },
  "GeoJsonLineString": {
   "id": "GeoJsonLineString",
   "type": "object",
   "properties": {
    "coordinates": {
     "type": "array",
     "description": "An array of two or more positions, representing a line.",
     "items": {
      "$ref": "GeoJsonPosition"
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a GeoJsonLineString.",
     "enum": [
      "LineString"
     ],
     "enumDescriptions": [
      ""
     ]
    }
   }
  },
  "GeoJsonMultiLineString": {
   "id": "GeoJsonMultiLineString",
   "type": "object",
   "description": "Multi Line String",
   "properties": {
    "coordinates": {
     "type": "array",
     "description": "An array of at least two GeoJsonLineString coordinate arrays.",
     "items": {
      "type": "array",
      "items": {
       "$ref": "GeoJsonPosition"
      }
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a GeoJsonMultiLineString.",
     "enum": [
      "MultiLineString"
     ],
     "enumDescriptions": [
      ""
     ]
    }
   }
  },
  "GeoJsonMultiPoint": {
   "id": "GeoJsonMultiPoint",
   "type": "object",
   "properties": {
    "coordinates": {
     "type": "array",
     "description": "An array of at least two GeoJsonPoint coordinate arrays.",
     "items": {
      "$ref": "GeoJsonPosition"
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a GeoJsonMultiPoint.",
     "enum": [
      "MultiPoint"
     ],
     "enumDescriptions": [
      ""
     ]
    }
   }
  },
  "GeoJsonMultiPolygon": {
   "id": "GeoJsonMultiPolygon",
   "type": "object",
   "properties": {
    "coordinates": {
     "type": "array",
     "description": "An array of at least two GeoJsonPolygon coordinate arrays.",
     "items": {
      "type": "array",
      "items": {
       "type": "array",
       "items": {
        "$ref": "GeoJsonPosition"
       }
      }
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a GeoJsonMultiPolygon.",
     "enum": [
      "MultiPolygon"
     ],
     "enumDescriptions": [
      ""
     ]
    }
   }
  },
  "GeoJsonPoint": {
   "id": "GeoJsonPoint",
   "type": "object",
   "properties": {
    "coordinates": {
     "$ref": "GeoJsonPosition",
     "description": "A single GeoJsonPosition, specifying the location of the point."
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a GeoJsonPoint.",
     "enum": [
      "Point"
     ],
     "enumDescriptions": [
      ""
     ]
    }
   }
  },
  "GeoJsonPolygon": {
   "id": "GeoJsonPolygon",
   "type": "object",
   "properties": {
    "coordinates": {
     "type": "array",
     "description": "An array of LinearRings, each of which is an array of four or more GeoJsonPositions. The first and last coordinates in each LinearRing must be the same. For polygons with multiple rings, the first LinearRing is the external ring, with subsequent rings being interior rings (i.e. hole). All LinearRings must contain GeoJsonPositions in counter-clockwise order.",
     "items": {
      "type": "array",
      "items": {
       "$ref": "GeoJsonPosition"
      }
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a GeoJsonPolygon.",
     "enum": [
      "Polygon"
     ],
     "enumDescriptions": [
      ""
     ]
    }
   }
  },
  "GeoJsonPosition": {
   "id": "GeoJsonPosition",
   "type": "array",
   "description": "A position represents a geographical position as an array containing a longitude and a latitude, and optionally an altitude, in that order. All Geometry objects make use of positions to represent geometries as nested arrays. The structure of the array is governed by the type of the geometry.",
   "items": {
    "type": "number",
    "format": "double"
   }
  },
  "MapFolder": {
   "id": "MapFolder",
   "type": "object",
   "properties": {
    "contents": {
     "type": "array",
     "items": {
      "$ref": "MapItem"
     }
    },
    "defaultViewport": {
     "type": "array",
     "description": "An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.",
     "items": {
      "type": "number",
      "format": "double"
     }
    },
    "expandable": {
     "type": "boolean",
     "description": "The expandability setting of this MapFolder. If true, the folder can be expanded."
    },
    "key": {
     "type": "string",
     "description": "A user defined alias for this MapFolder, specific to this Map."
    },
    "name": {
     "type": "string",
     "description": "The name of this MapFolder.",
     "annotations": {
      "required": [
       "mapsengine.maps.create",
       "mapsengine.maps.patch"
      ]
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a MapFolder.",
     "enum": [
      "folder"
     ],
     "enumDescriptions": [
      ""
     ],
     "annotations": {
      "required": [
       "mapsengine.maps.create",
       "mapsengine.maps.patch"
      ]
     }
    },
    "visibility": {
     "type": "string",
     "description": "The visibility setting of this MapFolder. One of \"defaultOn\" or \"defaultOff\"."
    }
   }
  },
  "MapItem": {
   "id": "MapItem",
   "type": "object",
   "variant": {
    "discriminant": "type",
    "map": [
     {
      "type_value": "folder",
      "$ref": "MapFolder"
     },
     {
      "type_value": "kmlLink",
      "$ref": "MapKmlLink"
     },
     {
      "type_value": "layer",
      "$ref": "MapLayer"
     }
    ]
   }
  },
  "MapKmlLink": {
   "id": "MapKmlLink",
   "type": "object",
   "properties": {
    "defaultViewport": {
     "type": "array",
     "description": "An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.",
     "items": {
      "type": "number",
      "format": "double"
     }
    },
    "kmlUrl": {
     "type": "string",
     "description": "The URL to the KML file represented by this MapKmlLink.",
     "annotations": {
      "required": [
       "mapsengine.maps.create",
       "mapsengine.maps.patch"
      ]
     }
    },
    "name": {
     "type": "string",
     "description": "The name of this MapKmlLink.",
     "annotations": {
      "required": [
       "mapsengine.maps.create",
       "mapsengine.maps.patch"
      ]
     }
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a MapKmlLink.",
     "enum": [
      "kmlLink"
     ],
     "enumDescriptions": [
      ""
     ],
     "annotations": {
      "required": [
       "mapsengine.maps.create",
       "mapsengine.maps.patch"
      ]
     }
    },
    "visibility": {
     "type": "string",
     "description": "The visibility setting of this MapKmlLink. One of \"defaultOn\" or \"defaultOff\"."
    }
   }
  },
  "MapLayer": {
   "id": "MapLayer",
   "type": "object",
   "properties": {
    "defaultViewport": {
     "type": "array",
     "description": "An array of four numbers (west, south, east, north) which defines the rectangular bounding box of the default viewport. The numbers represent latitude and longitude in decimal degrees.",
     "items": {
      "type": "number",
      "format": "double"
     }
    },
    "id": {
     "type": "string",
     "description": "The ID of this MapLayer. This ID can be used to request more details about the layer.",
     "annotations": {
      "required": [
       "mapsengine.maps.create",
       "mapsengine.maps.patch"
      ]
     }
    },
    "key": {
     "type": "string",
     "description": "A user defined alias for this MapLayer, specific to this Map."
    },
    "name": {
     "type": "string",
     "description": "The name of this MapLayer."
    },
    "type": {
     "type": "string",
     "description": "Identifies this object as a MapLayer.",
     "enum": [
      "layer"
     ],
     "enumDescriptions": [
      ""
     ],
     "annotations": {
      "required": [
       "mapsengine.maps.create",
       "mapsengine.maps.patch"
      ]
     }
    },
    "visibility": {
     "type": "string",
     "description": "The visibility setting of this MapLayer. One of \"defaultOn\" or \"defaultOff\"."
    }
   }
  }
 }
}
