World Meteorological Organization

Date: 2026-01-20

Version: 1.0.0-DRAFT-2026-01-20

Document location: TBD

Document status: DRAFT

Standing Committee on Information Management and Technology (SC-IMT)[1]

Commission for Observation, Infrastructure and Information Systems (INFCOM)[2]

Copyright © 2024 World Meteorological Organization (WMO)

Table of Contents

i. Abstract

WIS2 is comprised of a network of Global Services which provide highly available services for discovery, subscription, notification and download, based on the publication of data by WIS2 Nodes.

Successful operation of WIS2 Global Services will depend on running well-managed IT environments with a very high level of reliability so that all WIS Users and WIS2 Nodes will be able to access and provide the data they need for their duties. The WIS2 Guide defines service levels and performance indicators [3] for Global Services in order to monitor and maintain the health of the network.

This document defines the content, structure, and encoding for WIS2 monitoring events. This standard is also an extension of the CloudEvents specification.

WIS2 Monitoring Event topics shall leverage various aspects of the WIS2 Topic Hierarchy (such as centre identifiers). WIS2 Monitoring Events messages shall be encoded using CloudEvents along with a domain specific model for WIS2.

ii. Keywords

The following are keywords to be used by search engines and document catalogues.

wmo, wis 2.0, weather, climate, water, metadata, pubsub, event, mqp, monitoring, cloudevents, JSON

iii. Security Considerations

TODO

No security considerations have been made for this standard.

1. Scope

This document defines the content, structure, and encoding for WIS2 Monitoring Events. This standard is also an extension of the CloudEvents specification.

This specification defines the conformance requirements for WIS2 Monitoring Events (topic hierarchy and notification message). Annex A defines the abstract test suite.

2. Conformance

Conformance with this standard shall be checked using the tests specified in Annex A (normative) of this document.

The WIS2 Topic Hierarchy defines the topic hierarchy used by WIS message brokers to manage message delivery to subscribers and / or recipients.

CloudEvents is a specification for describing event data in common formats to provide interoperability across services, platforms and systems. This standard is also an extension of CloudEvents.

Global Service providers are required to comply with all conformance classes of this specification in support of providing highly available services for discovery, subscription, notification and download of data and metadata within WIS2.

WMO shall publish guidance material to assist data providers in constructing WIS2 Monitoring Event Topics and Event Messages.

This standard identifies numerous Requirements Classes which define the functional requirements.

The mandatory Requirements Classes for this specification are:

  • "WIS2 Monitoring Event Topic"

  • "WIS2 Monitoring Event Message: Core"

3. References

  • IETF: RFC-8259 The JavaScript Object Notation (JSON) Data Interchange Format (2016) [4]

  • IETF: RFC 3339: Date and Time on the Internet: Timestamps (2002) [5]

  • W3C: Data on the Web Best Practices, W3C Recommendation (2017) [6]

  • IANA: Link Relation Types (2020) [7]

  • IETF: JSON Schema (2022) [8]

  • CloudEvents: CloudEvents specification (2025) [9]

  • WMO: WIS2 Topic Hierarchy (2022) [10]

  • WMO: WIS2 Notification Message (2022) [11]

  • WMO: WIS2 Metric Hierarchy (2025) [12]

4. Terms and definitions

This document uses the terms defined in OGC Policy Directive 49, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this Standard and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2.

This document also uses terms defined in the OGC Standard for Modular specifications (OGC 08-131r3), also known as the 'ModSpec'. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec.

The following additional terms and definitions also apply.

4.1. Abbreviated terms

Table 1. Symbols and abbreviated terms
Abbreviation Term

API

Application Programming Interface

DCPC

Data Collection and Production Centres

GDC

Global Discovery Catalogue

GIS

Geographic Information System

GISC

Global Information System Centre

HTML

Hypertext Markup Language

HTTP

Hypertext Transfer Protocol

HTTPS

Hypertext Transfer Protocol Secure

IANA

Internet Assigned Numbers Authority

IETF

Internet Engineering Task Force

ISO

International Organization for Standardization

JSON

JavaScript Object Notation

MQP

Message Queuing Protocol

MQTT

Message Queuing Telemetry Transport

NC

National Centre

NWP

Numerical Weather Prediction

OGC

Open Geospatial Consortium

PubSub

Publish / Subscribe

URI

Uniform Resource Identifier

URL

Uniform Resource Locator

URN

Uniform Resource Name

UUID

Universally Unique Identifier

W3C

World Wide Web Consortium

WCMP

WMO Core Metadata Profile

WIS

WMO Information System

WME

WIS2 Monitoring Events

WMEM

WIS2 Monitoring Event Message

WMET

WIS2 Monitoring Event Topic

WMO

World Meteorological Organization

WNM

WIS2 Notification Message

WTH

WIS2 Topic Hierarchy

5. Conventions

This section provides details and examples for any conventions used in the document. Examples of conventions are symbols, abbreviations, use of JSON Schema, or special notes regarding how to read the document.

5.1. Identifiers

The normative provisions in this Standard are denoted by the URI:

All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base.

5.2. Examples

Monitoring event topic examples provided in this specification are encoded as plain text strings.

Monitoring event message examples provided in this specification are encoded as JSON.

Complete examples can be found at https://schemas.wmo.int/wme/1.0.0/examples

5.3. Codelists bundle

Given the WIS2 Monitoring Event Topic extends the WIS2 Topic Hierarchy, no additional codelists bundles are made available given the WTH codelists bundles satisfy the requirements of this specification.

