diff --git a/tools/meson.build b/tools/meson.build
index 4da16d6..ea17050 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -3,6 +3,7 @@
   'sdbusplus/__init__.py',
   'sdbusplus/enum.py',
   'sdbusplus/error.py',
+  'sdbusplus/event.py',
   'sdbusplus/interface.py',
   'sdbusplus/main.py',
   'sdbusplus/method.py',
diff --git a/tools/sdbus++-gen-meson b/tools/sdbus++-gen-meson
index 665c50e..1807108 100755
--- a/tools/sdbus++-gen-meson
+++ b/tools/sdbus++-gen-meson
@@ -36,7 +36,7 @@
 ## if a repository contains old copies of the generated meson.build files and
 ## needs an update.  We should increment the version number whenever the
 ## resulting meson.build would change.
-tool_version="sdbus++-gen-meson version 7"
+tool_version="sdbus++-gen-meson version 8"
 function show_version() {
     echo "${tool_version}"
 }
@@ -187,6 +187,10 @@
                 outputs="${outputs}'error.cpp', 'error.hpp', "
                 ;;
 
+            events.yaml)
+                outputs="${outputs}'event.cpp', 'event.hpp', "
+                ;;
+
             interface.yaml)
                 outputs="${outputs}'common.hpp', "
                 outputs="${outputs}'server.cpp', 'server.hpp', "
@@ -256,7 +260,7 @@
 ## Handle command=meson by generating the tree of meson.build files.
 function cmd_meson() {
     # Find and sort all the YAML files
-    yamls="$(find "${rootdir}" -name '*.interface.yaml' -o -name '*.errors.yaml')"
+    yamls="$(find "${rootdir}" -name '*.interface.yaml' -o -name '*.errors.yaml' -o -name '*.events.yaml')"
     yamls="$(echo "${yamls}" | sort)"
 
     # Assign the YAML files into the hash-table by interface name.
@@ -293,7 +297,8 @@
     fi
 
     if [[ ! -e "${rootdir}/$1.interface.yaml" ]] &&
-    [[ ! -e "${rootdir}/$1.errors.yaml" ]]; then
+    [[ ! -e "${rootdir}/$1.errors.yaml" ]] &&
+    [[ ! -e "${rootdir}/$1.events.yaml" ]]; then
         echo "Missing YAML for $1."
         exit 1
     fi
@@ -315,6 +320,11 @@
         ${sdbusppcmd} error exception-header "${intf}" > "${outputdir}/error.hpp"
         ${sdbusppcmd} error exception-cpp "${intf}" > "${outputdir}/error.cpp"
     fi
+
+    if [[ -e "${rootdir}/$1.events.yaml" ]]; then
+        ${sdbusppcmd} event exception-header "${intf}" > "${outputdir}/event.hpp"
+        ${sdbusppcmd} event exception-cpp "${intf}" > "${outputdir}/event.cpp"
+    fi
 }
 
 ## Handle command=markdown by calling sdbus++ as appropriate.
@@ -329,7 +339,8 @@
     fi
 
     if [[ ! -e "${rootdir}/$1.interface.yaml" ]] &&
-    [[ ! -e "${rootdir}/$1.errors.yaml" ]]; then
+    [[ ! -e "${rootdir}/$1.errors.yaml" ]] &&
+    [[ ! -e "${rootdir}/$1.events.yaml" ]]; then
         echo "Missing YAML for $1."
         exit 1
     fi
@@ -348,6 +359,10 @@
     if [[ -e "${rootdir}/$1.errors.yaml" ]]; then
         ${sdbusppcmd} error markdown "${intf}" >> "${outputdir}/${base}.md"
     fi
+
+    if [[ -e "${rootdir}/$1.events.yaml" ]]; then
+        ${sdbusppcmd} event markdown "${intf}" >> "${outputdir}/${base}.md"
+    fi
 }
 
 ## Handle command=version.
diff --git a/tools/sdbusplus/__init__.py b/tools/sdbusplus/__init__.py
index 1f509e4..1d91530 100644
--- a/tools/sdbusplus/__init__.py
+++ b/tools/sdbusplus/__init__.py
@@ -1,4 +1,5 @@
 from sdbusplus.error import Error
