{
  "type": "CityJSONExtension",
  "name": "Generic",
  "uri": "https://www.cityjson.org/extensions/download/generic.ext.json",
  "version": "1.0.1",
  "versionCityJSON": "1.1",
  "description": "Extension to handle GenericCityObject; meant as a template to learn how to construct an Extension",
  
  "extraRootProperties": {},     
  
  "extraAttributes": {},

  "extraCityObjects": {
    "+GenericCityObject": {
      "allOf": [
        { "$ref": "cityobjects.schema.json#/_AbstractCityObject" },
        {
          "properties": {
            "type": { "enum": [ "+GenericCityObject" ] },
            "attributes": {
              "type": "object",
              "properties": {
                "my-attribute": { "type": "string" }
              }
            },
            "geometry": {
              "type": "array",
              "items": {
                "oneOf": [
                  { "$ref": "geomprimitives.schema.json#/MultiPoint" },
                  { "$ref": "geomprimitives.schema.json#/MultiLineString" },
                  { "$ref": "geomprimitives.schema.json#/MultiSurface" },
                  { "$ref": "geomprimitives.schema.json#/CompositeSurface" },
                  { "$ref": "geomprimitives.schema.json#/Solid" },
                  { "$ref": "geomprimitives.schema.json#/MultiSolid" },
                  { "$ref": "geomprimitives.schema.json#/CompositeSolid" },
                  { "$ref": "geomtemplates.schema.json#/GeometryInstance" }
                ]
              }
            }
          },
          "required": [ "type" ]
        }
      ]
    }
  }
  
}