5.4. Schemas

Monitoring event message schemas can be found at https://schemas.wmo.int/wme/1.0.0

5.5. Schema representation

JSON Schema [13] objects are used throughout this standard to define the structure of metadata records. These schema objects are also typically represented using YAML [14]. YAML is a superset of JSON, and in this standard is regarded as equivalent.

Event message instances are always defined as JSON.

5.5.1. Properties

A JSON property represents a key-value pair, where the key is the name of the property and the value is a standard JSON data type.

"myPropertyName": "test123"

6. Introduction

6.1. Motivation

WIS2 Global Services provide high availability capabilities in support of discovery, access and exchange of weather/climate/water/environmental data on WIS2.

Once connected to the WIS2 infrastructure, all Global Services will be monitored by the WIS2 Global Monitor. This will allow for the detection of service anomalies, interruptions or quality assessments of metadata. These "events" can jeopardize normal WIS2 operations.

WIS2 Nodes may plan for data and/or service outages, and may wish to provide a notice to WIS2 operations for planning and recovery.

A mechanism to notify on and describe such events in support of WIS2 operations and corrective action. Using the WIS2 Topic Hierarchy and CloudEvents baselines for this specification provide broad interoperability and low barrier publication and event handling for the WIS2 ecosystem and beyond.

6.2. Scenarios

The following scenarios are useful in understanding the drivers and principles that were used in the development of this specification:

  • Global Service service down: a Global Service may cease to operate for any given reason

  • Global Service malfunctioning: a Global Service may fail to function normally (e.g.: Global Cache not providing messages, etc.)

  • WIS2 Node malfunctioning:

    • a WIS2 Node may publish malformed or invalid WIS2 Notification Messages

    • a WIS2 Node may provide correct notifications but no data

  • WIS2 Node data/service outages:

    • a WIS2 Node may be down for maintenance for a given date/time window

These scenarios can be realized as planned/expected outages, or occur suddenly, in an unexpected manner.

Those events should be detected, and the Global Services or WIS2 Nodes should be informed to drive corrective action and succssful operation of WIS2.

7. The WIS2 Monitoring Event Topic

The WIS2 Monitoring Event Topic (WMET) provides a mechanism for Global Services to provide reports and notifications to WIS2 Global Services, as well as data/metadata reports for WIS2 Nodes to subscribe to and receive notifications.

7.1. Requirements Class "WIS2 Monitoring Event Topic"

7.1.1. Overview

This Requirements Class provides requirements for the WIS2 Monitoring Event Topic.

Requirements Class

http://wis.wmo.int/spec/wme/1/req/monitoring-event-topic

Target type

Topic classification

Dependency

WIS2 Topic Hierarchy

Pre-conditions

Topic levels 2-3 conform to the WIS2 Topic Hierarchy.

Successful operation of the WIS2 infrastructure and monitoring events of same should be information that is made available to all Global Services and WIS2 Nodes, and not designed for communication to external users or data consumers. Global Services need to be able to report information to Global Services and WIS2 Nodes to trigger corrective action.

The WMET is composed of four levels: A fixed channel of monitor, WTH primary topic levels 2 (version), 3 (system), and 4 (centre identifier). Level 4 is the centre identifier of the subject of the event notification (the subject).

The representation is encoded as a simple text string of values in each topic level separated by a slash (/).

Examples:

monitor/a/wis2/ca-eccc-msc

monitor/a/wis2/fr-meteofrance

The table below provides an overview of the primary topic levels.

Table 2. WMET primary topic levels
Level Name Description

1

channel

Location of where the data originates from (fixed value of monitor)

2

version

Alphabetical version of the topic hierarchy

3

system

Fixed value of wis2 for WIS2

4

centre-id

Acronym proposed by Member and endorsed by WMO Secretariat, of the centre identifier of the subject of the event

7.1.2. Publishing

A simple ruleset is defined for publishing events to WMET that enables the clear identification of the event subject, to trigger corrective action or as informative notice.

Requirement 1

/req/monitoring-event-topic/publishing

A

Events SHALL NOT be published with a topic that is not defined in this specification.

B

Events SHALL be published to exactly level 4.

C

Event topic level 1 SHALL be named monitor.

D

Event topic level 2 SHALL be named a.

E

Event topic level 3 SHALL be named wis2.

F

Event topic level 4 SHALL be a centre identifier (as per the WIS2 Topic Hierarchy) of the subject of the event.

8. WIS2 Monitoring Event Message

Event messages published via the WIS2 Monitoring Event Topic (WMET) are defined using the CloudEvents specification as a building block.

Examples of event messages, include, but are not limited to:

  • a WIS2 Global Discovery Catalogue’s metadata archive being older than 24 hours

  • a WIS2 Node being disconnected from all Global Brokers

  • a WIS2 Node not providing any data in the last 6 hours

  • a WIS2 Node providing a notice on service interruptions during a given date/time window

8.1. Requirements Class "WIS2 Monitoring Event Message: Core"

8.1.1. Overview

This Requirements Class provides baseline requirements for all WIS2 event message types.

CloudEvents provides a standards-based encoding for all event data, and provides mechanisms for extensibility.

Requirements Class

http://wis.wmo.int/spec/wme/1/req/monitoring-event-message-core

Target type

Event metadata

Dependency

CloudEvents

Pre-conditions

The event message conforms to the CloudEvents specification.

