{
  "$id": "https://schemas.wmo.int/wcmp/2.0/schemas/wcmp2-bundled.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "definitions": {
    "Link": {
      "$id": "https://raw.githubusercontent.com/wmo-im/wcmp2/main/schema/link.yaml",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "description": "WCMP link object definition",
      "properties": {
        "channel": {
          "description": "topic to subscribe to for broker workflow",
          "type": "string"
        },
        "distribution": {
          "description": "the additional information qualifying the service and allowing to build and display the \"access\" information in a portal",
          "properties": {
            "availableFormats": {
              "items": {
                "properties": {
                  "description": {
                    "description": "the individual format description to allow building the portal information",
                    "type": "string"
                  },
                  "documentation": {
                    "description": "links to the associated documentation available for this format when applicable",
                    "items": {
                      "allOf": [
                        {
                          "properties": {
                            "hreflang": {
                              "description": "A hint indicating what the language of the result of dereferencing the link should be.",
                              "example": "en",
                              "type": "string"
                            },
                            "length": {
                              "type": "integer"
                            },
                            "rel": {
                              "description": "The type or semantics of the relation.",
                              "example": "alternate",
                              "type": "string"
                            },
                            "title": {
                              "description": "Used to label the destination of a link such that it can be used as a human-readable identifier.",
                              "example": "Trierer Strasse 70, 53115 Bonn",
                              "type": "string"
                            },
                            "type": {
                              "description": "A hint indicating what the media type of the result of dereferencing the link should be.",
                              "example": "application/geo+json",
                              "type": "string"
                            }
                          },
                          "required": [
                            "rel"
                          ],
                          "type": "object"
                        },
                        {
                          "properties": {
                            "href": {
                              "description": "The URI of the link target.",
                              "example": "http://data.example.com/buildings/123",
                              "type": "string"
                            }
                          },
                          "required": [
                            "href"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "name": {
                    "description": "available format short name.",
                    "type": "string"
                  },
                  "numberOFiles": {
                    "description": "typical number of files disseminated by the distribution mechanism over a period of time",
                    "type": "string"
                  },
                  "samples": {
                    "description": "links of samples that can be openly accessed by users to provide a better understanding of the data",
                    "items": {
                      "$ref": "#/properties/links/items/properties/distribution/properties/availableFormats/items/properties/documentation/items",
                      "type": "object"
                    }
                  },
                  "typicalFilename": {
                    "description": "example filename",
                    "type": "string"
                  },
                  "typicalFilesize": {
                    "description": "size of a typical individual file (e.g. KB, MB, GB)",
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        },
        "hreflang": {
          "description": "A hint indicating what the language of the result of dereferencing the link should be.",
          "example": "en",
          "type": "string"
        },
        "length": {
          "type": "integer"
        },
        "rel": {
          "description": "The type or semantics of the relation.",
          "example": "alternate",
          "type": "string"
        },
        "security": {
          "patternProperties": {
            "^[a-zA-Z0-9\\.\\-_]+$": {
              "oneOf": [
                {
                  "$ref": "#/definitions/Schema_Reference"
                },
                {
                  "$ref": "#/definitions/Schema_SecurityScheme"
                }
              ]
            }
          },
          "type": "object"
        },
        "title": {
          "description": "Used to label the destination of a link such that it can be used as a human-readable identifier.",
          "example": "Trierer Strasse 70, 53115 Bonn",
          "type": "string"
        },
        "type": {
          "description": "A hint indicating what the media type of the result of dereferencing the link should be.",
          "example": "application/geo+json",
          "type": "string"
        }
      },
      "required": [
        "href",
        "rel"
      ],
      "title": "WCMP link object definition",
      "type": "object"
    },
    "Schema_APIKeySecurityScheme": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "description": {
          "type": "string"
        },
        "in": {
          "enum": [
            "header",
            "query",
            "cookie"
          ],
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "enum": [
            "apiKey"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "name",
        "in"
      ],
      "type": "object"
    },
    "Schema_AuthorizationCodeOAuthFlow": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "authorizationUrl": {
          "format": "uri-reference",
          "type": "string"
        },
        "refreshUrl": {
          "format": "uri-reference",
          "type": "string"
        },
        "scopes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "tokenUrl": {
          "format": "uri-reference",
          "type": "string"
        }
      },
      "required": [
        "authorizationUrl",
        "tokenUrl"
      ],
      "type": "object"
    },
    "Schema_ClientCredentialsFlow": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "refreshUrl": {
          "format": "uri-reference",
          "type": "string"
        },
        "scopes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "tokenUrl": {
          "format": "uri-reference",
          "type": "string"
        }
      },
      "required": [
        "tokenUrl"
      ],
      "type": "object"
    },
    "Schema_HTTPSecurityScheme": {
      "additionalProperties": false,
      "oneOf": [
        {
          "description": "Bearer",
          "properties": {
            "scheme": {
              "enum": [
                "bearer"
              ]
            }
          }
        },
        {
          "description": "Non Bearer",
          "not": {
            "required": [
              "bearerFormat"
            ]
          },
          "properties": {
            "scheme": {
              "not": {
                "enum": [
                  "bearer"
                ]
              }
            }
          }
        }
      ],
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "bearerFormat": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "scheme": {
          "type": "string"
        },
        "type": {
          "enum": [
            "http"
          ],
          "type": "string"
        }
      },
      "required": [
        "scheme",
        "type"
      ],
      "type": "object"
    },
    "Schema_ImplicitOAuthFlow": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "authorizationUrl": {
          "format": "uri-reference",
          "type": "string"
        },
        "refreshUrl": {
          "format": "uri-reference",
          "type": "string"
        },
        "scopes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "required": [
        "authorizationUrl",
        "scopes"
      ],
      "type": "object"
    },
    "Schema_OAuth2SecurityScheme": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "description": {
          "type": "string"
        },
        "flows": {
          "$ref": "#/definitions/Schema_OAuthFlows"
        },
        "type": {
          "enum": [
            "oauth2"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "flows"
      ],
      "type": "object"
    },
    "Schema_OAuthFlows": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "authorizationCode": {
          "$ref": "#/definitions/Schema_AuthorizationCodeOAuthFlow"
        },
        "clientCredentials": {
          "$ref": "#/definitions/Schema_ClientCredentialsFlow"
        },
        "implicit": {
          "$ref": "#/definitions/Schema_ImplicitOAuthFlow"
        },
        "password": {
          "$ref": "#/definitions/Schema_PasswordOAuthFlow"
        }
      },
      "type": "object"
    },
    "Schema_OpenIdConnectSecurityScheme": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "description": {
          "type": "string"
        },
        "openIdConnectUrl": {
          "format": "uri-reference",
          "type": "string"
        },
        "type": {
          "enum": [
            "openIdConnect"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "openIdConnectUrl"
      ],
      "type": "object"
    },
    "Schema_PasswordOAuthFlow": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {}
      },
      "properties": {
        "refreshUrl": {
          "format": "uri-reference",
          "type": "string"
        },
        "scopes": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "tokenUrl": {
          "format": "uri-reference",
          "type": "string"
        }
      },
      "required": [
        "tokenUrl"
      ],
      "type": "object"
    },
    "Schema_Reference": {
      "patternProperties": {
        "^\\$ref$": {
          "format": "uri-reference",
          "type": "string"
        }
      },
      "required": [
        "$ref"
      ],
      "type": "object"
    },
    "Schema_SecurityScheme": {
      "oneOf": [
        {
          "$ref": "#/definitions/Schema_APIKeySecurityScheme"
        },
        {
          "$ref": "#/definitions/Schema_HTTPSecurityScheme"
        },
        {
          "$ref": "#/definitions/Schema_OAuth2SecurityScheme"
        },
        {
          "$ref": "#/definitions/Schema_OpenIdConnectSecurityScheme"
        }
      ]
    }
  },
  "description": "WCMP discovery metadata record definition",
  "properties": {
    "additionalExtents": {
      "description": "The extent of the information in the collection. In the Core only spatial and temporal\nextents are specified. Extensions may add additional members to represent other\nextents, for example, thermal or pressure ranges.",
      "properties": {
        "spatial": {
          "description": "The spatial extent of the information in the collection.",
          "properties": {
            "bbox": {
              "description": "One or more bounding boxes that describe the spatial extent of the dataset.\nIn the Core only a single bounding box is supported. Extensions may support\nadditional areas. If multiple areas are provided, the union of the bounding\nboxes describes the spatial extent.",
              "example": [
                -180,
                -90,
                180,
                90
              ],
              "items": {
                "description": "Each bounding box is provided as four or six numbers, depending on\nwhether the coordinate reference system includes a vertical axis\n(height or depth):\n\n* Lower left corner, coordinate axis 1\n* Lower left corner, coordinate axis 2\n* Minimum value, coordinate axis 3 (optional)\n* Upper right corner, coordinate axis 1\n* Upper right corner, coordinate axis 2\n* Maximum value, coordinate axis 3 (optional)\n\nThe coordinate reference system of the values is WGS 84 longitude/latitude\n(http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate\nreference system is specified in `crs`.\n\nFor WGS 84 longitude/latitude the values are in most cases the sequence of\nminimum longitude, minimum latitude, maximum longitude and maximum latitude.\nHowever, in cases where the box spans the antimeridian the first value\n(west-most box edge) is larger than the third value (east-most box edge).\n\nIf the vertical axis is included, the third and the sixth number are\nthe bottom and the top of the 3-dimensional bounding box.\n\nIf a feature has multiple spatial geometry properties, it is the decision of the\nserver whether only a single spatial geometry property is used to determine\nthe extent or all relevant geometries.",
                "oneOf": [
                  {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 4,
                    "minItems": 4,
                    "type": "array"
                  },
                  {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 6,
                    "minItems": 6,
                    "type": "array"
                  }
                ]
              },
              "minItems": 1,
              "type": "array"
            },
            "crs": {
              "default": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]",
              "description": "Coordinate reference system of the coordinates in the spatial extent\n(property `bbox`). The default reference system is WGS 84 longitude/latitude.\nIn the Core this is the only supported coordinate reference system.\nExtensions may support additional coordinate reference systems ",
              "type": "string"
            },
            "name": {
              "description": "Name of the vertical coordinate reference system",
              "type": "string"
            }
          },
          "required": [
            "bbox",
            "crs"
          ],
          "type": "object"
        },
        "temporal": {
          "description": "The temporal extent of the information in the collection.",
          "properties": {
            "interval": {
              "description": "RFC3339 compliant Date and Time",
              "items": {
                "description": "Begin and end times of the time interval. The timestamps are in the\ntemporal coordinate reference system specified in `trs`. By default\nthis is the Gregorian calendar.",
                "example": [
                  [
                    "2020-11-12T12:15Z",
                    "2020-11-12T12:15Z"
                  ],
                  [
                    "2020-11-12T12:15Z",
                    "2020-11-12T12:45Z"
                  ],
                  [
                    "2022-01-14T09:00Z",
                    "2022-01-15T09:00Z"
                  ],
                  [
                    "2022-01-14T09:00Z",
                    "2022-01-14T21:00Z"
                  ],
                  [
                    "2022-01-14T09:00Z",
                    "2022-01-16T09:00Z"
                  ]
                ],
                "items": {
                  "nullable": true,
                  "type": "string"
                },
                "maxItems": 2,
                "minItems": 2,
                "type": "array"
              },
              "minItems": 1,
              "type": "array"
            },
            "name": {
              "description": "Name of the temporal coordinate reference system",
              "type": "string"
            },
            "trs": {
              "default": "http://www.opengis.net/def/uom/ISO-8601/0/Gregorian",
              "description": "Coordinate reference system of the coordinates in the temporal extent\n(property `interval`). The default reference system is the Gregorian calendar.\nIn the Core this is the only supported temporal coordinate reference system.\nExtensions may support additional temporal coordinate reference systems ",
              "example": "TIMECRS[\"DateTime\",TDATUM[\"Gregorian Calendar\"],CS[TemporalDateTime,1],AXIS[\"Time (T)\",future]]",
              "type": "string"
            },
            "values": {
              "description": "Provides information about the time intervals available in the collection \nas ISO8601 compliant dates, either as a time range specified \nas start time / end time  (e.g. 2017-11-14T09:00Z/2017-11-14T21:00Z)  or\nas number of repetitions / start time / interval (e.g. R4/2017-11-14T21:00Z/PT3H) \nor a list of time values (e.g.\n2017-11-14T09:00Z,2017-11-14T12:00Z,2017-11-14T15:00Z,2017-11-14T18:00Z,2017-11-14T21:00Z)",
              "items": {
                "example": [
                  [
                    "2020-11-12T12:15Z"
                  ],
                  [
                    "2020-11-12T12:15Z",
                    "2020-11-12T12:30Z",
                    "2020-11-12T12:45Z"
                  ],
                  [
                    "R12/2022-01-14T09:00Z/2022-01-15T09:00Z"
                  ],
                  [
                    "R12/2022-01-14T09:00Z/PT1H"
                  ],
                  [
                    "R12/2022-01-14T09:00Z/PT1H",
                    "R4/2022-01-14T21:00Z/PT3H",
                    "R4/2022-01-15T09:00Z/PT6H"
                  ]
                ],
                "minItems": 1,
                "nullable": true,
                "type": "string"
              },
              "minItems": 1,
              "type": "array"
            }
          },
          "required": [
            "interval",
            "trs"
          ],
          "type": "object"
        },
        "vertical": {
          "description": "The vertical extent of the information in the collection.",
          "properties": {
            "interval": {
              "description": "In the Core only a single time interval is supported. Extensions may support\nmultiple intervals. If multiple intervals are provided, the union of the\nintervals describes the vertical extent.",
              "items": {
                "description": "minimum and maximum heights of the vertical interval. The values are in the\nvertical coordinate reference system specified in `vrs`. By default\nthis is the vertical coordinate reference system of the source information.",
                "example": [
                  [
                    "2",
                    "100"
                  ]
                ],
                "items": {
                  "nullable": true,
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "minItems": 1,
              "type": "array"
            },
            "name": {
              "description": "Name of the vertical coordinate reference system",
              "type": "string"
            },
            "values": {
              "description": "Vertical level intervals that data in the collection is available at \nthese can be defined as follows:\nmin level / max level (e.g. \"2/100\") or \nas number of repetitions / start level / interval (e.g.\"R5/100/50\") \nor a list of vertical levels (e.g. \"2\",10,\"80\",\"100\"}\nThe value `null` is supported and indicates an open vertical interval.",
              "items": {
                "example": [
                  [
                    "2/100"
                  ],
                  [
                    "R20/1000/-50"
                  ],
                  [
                    "2",
                    "10",
                    "80",
                    "100"
                  ]
                ],
                "nullable": true,
                "type": "string"
              },
              "minItems": 1,
              "type": "array"
            },
            "vrs": {
              "default": "VERTCS[\"WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PARAMETER[\"Vertical_Shift\",0.0],PARAMETER[\"Direction\",1.0],UNIT[\"Meter\",1.0]],AXIS[\"Up\",UP]",
              "description": "Coordinate reference system of the coordinates in the vertical extent\n(property `interval`). ",
              "example": "VERTCS[\"WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PARAMETER[\"Vertical_Shift\",0.0],PARAMETER[\"Direction\",1.0],UNIT[\"Meter\",1.0]],AXIS[\"Up\",UP]",
              "type": "string"
            }
          },
          "required": [
            "interval",
            "vrs"
          ],
          "type": "object"
        }
      },
      "type": "object"
    },
    "conformsTo": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "geometry": {
      "oneOf": [
        {
          "enum": [
            null
          ]
        },
        {
          "oneOf": [
            {
              "properties": {
                "coordinates": {
                  "items": {
                    "type": "number"
                  },
                  "minItems": 2,
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "Point"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "coordinates"
              ],
              "type": "object"
            },
            {
              "properties": {
                "coordinates": {
                  "items": {
                    "items": {
                      "type": "number"
                    },
                    "minItems": 2,
                    "type": "array"
                  },
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "MultiPoint"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "coordinates"
              ],
              "type": "object"
            },
            {
              "properties": {
                "coordinates": {
                  "items": {
                    "items": {
                      "type": "number"
                    },
                    "minItems": 2,
                    "type": "array"
                  },
                  "minItems": 2,
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "LineString"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "coordinates"
              ],
              "type": "object"
            },
            {
              "properties": {
                "coordinates": {
                  "items": {
                    "items": {
                      "items": {
                        "type": "number"
                      },
                      "minItems": 2,
                      "type": "array"
                    },
                    "minItems": 2,
                    "type": "array"
                  },
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "MultiLineString"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "coordinates"
              ],
              "type": "object"
            },
            {
              "properties": {
                "coordinates": {
                  "items": {
                    "items": {
                      "items": {
                        "type": "number"
                      },
                      "minItems": 2,
                      "type": "array"
                    },
                    "minItems": 4,
                    "type": "array"
                  },
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "Polygon"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "coordinates"
              ],
              "type": "object"
            },
            {
              "properties": {
                "coordinates": {
                  "items": {
                    "items": {
                      "items": {
                        "items": {
                          "type": "number"
                        },
                        "minItems": 2,
                        "type": "array"
                      },
                      "minItems": 4,
                      "type": "array"
                    },
                    "type": "array"
                  },
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "MultiPolygon"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "coordinates"
              ],
              "type": "object"
            },
            {
              "properties": {
                "geometries": {
                  "items": {
                    "$ref": "#/properties/geometry/oneOf/1"
                  },
                  "type": "array"
                },
                "type": {
                  "enum": [
                    "GeometryCollection"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "geometries"
              ],
              "type": "object"
            }
          ]
        }
      ]
    },
    "id": {
      "description": "A unique identifier of the catalog record.",
      "format": "uri",
      "type": "string"
    },
    "linkTemplates": {
      "items": {
        "allOf": [
          {
            "properties": {
              "created": {
                "description": "Date of creation of the resource pointed to by the link.",
                "format": "date-time",
                "type": "string"
              },
              "hreflang": {
                "description": "A hint indicating what the language of the result of dereferencing the link should be.",
                "example": "en",
                "type": "string"
              },
              "length": {
                "type": "integer"
              },
              "rel": {
                "description": "The type or semantics of the relation.",
                "example": "alternate",
                "type": "string"
              },
              "title": {
                "description": "Used to label the destination of a link such that it can be used as a human-readable identifier.",
                "example": "Trierer Strasse 70, 53115 Bonn",
                "type": "string"
              },
              "type": {
                "description": "A hint indicating what the media type of the result of dereferencing the link should be.",
                "example": "application/geo+json",
                "type": "string"
              },
              "updated": {
                "description": "Most recent date on which the resource pointed to by the link was changed.",
                "format": "date-time",
                "type": "string"
              }
            },
            "type": "object"
          },
          {
            "properties": {
              "uriTemplate": {
                "description": "Supplies a resolvable URI to a remote resource (or resource fragment).",
                "example": "http://data.example.com/buildings/(building-id}",
                "type": "string"
              },
              "varBase": {
                "description": "The base URI to which the variable name can be appended to retrieve the definition of the variable as a JSON Schema fragment.",
                "format": "url",
                "type": "string"
              },
              "variables": {
                "description": "This object contains one key per substitution variable in the templated URL.  Each key defines the schema of one substitution variable using a JSON Schema fragment and can thus include things like the data type of the variable, enumerations, minimum values, maximum values, etc.",
                "type": "object"
              }
            },
            "required": [
              "uriTemplate"
            ],
            "type": "object"
          }
        ]
      },
      "type": "array"
    },
    "links": {
      "items": {
        "$ref": "#/definitions/Link"
      },
      "minItems": 1,
      "type": "array"
    },
    "properties": {
      "properties": {
        "contacts": {
          "items": {
            "allOf": [
              {
                "additionalProperties": false,
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "organization"
                    ]
                  }
                ],
                "description": "Identification of, and means of communication with, person responsible\nfor the resource.",
                "properties": {
                  "addresses": {
                    "description": "Physical location at which contact can be made.",
                    "items": {
                      "properties": {
                        "administrativeArea": {
                          "description": "State or province of the location.",
                          "type": "string"
                        },
                        "city": {
                          "description": "City for the location.",
                          "type": "string"
                        },
                        "country": {
                          "description": "Country of the physical address.  ISO 3166-1 is recommended.",
                          "type": "string"
                        },
                        "deliveryPoint": {
                          "description": "Address lines for the location.",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "postalCode": {
                          "description": "ZIP or other postal code.",
                          "type": "string"
                        },
                        "roles": {
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/roles",
                          "description": "The type of address (e.g. office, home, etc.)."
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "contactInstructions": {
                    "description": "Supplemental instructions on how or when to contact the\nresponsible party.",
                    "type": "string"
                  },
                  "emails": {
                    "description": "Email addresses at which contact can be made.",
                    "items": {
                      "properties": {
                        "roles": {
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/roles",
                          "description": "The type of email (e.g. home, work, etc.)."
                        },
                        "value": {
                          "description": "The value is the email number itself.",
                          "format": "email",
                          "type": "string"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "hoursOfService": {
                    "description": "Time period when the contact can be contacted.",
                    "example": "Hours: Mo-Fr 10am-7pm Sa 10am-22pm Su 10am-21pm",
                    "type": "string"
                  },
                  "identifier": {
                    "description": "A value uniquely identifying a contact.",
                    "type": "string"
                  },
                  "links": {
                    "description": "On-line information about the contact.",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/logo/allOf/0"
                        },
                        {
                          "required": [
                            "type"
                          ],
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "logo": {
                    "allOf": [
                      {
                        "properties": {
                          "href": {
                            "example": "http://data.example.com/buildings/123",
                            "type": "string"
                          },
                          "hreflang": {
                            "example": "en",
                            "type": "string"
                          },
                          "length": {
                            "type": "integer"
                          },
                          "rel": {
                            "example": "alternate",
                            "type": "string"
                          },
                          "title": {
                            "example": "Trierer Strasse 70, 53115 Bonn",
                            "type": "string"
                          },
                          "type": {
                            "example": "application/geo+json",
                            "type": "string"
                          }
                        },
                        "required": [
                          "href",
                          "rel"
                        ],
                        "type": "object"
                      },
                      {
                        "properties": {
                          "rel": {
                            "enum": [
                              "icon"
                            ]
                          }
                        },
                        "required": [
                          "rel",
                          "type"
                        ],
                        "type": "object"
                      }
                    ],
                    "description": "Graphic identifying a contact. The link relation should be `icon` and the media type should be an image media type."
                  },
                  "name": {
                    "description": "The name of the responsible person.",
                    "type": "string"
                  },
                  "organization": {
                    "description": "Organization/affiliation of the contact.",
                    "type": "string"
                  },
                  "phones": {
                    "description": "Telephone numbers at which contact can be made.",
                    "items": {
                      "properties": {
                        "roles": {
                          "$ref": "#/properties/properties/properties/contacts/items/allOf/0/properties/roles",
                          "description": "The type of phone number (e.g. home, work, fax, etc.)."
                        },
                        "value": {
                          "description": "The value is the phone number itself.",
                          "example": "+14165550142",
                          "pattern": "^\\+[1-9]{1}[0-9]{3,14}$",
                          "type": "string"
                        }
                      },
                      "required": [
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "position": {
                    "description": "The name of the role or position of the responsible person taken from the organization's formal organizational hierarchy or chart.",
                    "type": "string"
                  },
                  "roles": {
                    "description": "The set of named duties, job functions and/or permissions associated with this contact. (e.g. developer, administrator, etc.).",
                    "items": {
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "organization"
                ],
                "type": "object"
              }
            ]
          },
          "minItems": 1,
          "type": "array"
        },
        "created": {
          "description": "Date of creation of this record.",
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "description": "A free-text account of the resource.",
          "type": "string"
        },
        "externalIds": {
          "description": "An identifier for the resource assigned by an external (to the catalog) entity.",
          "items": {
            "properties": {
              "scheme": {
                "description": "A reference to an authority or identifier for a knowledge organization system from which the external identifier was obtained.  It is recommended that the identifier be a resolvable URI.",
                "type": "string"
              },
              "value": {
                "description": "The value of the identifier.",
                "type": "string"
              }
            },
            "required": [
              "value"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "keywords": {
          "description": "The topic or topics of the resource. Typically represented using free-form keywords, tags, key phrases, or classification codes.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "rights": {
          "description": "A statement that concerns all rights not addressed by the license such as a copyright statement.",
          "type": "string"
        },
        "themes": {
          "items": {
            "properties": {
              "concepts": {
                "description": "One or more entity/concept identifiers from this knowledge system. it is recommended that a resolvable URI be used for each entity/concept identifier.",
                "items": {
                  "properties": {
                    "description": {
                      "description": "A human readable description for the concept.",
                      "type": "string"
                    },
                    "id": {
                      "description": "An identifier for the concept.",
                      "type": "string"
                    },
                    "title": {
                      "description": "A human readable title for the concept.",
                      "type": "string"
                    },
                    "url": {
                      "description": "A URI providing further description of the concept.",
                      "format": "uri",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "type": "object"
                },
                "minItems": 1,
                "type": "array"
              },
              "scheme": {
                "description": "An identifier for the knowledge organization system used to classify the resource.  It is recommended that the identifier be a resolvable URI.  The list of schemes used in a searchable catalog can be determined by inspecting the server's OpenAPI document or, if the server implements CQL2, by exposing a queryable (e.g. named `scheme`) and enumerating the list of schemes in the queryable's schema definition.",
                "type": "string"
              }
            },
            "required": [
              "concepts",
              "scheme"
            ],
            "type": "object"
          },
          "minItems": 1,
          "type": "array"
        },
        "title": {
          "description": "A human-readable name given to the resource.",
          "type": "string"
        },
        "type": {
          "description": "The nature or genre of the resource. The value should be a code, convenient for filtering records. Where available, a link to the canonical URI of the record type resource will be added to the 'links' property.",
          "maxLength": 64,
          "type": "string"
        },
        "updated": {
          "description": "The most recent date on which the record was changed.",
          "format": "date-time",
          "type": "string"
        },
        "version": {
          "description": "The version or edition of a given dataset.",
          "type": "string"
        },
        "wmo:dataPolicy": {
          "description": "The data policy definition as per the WMO Unified Data Policy Resolution (Res.1) [23].",
          "enum": [
            "core",
            "recommended"
          ],
          "type": "string"
        },
        "wmo:status": {
          "$ref": "#/properties/properties/properties/themes/items/properties/concepts/items",
          "description": "The operational status of a given dataset."
        }
      },
      "required": [
        "type",
        "title",
        "description",
        "contacts",
        "created"
      ],
      "type": "object"
    },
    "time": {
      "oneOf": [
        {
          "enum": [
            null
          ]
        },
        {
          "properties": {
            "date": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string"
            },
            "interval": {
              "items": {
                "oneOf": [
                  {
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^\\d{4}-\\d{2}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^\\d{4}$",
                    "type": "string"
                  },
                  {
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$",
                    "type": "string"
                  },
                  {
                    "pattern": "^T\\d{2}(:\\d{2})?(:\\d{2})?(?:\\.\\d+)?Z$",
                    "type": "string"
                  },
                  {
                    "enum": [
                      ".."
                    ],
                    "type": "string"
                  }
                ]
              },
              "maxItems": 2,
              "minItems": 2,
              "type": "array"
            },
            "resolution": {
              "description": "Minimum time period resolvable in the dataset, as an ISO 8601 duration",
              "example": [
                "P1D"
              ],
              "type": "string"
            },
            "timestamp": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$",
              "type": "string"
            }
          },
          "type": "object"
        }
      ]
    },
    "type": {
      "enum": [
        "Feature"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "conformsTo",
    "type",
    "time",
    "geometry",
    "properties",
    "links"
  ],
  "title": "WCMP discovery metadata record definition"
}