+from sdbusplus.event import Event
 from sdbusplus.interface import Interface
 
-__all__ = ["Error", "Interface"]
+__all__ = ["Error", "Event", "Interface"]
diff --git a/tools/sdbusplus/error.py b/tools/sdbusplus/error.py
index 7af1809..d606deb 100644
--- a/tools/sdbusplus/error.py
+++ b/tools/sdbusplus/error.py
@@ -14,7 +14,7 @@
 
 class Error(NamedElement, Renderer):
     @staticmethod
-    def load(name, rootdir="."):
+    def load(name, rootdir, schemadir):
         filename = os.path.join(
             rootdir, name.replace(".", "/") + ".errors.yaml"
         )
diff --git a/tools/sdbusplus/event.py b/tools/sdbusplus/event.py
new file mode 100644
index 0000000..d8b0ac5
--- /dev/null
+++ b/tools/sdbusplus/event.py
@@ -0,0 +1,46 @@
+import os
+
+import jsonschema
+import yaml
+
+from .namedelement import NamedElement
+from .renderer import Renderer
+
+
+class Event(NamedElement, Renderer):
+    @staticmethod
+    def load(name, rootdir, schemadir):
+        schemafile = os.path.join(schemadir, "events.schema.yaml")
+        with open(schemafile) as f:
+            data = f.read()
+            schema = yaml.safe_load(data)
+
+            spec = jsonschema.Draft202012Validator
+            spec.check_schema(schema)
+
+            validator = spec(schema)
+
+        filename = os.path.join(
+            rootdir, name.replace(".", "/") + ".events.yaml"
+        )
+
+        with open(filename) as f:
+            data = f.read()
+            y = yaml.safe_load(data)
+
+            validator.validate(y)
+
+            y["name"] = name
+            return Event(**y)
+
+    def __init__(self, **kwargs):
+        super(Event, self).__init__(**kwargs)
+
+    def markdown(self, loader):
+        return ""
+
+    def exception_header(self, loader):
+        return ""
+
+    def exception_cpp(self, loader):
+        return ""
diff --git a/tools/sdbusplus/interface.py b/tools/sdbusplus/interface.py
index 933e51f..d801814 100644
--- a/tools/sdbusplus/interface.py
+++ b/tools/sdbusplus/interface.py
@@ -14,7 +14,7 @@
 
 class Interface(NamedElement, Renderer):
     @staticmethod
-    def load(name, rootdir="."):
+    def load(name, rootdir, schemadir):
         filename = os.path.join(
             rootdir, name.replace(".", "/") + ".interface.yaml"
         )
diff --git a/tools/sdbusplus/main.py b/tools/sdbusplus/main.py
index fcab7b1..ac66f99 100644
--- a/tools/sdbusplus/main.py
+++ b/tools/sdbusplus/main.py
@@ -9,7 +9,11 @@
 def main():
     module_path = os.path.dirname(sdbusplus.__file__)
 
-    valid_types = {"interface": sdbusplus.Interface, "error": sdbusplus.Error}
+    valid_types = {
+        "error": sdbusplus.Error,
+        "event": sdbusplus.Event,
+        "interface": sdbusplus.Interface,
+    }
     valid_processes = {
         "aserver-header": "async_server_header",
         "client-header": "client_header",
@@ -40,6 +44,14 @@
         help="Location of templates files.",
     )
     parser.add_argument(
+        "-s",
+        "--schemadir",
+        dest="schemadir",
+        default=os.path.join(module_path, "schemas"),
+        type=str,
+        help="Location of schema files.",
+    )
+    parser.add_argument(
         "typeName",
         metavar="TYPE",
         type=str,
@@ -64,6 +76,8 @@
 
     lookup = mako.lookup.TemplateLookup(directories=[args.templatedir])
 
-    instance = valid_types[args.typeName].load(args.item, args.rootdir)
+    instance = valid_types[args.typeName].load(
+        args.item, args.rootdir, args.schemadir
+    )
     function = getattr(instance, valid_processes[args.process])
     print(function(lookup))