The table below provides an overview of the set of properties that are included in a WIS2 Monitoring Event Message (WMEM).

Table 3. WMEM core properties
Property Requirement Description

id

Required

A universally unique identifier (UUID) of the message (see Identifier)

specversion

Required

The CloudEvents specification version (see Version)

type

Required

The event type related to the message (see Type)

source

Required

The centre identifier of the event message originator or producer (see Source)

subject

Required

The centre identifier of the subject of the event (see Subject)

time

Required

The date and time of when the notification was published, in RFC3339 format, UTC (see Time)

datacontenttype

Required

The media type of the data content encoding in the event message (application/json) (see Data content type)

dataschema

Required

The JSON Schema that is adhered to by the event message (see Data schema)

data

Required

The event payload as JSON (see Data)

data.conformsTo

Required

The version of WME associated to which the event message conforms (see Data conformance)

data.severity

Required

The severity level of the event (see Data severity)

data.ref

Optional

The identifier that the event is referencing (see Data ref)

data.channel

Optional

The WIS2 channel related to the event (see Data channel)

data.time

Optional

The date/time associated with the event (see Data time)

data.content

Required (any of data.content and/or data.links)

Inline content describing the event, including a human readable title of the event (see Data content)

data.links

Required (any of data.content and/or data.links)

Online linkages for message retrieval or additional resources associated with the event (see Data links)

8.1.2. Validation

The WIS2 Monitoring Event Message schema is based on the Requirements Class WIS2 Monitoring Event Message: Core schema and the associated information model.

Requirement 2

/req/monitoring-event-message-core/validation

A

Each WMEM SHALL validate without error against the Event Message schema.

8.1.3. Message size

The WIS2 Monitoring Event Message allows for the transmission of event messages in a compact manner.

Requirement 3

/req/monitoring-event-message-core/message_size

A

A WMEM message SHALL NOT exceed 8192 bytes.

8.1.4. Identifier

A universally unique identifier of the event using the UUID standard (RFC9562). The identifier is generated by the originator of the event.

Example:

"id": "6e1c7f9f-dd6c-48d9-bbc4-aef0625f1fb8"

Requirement 4

/req/monitoring-event-message-core/id

A

The id property SHALL be a Universally Unique Identifier (UUID).

Recommendation 1

/rec/monitoring-event-message-core/id

A

The id property SHOULD use UUIDv4 for truly random or pseudorandom values.

8.1.5. Version

The CloudEvents specification version of the event message.

Example:

"specversion": "1.0"

Requirement 5

/req/monitoring-event-message-core/version

A

The specversion property SHALL be fixed to "1.0".

8.1.6. Type

The type of event related to the event message, using a reverse DNS notation.

Example:

"type": "int.wmo.wis.wme.event"

Requirement 6

/req/monitoring-event-message-core/type

A

The type property SHALL be encoded using a reverse DNS notation.

B

The type property SHALL be equal to int.wmo.wis.wme.event

8.1.7. Source

The centre identifier of the event message originator or producer (as defined in the [wis2-topic-hierarchy]).

Example:

"source": "ca-eccc-msc-global-discovery-catalogue"

Requirement 7

/req/monitoring-event-message-core/source

A

The source property SHALL be a valid WIS2 centre identifier.

8.1.8. Subject

The centre identifier associated with the description of the event (as defined in the [wis2-topic-hierarchy]).

Example:

"subject": "de-dwd"

Requirement 8

/req/monitoring-event-message-core/subject

A

The subject property SHALL be a valid WIS2 centre identifier.

8.1.9. Time

The time property identifies the date/time when the notification was first posted or published by the originator. The date/time is encoded in RFC3339 format with the Coordinated Universal Time (UTC) timezone (Z).

Example:

"time": "2024-10-17T03:42:23Z"

Requirement 9

/req/monitoring-event-message-core/time

A

A WMEM SHALL provide a time property.

B

The time property SHALL be in RFC3339 format.

C

The time property SHALL be in UTC timezone.

8.1.10. Data content type

The datacontenttype property identifies the media type associated with the event message payload. application/json (JSON) is the required media type for all data specific encodings.

Example:

"datacontenttype": "application/json"

Requirement 10

/req/monitoring-event-message-core/datacontenttype

A

The datacontenttype property SHALL be fixed to application/json.

8.1.11. Data schema

The dataschema property identifies the JSON Schema that is adhered to by event message payload. This is the value of a given JSON Schema’s $id property.

Example:

"dataschema": "https://schemas.wmo.int/wme/1.0.0/schemas/wis2-event-message-bundled.json"

Requirement 11

/req/monitoring-event-message-core/dataschema

A

The dataschema property SHALL be a URL to the WIS2 Monitoring Event Message JSON Schema.

8.1.12. Data

The data property provides the event payload in JSON.

Example:

"data": {
    "conformsTo": [
        "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
    ],
    "severity": "INFO",
    "content": {
        "id": "ab7cd199-ffa3-4909-80be-c78e99791435",
        "title": "WCMP2 ETS report",
        "report_type": "ets",
        "summary": {
            "PASSED": 12,
            "FAILED": 0,
            "SKIPPED": 0
        },
        "generated_by": "pywcmp 0.13.1 (https://github.com/wmo-im/pywcmp)",
        "tests": [
            {
                "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/conformance",
                "code": "PASSED",
                "message": "Passes given schema is compliant/valid"
            },
            ...
        }
    }
}

Requirement 12

/req/monitoring-event-message-core/data

A

The data property SHALL be a JSON encoded payload of a given event.

B

The data property SHALL NOT be an escaped representation of JSON.

C

The data property SHALL have at least a content or links property.

Permission 1

/per/monitoring-event-message-core/data

A

The data property MAY have both a content and links property.

8.1.13. Data conformance

The conformsTo property identifies the version of the WME standard to which the event message conforms. Conformance identification is valuable for version detection and handling of content.

"conformsTo": [
    "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
]

Requirement 13

/req/monitoring-event-message-core/data_conformance

A

A WMEM SHALL provide information on conformance via the OGC API – Records (OARec) record conformsTo property.

B

The conformsTo property SHALL advertise conformance to WMEM.

8.1.14. Data severity

The data.severity property defines a list of severity levels to describe the seriousness of an event.

Example:

"severity": "CRITICAL"

Requirement 14

/req/monitoring-event-message-core/data_severity

A

A WMEM SHALL provide a data.severity property.

B

The data.severity property SHALL be one of the following values:

  • DEBUG

  • INFO

  • WARNING

  • ERROR

  • CRITICAL

8.1.15. Data ref

The data.ref property defines an identifier that the event is referencing (for example, to refer/follow up on a previous monitoring event).

Example:

"ref": "6da24af0-b19f-4106-b583-73cc25a4435d"

8.1.16. Data channel

The data.channel property defines a WIS2 topic that the event may be referring to (for example for a data outage notice).

Example:

"channel": "origin/a/wis2/ar-smn/data/core/weather/surface-based-observations/synop"

Recommendation 2

/rec/monitoring-event-message-core/data_channel

A

The channel property SHOULD be used if the event is based on data being published to a given topic.

8.1.17. Data time

The data.time property defines time interval that the WMEM may be referring to (for example for a data outage notice).

Examples:

"time": {
  "interval": [
      "2025-09-18T12:00:00Z",
      "2025-09-18T16:00:00Z"
  ]
}
"time": {
  "interval": [
      "2025-09-18T12:00:00Z",
      ".."
  ]
}
"time": {
  "interval": [
      "..",
      "2025-09-18T16:00:00Z"
  ]
}

Recommendation 3

/rec/monitoring-event-message-core/data_time

A

The time property SHOULD be used if the event is based on a time interval.

Permission 2

/per/monitoring-event-message-core/data_time

A

The data.time.interval array MAY be fully bounded (i.e. [t1, t2]) or open ended (i.e. [t, ..], [.., t]).

8.1.18. Data content

The data.content property provides an inline description and summary of the event.

Example:

"content": {
    "id": "ab7cd199-ffa3-4909-80be-c78e99791435",
    "title": "WCMP2 ETS report",
    "report_type": "ets",
    "summary": {
        "PASSED": 12,
        "FAILED": 0,
        "SKIPPED": 0
    },
    "generated_by": "pywcmp 0.13.1 (https://github.com/wmo-im/pywcmp)",
    "tests": [
        {
            "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/conformance",
            "code": "PASSED",
            "message": "Passes given schema is compliant/valid"
        },
        ...
    }
}

Requirement 15

/req/monitoring-event-message-core/data_content

A

A WMEM SHALL provide a data.content property, when a data.links property is not provided.

Permission 3

/per/monitoring-event-message-core/data_content

A

A WMEM MAY provide a data.content property while at the same time providing a data.links property..

8.1.18.1. Data content title

The data.content.title property defines a texual summary of the WIS2 Metric Hierarchy alert summary annotations [15].

Example:

"title": "Metadata archive is older than 24 hours"

Requirement 16

/req/monitoring-event-message-core/data_content_title

A

A WMEM SHALL provide a data.content.title property.

B

For alerts, the data.content.title property of a WMEM SHALL be based on WIS2 Metric Hierarchy alert summary annotations.

8.1.18.2. Data content description

The data.content.description property defines a detailed description of the problem, as defined by the issuer of the event.

Example:

"description": "Metadata archive is older than 24 hours.  Please contact the administrator at admin@example.org for more information"

Recommendation 17

/rec/monitoring-event-message-core/data_content_description

A

A WMEM SHOULD provide a data.content.description property.

The data.links array property consists of one or more objects providing URLs to access data.

Each link object provides:

  • An href property with a fully qualified link to access the data;

  • A rel property providing an IANA link relation or WIS link type describing the relationship between the link and the message;

  • A type property providing the media type of the data;

  • A length property providing the length (in bytes) indicating the size of the data;

  • A security property providing a description of the access control mechanism applied (for example, recommended data with restrictions).

Links can be used when including inline messages via data.content is not required, desired, or feasible.

Example: Canonical link
"links": [{
  "href": "https://example.org/global-cache-2025-12-21-13.log.gz",
  "rel": "canonical",
  "type": "application/gzip"
}]
Example: Multiple links
"links": [{
  "href": "https://example.org/global-cache-2025-12-21-13.log.gz",
  "rel": "canonical",
  "type": "application/gzip"
}, {
  "href": "https://example.org/global-cache-log-dashboard/2025-12-21-13",
  "rel": "alternate",
  "type": "text/html"
}]
8.1.19.1. Access control

WMEM links may also provide links to resources that implement access control in support of authentication and authorization. The example demonstrates how to express access control using HTTP Basic authentication for a given Global Cache logging dashboard.

Example: Access controlled link
"links": [{
  "href": "https://example.org/global-cache-log-dashboard/2025-12-21-13",
  "rel": "alternate",
  "type": "text/html",
  "title": "link to Global Cache logging dashboard",
  "security": {
    "default": {
      "type": "http",
      "scheme": "basic",
      "description": "Please contact the service provider for accessing this secured resource."
    }
  }
}]

Annex A: Conformance Class Abstract Test Suite (Normative)

A.1. Conformance Class: WIS2 Monitoring Event Topic

label

http://wis.wmo.int/spec/wme/1/req/monitoring-event-topic

subject

Requirements Class "WIS2 Monitoring Event Topic"

classification

Target Type:Topic Classification

A.1.1. Publishing

label

/conf/monitoring-event-topic/publishing

subject

/req/monitoring-event-topic/publishing

test-purpose

Validate that a given topic meets the conventions of WMET.

Split the topic by the / character, into tokens.

Check that there are exactly 4 tokens.

Check that the first token is a value of monitor.

Check that the second token is a value of a.

Check that the third token is a value of wis2.

Check that the fourth token is a valid centre identifier.

A.2. Conformance Class: WIS2 Monitoring Event Message: Core

label

http://wis.wmo.int/spec/wme/1/req/monitoring-event-message-core

subject

Requirements Class "WIS2 Monitoring Event Message: Core"

classification

Target Type:Event Metadata

A.2.1. Validation

label

/conf/event-message-core/validation

subject

/req/event-message-core/validation

test-purpose

Validate that a WMEM is valid to the authoritative JSON schema.

Run JSON Schema validation on the WMEM against the authoritative JSON schema.

A.2.2. Message size

label

/conf/event-message-core/message_size

subject

/req/event-message-core/message_size

test-purpose

Validate that a WMEM has a valid message size.

Check that the size of the complete WMEM does not exceed 8192 bytes.

A.2.3. Identifier

label

/conf/event-message-core/id

subject

/req/event-message-core/id

test-purpose

Validate that a WMEM has a valid identifier.

Check for the existence of an id property in the WMEM.

Check that the id property is a valid UUID.

A.2.4. Version

label

/conf/event-message-core/version

subject

/req/event-message-core/version

test-purpose

Validate that a WMEM has a valid version.

Check for the existence of a specversion property in the WMEM.

Check that the specversion property is set to 1.0.

A.2.5. Type

label

/conf/event-message-core/type

subject

/req/event-message-core/type

test-purpose

Validate that a WMEM has a valid type.

Check for the existence of a type property in the WMEM.

Check that the type property begins with int.wmo.wis.wme.event.

A.2.6. Source

label

/conf/event-message-core/source

subject

/req/event-message-core/source

test-purpose

Validate that a WMEM has a valid source.

Check for the existence of a source property in the WMEM.

Check that the source property is a valid WIS2 centre identifier.

A.2.7. Subject

label

/conf/event-message-core/subject

subject

/req/event-message-core/subject

test-purpose

Validate that a WMEM has a valid subject.

Check for the existence of a subject property in the WMEM.

Check that the subject property is a valid WIS2 centre identifier.

A.2.8. Time

label

/conf/event-message-core/time

subject

/req/event-message-core/time

test-purpose

Validate that a WMEM has a valid identifier.

Check for the existence of an time property.

Check that the time property is in RFC3339 format.

Check that the time property is in the UTC timezone.

A.2.9. Data content type

label

/conf/event-message-core/datacontenttype

subject

/req/event-message-core/datacontenttype

test-purpose

Validate that a WMEM has a valid data content type.

Check for the existence of a datacontenttype property in the WMEM.

Check that the datacontenttype property is set to application/json.

A.2.10. Data schema

label

/conf/event-message-core/dataschema

subject

/req/event-message-core/dataschema

test-purpose

Validate that a WMEM has a valid data schema.

Check for the existence of a dataschema property in the WMEM.

Issue a HTTP GET request on the value of the dataschema property.

Parse the HTTP response.

Ensure the response is a valid JSON Schema.

A.2.11. Data

label

/conf/event-message-core/data

subject

/req/event-message-core/data

test-purpose

Validate that a WMEM has a valid data payload.

Check for the existence of a data property in the WMEM.

Parse the data property as a JSON object.

A.2.12. Data conformance

label

/conf/event-message-core/data_conformance

subject

/req/event-message-core/data_conformance

test-purpose

Validate that a WMEM provides valid conformance information.

Check for the existence of a data.conformsTo property in the WMEM.

In the WMEM’s data.conformsTo array property, check that ONE of the values is equal to http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core.

A.2.13. Data severity

label

/conf/event-message-core/data_severity

subject

/req/event-message-core/data_severity

test-purpose

Validate that a WMEM has a valid data severity.

Check for the existence of a data.severity property in the WMEM.

Check that the data.wmem-severity property is equal to one of the following values:

  • DEBUG

  • INFO

  • WARNING

  • ERROR

  • CRITICAL

A.2.14. Data content

label

/conf/event-message-core/data_content

subject

/req/event-message-core/data_content

test-purpose

Validate that a WMEM has valid data content.

If a data.links property does not exist, check for the existence of a data.content property in the WMEM.

A.2.15. Data content title

label

/conf/event-message-core/data_content_title

subject

/req/event-message-core/data_content_title

test-purpose

Validate that a WMEM has a valid data content title.

Check for the existence of a data.content.title property in the WMEM.

Annex B: Schemas (Normative)

Note
Schema documents will only be published on schemas.wmo.int once the standard has been approved.

B.1. WIS2 Monitoring Event Message Schema

$schema: https://json-schema.org/draft/2020-12/schema
$id: https://schemas.wmo.int/wme/1/eventMessageJSON.yaml
title: WIS2 Event Message 
description: WIS2 Event Message 

allOf:
  - $ref: 'cloudevents-v1.0.2.yaml'
  - properties:
      type:
        type: string
        enum:
          - int.wmo.wis.wme.event
      data:    
        properties:
          conformsTo:
            type: array
            contains:
                const: http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core
          severity:
            type: string
            description: Severity level
            enum:
              - DEBUG
              - INFO
              - WARNING
              - ERROR
              - CRITICAL
          ref:
            type: string
            format: uuid
            description: Identifier of referenced event
          time:
            type: object
            description: Time instant or interval
            $ref: 'https://raw.githubusercontent.com/wmo-im/wcmp2/refs/heads/FT2025-2/schemas/wcmpRecordGeoJSON.yaml#/properties/time'
          content:
            type: object
            description: inline content of event message
            properties:
              channel:
                type: string
                description: topic that link is based on
              title:
                $ref: 'https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/recordCommonProperties.yaml#/properties/title'
              description:
                $ref: 'https://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/schemas/recordCommonProperties.yaml#/properties/description'
            required:
              - title
          links:
            type: array
            $ref: 'https://raw.githubusercontent.com/wmo-im/wcmp2/refs/heads/main/schemas/wcmpRecordGeoJSON.yaml#/properties/links'
        anyOf:
          - required:
              - conformsTo
              - severity
              - content
          - required:
              - conformsTo
              - severity
              - links

    required:
      - datacontenttype
      - dataschema
      - subject
      - time
      - data

Annex C: Examples (Informative)

C.1. WIS2 Monitoring Topic

Example: Notification from Environment and Climate Change Canada, Meteorological Service of Canada, Global Discovery Catalogue Service, concerning a WCMP2 record from Météo-France (Toulouse)
monitor/a/wis2/fr-meteofrance

Here, the source is found in the WMEM (ca-eccc-msc-global-discovery-catalogue).

Example: Notification from Météo-France (Toulouse), Global Broker Service, concerning a WNM from Servicio Meteorológico Nacional (Argentina)
monitor/a/wis2/ar-smn

Here, the source is found in the WMEM (fr-meteofrance-global-broker).

C.2. WIS2 Monitoring Event Message: WCMP2 ETS Report

Example: WCMP2 compliance report event notification from Environment and Climate Change Canada, Meteorological Service of Canada, Global Discovery Catalogue Service, concerning a WCMP2 record from Deutscher Wetterdienst (Germany)
{
    "id": "6e1c7f9f-dd6c-48d9-bbc4-aef0625f1fb8",
    "specversion": "1.0",
    "type": "int.wmo.wis.wme.event",
    "source": "ca-eccc-msc-global-discovery-catalogue",
    "subject": "de-dwd",
    "time": "2024-10-17T05:13:22Z",
    "datacontenttype": "application/json",
    "dataschema": "https://schemas.wmo.int/wme/1.0.0/schemas/wis2-event-message-bundled.json",
    "data": {
        "conformsTo": [
            "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
        ],
        "severity": "INFO",
        "content": {
            "id": "f84f34d6-cfb0-4cff-98ec-32f88d0fd7b8",
            "title": "WCMP2 ETS report",
            "report_type": "ets",
            "summary": {
                "PASSED": 12,
                "FAILED": 0,
                "SKIPPED": 0
            },
            "generated_by": "pywcmp 0.10.1 (https://github.com/wmo-im/pywcmp)",
            "tests": [
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/conformance",
                    "code": "PASSED",
                    "message": "Passes given schema is compliant/valid"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/contacts",
                    "code": "PASSED"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/record_created_datetime",
                    "code": "PASSED"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/data_policy",
                    "code": "PASSED"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/description",
                    "code": "PASSED",
                    "message": "Passes given schema is compliant/valid"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/extent_geospatial",
                    "code": "PASSED"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/extent_temporal",
                    "code": "PASSED",
                    "message": "Passes given schema is compliant/valid"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/identifier",
                    "code": "PASSED"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/links",
                    "code": "PASSED"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/themes",
                    "code": "PASSED"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/title",
                    "code": "PASSED",
                    "message": "Passes given schema is compliant/valid"
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/conf/core/type",
                    "code": "PASSED"
                }
            ],
            "datetime": "2024-10-02T13:55:00Z",
            "metadata_id": "urn:wmo:md:de-dwd:icon-eps.ALL"
        }
    }
}

C.3. WIS2 Monitoring Event Message: WCMP2 KPI Report

Example: WCMP2 KPI event notification from Environment and Climate Change Canada, Meteorological Service of Canada, Global Discovery Catalogue Service, concerning a WCMP2 record from Deutscher Wetterdienst (Germany)
{
    "id": "6e1c7f9f-dd6c-48d9-bbc4-aef0625f1fb8",
    "specversion": "1.0",
    "type": "int.wmo.wis.wme.event",
    "source": "ca-eccc-msc-global-discovery-catalogue",
    "subject": "de-dwd",
    "time": "2025-02-01T18:19:37Z",
    "datacontenttype": "application/json",
    "dataschema": "https://schemas.wmo.int/wme/1.0.0/schemas/wis2-event-message-bundled.json",
    "data": {
        "conformsTo": [
            "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
        ],
        "severity": "INFO",
        "content": {
            "id": "38631309-36b7-4c71-a7cd-aaca48f81a49",
            "title": "WCMP2 KPI report",
            "report_type": "kpi",
            "metadata_id": "urn:wmo:md:de-dwd:icon-eps.ALL",
            "datetime": "2025-02-01T18:17:24Z",
            "generated_by": "pywcmp 0.10.1 (https://github.com/wmo-im/pywcmp)",
            "tests": [
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/contacts",
                    "title": "Contacts",
                    "total": 3,
                    "score": 3,
                    "comments": [],
                    "percentage": 100.0
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/good_quality_description",
                    "title": ": Good quality description",
                    "total": 4,
                    "score": 3,
                    "comments": [
                        "Description contains spelling errors ['eps', 'deg', '180h', 'lat', '6h', 'utc', 'lon']"
                    ],
                    "percentage": 75.0
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/graphic_overview_for_metadata_records",
                    "title": "Graphic overview for metadata records",
                    "total": 0,
                    "score": 0,
                    "comments": [],
                    "percentage": null
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/links_health",
                    "title": "Links health",
                    "total": 22,
                    "score": 22,
                    "comments": [],
                    "percentage": 100.0
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/persistent_identifiers",
                    "title": "Persistent identifiers",
                    "total": 3,
                    "score": 1,
                    "comments": [
                        "No DOI/ARK/HDL schema found"
                    ],
                    "percentage": 33.333
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/time_intervals",
                    "title": "Time intervals",
                    "total": 6,
                    "score": 5,
                    "comments": [
                        "No temporal resolution found"
                    ],
                    "percentage": 83.333
                },
                {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/good_quality_title",
                    "title": "Global Ensemble Prediction Model",
                    "total": 8,
                    "score": 7,
                    "comments": [
                        "Title is not sentence case"
                    ],
                    "percentage": 87.5
                }
            ],
            "summary": {
                "total": 46,
                "score": 41,
                "comments": {
                    "id": "http://wis.wmo.int/spec/wcmp/2/kpi/core/good_quality_title",
                    "title": "Global Ensemble Prediction Model",
                    "total": 8,
                    "score": 7,
                    "comments": [
                        "Title is not sentence case"
                    ],
                    "percentage": 87.5
                },
                "percentage": 89.13,
                "grade": "A"
            }
        }
    }
}

C.4. WIS2 Monitoring Event Message: WNM Schema Compliance Report

Example: WNM compliance report event notification from a WIS2 development Global Broker, concerning a WIS2 Notification message from a WIS2 Node in testing
{
    "id": "08361ecb-e7ff-4965-9abe-465b63433ca5",
    "specversion": "1.0",
    "type": "int.wmo.wis.wme.event",
    "source": "io-wis2dev-global-broker",
    "subject": "io-wis2dev-12-test",
    "time": "2024-12-11T12:54:40.605Z",
    "datacontenttype": "application/json",
    "dataschema": "https://schemas.wmo.int/wme/1.0.0/schemas/wis2-event-message-bundled.json",
    "data": {
        "conformsTo": [
            "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
        ],
        "severity": "ERROR",
        "content": {
            "channel": "cache/a/wis2/de-dwd-gts-to-wis2/data/recommended/U/A/N/T/99/KDDL",
            "title": "Global Broker WMN report",
            "wnm": {
                "id": "885f789e-b724-11ef-bede-e43d1a214826",
                "conformsTo": [
                    "http://wis.wmo.int/spec/wnm/1/conf/core"
                ],
                "type": "Feature",
                "geometry": null,
                "properties": {
                    "data_id": "wis2/de-dwd-gts-to-wis2/data/recommended/U/A/N/T/99/KDDL/UANT99KDDL101828",
                    "metadata_id": "",
                    "gts": {
                        "ttaaii": "UANT99",
                        "cccc": "KDDL"
                    },
                    "pubtime": "2024-12-10T18:28:20.643304Z",
                    "integrity": {
                        "method": "sha512",
                        "value": "o0JGIwEbv4XGDPhxc7vf1dcX8BJb6tYl+xogVxENgYZ8ddVxnLxwPfhCqkmnuGqRP4jYpr5FZ3z0RHH9IcmLag=="
                    }
                },
                "links": [
                    {
                        "href": "https://wis2.dwd.de/recommended/gts/KDDL/A_UANT99KDDL101828_C_EDZW_20241210182815_25486915",
                        "rel": "canonical",
                        "type": "application/octet-stream",
                        "security": {
                            "default": {
                                "type": "http",
                                "scheme": "basic",
                                "description": "Please contact DWD Team for WIS2 Global Cache via wis@dwd.de for accessing this secured resource."
                            }
                        },
                        "length": 122
                    },
                    {
                        "href": "https://gisc.dwd.de/angular-frontend/xmlProductDetails;pid=urn:x-wmo:md:int.wmo.wis::UANT99KDDL",
                        "rel": "about",
                        "type": "text/html"
                    }
                ]
            },
            "exception": {
                "code": "invalid-schema",
                "description": "WIS2 Notification Message not compliant with the defined schema",
                "errors": [
                    {
                        "keyword": "required",
                        "dataPath": ".properties",
                        "schemaPath": "#/properties/properties/oneOf/0/allOf/0/required",
                        "params": {
                            "missingProperty": "start_datetime"
                        },
                        "message": "should have required property 'start_datetime'"
                    },
                    {
                        "keyword": "required",
                        "dataPath": ".properties",
                        "schemaPath": "#/properties/properties/oneOf/0/allOf/0/required",
                        "params": {
                            "missingProperty": "end_datetime"
                        },
                        "message": "should have required property 'end_datetime'"
                    },
                    {
                        "keyword": "required",
                        "dataPath": ".properties",
                        "schemaPath": "#/properties/properties/oneOf/1/allOf/0/required",
                        "params": {
                            "missingProperty": "datetime"
                        },
                        "message": "should have required property 'datetime'"
                    },
                    {
                        "keyword": "oneOf",
                        "dataPath": ".properties",
                        "schemaPath": "#/properties/properties/oneOf",
                        "params": {},
                        "message": "should match exactly one schema in oneOf"
                    }
                ]
            }
        }
    }
}

C.5. WIS2 Monitoring Event Message: Notice Report

Example: Notice report event notification from the EUMETSAT WIS2 Node, concerning a forthcoming data outage
{
    "id": "6e1c7f9f-dd6c-48d9-bbc4-aef0625f1fb8",
    "specversion": "1.0",
    "type": "int.wmo.wis.wme.event",
    "source": "ca-eccc-msc",
    "subject": "ca-eccc-msc",
    "time": "2025-12-29T05:13:22Z",
    "datacontenttype": "application/json",
    "dataschema": "https://schemas.wmo.int/wme/1.0.0/schemas/wis2-event-message-bundled.json",
    "data": {
        "conformsTo": [
            "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
        ],
        "severity": "INFO",
        "time": {
            "interval": [
                "2026-01-05T14:00:00Z",
                "2026-01-05T17:00:00Z"
            ]
        },
        "content": {
            "title": "Data outage notice",
            "description": "Surface synoptic observations will be missing on 05 January 2026 at 14h UTC for a 3 hour period",
            "channel": "origin/a/wis2/ca-eccc-msc/data/core/weather/surface-based-observations/synop"
        }
    }
}

C.6. WIS2 Monitoring Event Message: Alert Report

Example: Alert report event notification from a WIS2 Global Cache, concerning a missing metadata archive from a GDC
{
    "id": "6e1c7f9f-dd6c-48d9-bbc4-aef0625f1fb8",
    "specversion": "1.0",
    "type": "int.wmo.wis.wme.event",
    "source": "ca-eccc-msc-global-discovery-catalogue",
    "subject": "ca-eccc-msc-global-discovery-catalogue",
    "time": "2024-10-17T05:13:22Z",
    "datacontenttype": "application/json",
    "dataschema": "https://schemas.wmo.int/wme/1.0.0/schemas/wis2-event-message-report.json",
    "data": {
        "conformsTo": [
            "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
        ],
        "severity": "CRITICAL",
        "content": {
            "title": "Metadata archive is older than 24 hours",
            "description": "The metadata archive is older than 24 hours.  Please contact the administrator"
        }
    }
}

C.7. WIS2 Monitoring Event Message: Sensor Centre logs

Example: Event notification from a Sensor Centre Global Cache (SCGC), providing logs of Global Cache analysis
{
    "specversion": "1.0",
    "type": "int.wmo.wis.wme.event",
    "source": "fr-meteofrance-sensor-centre-global-cache",
    "subject": "fr-meteofrance-sensor-centre-global-cache",
    "id": "6e1c7f9f-dd6c-48d9-bbc4-aef0625f1fb8",
    "time": "2025-10-31T22:03:04Z",
    "datacontenttype": "application/json",
    "dataschema": "https://schemas.wmo.int/wme/1.0.0/schemas/wis2-event-message-bundled.json",
    "data": {
        "severity": "INFO",
        "conformsTo": [
            "http://wis.wmo.int/spec/wme/1/conf/monitoring-event-message-core"
        ],
        "time": {
            "interval": [
                "2025-10-31T21:00:00Z",
                "2025-10-30T22:00:00Z"
            ]
        },
        "links": [
            {
                "rel": "canonical",
                "type": "text/plain",
                "href": "https://example.org/logs.txt"
            }
        ]
    }
}

Annex D: Bibliography

Annex E: Revision History

Date Release Editor Primary clauses modified Description

2024-10-05

Template

Tom Kralidis

all

initial revision


1. https://community.wmo.int/governance/commission-membership/commission-observation-infrastructures-and-information-systems-infcom/commission-infrastructure-officers/infcom-management-group/standing-committee-information-management-and-technology-sc-imt
2. https://community.wmo.int/governance/commission-membership/infcom
3. https://wmo-im.github.io/wis2-guide/wis2-guide-DRAFT.html#_2_7_2_2_service_levels_performance_indicators_and_fair_usage_policies
4. https://datatracker.ietf.org/doc/html/rfc8259
5. https://datatracker.ietf.org/doc/html/rfc3339
6. https://www.w3.org/TR/dwbp
7. https://www.iana.org/assignments/link-relations/link-relations.xml
8. https://json-schema.org
9. https://github.com/cloudevents/spec/blob/main/cloudevents/spec.md
10. https://github.com/wmo-im/wis2-topic-hierarchy
11. https://github.com/wmo-im/wis2-notification-message
12. https://github.com/wmo-im/wis2-metric-hierarchy
13. https://json-schema.org
14. https://en.wikipedia.org/wiki/YAML
15. https://github.com/wmo-im/wis2-metric-hierarchy/tree/main/alerts