[PATCH v4 07/19] docstring: enums: libvirt: Add 'Since version' metadata

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Either create or append to existing docstring, the version (git tag)
that a given enum value was introduced in the format:

    Since: v1.2.3

Signed-off-by: Victor Toso <victortoso@xxxxxxxxxx>
---
 include/libvirt/libvirt-domain-checkpoint.h |   28 +-
 include/libvirt/libvirt-domain-snapshot.h   |   60 +-
 include/libvirt/libvirt-domain.h            | 1196 +++++++++++--------
 include/libvirt/libvirt-event.h             |    8 +-
 include/libvirt/libvirt-host.h              |   58 +-
 include/libvirt/libvirt-interface.h         |    8 +-
 include/libvirt/libvirt-network.h           |   88 +-
 include/libvirt/libvirt-nodedev.h           |   66 +-
 include/libvirt/libvirt-nwfilter.h          |    4 +-
 include/libvirt/libvirt-secret.h            |   36 +-
 include/libvirt/libvirt-storage.h           |  166 +--
 include/libvirt/libvirt-stream.h            |   12 +-
 include/libvirt/virterror.h                 |  406 +++----
 13 files changed, 1150 insertions(+), 986 deletions(-)

diff --git a/include/libvirt/libvirt-domain-checkpoint.h b/include/libvirt/libvirt-domain-checkpoint.h
index d5dea750db..5476325503 100644
--- a/include/libvirt/libvirt-domain-checkpoint.h
+++ b/include/libvirt/libvirt-domain-checkpoint.h
@@ -61,13 +61,13 @@ virConnectPtr virDomainCheckpointGetConnect(virDomainCheckpointPtr checkpoint);
  */
 typedef enum {
     VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE    = (1 << 0), /* Restore or alter
-                                                            metadata */
+                                                            metadata (Since: v5.6.0) */
     VIR_DOMAIN_CHECKPOINT_CREATE_QUIESCE     = (1 << 1), /* use guest agent to
                                                             quiesce all mounted
                                                             file systems within
-                                                            the domain */
+                                                            the domain (Since: v5.6.0) */
     VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE_VALIDATE  = (1 << 2),   /* validate disk data state
-                                                                     when redefining a checkpoint */
+                                                                     when redefining a checkpoint (Since: v6.10.0) */
 } virDomainCheckpointCreateFlags;
 
 /* Create a checkpoint using the current VM state. */
@@ -80,11 +80,11 @@ virDomainCheckpointPtr virDomainCheckpointCreateXML(virDomainPtr domain,
  * Since: v5.6.0
  */
 typedef enum {
-    VIR_DOMAIN_CHECKPOINT_XML_SECURE    = (1 << 0), /* Include sensitive data */
+    VIR_DOMAIN_CHECKPOINT_XML_SECURE    = (1 << 0), /* Include sensitive data (Since: v5.6.0) */
     VIR_DOMAIN_CHECKPOINT_XML_NO_DOMAIN = (1 << 1), /* Suppress <domain>
-                                                       subelement */
+                                                       subelement (Since: v5.6.0) */
     VIR_DOMAIN_CHECKPOINT_XML_SIZE      = (1 << 2), /* Include dynamic
-                                                       per-<disk> size */
+                                                       per-<disk> size (Since: v5.6.0) */
 } virDomainCheckpointXMLFlags;
 
 /* Dump the XML of a checkpoint */
@@ -106,18 +106,18 @@ char *virDomainCheckpointGetXMLDesc(virDomainCheckpointPtr checkpoint,
 typedef enum {
     VIR_DOMAIN_CHECKPOINT_LIST_ROOTS       = (1 << 0), /* Filter by checkpoints
                                                           with no parents, when
-                                                          listing a domain */
+                                                          listing a domain (Since: v5.6.0) */
     VIR_DOMAIN_CHECKPOINT_LIST_DESCENDANTS = (1 << 0), /* List all descendants,
                                                           not just children, when
-                                                          listing a checkpoint */
+                                                          listing a checkpoint (Since: v5.6.0) */
     VIR_DOMAIN_CHECKPOINT_LIST_TOPOLOGICAL = (1 << 1), /* Ensure parents occur
                                                           before children in
-                                                          the resulting list */
+                                                          the resulting list (Since: v5.6.0) */
 
     VIR_DOMAIN_CHECKPOINT_LIST_LEAVES      = (1 << 2), /* Filter by checkpoints
-                                                          with no children */
+                                                          with no children (Since: v5.6.0) */
     VIR_DOMAIN_CHECKPOINT_LIST_NO_LEAVES   = (1 << 3), /* Filter by checkpoints
-                                                          that have children */
+                                                          that have children (Since: v5.6.0) */
 } virDomainCheckpointListFlags;
 
 /* Get all checkpoint objects for this domain */
@@ -147,9 +147,9 @@ virDomainCheckpointPtr virDomainCheckpointGetParent(virDomainCheckpointPtr check
  * Since: v5.6.0
  */
 typedef enum {
-    VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN      = (1 << 0), /* Also delete children */
-    VIR_DOMAIN_CHECKPOINT_DELETE_METADATA_ONLY = (1 << 1), /* Delete just metadata */
-    VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY = (1 << 2), /* Delete just children */
+    VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN      = (1 << 0), /* Also delete children (Since: v5.6.0) */
+    VIR_DOMAIN_CHECKPOINT_DELETE_METADATA_ONLY = (1 << 1), /* Delete just metadata (Since: v5.6.0) */
+    VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY = (1 << 2), /* Delete just children (Since: v5.6.0) */
 } virDomainCheckpointDeleteFlags;
 
 int virDomainCheckpointDelete(virDomainCheckpointPtr checkpoint,
diff --git a/include/libvirt/libvirt-domain-snapshot.h b/include/libvirt/libvirt-domain-snapshot.h
index 35eeb21e27..0f4124925c 100644
--- a/include/libvirt/libvirt-domain-snapshot.h
+++ b/include/libvirt/libvirt-domain-snapshot.h
@@ -60,28 +60,28 @@ virConnectPtr virDomainSnapshotGetConnect(virDomainSnapshotPtr snapshot);
  */
 typedef enum {
     VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE    = (1 << 0), /* Restore or alter
-                                                          metadata */
+                                                          metadata (Since: v0.9.5) */
     VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT     = (1 << 1), /* With redefine, make
-                                                          snapshot current */
+                                                          snapshot current (Since: v0.9.5) */
     VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA = (1 << 2), /* Make snapshot without
-                                                          remembering it */
+                                                          remembering it (Since: v0.9.5) */
     VIR_DOMAIN_SNAPSHOT_CREATE_HALT        = (1 << 3), /* Stop running guest
-                                                          after snapshot */
+                                                          after snapshot (Since: v0.9.5) */
     VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY   = (1 << 4), /* disk snapshot, not
-                                                          full system */
+                                                          full system (Since: v0.9.5) */
     VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT   = (1 << 5), /* reuse any existing
-                                                          external files */
+                                                          external files (Since: v0.9.10) */
     VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE     = (1 << 6), /* use guest agent to
                                                           quiesce all mounted
                                                           file systems within
-                                                          the domain */
+                                                          the domain (Since: v0.9.10) */
     VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC      = (1 << 7), /* atomically avoid
-                                                          partial changes */
+                                                          partial changes (Since: v0.9.11) */
     VIR_DOMAIN_SNAPSHOT_CREATE_LIVE        = (1 << 8), /* create the snapshot
                                                           while the guest is
-                                                          running */
+                                                          running (Since: v1.0.1) */
     VIR_DOMAIN_SNAPSHOT_CREATE_VALIDATE    = (1 << 9), /* validate the XML
-                                                          against the schema */
+                                                          against the schema (Since: v5.6.0) */
 } virDomainSnapshotCreateFlags;
 
 /* Take a snapshot of the current VM state */
@@ -94,7 +94,7 @@ virDomainSnapshotPtr virDomainSnapshotCreateXML(virDomainPtr domain,
  * Since: v5.1.0
  */
 typedef enum {
-    VIR_DOMAIN_SNAPSHOT_XML_SECURE         = VIR_DOMAIN_XML_SECURE, /* dump security sensitive information too */
+    VIR_DOMAIN_SNAPSHOT_XML_SECURE         = VIR_DOMAIN_XML_SECURE, /* dump security sensitive information too (Since: v5.1.0) */
 } virDomainSnapshotXMLFlags;
 
 /* Dump the XML of a snapshot */
@@ -118,45 +118,45 @@ char *virDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
 typedef enum {
     VIR_DOMAIN_SNAPSHOT_LIST_ROOTS       = (1 << 0), /* Filter by snapshots
                                                         with no parents, when
-                                                        listing a domain */
+                                                        listing a domain (Since: v0.9.5) */
     VIR_DOMAIN_SNAPSHOT_LIST_DESCENDANTS = (1 << 0), /* List all descendants,
                                                         not just children, when
                                                         listing a snapshot */
 
-    /* For historical reasons, groups do not use contiguous bits.  */
+    /* For historical reasons, groups do not use contiguous bits. (Since: v0.9.7)  */
 
     VIR_DOMAIN_SNAPSHOT_LIST_LEAVES      = (1 << 2), /* Filter by snapshots
-                                                        with no children */
+                                                        with no children (Since: v0.9.7) */
     VIR_DOMAIN_SNAPSHOT_LIST_NO_LEAVES   = (1 << 3), /* Filter by snapshots
-                                                        that have children */
+                                                        that have children (Since: v0.9.13) */
 
     VIR_DOMAIN_SNAPSHOT_LIST_METADATA    = (1 << 1), /* Filter by snapshots
-                                                        which have metadata */
+                                                        which have metadata (Since: v0.9.5) */
     VIR_DOMAIN_SNAPSHOT_LIST_NO_METADATA = (1 << 4), /* Filter by snapshots
-                                                        with no metadata */
+                                                        with no metadata (Since: v0.9.13) */
 
     VIR_DOMAIN_SNAPSHOT_LIST_INACTIVE    = (1 << 5), /* Filter by snapshots
                                                         taken while guest was
-                                                        shut off */
+                                                        shut off (Since: v1.0.1) */
     VIR_DOMAIN_SNAPSHOT_LIST_ACTIVE      = (1 << 6), /* Filter by snapshots
                                                         taken while guest was
                                                         active, and with
-                                                        memory state */
+                                                        memory state (Since: v1.0.1) */
     VIR_DOMAIN_SNAPSHOT_LIST_DISK_ONLY   = (1 << 7), /* Filter by snapshots
                                                         taken while guest was
                                                         active, but without
-                                                        memory state */
+                                                        memory state (Since: v1.0.1) */
 
     VIR_DOMAIN_SNAPSHOT_LIST_INTERNAL    = (1 << 8), /* Filter by snapshots
                                                         stored internal to
-                                                        disk images */
+                                                        disk images (Since: v1.0.1) */
     VIR_DOMAIN_SNAPSHOT_LIST_EXTERNAL    = (1 << 9), /* Filter by snapshots
                                                         that use files external
-                                                        to disk images */
+                                                        to disk images (Since: v1.0.1) */
 
     VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL = (1 << 10), /* Ensure parents occur
                                                          before children in
-                                                         the resulting list */
+                                                         the resulting list (Since: v5.2.0) */
 } virDomainSnapshotListFlags;
 
 /* Return the number of snapshots for this domain */
@@ -216,10 +216,10 @@ int virDomainSnapshotHasMetadata(virDomainSnapshotPtr snapshot,
  * Since: v0.9.5
  */
 typedef enum {
-    VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING = 1 << 0, /* Run after revert */
-    VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED  = 1 << 1, /* Pause after revert */
-    VIR_DOMAIN_SNAPSHOT_REVERT_FORCE   = 1 << 2, /* Allow risky reverts */
-    VIR_DOMAIN_SNAPSHOT_REVERT_RESET_NVRAM = 1 << 3, /* Re-initialize NVRAM from template */
+    VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING = 1 << 0, /* Run after revert (Since: v0.9.5) */
+    VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED  = 1 << 1, /* Pause after revert (Since: v0.9.5) */
+    VIR_DOMAIN_SNAPSHOT_REVERT_FORCE   = 1 << 2, /* Allow risky reverts (Since: v0.9.7) */
+    VIR_DOMAIN_SNAPSHOT_REVERT_RESET_NVRAM = 1 << 3, /* Re-initialize NVRAM from template (Since: v8.1.0) */
 } virDomainSnapshotRevertFlags;
 
 /* Revert the domain to a point-in-time snapshot.  The
@@ -237,9 +237,9 @@ int virDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
  * Since: v0.8.0
  */
 typedef enum {
-    VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN      = (1 << 0), /* Also delete children */
-    VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY = (1 << 1), /* Delete just metadata */
-    VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY = (1 << 2), /* Delete just children */
+    VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN      = (1 << 0), /* Also delete children (Since: v0.8.0) */
+    VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY = (1 << 1), /* Delete just metadata (Since: v0.9.5) */
+    VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY = (1 << 2), /* Delete just children (Since: v0.9.5) */
 } virDomainSnapshotDeleteFlags;
 
 int virDomainSnapshotDelete(virDomainSnapshotPtr snapshot,
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index 0fa4509b73..5e165f60ed 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -55,15 +55,15 @@ typedef virDomain *virDomainPtr;
  * Since: v0.0.1
  */
 typedef enum {
-    VIR_DOMAIN_NOSTATE = 0,     /* no state */
-    VIR_DOMAIN_RUNNING = 1,     /* the domain is running */
-    VIR_DOMAIN_BLOCKED = 2,     /* the domain is blocked on resource */
-    VIR_DOMAIN_PAUSED  = 3,     /* the domain is paused by user */
-    VIR_DOMAIN_SHUTDOWN= 4,     /* the domain is being shut down */
-    VIR_DOMAIN_SHUTOFF = 5,     /* the domain is shut off */
-    VIR_DOMAIN_CRASHED = 6,     /* the domain is crashed */
+    VIR_DOMAIN_NOSTATE = 0,     /* no state (Since: v0.0.1) */
+    VIR_DOMAIN_RUNNING = 1,     /* the domain is running (Since: v0.0.1) */
+    VIR_DOMAIN_BLOCKED = 2,     /* the domain is blocked on resource (Since: v0.0.1) */
+    VIR_DOMAIN_PAUSED  = 3,     /* the domain is paused by user (Since: v0.0.1) */
+    VIR_DOMAIN_SHUTDOWN= 4,     /* the domain is being shut down (Since: v0.0.1) */
+    VIR_DOMAIN_SHUTOFF = 5,     /* the domain is shut off (Since: v0.0.1) */
+    VIR_DOMAIN_CRASHED = 6,     /* the domain is crashed (Since: v0.0.2) */
     VIR_DOMAIN_PMSUSPENDED = 7, /* the domain is suspended by guest
-                                   power management */
+                                   power management (Since: v0.9.11) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_DOMAIN_LAST
@@ -71,6 +71,8 @@ typedef enum {
      * NB: this enum value will increase over time as new states are
      * added to the libvirt API. It reflects the last state supported
      * by this version of the libvirt API.
+     *
+     * Since: v0.9.5
      */
 # endif
 } virDomainState;
@@ -81,10 +83,10 @@ typedef enum {
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_NOSTATE_UNKNOWN = 0,
+    VIR_DOMAIN_NOSTATE_UNKNOWN = 0, /* (Since: v0.9.2) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_NOSTATE_LAST
+    VIR_DOMAIN_NOSTATE_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainNostateReason;
 
@@ -94,21 +96,21 @@ typedef enum {
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_RUNNING_UNKNOWN = 0,
-    VIR_DOMAIN_RUNNING_BOOTED = 1,          /* normal startup from boot */
-    VIR_DOMAIN_RUNNING_MIGRATED = 2,        /* migrated from another host */
-    VIR_DOMAIN_RUNNING_RESTORED = 3,        /* restored from a state file */
-    VIR_DOMAIN_RUNNING_FROM_SNAPSHOT = 4,   /* restored from snapshot */
-    VIR_DOMAIN_RUNNING_UNPAUSED = 5,        /* returned from paused state */
-    VIR_DOMAIN_RUNNING_MIGRATION_CANCELED = 6,  /* returned from migration */
-    VIR_DOMAIN_RUNNING_SAVE_CANCELED = 7,   /* returned from failed save process */
+    VIR_DOMAIN_RUNNING_UNKNOWN = 0,         /* (Since: v0.9.2) */
+    VIR_DOMAIN_RUNNING_BOOTED = 1,          /* normal startup from boot (Since: v0.9.2) */
+    VIR_DOMAIN_RUNNING_MIGRATED = 2,        /* migrated from another host (Since: v0.9.2) */
+    VIR_DOMAIN_RUNNING_RESTORED = 3,        /* restored from a state file (Since: v0.9.2) */
+    VIR_DOMAIN_RUNNING_FROM_SNAPSHOT = 4,   /* restored from snapshot (Since: v0.9.2) */
+    VIR_DOMAIN_RUNNING_UNPAUSED = 5,        /* returned from paused state (Since: v0.9.2) */
+    VIR_DOMAIN_RUNNING_MIGRATION_CANCELED = 6,  /* returned from migration (Since: v0.9.2) */
+    VIR_DOMAIN_RUNNING_SAVE_CANCELED = 7,   /* returned from failed save process (Since: v0.9.2) */
     VIR_DOMAIN_RUNNING_WAKEUP = 8,          /* returned from pmsuspended due to
-                                               wakeup event */
-    VIR_DOMAIN_RUNNING_CRASHED = 9,         /* resumed from crashed */
-    VIR_DOMAIN_RUNNING_POSTCOPY = 10,       /* running in post-copy migration mode */
+                                               wakeup event (Since: v0.9.11) */
+    VIR_DOMAIN_RUNNING_CRASHED = 9,         /* resumed from crashed (Since: v1.1.1) */
+    VIR_DOMAIN_RUNNING_POSTCOPY = 10,       /* running in post-copy migration mode (Since: v1.3.3) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_RUNNING_LAST
+    VIR_DOMAIN_RUNNING_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainRunningReason;
 
@@ -118,10 +120,10 @@ typedef enum {
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_BLOCKED_UNKNOWN = 0,     /* the reason is unknown */
+    VIR_DOMAIN_BLOCKED_UNKNOWN = 0,     /* the reason is unknown (Since: v0.9.2) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_BLOCKED_LAST
+    VIR_DOMAIN_BLOCKED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainBlockedReason;
 
@@ -131,23 +133,23 @@ typedef enum {
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_PAUSED_UNKNOWN = 0,      /* the reason is unknown */
-    VIR_DOMAIN_PAUSED_USER = 1,         /* paused on user request */
-    VIR_DOMAIN_PAUSED_MIGRATION = 2,    /* paused for offline migration */
-    VIR_DOMAIN_PAUSED_SAVE = 3,         /* paused for save */
-    VIR_DOMAIN_PAUSED_DUMP = 4,         /* paused for offline core dump */
-    VIR_DOMAIN_PAUSED_IOERROR = 5,      /* paused due to a disk I/O error */
-    VIR_DOMAIN_PAUSED_WATCHDOG = 6,     /* paused due to a watchdog event */
-    VIR_DOMAIN_PAUSED_FROM_SNAPSHOT = 7, /* paused after restoring from snapshot */
-    VIR_DOMAIN_PAUSED_SHUTTING_DOWN = 8, /* paused during shutdown process */
-    VIR_DOMAIN_PAUSED_SNAPSHOT = 9,      /* paused while creating a snapshot */
-    VIR_DOMAIN_PAUSED_CRASHED = 10,     /* paused due to a guest crash */
-    VIR_DOMAIN_PAUSED_STARTING_UP = 11, /* the domain is being started */
-    VIR_DOMAIN_PAUSED_POSTCOPY = 12,    /* paused for post-copy migration */
-    VIR_DOMAIN_PAUSED_POSTCOPY_FAILED = 13, /* paused after failed post-copy */
+    VIR_DOMAIN_PAUSED_UNKNOWN = 0,      /* the reason is unknown (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_USER = 1,         /* paused on user request (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_MIGRATION = 2,    /* paused for offline migration (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_SAVE = 3,         /* paused for save (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_DUMP = 4,         /* paused for offline core dump (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_IOERROR = 5,      /* paused due to a disk I/O error (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_WATCHDOG = 6,     /* paused due to a watchdog event (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_FROM_SNAPSHOT = 7, /* paused after restoring from snapshot (Since: v0.9.2) */
+    VIR_DOMAIN_PAUSED_SHUTTING_DOWN = 8, /* paused during shutdown process (Since: v0.9.5) */
+    VIR_DOMAIN_PAUSED_SNAPSHOT = 9,      /* paused while creating a snapshot (Since: v1.0.1) */
+    VIR_DOMAIN_PAUSED_CRASHED = 10,     /* paused due to a guest crash (Since: v1.1.1) */
+    VIR_DOMAIN_PAUSED_STARTING_UP = 11, /* the domain is being started (Since: v1.2.14) */
+    VIR_DOMAIN_PAUSED_POSTCOPY = 12,    /* paused for post-copy migration (Since: v1.3.3) */
+    VIR_DOMAIN_PAUSED_POSTCOPY_FAILED = 13, /* paused after failed post-copy (Since: v1.3.3) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_PAUSED_LAST
+    VIR_DOMAIN_PAUSED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainPausedReason;
 
@@ -157,11 +159,11 @@ typedef enum {
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_SHUTDOWN_UNKNOWN = 0,    /* the reason is unknown */
-    VIR_DOMAIN_SHUTDOWN_USER = 1,       /* shutting down on user request */
+    VIR_DOMAIN_SHUTDOWN_UNKNOWN = 0,    /* the reason is unknown (Since: v0.9.2) */
+    VIR_DOMAIN_SHUTDOWN_USER = 1,       /* shutting down on user request (Since: v0.9.2) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_SHUTDOWN_LAST
+    VIR_DOMAIN_SHUTDOWN_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainShutdownReason;
 
@@ -171,19 +173,19 @@ typedef enum {
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_SHUTOFF_UNKNOWN = 0,     /* the reason is unknown */
-    VIR_DOMAIN_SHUTOFF_SHUTDOWN = 1,    /* normal shutdown */
-    VIR_DOMAIN_SHUTOFF_DESTROYED = 2,   /* forced poweroff */
-    VIR_DOMAIN_SHUTOFF_CRASHED = 3,     /* domain crashed */
-    VIR_DOMAIN_SHUTOFF_MIGRATED = 4,    /* migrated to another host */
-    VIR_DOMAIN_SHUTOFF_SAVED = 5,       /* saved to a file */
-    VIR_DOMAIN_SHUTOFF_FAILED = 6,      /* domain failed to start */
+    VIR_DOMAIN_SHUTOFF_UNKNOWN = 0,     /* the reason is unknown (Since: v0.9.2) */
+    VIR_DOMAIN_SHUTOFF_SHUTDOWN = 1,    /* normal shutdown (Since: v0.9.2) */
+    VIR_DOMAIN_SHUTOFF_DESTROYED = 2,   /* forced poweroff (Since: v0.9.2) */
+    VIR_DOMAIN_SHUTOFF_CRASHED = 3,     /* domain crashed (Since: v0.9.2) */
+    VIR_DOMAIN_SHUTOFF_MIGRATED = 4,    /* migrated to another host (Since: v0.9.2) */
+    VIR_DOMAIN_SHUTOFF_SAVED = 5,       /* saved to a file (Since: v0.9.2) */
+    VIR_DOMAIN_SHUTOFF_FAILED = 6,      /* domain failed to start (Since: v0.9.2) */
     VIR_DOMAIN_SHUTOFF_FROM_SNAPSHOT = 7, /* restored from a snapshot which was
-                                           * taken while domain was shutoff */
+                                           * taken while domain was shutoff (Since: v0.9.2) */
     VIR_DOMAIN_SHUTOFF_DAEMON = 8,      /* daemon decides to kill domain
-                                           during reconnection processing */
+                                           during reconnection processing (Since: v4.10.0) */
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_SHUTOFF_LAST
+    VIR_DOMAIN_SHUTOFF_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainShutoffReason;
 
@@ -193,11 +195,11 @@ typedef enum {
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_CRASHED_UNKNOWN = 0,     /* crashed for unknown reason */
-    VIR_DOMAIN_CRASHED_PANICKED = 1,    /* domain panicked */
+    VIR_DOMAIN_CRASHED_UNKNOWN = 0,     /* crashed for unknown reason (Since: v0.9.2) */
+    VIR_DOMAIN_CRASHED_PANICKED = 1,    /* domain panicked (Since: v1.1.1) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_CRASHED_LAST
+    VIR_DOMAIN_CRASHED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainCrashedReason;
 
@@ -207,10 +209,10 @@ typedef enum {
  * Since: v0.9.11
  */
 typedef enum {
-    VIR_DOMAIN_PMSUSPENDED_UNKNOWN = 0,
+    VIR_DOMAIN_PMSUSPENDED_UNKNOWN = 0, /* (Since: v0.9.11) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_PMSUSPENDED_LAST
+    VIR_DOMAIN_PMSUSPENDED_LAST /* (Since: v0.9.11) */
 # endif
 } virDomainPMSuspendedReason;
 
@@ -220,10 +222,10 @@ typedef enum {
  * Since: v1.0.0
  */
 typedef enum {
-    VIR_DOMAIN_PMSUSPENDED_DISK_UNKNOWN = 0,
+    VIR_DOMAIN_PMSUSPENDED_DISK_UNKNOWN = 0, /* (Since: v1.0.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_PMSUSPENDED_DISK_LAST
+    VIR_DOMAIN_PMSUSPENDED_DISK_LAST /* (Since: v1.0.0) */
 # endif
 } virDomainPMSuspendedDiskReason;
 
@@ -235,17 +237,17 @@ typedef enum {
  * Since: v0.9.3
  */
 typedef enum {
-    VIR_DOMAIN_CONTROL_OK = 0,       /* operational, ready to accept commands */
+    VIR_DOMAIN_CONTROL_OK = 0,       /* operational, ready to accept commands (Since: v0.9.3) */
     VIR_DOMAIN_CONTROL_JOB = 1,      /* background job is running (can be
                                         monitored by virDomainGetJobInfo); only
-                                        limited set of commands may be allowed */
-    VIR_DOMAIN_CONTROL_OCCUPIED = 2, /* occupied by a running command */
+                                        limited set of commands may be allowed (Since: v0.9.3) */
+    VIR_DOMAIN_CONTROL_OCCUPIED = 2, /* occupied by a running command (Since: v0.9.3) */
     VIR_DOMAIN_CONTROL_ERROR = 3,    /* unusable, domain cannot be fully
                                         operated, possible reason is provided
-                                        in the details field */
+                                        in the details field (Since: v0.9.3) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_CONTROL_LAST
+    VIR_DOMAIN_CONTROL_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainControlState;
 
@@ -258,16 +260,16 @@ typedef enum {
  */
 typedef enum {
     VIR_DOMAIN_CONTROL_ERROR_REASON_NONE = 0,     /* server didn't provide a
-                                                     reason */
+                                                     reason (Since: v1.2.14) */
     VIR_DOMAIN_CONTROL_ERROR_REASON_UNKNOWN = 1,  /* unknown reason for the
-                                                     error */
+                                                     error (Since: v1.2.14) */
     VIR_DOMAIN_CONTROL_ERROR_REASON_MONITOR = 2,  /* monitor connection is
-                                                     broken */
+                                                     broken (Since: v1.2.14) */
     VIR_DOMAIN_CONTROL_ERROR_REASON_INTERNAL = 3, /* error caused due to
-                                                     internal failure in libvirt
+                                                     internal failure in libvirt (Since: v1.2.14)
                                                   */
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_CONTROL_ERROR_REASON_LAST
+    VIR_DOMAIN_CONTROL_ERROR_REASON_LAST /* (Since: v1.2.14) */
 # endif
 } virDomainControlErrorReason;
 
@@ -319,10 +321,10 @@ typedef virDomainControlInfo *virDomainControlInfoPtr;
  * Since: v0.9.2
  */
 typedef enum {
-    VIR_DOMAIN_AFFECT_CURRENT = 0,      /* Affect current domain state.  */
-    VIR_DOMAIN_AFFECT_LIVE    = 1 << 0, /* Affect running domain state.  */
+    VIR_DOMAIN_AFFECT_CURRENT = 0,      /* Affect current domain state. (Since: v0.9.2)  */
+    VIR_DOMAIN_AFFECT_LIVE    = 1 << 0, /* Affect running domain state. (Since: v0.9.2)  */
     VIR_DOMAIN_AFFECT_CONFIG  = 1 << 1, /* Affect persistent domain state.  */
-    /* 1 << 2 is reserved for virTypedParameterFlags */
+    /* 1 << 2 is reserved for virTypedParameterFlags (Since: v0.9.2) */
 } virDomainModificationImpact;
 
 /**
@@ -361,13 +363,13 @@ typedef virDomainInfo *virDomainInfoPtr;
  * Since: v0.0.1
  */
 typedef enum {
-    VIR_DOMAIN_NONE               = 0,      /* Default behavior */
-    VIR_DOMAIN_START_PAUSED       = 1 << 0, /* Launch guest in paused state */
-    VIR_DOMAIN_START_AUTODESTROY  = 1 << 1, /* Automatically kill guest when virConnectPtr is closed */
-    VIR_DOMAIN_START_BYPASS_CACHE = 1 << 2, /* Avoid file system cache pollution */
-    VIR_DOMAIN_START_FORCE_BOOT   = 1 << 3, /* Boot, discarding any managed save */
-    VIR_DOMAIN_START_VALIDATE     = 1 << 4, /* Validate the XML document against schema */
-    VIR_DOMAIN_START_RESET_NVRAM  = 1 << 5, /* Re-initialize NVRAM from template */
+    VIR_DOMAIN_NONE               = 0,      /* Default behavior (Since: v0.0.1) */
+    VIR_DOMAIN_START_PAUSED       = 1 << 0, /* Launch guest in paused state (Since: v0.8.2) */
+    VIR_DOMAIN_START_AUTODESTROY  = 1 << 1, /* Automatically kill guest when virConnectPtr is closed (Since: v0.9.3) */
+    VIR_DOMAIN_START_BYPASS_CACHE = 1 << 2, /* Avoid file system cache pollution (Since: v0.9.4) */
+    VIR_DOMAIN_START_FORCE_BOOT   = 1 << 3, /* Boot, discarding any managed save (Since: v0.9.5) */
+    VIR_DOMAIN_START_VALIDATE     = 1 << 4, /* Validate the XML document against schema (Since: v1.2.12) */
+    VIR_DOMAIN_START_RESET_NVRAM  = 1 << 5, /* Re-initialize NVRAM from template (Since: v8.1.0) */
 } virDomainCreateFlags;
 
 
@@ -710,9 +712,9 @@ typedef virDomainInterfaceStatsStruct *virDomainInterfaceStatsPtr;
  * Since: v0.7.5
  */
 typedef enum {
-    /* The total amount of data read from swap space (in kB). */
+    /* The total amount of data read from swap space (in kB). (Since: v0.7.5) */
     VIR_DOMAIN_MEMORY_STAT_SWAP_IN         = 0,
-    /* The total amount of memory written out to swap space (in kB). */
+    /* The total amount of memory written out to swap space (in kB). (Since: v0.7.5) */
     VIR_DOMAIN_MEMORY_STAT_SWAP_OUT        = 1,
 
     /*
@@ -720,14 +722,24 @@ typedef enum {
      * that is not available.  When servicing the page fault, if disk IO is
      * required, it is considered a major fault.  If not, it is a minor fault.
      * These are expressed as the number of faults that have occurred.
+     *
+     * Since: v0.7.5
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_MAJOR_FAULT     = 2,
+
+    /*
+     * Since: v0.7.5
+     */
     VIR_DOMAIN_MEMORY_STAT_MINOR_FAULT     = 3,
 
     /*
      * The amount of memory left completely unused by the system.  Memory that
      * is available but used for reclaimable caches should NOT be reported as
      * free.  This value is expressed in kB.
+     *
+     * Since: v0.7.5
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_UNUSED          = 4,
 
@@ -736,52 +748,82 @@ typedef enum {
      * may be less than the amount of memory assigned to the domain if a
      * balloon driver is in use or if the guest OS does not initialize all
      * assigned pages.  This value is expressed in kB.
+     *
+     * Since: v0.7.5
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_AVAILABLE       = 5,
 
-    /* Current balloon value (in KB). */
+    /*
+     * Current balloon value (in KB).
+     *
+     * Since: v0.9.3
+     *
+     */
     VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON  = 6,
 
     /* Resident Set Size of the process running the domain. This value
-     * is in kB */
+     * is in kB
+     *
+     * Since: v0.9.10
+     */
     VIR_DOMAIN_MEMORY_STAT_RSS             = 7,
 
     /*
      * How much the balloon can be inflated without pushing the guest system
      * to swap, corresponds to 'Available' in /proc/meminfo
+     *
+     * Since: v2.1.0
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_USABLE          = 8,
 
-    /* Timestamp of the last update of statistics, in seconds. */
+    /*
+     * Timestamp of the last update of statistics, in seconds.
+     *
+     * Since: v2.1.0
+     */
     VIR_DOMAIN_MEMORY_STAT_LAST_UPDATE     = 9,
 
     /*
      * The amount of memory, that can be quickly reclaimed without
      * additional I/O (in kB). Typically these pages are used for caching files
      * from disk.
+     *
+     * Since: v4.6.0
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_DISK_CACHES     = 10,
 
     /*
      * The number of successful huge page allocations from inside the domain via
      * virtio balloon.
+     *
+     * Since: v5.4.0
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGALLOC    = 11,
 
     /*
      * The number of failed huge page allocations from inside the domain via
      * virtio balloon.
+     *
+     * Since: v5.4.0
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_HUGETLB_PGFAIL    = 12,
 
     /*
      * The number of statistics supported by this version of the interface.
      * To add new statistics, add them to the enum and increase this value.
+     *
+     * Since: v0.7.5
+     *
      */
     VIR_DOMAIN_MEMORY_STAT_NR              = 13,
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_MEMORY_STAT_LAST = VIR_DOMAIN_MEMORY_STAT_NR
+    VIR_DOMAIN_MEMORY_STAT_LAST = VIR_DOMAIN_MEMORY_STAT_NR /* (Since: v0.9.10) */
 # endif
 } virDomainMemoryStatTags;
 
@@ -813,11 +855,11 @@ typedef virDomainMemoryStatStruct *virDomainMemoryStatPtr;
  * Since: v0.7.5
  */
 typedef enum {
-    VIR_DUMP_CRASH        = (1 << 0), /* crash after dump */
-    VIR_DUMP_LIVE         = (1 << 1), /* live dump */
-    VIR_DUMP_BYPASS_CACHE = (1 << 2), /* avoid file system cache pollution */
-    VIR_DUMP_RESET        = (1 << 3), /* reset domain after dump finishes */
-    VIR_DUMP_MEMORY_ONLY  = (1 << 4), /* use dump-guest-memory */
+    VIR_DUMP_CRASH        = (1 << 0), /* crash after dump (Since: v0.7.5) */
+    VIR_DUMP_LIVE         = (1 << 1), /* live dump (Since: v0.7.5) */
+    VIR_DUMP_BYPASS_CACHE = (1 << 2), /* avoid file system cache pollution (Since: v0.9.4) */
+    VIR_DUMP_RESET        = (1 << 3), /* reset domain after dump finishes (Since: v0.9.7) */
+    VIR_DUMP_MEMORY_ONLY  = (1 << 4), /* use dump-guest-memory (Since: v0.9.13) */
 } virDomainCoreDumpFlags;
 
 /**
@@ -828,20 +870,22 @@ typedef enum {
  * Since: v1.2.3
  */
 typedef enum {
-    VIR_DOMAIN_CORE_DUMP_FORMAT_RAW,          /* dump guest memory in raw format */
+    VIR_DOMAIN_CORE_DUMP_FORMAT_RAW,          /* dump guest memory in raw format (Since: v1.2.3) */
     VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_ZLIB,   /* kdump-compressed format, with
-                                               * zlib compression */
+                                               * zlib compression (Since: v1.2.3) */
     VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_LZO,    /* kdump-compressed format, with
-                                               * lzo compression */
+                                               * lzo compression (Since: v1.2.3) */
     VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_SNAPPY, /* kdump-compressed format, with
-                                               * snappy compression */
-    VIR_DOMAIN_CORE_DUMP_FORMAT_WIN_DMP,      /* Windows full crashdump format */
+                                               * snappy compression (Since: v1.2.3) */
+    VIR_DOMAIN_CORE_DUMP_FORMAT_WIN_DMP,      /* Windows full crashdump format (Since: v7.4.0) */
 # ifdef VIR_ENUM_SENTINELS
     VIR_DOMAIN_CORE_DUMP_FORMAT_LAST
     /*
      * NB: this enum value will increase over time as new formats are
      * added to the libvirt API. It reflects the last format supported
      * by this version of the libvirt API.
+     *
+     * Since: v1.2.3
      */
 # endif
 } virDomainCoreDumpFormat;
@@ -859,6 +903,9 @@ typedef enum {
      * The migration may never converge if the domain is changing its memory
      * faster then it can be transferred. The domain can be manually paused
      * anytime during migration using virDomainSuspend.
+     *
+     * Since: v0.3.2
+     *
      */
     VIR_MIGRATE_LIVE = (1 << 0),
 
@@ -867,6 +914,9 @@ typedef enum {
      * controls the migration process. In peer-to-peer mode, the source
      * libvirtd controls the migration by calling the destination daemon
      * directly.
+     *
+     * Since: v0.7.2
+     *
      */
     VIR_MIGRATE_PEER2PEER = (1 << 1),
 
@@ -877,6 +927,9 @@ typedef enum {
      *
      * Note the less-common spelling that we're stuck with:
      * VIR_MIGRATE_TUNNELLED should be VIR_MIGRATE_TUNNELED.
+     *
+     * Since: v0.7.2
+     *
      */
     VIR_MIGRATE_TUNNELLED = (1 << 2),
 
@@ -884,17 +937,26 @@ typedef enum {
      * migration. If the domain was persistent on the source host and
      * VIR_MIGRATE_UNDEFINE_SOURCE is not used, it will end up persistent on
      * both hosts.
+     *
+     * Since: v0.7.3
+     *
      */
     VIR_MIGRATE_PERSIST_DEST = (1 << 3),
 
     /* Undefine the domain on the source host once migration successfully
      * finishes.
+     *
+     * Since: v0.7.3
+     *
      */
     VIR_MIGRATE_UNDEFINE_SOURCE = (1 << 4),
 
     /* Leave the domain suspended on the destination host. virDomainResume (on
      * the virDomainPtr returned by the migration API) has to be called
      * explicitly to resume domain's virtual CPUs.
+     *
+     * Since: v0.7.5
+     *
      */
     VIR_MIGRATE_PAUSED = (1 << 5),
 
@@ -904,6 +966,9 @@ typedef enum {
      * disks should be migrated.
      *
      * This flag and VIR_MIGRATE_NON_SHARED_INC are mutually exclusive.
+     *
+     * Since: v0.8.2
+     *
      */
     VIR_MIGRATE_NON_SHARED_DISK = (1 << 6),
 
@@ -914,6 +979,9 @@ typedef enum {
      * on the source host.
      *
      * This flag and VIR_MIGRATE_NON_SHARED_DISK are mutually exclusive.
+     *
+     * Since: v0.8.2
+     *
      */
     VIR_MIGRATE_NON_SHARED_INC = (1 << 7),
 
@@ -921,6 +989,9 @@ typedef enum {
      * process. This flag is used automatically when both sides support it.
      * Explicitly setting this flag will cause migration to fail if either the
      * source or the destination does not support it.
+     *
+     * Since: v0.9.4
+     *
      */
     VIR_MIGRATE_CHANGE_PROTECTION = (1 << 8),
 
@@ -931,6 +1002,9 @@ typedef enum {
      * without explicitly setting cache mode to "none". Migrating such domains
      * is unsafe unless the disk images are stored on coherent clustered
      * filesystem, such as GFS2 or GPFS.
+     *
+     * Since: v0.9.11
+     *
      */
     VIR_MIGRATE_UNSAFE = (1 << 9),
 
@@ -940,6 +1014,9 @@ typedef enum {
      *
      * Offline migration may not copy disk storage or any other file based
      * storage (such as UEFI variables).
+     *
+     * Since: v1.0.1
+     *
      */
     VIR_MIGRATE_OFFLINE = (1 << 10),
 
@@ -947,11 +1024,17 @@ typedef enum {
      * VIR_MIGRATE_PARAM_COMPRESSION. A hypervisor default method will be used
      * if this parameter is omitted. Individual compression methods can be
      * tuned via their specific VIR_MIGRATE_PARAM_COMPRESSION_* parameters.
+     *
+     * Since: v1.0.3
+     *
      */
     VIR_MIGRATE_COMPRESSED = (1 << 11),
 
     /* Cancel migration if a soft error (such as I/O error) happens during
      * migration.
+     *
+     * Since: v1.1.0
+     *
      */
     VIR_MIGRATE_ABORT_ON_ERROR = (1 << 12),
 
@@ -960,6 +1043,9 @@ typedef enum {
      * not change its memory faster than a hypervisor can transfer the changed
      * memory to the destination host. VIR_MIGRATE_PARAM_AUTO_CONVERGE_*
      * parameters can be used to tune the algorithm.
+     *
+     * Since: v1.2.3
+     *
      */
     VIR_MIGRATE_AUTO_CONVERGE = (1 << 13),
 
@@ -977,6 +1063,9 @@ typedef enum {
      * most of the host's memory). Doing so may be dangerous to both the
      * domain and the host itself since the host's kernel may run out of
      * memory.
+     *
+     * Since: v1.2.9
+     *
      */
     VIR_MIGRATE_RDMA_PIN_ALL = (1 << 14),
 
@@ -984,6 +1073,9 @@ typedef enum {
      * migration. However, the migration will start normally and
      * virDomainMigrateStartPostCopy needs to be called to switch it into the
      * post-copy mode. See virDomainMigrateStartPostCopy for more details.
+     *
+     * Since: v1.3.3
+     *
      */
     VIR_MIGRATE_POSTCOPY = (1 << 15),
 
@@ -991,12 +1083,18 @@ typedef enum {
      * to use the TLS environment configured by the hypervisor in order to
      * perform the migration. If incorrectly configured on either source or
      * destination, the migration will fail.
+     *
+     * Since: v3.2.0
+     *
      */
     VIR_MIGRATE_TLS = (1 << 16),
 
     /* Send memory pages to the destination host through several network
      * connections. See VIR_MIGRATE_PARAM_PARALLEL_* parameters for
      * configuring the parallel migration.
+     *
+     * Since: v5.2.0
+     *
      */
     VIR_MIGRATE_PARALLEL = (1 << 17),
 
@@ -1007,6 +1105,9 @@ typedef enum {
       *
       * Requires one of VIR_MIGRATE_NON_SHARED_DISK, VIR_MIGRATE_NON_SHARED_INC
       * to be present as well.
+      *
+      * Since: v8.0.0
+      *
       */
     VIR_MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES = (1 << 18),
 
@@ -1333,7 +1434,7 @@ int virDomainMigrateSetCompressionCache(virDomainPtr domain,
  * Since: v5.1.0
  */
 typedef enum {
-    /* Set or get maximum speed of post-copy migration. */
+    /* Set or get maximum speed of post-copy migration. (Since: v5.1.0) */
     VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY = (1 << 0),
 } virDomainMigrateMaxSpeedFlags;
 
@@ -1400,12 +1501,12 @@ virDomainPtr            virDomainLookupByUUIDString     (virConnectPtr conn,
  * Since: v0.9.10
  */
 typedef enum {
-    VIR_DOMAIN_SHUTDOWN_DEFAULT        = 0,        /* hypervisor choice */
-    VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN = (1 << 0), /* Send ACPI event */
-    VIR_DOMAIN_SHUTDOWN_GUEST_AGENT    = (1 << 1), /* Use guest agent */
-    VIR_DOMAIN_SHUTDOWN_INITCTL        = (1 << 2), /* Use initctl */
-    VIR_DOMAIN_SHUTDOWN_SIGNAL         = (1 << 3), /* Send a signal */
-    VIR_DOMAIN_SHUTDOWN_PARAVIRT       = (1 << 4), /* Use paravirt guest control */
+    VIR_DOMAIN_SHUTDOWN_DEFAULT        = 0,        /* hypervisor choice (Since: v0.9.10) */
+    VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN = (1 << 0), /* Send ACPI event (Since: v0.9.10) */
+    VIR_DOMAIN_SHUTDOWN_GUEST_AGENT    = (1 << 1), /* Use guest agent (Since: v0.9.10) */
+    VIR_DOMAIN_SHUTDOWN_INITCTL        = (1 << 2), /* Use initctl (Since: v1.0.1) */
+    VIR_DOMAIN_SHUTDOWN_SIGNAL         = (1 << 3), /* Send a signal (Since: v1.0.1) */
+    VIR_DOMAIN_SHUTDOWN_PARAVIRT       = (1 << 4), /* Use paravirt guest control (Since: v1.2.5) */
 } virDomainShutdownFlagValues;
 
 int                     virDomainShutdown       (virDomainPtr domain);
@@ -1418,12 +1519,12 @@ int                     virDomainShutdownFlags  (virDomainPtr domain,
  * Since: v0.9.10
  */
 typedef enum {
-    VIR_DOMAIN_REBOOT_DEFAULT        = 0,        /* hypervisor choice */
-    VIR_DOMAIN_REBOOT_ACPI_POWER_BTN = (1 << 0), /* Send ACPI event */
-    VIR_DOMAIN_REBOOT_GUEST_AGENT    = (1 << 1), /* Use guest agent */
-    VIR_DOMAIN_REBOOT_INITCTL        = (1 << 2), /* Use initctl */
-    VIR_DOMAIN_REBOOT_SIGNAL         = (1 << 3), /* Send a signal */
-    VIR_DOMAIN_REBOOT_PARAVIRT       = (1 << 4), /* Use paravirt guest control */
+    VIR_DOMAIN_REBOOT_DEFAULT        = 0,        /* hypervisor choice (Since: v0.9.10) */
+    VIR_DOMAIN_REBOOT_ACPI_POWER_BTN = (1 << 0), /* Send ACPI event (Since: v0.9.10) */
+    VIR_DOMAIN_REBOOT_GUEST_AGENT    = (1 << 1), /* Use guest agent (Since: v0.9.10) */
+    VIR_DOMAIN_REBOOT_INITCTL        = (1 << 2), /* Use initctl (Since: v1.0.1) */
+    VIR_DOMAIN_REBOOT_SIGNAL         = (1 << 3), /* Send a signal (Since: v1.0.1) */
+    VIR_DOMAIN_REBOOT_PARAVIRT       = (1 << 4), /* Use paravirt guest control (Since: v1.2.5) */
 } virDomainRebootFlagValues;
 
 int                     virDomainReboot         (virDomainPtr domain,
@@ -1442,9 +1543,9 @@ int                     virDomainDestroy        (virDomainPtr domain);
  * Since: v0.9.4
  */
 typedef enum {
-    VIR_DOMAIN_DESTROY_DEFAULT   = 0,      /* Default behavior - could lead to data loss!! */
-    VIR_DOMAIN_DESTROY_GRACEFUL  = 1 << 0, /* only SIGTERM, no SIGKILL */
-    VIR_DOMAIN_DESTROY_REMOVE_LOGS = 1 << 1, /* remove VM logs on destroy */
+    VIR_DOMAIN_DESTROY_DEFAULT   = 0,      /* Default behavior - could lead to data loss!! (Since: v0.9.10) */
+    VIR_DOMAIN_DESTROY_GRACEFUL  = 1 << 0, /* only SIGTERM, no SIGKILL (Since: v0.9.10) */
+    VIR_DOMAIN_DESTROY_REMOVE_LOGS = 1 << 1, /* remove VM logs on destroy (Since: v8.3.0) */
 } virDomainDestroyFlagsValues;
 
 int                     virDomainDestroyFlags   (virDomainPtr domain,
@@ -1477,10 +1578,10 @@ int                     virDomainPMWakeup       (virDomainPtr domain,
  * Since: v0.9.4
  */
 typedef enum {
-    VIR_DOMAIN_SAVE_BYPASS_CACHE = 1 << 0, /* Avoid file system cache pollution */
-    VIR_DOMAIN_SAVE_RUNNING      = 1 << 1, /* Favor running over paused */
-    VIR_DOMAIN_SAVE_PAUSED       = 1 << 2, /* Favor paused over running */
-    VIR_DOMAIN_SAVE_RESET_NVRAM  = 1 << 3, /* Re-initialize NVRAM from template */
+    VIR_DOMAIN_SAVE_BYPASS_CACHE = 1 << 0, /* Avoid file system cache pollution (Since: v0.9.4) */
+    VIR_DOMAIN_SAVE_RUNNING      = 1 << 1, /* Favor running over paused (Since: v0.9.5) */
+    VIR_DOMAIN_SAVE_PAUSED       = 1 << 2, /* Favor paused over running (Since: v0.9.5) */
+    VIR_DOMAIN_SAVE_RESET_NVRAM  = 1 << 3, /* Re-initialize NVRAM from template (Since: v8.1.0) */
 } virDomainSaveRestoreFlags;
 
 int                     virDomainSave           (virDomainPtr domain,
@@ -1758,11 +1859,11 @@ int     virDomainGetMemoryParameters(virDomainPtr domain,
  * Since: v0.9.0
  */
 typedef enum {
-    VIR_DOMAIN_MEM_CURRENT = VIR_DOMAIN_AFFECT_CURRENT,
-    VIR_DOMAIN_MEM_LIVE    = VIR_DOMAIN_AFFECT_LIVE,
-    VIR_DOMAIN_MEM_CONFIG  = VIR_DOMAIN_AFFECT_CONFIG,
+    VIR_DOMAIN_MEM_CURRENT = VIR_DOMAIN_AFFECT_CURRENT, /* See virDomainModificationImpact (Since: v0.9.1) */
+    VIR_DOMAIN_MEM_LIVE    = VIR_DOMAIN_AFFECT_LIVE, /* See virDomainModificationImpact (Since: v0.9.0) */
+    VIR_DOMAIN_MEM_CONFIG  = VIR_DOMAIN_AFFECT_CONFIG, /* See virDomainModificationImpact (Since: v0.9.0) */
 
-    VIR_DOMAIN_MEM_MAXIMUM = (1 << 2), /* affect Max rather than current */
+    VIR_DOMAIN_MEM_MAXIMUM = (1 << 2), /* affect Max rather than current (Since: v0.9.1) */
 } virDomainMemoryModFlags;
 
 
@@ -1776,13 +1877,13 @@ typedef enum {
  * Since: v0.9.9
  */
 typedef enum {
-    VIR_DOMAIN_NUMATUNE_MEM_STRICT      = 0,
-    VIR_DOMAIN_NUMATUNE_MEM_PREFERRED   = 1,
-    VIR_DOMAIN_NUMATUNE_MEM_INTERLEAVE  = 2,
-    VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE = 3,
+    VIR_DOMAIN_NUMATUNE_MEM_STRICT      = 0, /* (Since: v0.9.9) */
+    VIR_DOMAIN_NUMATUNE_MEM_PREFERRED   = 1, /* (Since: v0.9.9) */
+    VIR_DOMAIN_NUMATUNE_MEM_INTERLEAVE  = 2, /* (Since: v0.9.9) */
+    VIR_DOMAIN_NUMATUNE_MEM_RESTRICTIVE = 3, /* (Since: v7.3.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_NUMATUNE_MEM_LAST /* This constant is subject to change */
+    VIR_DOMAIN_NUMATUNE_MEM_LAST /* This constant is subject to change (Since: v0.9.9) */
 # endif
 } virDomainNumatuneMemMode;
 
@@ -1843,8 +1944,8 @@ int                     virDomainGetSecurityLabel (virDomainPtr domain,
  * Since: v6.1.0
  */
 typedef enum {
-    VIR_DOMAIN_GET_HOSTNAME_LEASE = (1 << 0), /* Parse DHCP lease file */
-    VIR_DOMAIN_GET_HOSTNAME_AGENT = (1 << 1), /* Query qemu guest agent */
+    VIR_DOMAIN_GET_HOSTNAME_LEASE = (1 << 0), /* Parse DHCP lease file (Since: v6.1.0) */
+    VIR_DOMAIN_GET_HOSTNAME_AGENT = (1 << 1), /* Query qemu guest agent (Since: v6.1.0) */
 } virDomainGetHostnameFlags;
 
 char *                  virDomainGetHostname    (virDomainPtr domain,
@@ -1858,12 +1959,12 @@ int                     virDomainGetSecurityLabelList (virDomainPtr domain,
  * Since: v0.9.10
  */
 typedef enum {
-    VIR_DOMAIN_METADATA_DESCRIPTION = 0, /* Operate on <description> */
-    VIR_DOMAIN_METADATA_TITLE       = 1, /* Operate on <title> */
-    VIR_DOMAIN_METADATA_ELEMENT     = 2, /* Operate on <metadata> */
+    VIR_DOMAIN_METADATA_DESCRIPTION = 0, /* Operate on <description> (Since: v0.9.10) */
+    VIR_DOMAIN_METADATA_TITLE       = 1, /* Operate on <title> (Since: v0.9.10) */
+    VIR_DOMAIN_METADATA_ELEMENT     = 2, /* Operate on <metadata> (Since: v0.9.10) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_METADATA_LAST
+    VIR_DOMAIN_METADATA_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainMetadataType;
 
@@ -1893,10 +1994,10 @@ virDomainGetMetadata(virDomainPtr domain,
  * Since: v0.3.3
  */
 typedef enum {
-    VIR_DOMAIN_XML_SECURE       = (1 << 0), /* dump security sensitive information too */
-    VIR_DOMAIN_XML_INACTIVE     = (1 << 1), /* dump inactive domain information */
-    VIR_DOMAIN_XML_UPDATE_CPU   = (1 << 2), /* update guest CPU requirements according to host CPU */
-    VIR_DOMAIN_XML_MIGRATABLE   = (1 << 3), /* dump XML suitable for migration */
+    VIR_DOMAIN_XML_SECURE       = (1 << 0), /* dump security sensitive information too (Since: v0.3.3) */
+    VIR_DOMAIN_XML_INACTIVE     = (1 << 1), /* dump inactive domain information (Since: v0.3.3) */
+    VIR_DOMAIN_XML_UPDATE_CPU   = (1 << 2), /* update guest CPU requirements according to host CPU (Since: v0.8.0) */
+    VIR_DOMAIN_XML_MIGRATABLE   = (1 << 3), /* dump XML suitable for migration (Since: v1.0.0) */
 } virDomainXMLFlags;
 
 /**
@@ -1905,7 +2006,7 @@ typedef enum {
  * Since: v5.1.0
  */
 typedef enum {
-    VIR_DOMAIN_SAVE_IMAGE_XML_SECURE         = VIR_DOMAIN_XML_SECURE, /* dump security sensitive information too */
+    VIR_DOMAIN_SAVE_IMAGE_XML_SECURE         = VIR_DOMAIN_XML_SECURE, /* dump security sensitive information too (Since: v5.1.0) */
 } virDomainSaveImageXMLFlags;
 
 char *                  virDomainGetXMLDesc     (virDomainPtr domain,
@@ -2026,7 +2127,7 @@ int                     virDomainBlockPeek (virDomainPtr dom,
  * Since: v0.9.11
  */
 typedef enum {
-    VIR_DOMAIN_BLOCK_RESIZE_BYTES = 1 << 0, /* size in bytes instead of KiB */
+    VIR_DOMAIN_BLOCK_RESIZE_BYTES = 1 << 0, /* size in bytes instead of KiB (Since: v0.9.11) */
 } virDomainBlockResizeFlags;
 
 int                     virDomainBlockResize (virDomainPtr dom,
@@ -2101,8 +2202,8 @@ int                     virDomainMemoryStats (virDomainPtr dom,
  * Since: v0.4.4
  */
 typedef enum {
-    VIR_MEMORY_VIRTUAL            = 1 << 0, /* addresses are virtual addresses */
-    VIR_MEMORY_PHYSICAL           = 1 << 1, /* addresses are physical addresses */
+    VIR_MEMORY_VIRTUAL            = 1 << 0, /* addresses are virtual addresses (Since: v0.4.4) */
+    VIR_MEMORY_PHYSICAL           = 1 << 1, /* addresses are physical addresses (Since: v0.7.0) */
 } virDomainMemoryFlags;
 
 int                     virDomainMemoryPeek (virDomainPtr dom,
@@ -2117,7 +2218,7 @@ int                     virDomainMemoryPeek (virDomainPtr dom,
  * Since: v1.2.12
  */
 typedef enum {
-    VIR_DOMAIN_DEFINE_VALIDATE = (1 << 0), /* Validate the XML document against schema */
+    VIR_DOMAIN_DEFINE_VALIDATE = (1 << 0), /* Validate the XML document against schema (Since: v1.2.12) */
 } virDomainDefineFlags;
 
 /*
@@ -2138,18 +2239,18 @@ int                     virDomainUndefine       (virDomainPtr domain);
  */
 typedef enum {
     VIR_DOMAIN_UNDEFINE_MANAGED_SAVE       = (1 << 0), /* Also remove any
-                                                          managed save */
+                                                          managed save (Since: v0.9.4) */
     VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA = (1 << 1), /* If last use of domain,
                                                           then also remove any
-                                                          snapshot metadata */
+                                                          snapshot metadata (Since: v0.9.5) */
     VIR_DOMAIN_UNDEFINE_NVRAM              = (1 << 2), /* Also remove any
-                                                          nvram file */
-    VIR_DOMAIN_UNDEFINE_KEEP_NVRAM         = (1 << 3), /* Keep nvram file */
+                                                          nvram file (Since: v1.2.9) */
+    VIR_DOMAIN_UNDEFINE_KEEP_NVRAM         = (1 << 3), /* Keep nvram file (Since: v2.3.0) */
     VIR_DOMAIN_UNDEFINE_CHECKPOINTS_METADATA = (1 << 4), /* If last use of domain,
                                                             then also remove any
                                                             checkpoint metadata */
 
-    /* Future undefine control flags should come here. */
+    /* Future undefine control flags should come here. (Since: v5.6.0) */
 } virDomainUndefineFlagsValues;
 
 
@@ -2169,28 +2270,28 @@ int                     virConnectListDefinedDomains (virConnectPtr conn,
  * Since: v0.9.13
  */
 typedef enum {
-    VIR_CONNECT_LIST_DOMAINS_ACTIVE         = 1 << 0,
-    VIR_CONNECT_LIST_DOMAINS_INACTIVE       = 1 << 1,
+    VIR_CONNECT_LIST_DOMAINS_ACTIVE         = 1 << 0, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_INACTIVE       = 1 << 1, /* (Since: v0.9.13) */
 
-    VIR_CONNECT_LIST_DOMAINS_PERSISTENT     = 1 << 2,
-    VIR_CONNECT_LIST_DOMAINS_TRANSIENT      = 1 << 3,
+    VIR_CONNECT_LIST_DOMAINS_PERSISTENT     = 1 << 2, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_TRANSIENT      = 1 << 3, /* (Since: v0.9.13) */
 
-    VIR_CONNECT_LIST_DOMAINS_RUNNING        = 1 << 4,
-    VIR_CONNECT_LIST_DOMAINS_PAUSED         = 1 << 5,
-    VIR_CONNECT_LIST_DOMAINS_SHUTOFF        = 1 << 6,
-    VIR_CONNECT_LIST_DOMAINS_OTHER          = 1 << 7,
+    VIR_CONNECT_LIST_DOMAINS_RUNNING        = 1 << 4, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_PAUSED         = 1 << 5, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_SHUTOFF        = 1 << 6, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_OTHER          = 1 << 7, /* (Since: v0.9.13) */
 
-    VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE    = 1 << 8,
-    VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE = 1 << 9,
+    VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE    = 1 << 8, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE = 1 << 9, /* (Since: v0.9.13) */
 
-    VIR_CONNECT_LIST_DOMAINS_AUTOSTART      = 1 << 10,
-    VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART   = 1 << 11,
+    VIR_CONNECT_LIST_DOMAINS_AUTOSTART      = 1 << 10, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART   = 1 << 11, /* (Since: v0.9.13) */
 
-    VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT   = 1 << 12,
-    VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT    = 1 << 13,
+    VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT   = 1 << 12, /* (Since: v0.9.13) */
+    VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT    = 1 << 13, /* (Since: v0.9.13) */
 
-    VIR_CONNECT_LIST_DOMAINS_HAS_CHECKPOINT = 1 << 14,
-    VIR_CONNECT_LIST_DOMAINS_NO_CHECKPOINT  = 1 << 15,
+    VIR_CONNECT_LIST_DOMAINS_HAS_CHECKPOINT = 1 << 14, /* (Since: v5.6.0) */
+    VIR_CONNECT_LIST_DOMAINS_NO_CHECKPOINT  = 1 << 15, /* (Since: v5.6.0) */
 } virConnectListAllDomainsFlags;
 
 int                     virConnectListAllDomains (virConnectPtr conn,
@@ -2218,12 +2319,12 @@ int                     virDomainSetAutostart   (virDomainPtr domain,
  * Since: v0.1.4
  */
 typedef enum {
-    VIR_VCPU_OFFLINE    = 0,    /* the virtual CPU is offline */
-    VIR_VCPU_RUNNING    = 1,    /* the virtual CPU is running */
-    VIR_VCPU_BLOCKED    = 2,    /* the virtual CPU is blocked on resource */
+    VIR_VCPU_OFFLINE    = 0,    /* the virtual CPU is offline (Since: v0.1.4) */
+    VIR_VCPU_RUNNING    = 1,    /* the virtual CPU is running (Since: v0.1.4) */
+    VIR_VCPU_BLOCKED    = 2,    /* the virtual CPU is blocked on resource (Since: v0.1.4) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_VCPU_LAST
+    VIR_VCPU_LAST /* (Since: v0.9.10) */
 # endif
 } virVcpuState;
 
@@ -2233,8 +2334,8 @@ typedef enum {
  * Since: v6.10.0
  */
 typedef enum {
-    VIR_VCPU_INFO_CPU_OFFLINE     = -1, /* the vCPU is offline */
-    VIR_VCPU_INFO_CPU_UNAVAILABLE = -2, /* the hypervisor does not expose real CPU information */
+    VIR_VCPU_INFO_CPU_OFFLINE     = -1, /* the vCPU is offline (Since: v6.10.0) */
+    VIR_VCPU_INFO_CPU_UNAVAILABLE = -2, /* the hypervisor does not expose real CPU information (Since: v6.10.0) */
 } virVcpuHostCpuState;
 
 /**
@@ -2265,13 +2366,13 @@ typedef virVcpuInfo *virVcpuInfoPtr;
  * Since: v0.8.5
  */
 typedef enum {
-    VIR_DOMAIN_VCPU_CURRENT = VIR_DOMAIN_AFFECT_CURRENT,
-    VIR_DOMAIN_VCPU_LIVE    = VIR_DOMAIN_AFFECT_LIVE,
-    VIR_DOMAIN_VCPU_CONFIG  = VIR_DOMAIN_AFFECT_CONFIG,
+    VIR_DOMAIN_VCPU_CURRENT = VIR_DOMAIN_AFFECT_CURRENT, /* See virDomainModificationImpact (Since: v0.9.4) */
+    VIR_DOMAIN_VCPU_LIVE    = VIR_DOMAIN_AFFECT_LIVE, /* See virDomainModificationImpact (Since: v0.8.5) */
+    VIR_DOMAIN_VCPU_CONFIG  = VIR_DOMAIN_AFFECT_CONFIG, /* See virDomainModificationImpact (Since: v0.8.5) */
 
-    VIR_DOMAIN_VCPU_MAXIMUM = (1 << 2), /* Max rather than current count */
-    VIR_DOMAIN_VCPU_GUEST   = (1 << 3), /* Modify state of the cpu in the guest */
-    VIR_DOMAIN_VCPU_HOTPLUGGABLE = (1 << 4), /* Make vcpus added hot(un)pluggable */
+    VIR_DOMAIN_VCPU_MAXIMUM = (1 << 2), /* Max rather than current count (Since: v0.8.5) */
+    VIR_DOMAIN_VCPU_GUEST   = (1 << 3), /* Modify state of the cpu in the guest (Since: v1.1.0) */
+    VIR_DOMAIN_VCPU_HOTPLUGGABLE = (1 << 4), /* Make vcpus added hot(un)pluggable (Since: v2.4.0) */
 } virDomainVcpuFlags;
 
 int                     virDomainSetVcpus       (virDomainPtr domain,
@@ -2510,12 +2611,11 @@ int                     virDomainGetVcpus       (virDomainPtr domain,
  * Since: v0.7.7
  */
 typedef enum {
-    VIR_DOMAIN_DEVICE_MODIFY_CURRENT = VIR_DOMAIN_AFFECT_CURRENT,
-    VIR_DOMAIN_DEVICE_MODIFY_LIVE    = VIR_DOMAIN_AFFECT_LIVE,
-    VIR_DOMAIN_DEVICE_MODIFY_CONFIG  = VIR_DOMAIN_AFFECT_CONFIG,
+    VIR_DOMAIN_DEVICE_MODIFY_CURRENT = VIR_DOMAIN_AFFECT_CURRENT, /* See virDomainModificationImpact (Since: v0.7.7) */
+    VIR_DOMAIN_DEVICE_MODIFY_LIVE    = VIR_DOMAIN_AFFECT_LIVE, /* See virDomainModificationImpact (Since: v0.7.7) */
+    VIR_DOMAIN_DEVICE_MODIFY_CONFIG  = VIR_DOMAIN_AFFECT_CONFIG, /* See virDomainModificationImpact (Since: v0.7.7) */
 
-    VIR_DOMAIN_DEVICE_MODIFY_FORCE = (1 << 2), /* Forcibly modify device
-                                                  (ex. force eject a cdrom) */
+    VIR_DOMAIN_DEVICE_MODIFY_FORCE = (1 << 2), /* Forcibly modify device (ex. force eject a cdrom) (Since: v0.8.6) */
 } virDomainDeviceModifyFlags;
 
 int virDomainAttachDevice(virDomainPtr domain, const char *xml);
@@ -2556,16 +2656,16 @@ struct _virDomainStatsRecord {
  * Since: v1.2.8
  */
 typedef enum {
-    VIR_DOMAIN_STATS_STATE = (1 << 0), /* return domain state */
-    VIR_DOMAIN_STATS_CPU_TOTAL = (1 << 1), /* return domain CPU info */
-    VIR_DOMAIN_STATS_BALLOON = (1 << 2), /* return domain balloon info */
-    VIR_DOMAIN_STATS_VCPU = (1 << 3), /* return domain virtual CPU info */
-    VIR_DOMAIN_STATS_INTERFACE = (1 << 4), /* return domain interfaces info */
-    VIR_DOMAIN_STATS_BLOCK = (1 << 5), /* return domain block info */
-    VIR_DOMAIN_STATS_PERF = (1 << 6), /* return domain perf event info */
-    VIR_DOMAIN_STATS_IOTHREAD = (1 << 7), /* return iothread poll info */
-    VIR_DOMAIN_STATS_MEMORY = (1 << 8), /* return domain memory info */
-    VIR_DOMAIN_STATS_DIRTYRATE = (1 << 9), /* return domain dirty rate info */
+    VIR_DOMAIN_STATS_STATE = (1 << 0), /* return domain state (Since: v1.2.8) */
+    VIR_DOMAIN_STATS_CPU_TOTAL = (1 << 1), /* return domain CPU info (Since: v1.2.9) */
+    VIR_DOMAIN_STATS_BALLOON = (1 << 2), /* return domain balloon info (Since: v1.2.9) */
+    VIR_DOMAIN_STATS_VCPU = (1 << 3), /* return domain virtual CPU info (Since: v1.2.9) */
+    VIR_DOMAIN_STATS_INTERFACE = (1 << 4), /* return domain interfaces info (Since: v1.2.9) */
+    VIR_DOMAIN_STATS_BLOCK = (1 << 5), /* return domain block info (Since: v1.2.9) */
+    VIR_DOMAIN_STATS_PERF = (1 << 6), /* return domain perf event info (Since: v1.3.3) */
+    VIR_DOMAIN_STATS_IOTHREAD = (1 << 7), /* return iothread poll info (Since: v4.10.0) */
+    VIR_DOMAIN_STATS_MEMORY = (1 << 8), /* return domain memory info (Since: v6.0.0) */
+    VIR_DOMAIN_STATS_DIRTYRATE = (1 << 9), /* return domain dirty rate info (Since: v7.2.0) */
 } virDomainStatsTypes;
 
 /**
@@ -2574,21 +2674,21 @@ typedef enum {
  * Since: v1.2.8
  */
 typedef enum {
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_ACTIVE = VIR_CONNECT_LIST_DOMAINS_ACTIVE,
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_INACTIVE = VIR_CONNECT_LIST_DOMAINS_INACTIVE,
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_ACTIVE = VIR_CONNECT_LIST_DOMAINS_ACTIVE, /* (Since: v1.2.8) */
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_INACTIVE = VIR_CONNECT_LIST_DOMAINS_INACTIVE, /* (Since: v1.2.8) */
 
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_PERSISTENT = VIR_CONNECT_LIST_DOMAINS_PERSISTENT,
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_TRANSIENT = VIR_CONNECT_LIST_DOMAINS_TRANSIENT,
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_PERSISTENT = VIR_CONNECT_LIST_DOMAINS_PERSISTENT, /* (Since: v1.2.8) */
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_TRANSIENT = VIR_CONNECT_LIST_DOMAINS_TRANSIENT, /* (Since: v1.2.8) */
 
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_RUNNING = VIR_CONNECT_LIST_DOMAINS_RUNNING,
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_PAUSED = VIR_CONNECT_LIST_DOMAINS_PAUSED,
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_SHUTOFF = VIR_CONNECT_LIST_DOMAINS_SHUTOFF,
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_OTHER = VIR_CONNECT_LIST_DOMAINS_OTHER,
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_RUNNING = VIR_CONNECT_LIST_DOMAINS_RUNNING, /* (Since: v1.2.8) */
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_PAUSED = VIR_CONNECT_LIST_DOMAINS_PAUSED, /* (Since: v1.2.8) */
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_SHUTOFF = VIR_CONNECT_LIST_DOMAINS_SHUTOFF, /* (Since: v1.2.8) */
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_OTHER = VIR_CONNECT_LIST_DOMAINS_OTHER, /* (Since: v1.2.8) */
 
     VIR_CONNECT_GET_ALL_DOMAINS_STATS_NOWAIT = 1 << 29, /* report statistics that can be obtained
-                                                           immediately without any blocking */
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_BACKING = 1 << 30, /* include backing chain for block stats */
-    VIR_CONNECT_GET_ALL_DOMAINS_STATS_ENFORCE_STATS = 1U << 31, /* enforce requested stats */
+                                                           immediately without any blocking (Since: v4.5.0) */
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_BACKING = 1 << 30, /* include backing chain for block stats (Since: v1.2.12) */
+    VIR_CONNECT_GET_ALL_DOMAINS_STATS_ENFORCE_STATS = 1U << 31, /* enforce requested stats (Since: v1.2.8) */
 } virConnectGetAllDomainStatsFlags;
 
 int virConnectGetAllDomainStats(virConnectPtr conn,
@@ -2897,30 +2997,45 @@ int virDomainSetPerfEvents(virDomainPtr dom,
  * Since: v0.9.4
  */
 typedef enum {
-    /* Placeholder */
+    /* Placeholder (Since: v0.9.4) */
     VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN = 0,
 
     /* Block Pull (virDomainBlockPull, or virDomainBlockRebase without
-     * flags), job ends on completion */
+     * flags), job ends on completion
+     *
+     * Since: v0.9.4
+     */
     VIR_DOMAIN_BLOCK_JOB_TYPE_PULL = 1,
 
     /* Block Copy (virDomainBlockCopy, or virDomainBlockRebase with
-     * flags), job exists as long as mirroring is active */
+     * flags), job exists as long as mirroring is active
+     *
+     * Since: v0.9.12
+     */
     VIR_DOMAIN_BLOCK_JOB_TYPE_COPY = 2,
 
     /* Block Commit (virDomainBlockCommit without flags), job ends on
-     * completion */
+     * completion
+     *
+     * Since: v0.10.2
+     */
     VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT = 3,
 
     /* Active Block Commit (virDomainBlockCommit with flags), job
-     * exists as long as sync is active */
+     * exists as long as sync is active
+     *
+     * Since: v1.2.6
+     */
     VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT = 4,
 
-    /* Backup (virDomainBackupBegin) */
+    /* Backup (virDomainBackupBegin)
+     *
+     * Since: v6.0.0
+     */
     VIR_DOMAIN_BLOCK_JOB_TYPE_BACKUP = 5,
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_BLOCK_JOB_TYPE_LAST
+    VIR_DOMAIN_BLOCK_JOB_TYPE_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainBlockJobType;
 
@@ -2934,8 +3049,8 @@ typedef enum {
  * Since: v0.9.12
  */
 typedef enum {
-    VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC = 1 << 0,
-    VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT = 1 << 1,
+    VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC = 1 << 0, /* (Since: v0.9.12) */
+    VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT = 1 << 1, /* (Since: v0.9.12) */
 } virDomainBlockJobAbortFlags;
 
 int virDomainBlockJobAbort(virDomainPtr dom, const char *disk,
@@ -2950,7 +3065,7 @@ int virDomainBlockJobAbort(virDomainPtr dom, const char *disk,
  */
 typedef enum {
     VIR_DOMAIN_BLOCK_JOB_INFO_BANDWIDTH_BYTES = 1 << 0, /* bandwidth in bytes/s
-                                                           instead of MiB/s */
+                                                           instead of MiB/s (Since: v1.2.9) */
 } virDomainBlockJobInfoFlags;
 
 /**
@@ -3002,7 +3117,7 @@ int virDomainGetBlockJobInfo(virDomainPtr dom, const char *disk,
  */
 typedef enum {
     VIR_DOMAIN_BLOCK_JOB_SPEED_BANDWIDTH_BYTES = 1 << 0, /* bandwidth in bytes/s
-                                                            instead of MiB/s */
+                                                            instead of MiB/s (Since: v1.2.9) */
 } virDomainBlockJobSetSpeedFlags;
 
 int virDomainBlockJobSetSpeed(virDomainPtr dom, const char *disk,
@@ -3018,7 +3133,7 @@ int virDomainBlockJobSetSpeed(virDomainPtr dom, const char *disk,
  */
 typedef enum {
     VIR_DOMAIN_BLOCK_PULL_BANDWIDTH_BYTES = 1 << 6, /* bandwidth in bytes/s
-                                                       instead of MiB/s */
+                                                       instead of MiB/s (Since: v1.2.9) */
 } virDomainBlockPullFlags;
 
 int virDomainBlockPull(virDomainPtr dom, const char *disk,
@@ -3033,18 +3148,18 @@ int virDomainBlockPull(virDomainPtr dom, const char *disk,
  */
 typedef enum {
     VIR_DOMAIN_BLOCK_REBASE_SHALLOW   = 1 << 0, /* Limit copy to top of source
-                                                   backing chain */
+                                                   backing chain (Since: v0.9.12) */
     VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT = 1 << 1, /* Reuse existing external
-                                                   file for a copy */
-    VIR_DOMAIN_BLOCK_REBASE_COPY_RAW  = 1 << 2, /* Make destination file raw */
-    VIR_DOMAIN_BLOCK_REBASE_COPY      = 1 << 3, /* Start a copy job */
+                                                   file for a copy (Since: v0.9.12) */
+    VIR_DOMAIN_BLOCK_REBASE_COPY_RAW  = 1 << 2, /* Make destination file raw (Since: v0.9.12) */
+    VIR_DOMAIN_BLOCK_REBASE_COPY      = 1 << 3, /* Start a copy job (Since: v0.9.12) */
     VIR_DOMAIN_BLOCK_REBASE_RELATIVE  = 1 << 4, /* Keep backing chain
                                                    referenced using relative
-                                                   names */
+                                                   names (Since: v1.2.7) */
     VIR_DOMAIN_BLOCK_REBASE_COPY_DEV  = 1 << 5, /* Treat destination as block
-                                                   device instead of file */
+                                                   device instead of file (Since: v1.2.9) */
     VIR_DOMAIN_BLOCK_REBASE_BANDWIDTH_BYTES = 1 << 6, /* bandwidth in bytes/s
-                                                         instead of MiB/s */
+                                                         instead of MiB/s (Since: v1.2.9) */
 } virDomainBlockRebaseFlags;
 
 int virDomainBlockRebase(virDomainPtr dom, const char *disk,
@@ -3059,17 +3174,20 @@ int virDomainBlockRebase(virDomainPtr dom, const char *disk,
  * Since: v1.2.8
  */
 typedef enum {
-    /* Limit copy to top of source backing chain */
+    /* Limit copy to top of source backing chain (Since: v1.2.8) */
     VIR_DOMAIN_BLOCK_COPY_SHALLOW   = 1 << 0,
 
-    /* Reuse existing external file for a copy */
+    /* Reuse existing external file for a copy (Since: v1.2.8) */
     VIR_DOMAIN_BLOCK_COPY_REUSE_EXT = 1 << 1,
 
-    /* Don't force usage of recoverable job for the copy operation */
+    /* Don't force usage of recoverable job for the copy operation (Since: v3.5.0) */
     VIR_DOMAIN_BLOCK_COPY_TRANSIENT_JOB = 1 << 2,
 
     /* Force the copy job to synchronously propagate guest writes into
-     * the destination image, so that the copy is guaranteed to converge */
+     * the destination image, so that the copy is guaranteed to converge
+     *
+     * Since: v8.0.0
+     */
     VIR_DOMAIN_BLOCK_COPY_SYNCHRONOUS_WRITES = 1 << 3,
 } virDomainBlockCopyFlags;
 
@@ -3133,17 +3251,17 @@ int virDomainBlockCopy(virDomainPtr dom, const char *disk,
  */
 typedef enum {
     VIR_DOMAIN_BLOCK_COMMIT_SHALLOW = 1 << 0, /* NULL base means next backing
-                                                 file, not whole chain */
+                                                 file, not whole chain (Since: v0.10.2) */
     VIR_DOMAIN_BLOCK_COMMIT_DELETE  = 1 << 1, /* Delete any files that are now
                                                  invalid after their contents
-                                                 have been committed */
+                                                 have been committed (Since: v0.10.2) */
     VIR_DOMAIN_BLOCK_COMMIT_ACTIVE  = 1 << 2, /* Allow a two-phase commit when
-                                                 top is the active layer */
+                                                 top is the active layer (Since: v1.2.6) */
     VIR_DOMAIN_BLOCK_COMMIT_RELATIVE = 1 << 3, /* keep the backing chain
                                                   referenced using relative
-                                                  names */
+                                                  names (Since: v1.2.7) */
     VIR_DOMAIN_BLOCK_COMMIT_BANDWIDTH_BYTES = 1 << 4, /* bandwidth in bytes/s
-                                                         instead of MiB/s */
+                                                         instead of MiB/s (Since: v1.2.9) */
 } virDomainBlockCommitFlags;
 
 int virDomainBlockCommit(virDomainPtr dom, const char *disk, const char *base,
@@ -3370,12 +3488,12 @@ virDomainGetBlockIoTune(virDomainPtr dom,
  * Since: v0.9.10
  */
 typedef enum {
-    VIR_DOMAIN_DISK_ERROR_NONE      = 0, /* no error */
-    VIR_DOMAIN_DISK_ERROR_UNSPEC    = 1, /* unspecified I/O error */
-    VIR_DOMAIN_DISK_ERROR_NO_SPACE  = 2, /* no space left on the device */
+    VIR_DOMAIN_DISK_ERROR_NONE      = 0, /* no error (Since: v0.9.10) */
+    VIR_DOMAIN_DISK_ERROR_UNSPEC    = 1, /* unspecified I/O error (Since: v0.9.10) */
+    VIR_DOMAIN_DISK_ERROR_NO_SPACE  = 2, /* no space left on the device (Since: v0.9.10) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_DISK_ERROR_LAST
+    VIR_DOMAIN_DISK_ERROR_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainDiskErrorCode;
 
@@ -3413,16 +3531,16 @@ int virDomainGetDiskErrors(virDomainPtr dom,
  * Since: v0.9.3
  */
 typedef enum {
-    VIR_KEYCODE_SET_LINUX          = 0,
-    VIR_KEYCODE_SET_XT             = 1,
-    VIR_KEYCODE_SET_ATSET1         = 2,
-    VIR_KEYCODE_SET_ATSET2         = 3,
-    VIR_KEYCODE_SET_ATSET3         = 4,
-    VIR_KEYCODE_SET_OSX            = 5,
-    VIR_KEYCODE_SET_XT_KBD         = 6,
-    VIR_KEYCODE_SET_USB            = 7,
-    VIR_KEYCODE_SET_WIN32          = 8,
-    VIR_KEYCODE_SET_QNUM           = 9,
+    VIR_KEYCODE_SET_LINUX          = 0, /* (Since: v0.9.3) */
+    VIR_KEYCODE_SET_XT             = 1, /* (Since: v0.9.3) */
+    VIR_KEYCODE_SET_ATSET1         = 2, /* (Since: v0.9.3) */
+    VIR_KEYCODE_SET_ATSET2         = 3, /* (Since: v0.9.3) */
+    VIR_KEYCODE_SET_ATSET3         = 4, /* (Since: v0.9.3) */
+    VIR_KEYCODE_SET_OSX            = 5, /* (Since: v0.9.4) */
+    VIR_KEYCODE_SET_XT_KBD         = 6, /* (Since: v0.9.4) */
+    VIR_KEYCODE_SET_USB            = 7, /* (Since: v0.9.4) */
+    VIR_KEYCODE_SET_WIN32          = 8, /* (Since: v0.9.4) */
+    VIR_KEYCODE_SET_QNUM           = 9, /* (Since: v4.2.0) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_KEYCODE_SET_LAST
@@ -3430,6 +3548,8 @@ typedef enum {
      * NB: this enum value will increase over time as new keycode sets are
      * added to the libvirt API. It reflects the last keycode set supported
      * by this version of the libvirt API.
+     *
+     * Since: v0.9.4
      */
 # endif
 } virKeycodeSet;
@@ -3474,80 +3594,80 @@ int virDomainSendKey(virDomainPtr domain,
  * Since: v1.0.1
  */
 typedef enum {
-    VIR_DOMAIN_PROCESS_SIGNAL_NOP        =  0, /* No constant in POSIX/Linux */
-    VIR_DOMAIN_PROCESS_SIGNAL_HUP        =  1, /* SIGHUP */
-    VIR_DOMAIN_PROCESS_SIGNAL_INT        =  2, /* SIGINT */
-    VIR_DOMAIN_PROCESS_SIGNAL_QUIT       =  3, /* SIGQUIT */
-    VIR_DOMAIN_PROCESS_SIGNAL_ILL        =  4, /* SIGILL */
-    VIR_DOMAIN_PROCESS_SIGNAL_TRAP       =  5, /* SIGTRAP */
-    VIR_DOMAIN_PROCESS_SIGNAL_ABRT       =  6, /* SIGABRT */
-    VIR_DOMAIN_PROCESS_SIGNAL_BUS        =  7, /* SIGBUS */
-    VIR_DOMAIN_PROCESS_SIGNAL_FPE        =  8, /* SIGFPE */
-    VIR_DOMAIN_PROCESS_SIGNAL_KILL       =  9, /* SIGKILL */
-
-    VIR_DOMAIN_PROCESS_SIGNAL_USR1       = 10, /* SIGUSR1 */
-    VIR_DOMAIN_PROCESS_SIGNAL_SEGV       = 11, /* SIGSEGV */
-    VIR_DOMAIN_PROCESS_SIGNAL_USR2       = 12, /* SIGUSR2 */
-    VIR_DOMAIN_PROCESS_SIGNAL_PIPE       = 13, /* SIGPIPE */
-    VIR_DOMAIN_PROCESS_SIGNAL_ALRM       = 14, /* SIGALRM */
-    VIR_DOMAIN_PROCESS_SIGNAL_TERM       = 15, /* SIGTERM */
-    VIR_DOMAIN_PROCESS_SIGNAL_STKFLT     = 16, /* Not in POSIX (SIGSTKFLT on Linux )*/
-    VIR_DOMAIN_PROCESS_SIGNAL_CHLD       = 17, /* SIGCHLD */
-    VIR_DOMAIN_PROCESS_SIGNAL_CONT       = 18, /* SIGCONT */
-    VIR_DOMAIN_PROCESS_SIGNAL_STOP       = 19, /* SIGSTOP */
-
-    VIR_DOMAIN_PROCESS_SIGNAL_TSTP       = 20, /* SIGTSTP */
-    VIR_DOMAIN_PROCESS_SIGNAL_TTIN       = 21, /* SIGTTIN */
-    VIR_DOMAIN_PROCESS_SIGNAL_TTOU       = 22, /* SIGTTOU */
-    VIR_DOMAIN_PROCESS_SIGNAL_URG        = 23, /* SIGURG */
-    VIR_DOMAIN_PROCESS_SIGNAL_XCPU       = 24, /* SIGXCPU */
-    VIR_DOMAIN_PROCESS_SIGNAL_XFSZ       = 25, /* SIGXFSZ */
-    VIR_DOMAIN_PROCESS_SIGNAL_VTALRM     = 26, /* SIGVTALRM */
-    VIR_DOMAIN_PROCESS_SIGNAL_PROF       = 27, /* SIGPROF */
-    VIR_DOMAIN_PROCESS_SIGNAL_WINCH      = 28, /* Not in POSIX (SIGWINCH on Linux) */
-    VIR_DOMAIN_PROCESS_SIGNAL_POLL       = 29, /* SIGPOLL (also known as SIGIO on Linux) */
-
-    VIR_DOMAIN_PROCESS_SIGNAL_PWR        = 30, /* Not in POSIX (SIGPWR on Linux) */
-    VIR_DOMAIN_PROCESS_SIGNAL_SYS        = 31, /* SIGSYS (also known as SIGUNUSED on Linux) */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT0        = 32, /* SIGRTMIN */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT1        = 33, /* SIGRTMIN + 1 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT2        = 34, /* SIGRTMIN + 2 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT3        = 35, /* SIGRTMIN + 3 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT4        = 36, /* SIGRTMIN + 4 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT5        = 37, /* SIGRTMIN + 5 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT6        = 38, /* SIGRTMIN + 6 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT7        = 39, /* SIGRTMIN + 7 */
-
-    VIR_DOMAIN_PROCESS_SIGNAL_RT8        = 40, /* SIGRTMIN + 8 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT9        = 41, /* SIGRTMIN + 9 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT10       = 42, /* SIGRTMIN + 10 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT11       = 43, /* SIGRTMIN + 11 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT12       = 44, /* SIGRTMIN + 12 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT13       = 45, /* SIGRTMIN + 13 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT14       = 46, /* SIGRTMIN + 14 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT15       = 47, /* SIGRTMIN + 15 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT16       = 48, /* SIGRTMIN + 16 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT17       = 49, /* SIGRTMIN + 17 */
-
-    VIR_DOMAIN_PROCESS_SIGNAL_RT18       = 50, /* SIGRTMIN + 18 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT19       = 51, /* SIGRTMIN + 19 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT20       = 52, /* SIGRTMIN + 20 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT21       = 53, /* SIGRTMIN + 21 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT22       = 54, /* SIGRTMIN + 22 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT23       = 55, /* SIGRTMIN + 23 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT24       = 56, /* SIGRTMIN + 24 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT25       = 57, /* SIGRTMIN + 25 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT26       = 58, /* SIGRTMIN + 26 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT27       = 59, /* SIGRTMIN + 27 */
-
-    VIR_DOMAIN_PROCESS_SIGNAL_RT28       = 60, /* SIGRTMIN + 28 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT29       = 61, /* SIGRTMIN + 29 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT30       = 62, /* SIGRTMIN + 30 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT31       = 63, /* SIGRTMIN + 31 */
-    VIR_DOMAIN_PROCESS_SIGNAL_RT32       = 64, /* SIGRTMIN + 32 / SIGRTMAX */
+    VIR_DOMAIN_PROCESS_SIGNAL_NOP        =  0, /* No constant in POSIX/Linux (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_HUP        =  1, /* SIGHUP (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_INT        =  2, /* SIGINT (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_QUIT       =  3, /* SIGQUIT (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_ILL        =  4, /* SIGILL (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_TRAP       =  5, /* SIGTRAP (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_ABRT       =  6, /* SIGABRT (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_BUS        =  7, /* SIGBUS (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_FPE        =  8, /* SIGFPE (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_KILL       =  9, /* SIGKILL (Since: v1.0.1) */
+
+    VIR_DOMAIN_PROCESS_SIGNAL_USR1       = 10, /* SIGUSR1 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_SEGV       = 11, /* SIGSEGV (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_USR2       = 12, /* SIGUSR2 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_PIPE       = 13, /* SIGPIPE (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_ALRM       = 14, /* SIGALRM (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_TERM       = 15, /* SIGTERM (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_STKFLT     = 16, /* Not in POSIX (SIGSTKFLT on Linux (Since: v1.0.1) )*/
+    VIR_DOMAIN_PROCESS_SIGNAL_CHLD       = 17, /* SIGCHLD (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_CONT       = 18, /* SIGCONT (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_STOP       = 19, /* SIGSTOP (Since: v1.0.1) */
+
+    VIR_DOMAIN_PROCESS_SIGNAL_TSTP       = 20, /* SIGTSTP (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_TTIN       = 21, /* SIGTTIN (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_TTOU       = 22, /* SIGTTOU (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_URG        = 23, /* SIGURG (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_XCPU       = 24, /* SIGXCPU (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_XFSZ       = 25, /* SIGXFSZ (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_VTALRM     = 26, /* SIGVTALRM (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_PROF       = 27, /* SIGPROF (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_WINCH      = 28, /* Not in POSIX (SIGWINCH on Linux) (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_POLL       = 29, /* SIGPOLL (also known as SIGIO on Linux) (Since: v1.0.1) */
+
+    VIR_DOMAIN_PROCESS_SIGNAL_PWR        = 30, /* Not in POSIX (SIGPWR on Linux) (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_SYS        = 31, /* SIGSYS (also known as SIGUNUSED on Linux) (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT0        = 32, /* SIGRTMIN (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT1        = 33, /* SIGRTMIN + 1 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT2        = 34, /* SIGRTMIN + 2 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT3        = 35, /* SIGRTMIN + 3 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT4        = 36, /* SIGRTMIN + 4 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT5        = 37, /* SIGRTMIN + 5 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT6        = 38, /* SIGRTMIN + 6 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT7        = 39, /* SIGRTMIN + 7 (Since: v1.0.1) */
+
+    VIR_DOMAIN_PROCESS_SIGNAL_RT8        = 40, /* SIGRTMIN + 8 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT9        = 41, /* SIGRTMIN + 9 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT10       = 42, /* SIGRTMIN + 10 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT11       = 43, /* SIGRTMIN + 11 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT12       = 44, /* SIGRTMIN + 12 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT13       = 45, /* SIGRTMIN + 13 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT14       = 46, /* SIGRTMIN + 14 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT15       = 47, /* SIGRTMIN + 15 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT16       = 48, /* SIGRTMIN + 16 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT17       = 49, /* SIGRTMIN + 17 (Since: v1.0.1) */
+
+    VIR_DOMAIN_PROCESS_SIGNAL_RT18       = 50, /* SIGRTMIN + 18 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT19       = 51, /* SIGRTMIN + 19 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT20       = 52, /* SIGRTMIN + 20 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT21       = 53, /* SIGRTMIN + 21 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT22       = 54, /* SIGRTMIN + 22 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT23       = 55, /* SIGRTMIN + 23 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT24       = 56, /* SIGRTMIN + 24 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT25       = 57, /* SIGRTMIN + 25 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT26       = 58, /* SIGRTMIN + 26 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT27       = 59, /* SIGRTMIN + 27 (Since: v1.0.1) */
+
+    VIR_DOMAIN_PROCESS_SIGNAL_RT28       = 60, /* SIGRTMIN + 28 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT29       = 61, /* SIGRTMIN + 29 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT30       = 62, /* SIGRTMIN + 30 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT31       = 63, /* SIGRTMIN + 31 (Since: v1.0.1) */
+    VIR_DOMAIN_PROCESS_SIGNAL_RT32       = 64, /* SIGRTMIN + 32 / SIGRTMAX (Since: v1.0.1) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_PROCESS_SIGNAL_LAST
+    VIR_DOMAIN_PROCESS_SIGNAL_LAST /* (Since: v1.0.1) */
 # endif
 } virDomainProcessSignal;
 
@@ -3576,18 +3696,18 @@ virDomainPtr            virDomainCreateLinux    (virConnectPtr conn,
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_DEFINED = 0,
-    VIR_DOMAIN_EVENT_UNDEFINED = 1,
-    VIR_DOMAIN_EVENT_STARTED = 2,
-    VIR_DOMAIN_EVENT_SUSPENDED = 3,
-    VIR_DOMAIN_EVENT_RESUMED = 4,
-    VIR_DOMAIN_EVENT_STOPPED = 5,
-    VIR_DOMAIN_EVENT_SHUTDOWN = 6,
-    VIR_DOMAIN_EVENT_PMSUSPENDED = 7,
-    VIR_DOMAIN_EVENT_CRASHED = 8,
+    VIR_DOMAIN_EVENT_DEFINED = 0, /* (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_UNDEFINED = 1, /* (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STARTED = 2, /* (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_SUSPENDED = 3, /* (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_RESUMED = 4, /* (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STOPPED = 5, /* (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_SHUTDOWN = 6, /* (Since: v0.9.8) */
+    VIR_DOMAIN_EVENT_PMSUSPENDED = 7, /* (Since: v0.10.2) */
+    VIR_DOMAIN_EVENT_CRASHED = 8, /* (Since: v1.1.1) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_LAST
+    VIR_DOMAIN_EVENT_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventType;
 
@@ -3599,13 +3719,13 @@ typedef enum {
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_DEFINED_ADDED = 0,     /* Newly created config file */
-    VIR_DOMAIN_EVENT_DEFINED_UPDATED = 1,   /* Changed config file */
-    VIR_DOMAIN_EVENT_DEFINED_RENAMED = 2,   /* Domain was renamed */
-    VIR_DOMAIN_EVENT_DEFINED_FROM_SNAPSHOT = 3,   /* Config was restored from a snapshot */
+    VIR_DOMAIN_EVENT_DEFINED_ADDED = 0,     /* Newly created config file (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_DEFINED_UPDATED = 1,   /* Changed config file (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_DEFINED_RENAMED = 2,   /* Domain was renamed (Since: v1.2.19) */
+    VIR_DOMAIN_EVENT_DEFINED_FROM_SNAPSHOT = 3,   /* Config was restored from a snapshot (Since: v1.3.3) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_DEFINED_LAST
+    VIR_DOMAIN_EVENT_DEFINED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventDefinedDetailType;
 
@@ -3617,11 +3737,11 @@ typedef enum {
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_UNDEFINED_REMOVED = 0, /* Deleted the config file */
-    VIR_DOMAIN_EVENT_UNDEFINED_RENAMED = 1, /* Domain was renamed */
+    VIR_DOMAIN_EVENT_UNDEFINED_REMOVED = 0, /* Deleted the config file (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_UNDEFINED_RENAMED = 1, /* Domain was renamed (Since: v1.2.19) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_UNDEFINED_LAST
+    VIR_DOMAIN_EVENT_UNDEFINED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventUndefinedDetailType;
 
@@ -3633,14 +3753,14 @@ typedef enum {
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_STARTED_BOOTED = 0,   /* Normal startup from boot */
-    VIR_DOMAIN_EVENT_STARTED_MIGRATED = 1, /* Incoming migration from another host */
-    VIR_DOMAIN_EVENT_STARTED_RESTORED = 2, /* Restored from a state file */
-    VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT = 3, /* Restored from snapshot */
-    VIR_DOMAIN_EVENT_STARTED_WAKEUP = 4,   /* Started due to wakeup event */
+    VIR_DOMAIN_EVENT_STARTED_BOOTED = 0,   /* Normal startup from boot (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STARTED_MIGRATED = 1, /* Incoming migration from another host (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STARTED_RESTORED = 2, /* Restored from a state file (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT = 3, /* Restored from snapshot (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_STARTED_WAKEUP = 4,   /* Started due to wakeup event (Since: v0.9.11) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_STARTED_LAST
+    VIR_DOMAIN_EVENT_STARTED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventStartedDetailType;
 
@@ -3652,18 +3772,18 @@ typedef enum {
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_SUSPENDED_PAUSED = 0,   /* Normal suspend due to admin pause */
-    VIR_DOMAIN_EVENT_SUSPENDED_MIGRATED = 1, /* Suspended for offline migration */
-    VIR_DOMAIN_EVENT_SUSPENDED_IOERROR = 2,  /* Suspended due to a disk I/O error */
-    VIR_DOMAIN_EVENT_SUSPENDED_WATCHDOG = 3,  /* Suspended due to a watchdog firing */
-    VIR_DOMAIN_EVENT_SUSPENDED_RESTORED = 4,  /* Restored from paused state file */
-    VIR_DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT = 5, /* Restored from paused snapshot */
-    VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR = 6, /* suspended after failure during libvirt API call */
-    VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY = 7, /* suspended for post-copy migration */
-    VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY_FAILED = 8, /* suspended after failed post-copy */
+    VIR_DOMAIN_EVENT_SUSPENDED_PAUSED = 0,   /* Normal suspend due to admin pause (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_SUSPENDED_MIGRATED = 1, /* Suspended for offline migration (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_SUSPENDED_IOERROR = 2,  /* Suspended due to a disk I/O error (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_SUSPENDED_WATCHDOG = 3,  /* Suspended due to a watchdog firing (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_SUSPENDED_RESTORED = 4,  /* Restored from paused state file (Since: v0.9.5) */
+    VIR_DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT = 5, /* Restored from paused snapshot (Since: v0.9.5) */
+    VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR = 6, /* suspended after failure during libvirt API call (Since: v1.0.1) */
+    VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY = 7, /* suspended for post-copy migration (Since: v1.3.3) */
+    VIR_DOMAIN_EVENT_SUSPENDED_POSTCOPY_FAILED = 8, /* suspended after failed post-copy (Since: v1.3.3) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_SUSPENDED_LAST
+    VIR_DOMAIN_EVENT_SUSPENDED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventSuspendedDetailType;
 
@@ -3675,14 +3795,14 @@ typedef enum {
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_RESUMED_UNPAUSED = 0,   /* Normal resume due to admin unpause */
-    VIR_DOMAIN_EVENT_RESUMED_MIGRATED = 1,   /* Resumed for completion of migration */
-    VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT = 2, /* Resumed from snapshot */
+    VIR_DOMAIN_EVENT_RESUMED_UNPAUSED = 0,   /* Normal resume due to admin unpause (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_RESUMED_MIGRATED = 1,   /* Resumed for completion of migration (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT = 2, /* Resumed from snapshot (Since: v0.9.5) */
     VIR_DOMAIN_EVENT_RESUMED_POSTCOPY = 3,   /* Resumed, but migration is still
-                                                running in post-copy mode */
+                                                running in post-copy mode (Since: v1.3.3) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_RESUMED_LAST
+    VIR_DOMAIN_EVENT_RESUMED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventResumedDetailType;
 
@@ -3694,16 +3814,16 @@ typedef enum {
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN = 0,  /* Normal shutdown */
-    VIR_DOMAIN_EVENT_STOPPED_DESTROYED = 1, /* Forced poweroff from host */
-    VIR_DOMAIN_EVENT_STOPPED_CRASHED = 2,   /* Guest crashed */
-    VIR_DOMAIN_EVENT_STOPPED_MIGRATED = 3,  /* Migrated off to another host */
-    VIR_DOMAIN_EVENT_STOPPED_SAVED = 4,     /* Saved to a state file */
-    VIR_DOMAIN_EVENT_STOPPED_FAILED = 5,    /* Host emulator/mgmt failed */
-    VIR_DOMAIN_EVENT_STOPPED_FROM_SNAPSHOT = 6, /* offline snapshot loaded */
+    VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN = 0,  /* Normal shutdown (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STOPPED_DESTROYED = 1, /* Forced poweroff from host (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STOPPED_CRASHED = 2,   /* Guest crashed (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STOPPED_MIGRATED = 3,  /* Migrated off to another host (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STOPPED_SAVED = 4,     /* Saved to a state file (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STOPPED_FAILED = 5,    /* Host emulator/mgmt failed (Since: v0.5.0) */
+    VIR_DOMAIN_EVENT_STOPPED_FROM_SNAPSHOT = 6, /* offline snapshot loaded (Since: v0.8.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_STOPPED_LAST
+    VIR_DOMAIN_EVENT_STOPPED_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventStoppedDetailType;
 
@@ -3716,19 +3836,22 @@ typedef enum {
  * Since: v0.9.8
  */
 typedef enum {
-    /* Guest finished shutdown sequence */
+    /* Guest finished shutdown sequence (Since: v0.9.8) */
     VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED = 0,
 
     /* Domain finished shutting down after request from the guest itself
-     * (e.g. hardware-specific action) */
+     * (e.g. hardware-specific action) (Since: v3.4.0) */
     VIR_DOMAIN_EVENT_SHUTDOWN_GUEST = 1,
 
     /* Domain finished shutting down after request from the host (e.g. killed by
-     * a signal) */
+     * a signal)
+     *
+     * Since: v3.4.0
+     */
     VIR_DOMAIN_EVENT_SHUTDOWN_HOST = 2,
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_SHUTDOWN_LAST
+    VIR_DOMAIN_EVENT_SHUTDOWN_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventShutdownDetailType;
 
@@ -3740,11 +3863,11 @@ typedef enum {
  * Since: v0.10.2
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY = 0, /* Guest was PM suspended to memory */
-    VIR_DOMAIN_EVENT_PMSUSPENDED_DISK = 1, /* Guest was PM suspended to disk */
+    VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY = 0, /* Guest was PM suspended to memory (Since: v0.10.2) */
+    VIR_DOMAIN_EVENT_PMSUSPENDED_DISK = 1, /* Guest was PM suspended to disk (Since: v1.0.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_PMSUSPENDED_LAST
+    VIR_DOMAIN_EVENT_PMSUSPENDED_LAST /* (Since: v0.10.2) */
 # endif
 } virDomainEventPMSuspendedDetailType;
 
@@ -3756,11 +3879,11 @@ typedef enum {
  * Since: v1.1.1
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_CRASHED_PANICKED = 0, /* Guest was panicked */
-    VIR_DOMAIN_EVENT_CRASHED_CRASHLOADED = 1, /* Guest was crashloaded */
+    VIR_DOMAIN_EVENT_CRASHED_PANICKED = 0, /* Guest was panicked (Since: v1.1.1) */
+    VIR_DOMAIN_EVENT_CRASHED_CRASHLOADED = 1, /* Guest was crashloaded (Since: v6.1.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_CRASHED_LAST
+    VIR_DOMAIN_EVENT_CRASHED_LAST /* (Since: v1.1.1) */
 # endif
 } virDomainEventCrashedDetailType;
 
@@ -3772,14 +3895,14 @@ typedef enum {
  * Since: v6.9.0
  */
 typedef enum {
-    /* memory failure at hypersivor memory address space */
+    /* memory failure at hypersivor memory address space (Since: v6.9.0) */
     VIR_DOMAIN_EVENT_MEMORY_FAILURE_RECIPIENT_HYPERVISOR = 0,
 
-    /* memory failure at guest memory address space */
+    /* memory failure at guest memory address space (Since: v6.9.0) */
     VIR_DOMAIN_EVENT_MEMORY_FAILURE_RECIPIENT_GUEST = 1,
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_MEMORY_FAILURE_RECIPIENT_LAST
+    VIR_DOMAIN_EVENT_MEMORY_FAILURE_RECIPIENT_LAST /* (Since: v6.9.0) */
 # endif
 } virDomainMemoryFailureRecipientType;
 
@@ -3793,24 +3916,36 @@ typedef enum {
  */
 typedef enum {
     /* the memory failure could be ignored. This will only be the case for
-     * action-optional failures. */
+     * action-optional failures.
+     *
+     * Since: v6.9.0
+     */
     VIR_DOMAIN_EVENT_MEMORY_FAILURE_ACTION_IGNORE = 0,
 
     /* memory failure occurred in guest memory, the guest enabled MCE handling
      * mechanism, and hypervisor could inject the MCE into the guest
-     * successfully. */
+     * successfully.
+     *
+     * Since: v6.9.0
+     */
     VIR_DOMAIN_EVENT_MEMORY_FAILURE_ACTION_INJECT = 1,
 
     /* the failure is unrecoverable.  This occurs for action-required failures
-     * if the recipient is the hypervisor; hypervisor will exit. */
+     * if the recipient is the hypervisor; hypervisor will exit.
+     *
+     * Since: v6.9.0
+     */
     VIR_DOMAIN_EVENT_MEMORY_FAILURE_ACTION_FATAL = 2,
 
     /* the failure is unrecoverable but confined to the guest. This occurs if
-     * the recipient is a guest which is not ready to handle memory failures. */
+     * the recipient is a guest which is not ready to handle memory failures.
+     *
+     * Since: v6.9.0
+     */
     VIR_DOMAIN_EVENT_MEMORY_FAILURE_ACTION_RESET = 3,
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_MEMORY_FAILURE_ACTION_LAST
+    VIR_DOMAIN_EVENT_MEMORY_FAILURE_ACTION_LAST /* (Since: v6.9.0) */
 # endif
 } virDomainMemoryFailureActionType;
 
@@ -3822,11 +3957,14 @@ typedef enum {
  */
 typedef enum {
     /* whether a memory failure event is action-required or action-optional
-     * (e.g. a failure during memory scrub). */
+     * (e.g. a failure during memory scrub). (Since: v6.9.0) */
     VIR_DOMAIN_MEMORY_FAILURE_ACTION_REQUIRED = (1 << 0),
 
     /* whether the failure occurred while the previous failure was still in
-     * progress. */
+     * progress.
+     *
+     * Since: v6.9.0
+     */
     VIR_DOMAIN_MEMORY_FAILURE_RECURSIVE = (1 << 1),
 } virDomainMemoryFailureFlags;
 
@@ -3868,15 +4006,15 @@ int virDomainIsUpdated(virDomainPtr dom);
  * Since: v0.7.7
  */
 typedef enum {
-    VIR_DOMAIN_JOB_NONE      = 0, /* No job is active */
-    VIR_DOMAIN_JOB_BOUNDED   = 1, /* Job with a finite completion time */
-    VIR_DOMAIN_JOB_UNBOUNDED = 2, /* Job without a finite completion time */
-    VIR_DOMAIN_JOB_COMPLETED = 3, /* Job has finished, but isn't cleaned up */
-    VIR_DOMAIN_JOB_FAILED    = 4, /* Job hit error, but isn't cleaned up */
-    VIR_DOMAIN_JOB_CANCELLED = 5, /* Job was aborted, but isn't cleaned up */
+    VIR_DOMAIN_JOB_NONE      = 0, /* No job is active (Since: v0.7.7) */
+    VIR_DOMAIN_JOB_BOUNDED   = 1, /* Job with a finite completion time (Since: v0.7.7) */
+    VIR_DOMAIN_JOB_UNBOUNDED = 2, /* Job without a finite completion time (Since: v0.7.7) */
+    VIR_DOMAIN_JOB_COMPLETED = 3, /* Job has finished, but isn't cleaned up (Since: v0.7.7) */
+    VIR_DOMAIN_JOB_FAILED    = 4, /* Job hit error, but isn't cleaned up (Since: v0.7.7) */
+    VIR_DOMAIN_JOB_CANCELLED = 5, /* Job was aborted, but isn't cleaned up (Since: v0.7.7) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_JOB_LAST
+    VIR_DOMAIN_JOB_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainJobType;
 
@@ -3937,9 +4075,9 @@ struct _virDomainJobInfo {
  */
 typedef enum {
     VIR_DOMAIN_JOB_STATS_COMPLETED = 1 << 0, /* return stats of a recently
-                                              * completed job */
+                                              * completed job (Since: v1.2.9) */
     VIR_DOMAIN_JOB_STATS_KEEP_COMPLETED = 1 << 1, /* don't remove completed
-                                                     stats when reading them */
+                                                     stats when reading them (Since: v6.0.0) */
 } virDomainGetJobStatsFlags;
 
 int virDomainGetJobInfo(virDomainPtr dom,
@@ -3957,19 +4095,19 @@ int virDomainAbortJob(virDomainPtr dom);
  * Since: v3.3.0
  */
 typedef enum {
-    VIR_DOMAIN_JOB_OPERATION_UNKNOWN = 0,
-    VIR_DOMAIN_JOB_OPERATION_START = 1,
-    VIR_DOMAIN_JOB_OPERATION_SAVE = 2,
-    VIR_DOMAIN_JOB_OPERATION_RESTORE = 3,
-    VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN = 4,
-    VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT = 5,
-    VIR_DOMAIN_JOB_OPERATION_SNAPSHOT = 6,
-    VIR_DOMAIN_JOB_OPERATION_SNAPSHOT_REVERT = 7,
-    VIR_DOMAIN_JOB_OPERATION_DUMP = 8,
-    VIR_DOMAIN_JOB_OPERATION_BACKUP = 9,
+    VIR_DOMAIN_JOB_OPERATION_UNKNOWN = 0, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_START = 1, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_SAVE = 2, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_RESTORE = 3, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_MIGRATION_IN = 4, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_MIGRATION_OUT = 5, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_SNAPSHOT = 6, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_SNAPSHOT_REVERT = 7, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_DUMP = 8, /* (Since: v3.3.0) */
+    VIR_DOMAIN_JOB_OPERATION_BACKUP = 9, /* (Since: v6.0.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_JOB_OPERATION_LAST
+    VIR_DOMAIN_JOB_OPERATION_LAST /* (Since: v3.3.0) */
 # endif
 } virDomainJobOperation;
 
@@ -4416,16 +4554,16 @@ typedef void (*virConnectDomainEventRTCChangeCallback)(virConnectPtr conn,
  * Since: v0.8.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_WATCHDOG_NONE = 0, /* No action, watchdog ignored */
-    VIR_DOMAIN_EVENT_WATCHDOG_PAUSE,    /* Guest CPUs are paused */
-    VIR_DOMAIN_EVENT_WATCHDOG_RESET,    /* Guest CPUs are reset */
-    VIR_DOMAIN_EVENT_WATCHDOG_POWEROFF, /* Guest is forcibly powered off */
-    VIR_DOMAIN_EVENT_WATCHDOG_SHUTDOWN, /* Guest is requested to gracefully shutdown */
-    VIR_DOMAIN_EVENT_WATCHDOG_DEBUG,    /* No action, a debug message logged */
-    VIR_DOMAIN_EVENT_WATCHDOG_INJECTNMI,/* Inject a non-maskable interrupt into guest */
+    VIR_DOMAIN_EVENT_WATCHDOG_NONE = 0, /* No action, watchdog ignored (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_WATCHDOG_PAUSE,    /* Guest CPUs are paused (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_WATCHDOG_RESET,    /* Guest CPUs are reset (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_WATCHDOG_POWEROFF, /* Guest is forcibly powered off (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_WATCHDOG_SHUTDOWN, /* Guest is requested to gracefully shutdown (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_WATCHDOG_DEBUG,    /* No action, a debug message logged (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_WATCHDOG_INJECTNMI,/* Inject a non-maskable interrupt into guest (Since: v1.2.17) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_WATCHDOG_LAST
+    VIR_DOMAIN_EVENT_WATCHDOG_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventWatchdogAction;
 
@@ -4453,12 +4591,12 @@ typedef void (*virConnectDomainEventWatchdogCallback)(virConnectPtr conn,
  * Since: v0.8.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_IO_ERROR_NONE = 0,  /* No action, IO error ignored */
-    VIR_DOMAIN_EVENT_IO_ERROR_PAUSE,     /* Guest CPUs are paused */
-    VIR_DOMAIN_EVENT_IO_ERROR_REPORT,    /* IO error reported to guest OS */
+    VIR_DOMAIN_EVENT_IO_ERROR_NONE = 0,  /* No action, IO error ignored (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_IO_ERROR_PAUSE,     /* Guest CPUs are paused (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_IO_ERROR_REPORT,    /* IO error reported to guest OS (Since: v0.8.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_IO_ERROR_LAST
+    VIR_DOMAIN_EVENT_IO_ERROR_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventIOErrorAction;
 
@@ -4518,12 +4656,12 @@ typedef void (*virConnectDomainEventIOErrorReasonCallback)(virConnectPtr conn,
  * Since: v0.8.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_GRAPHICS_CONNECT = 0,  /* Initial socket connection established */
-    VIR_DOMAIN_EVENT_GRAPHICS_INITIALIZE,   /* Authentication & setup completed */
-    VIR_DOMAIN_EVENT_GRAPHICS_DISCONNECT,   /* Final socket disconnection */
+    VIR_DOMAIN_EVENT_GRAPHICS_CONNECT = 0,  /* Initial socket connection established (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_GRAPHICS_INITIALIZE,   /* Authentication & setup completed (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_GRAPHICS_DISCONNECT,   /* Final socket disconnection (Since: v0.8.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_GRAPHICS_LAST
+    VIR_DOMAIN_EVENT_GRAPHICS_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventGraphicsPhase;
 
@@ -4535,12 +4673,12 @@ typedef enum {
  * Since: v0.8.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_IPV4,  /* IPv4 address */
-    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_IPV6,  /* IPv6 address */
-    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_UNIX,  /* UNIX socket path */
+    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_IPV4,  /* IPv4 address (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_IPV6,  /* IPv6 address (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_UNIX,  /* UNIX socket path (Since: v0.9.7) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_LAST
+    VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_LAST /* (Since: v0.9.10) */
 # endif
 } virDomainEventGraphicsAddressType;
 
@@ -4663,13 +4801,13 @@ typedef void (*virConnectDomainEventGraphicsCallback)(virConnectPtr conn,
  * Since: v0.9.4
  */
 typedef enum {
-    VIR_DOMAIN_BLOCK_JOB_COMPLETED = 0,
-    VIR_DOMAIN_BLOCK_JOB_FAILED = 1,
-    VIR_DOMAIN_BLOCK_JOB_CANCELED = 2,
-    VIR_DOMAIN_BLOCK_JOB_READY = 3,
+    VIR_DOMAIN_BLOCK_JOB_COMPLETED = 0, /* (Since: v0.9.4) */
+    VIR_DOMAIN_BLOCK_JOB_FAILED = 1, /* (Since: v0.9.4) */
+    VIR_DOMAIN_BLOCK_JOB_CANCELED = 2, /* (Since: v0.9.12) */
+    VIR_DOMAIN_BLOCK_JOB_READY = 3, /* (Since: v1.0.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_BLOCK_JOB_LAST
+    VIR_DOMAIN_BLOCK_JOB_LAST /* (Since: v0.9.10) */
 # endif
 } virConnectDomainEventBlockJobStatus;
 
@@ -4713,15 +4851,21 @@ typedef void (*virConnectDomainEventBlockJobCallback)(virConnectPtr conn,
  */
 typedef enum {
     /* Removable media changed to empty according to startup policy as source
-     * was missing. oldSrcPath is set, newSrcPath is NULL */
+     * was missing. oldSrcPath is set, newSrcPath is NULL
+     *
+     * Since: v0.9.7
+     * */
     VIR_DOMAIN_EVENT_DISK_CHANGE_MISSING_ON_START = 0,
 
     /* Disk was dropped from domain as source file was missing.
-     * oldSrcPath is set, newSrcPath is NULL */
+     * oldSrcPath is set, newSrcPath is NULL
+     *
+     * Since: v1.1.2
+     * */
     VIR_DOMAIN_EVENT_DISK_DROP_MISSING_ON_START = 1,
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_DISK_CHANGE_LAST
+    VIR_DOMAIN_EVENT_DISK_CHANGE_LAST /* (Since: v0.9.10) */
 # endif
 } virConnectDomainEventDiskChangeReason;
 
@@ -4760,11 +4904,11 @@ typedef void (*virConnectDomainEventDiskChangeCallback)(virConnectPtr conn,
  * Since: v0.9.11
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN = 0,
-    VIR_DOMAIN_EVENT_TRAY_CHANGE_CLOSE,
+    VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN = 0, /* (Since: v0.9.11) */
+    VIR_DOMAIN_EVENT_TRAY_CHANGE_CLOSE, /* (Since: v0.9.11) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_EVENT_TRAY_CHANGE_LAST
+    VIR_DOMAIN_EVENT_TRAY_CHANGE_LAST /* (Since: v0.9.11) */
 # endif
 } virDomainEventTrayChangeReason;
 
@@ -5348,11 +5492,11 @@ typedef void (*virConnectDomainEventTunableCallback)(virConnectPtr conn,
  * Since: v1.2.11
  */
 typedef enum {
-    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_CONNECTED = 1, /* agent connected */
-    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_DISCONNECTED = 2, /* agent disconnected */
+    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_CONNECTED = 1, /* agent connected (Since: v1.2.11) */
+    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_DISCONNECTED = 2, /* agent disconnected (Since: v1.2.11) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_LAST
+    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_LAST /* (Since: v1.2.11) */
 # endif
 } virConnectDomainEventAgentLifecycleState;
 
@@ -5362,12 +5506,12 @@ typedef enum {
  * Since: v1.2.11
  */
 typedef enum {
-    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_UNKNOWN = 0, /* unknown state change reason */
-    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_DOMAIN_STARTED = 1, /* state changed due to domain start */
-    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_CHANNEL = 2, /* channel state changed */
+    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_UNKNOWN = 0, /* unknown state change reason (Since: v1.2.11) */
+    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_DOMAIN_STARTED = 1, /* state changed due to domain start (Since: v1.2.11) */
+    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_CHANNEL = 2, /* channel state changed (Since: v1.2.11) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_LAST
+    VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_LAST /* (Since: v1.2.11) */
 # endif
 } virConnectDomainEventAgentLifecycleReason;
 
@@ -5491,33 +5635,33 @@ typedef void (*virConnectDomainEventMemoryDeviceSizeChangeCallback)(virConnectPt
  * Since: v0.8.0
  */
 typedef enum {
-    VIR_DOMAIN_EVENT_ID_LIFECYCLE = 0,       /* virConnectDomainEventCallback */
-    VIR_DOMAIN_EVENT_ID_REBOOT = 1,          /* virConnectDomainEventGenericCallback */
-    VIR_DOMAIN_EVENT_ID_RTC_CHANGE = 2,      /* virConnectDomainEventRTCChangeCallback */
-    VIR_DOMAIN_EVENT_ID_WATCHDOG = 3,        /* virConnectDomainEventWatchdogCallback */
-    VIR_DOMAIN_EVENT_ID_IO_ERROR = 4,        /* virConnectDomainEventIOErrorCallback */
-    VIR_DOMAIN_EVENT_ID_GRAPHICS = 5,        /* virConnectDomainEventGraphicsCallback */
-    VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON = 6, /* virConnectDomainEventIOErrorReasonCallback */
-    VIR_DOMAIN_EVENT_ID_CONTROL_ERROR = 7,   /* virConnectDomainEventGenericCallback */
-    VIR_DOMAIN_EVENT_ID_BLOCK_JOB = 8,       /* virConnectDomainEventBlockJobCallback */
-    VIR_DOMAIN_EVENT_ID_DISK_CHANGE = 9,     /* virConnectDomainEventDiskChangeCallback */
-    VIR_DOMAIN_EVENT_ID_TRAY_CHANGE = 10,    /* virConnectDomainEventTrayChangeCallback */
-    VIR_DOMAIN_EVENT_ID_PMWAKEUP = 11,       /* virConnectDomainEventPMWakeupCallback */
-    VIR_DOMAIN_EVENT_ID_PMSUSPEND = 12,      /* virConnectDomainEventPMSuspendCallback */
-    VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE = 13, /* virConnectDomainEventBalloonChangeCallback */
-    VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK = 14, /* virConnectDomainEventPMSuspendDiskCallback */
-    VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED = 15, /* virConnectDomainEventDeviceRemovedCallback */
-    VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 = 16,    /* virConnectDomainEventBlockJobCallback */
-    VIR_DOMAIN_EVENT_ID_TUNABLE = 17,        /* virConnectDomainEventTunableCallback */
-    VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE = 18,/* virConnectDomainEventAgentLifecycleCallback */
-    VIR_DOMAIN_EVENT_ID_DEVICE_ADDED = 19,   /* virConnectDomainEventDeviceAddedCallback */
-    VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION = 20, /* virConnectDomainEventMigrationIterationCallback */
-    VIR_DOMAIN_EVENT_ID_JOB_COMPLETED = 21,  /* virConnectDomainEventJobCompletedCallback */
-    VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED = 22, /* virConnectDomainEventDeviceRemovalFailedCallback */
-    VIR_DOMAIN_EVENT_ID_METADATA_CHANGE = 23, /* virConnectDomainEventMetadataChangeCallback */
-    VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD = 24, /* virConnectDomainEventBlockThresholdCallback */
-    VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE = 25,  /* virConnectDomainEventMemoryFailureCallback */
-    VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE = 26, /* virConnectDomainEventMemoryDeviceSizeChangeCallback */
+    VIR_DOMAIN_EVENT_ID_LIFECYCLE = 0,       /* virConnectDomainEventCallback (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_ID_REBOOT = 1,          /* virConnectDomainEventGenericCallback (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_ID_RTC_CHANGE = 2,      /* virConnectDomainEventRTCChangeCallback (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_ID_WATCHDOG = 3,        /* virConnectDomainEventWatchdogCallback (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_ID_IO_ERROR = 4,        /* virConnectDomainEventIOErrorCallback (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_ID_GRAPHICS = 5,        /* virConnectDomainEventGraphicsCallback (Since: v0.8.0) */
+    VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON = 6, /* virConnectDomainEventIOErrorReasonCallback (Since: v0.8.1) */
+    VIR_DOMAIN_EVENT_ID_CONTROL_ERROR = 7,   /* virConnectDomainEventGenericCallback (Since: v0.9.2) */
+    VIR_DOMAIN_EVENT_ID_BLOCK_JOB = 8,       /* virConnectDomainEventBlockJobCallback (Since: v0.9.4) */
+    VIR_DOMAIN_EVENT_ID_DISK_CHANGE = 9,     /* virConnectDomainEventDiskChangeCallback (Since: v0.9.7) */
+    VIR_DOMAIN_EVENT_ID_TRAY_CHANGE = 10,    /* virConnectDomainEventTrayChangeCallback (Since: v0.9.11) */
+    VIR_DOMAIN_EVENT_ID_PMWAKEUP = 11,       /* virConnectDomainEventPMWakeupCallback (Since: v0.9.11) */
+    VIR_DOMAIN_EVENT_ID_PMSUSPEND = 12,      /* virConnectDomainEventPMSuspendCallback (Since: v0.9.11) */
+    VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE = 13, /* virConnectDomainEventBalloonChangeCallback (Since: v0.10.0) */
+    VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK = 14, /* virConnectDomainEventPMSuspendDiskCallback (Since: v1.0.0) */
+    VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED = 15, /* virConnectDomainEventDeviceRemovedCallback (Since: v1.1.1) */
+    VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2 = 16,    /* virConnectDomainEventBlockJobCallback (Since: v1.2.6) */
+    VIR_DOMAIN_EVENT_ID_TUNABLE = 17,        /* virConnectDomainEventTunableCallback (Since: v1.2.9) */
+    VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE = 18,/* virConnectDomainEventAgentLifecycleCallback (Since: v1.2.11) */
+    VIR_DOMAIN_EVENT_ID_DEVICE_ADDED = 19,   /* virConnectDomainEventDeviceAddedCallback (Since: v1.2.15) */
+    VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION = 20, /* virConnectDomainEventMigrationIterationCallback (Since: v1.3.2) */
+    VIR_DOMAIN_EVENT_ID_JOB_COMPLETED = 21,  /* virConnectDomainEventJobCompletedCallback (Since: v1.3.3) */
+    VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED = 22, /* virConnectDomainEventDeviceRemovalFailedCallback (Since: v1.3.4) */
+    VIR_DOMAIN_EVENT_ID_METADATA_CHANGE = 23, /* virConnectDomainEventMetadataChangeCallback (Since: v3.0.0) */
+    VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD = 24, /* virConnectDomainEventBlockThresholdCallback (Since: v3.2.0) */
+    VIR_DOMAIN_EVENT_ID_MEMORY_FAILURE = 25,  /* virConnectDomainEventMemoryFailureCallback (Since: v6.9.0) */
+    VIR_DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE = 26, /* virConnectDomainEventMemoryDeviceSizeChangeCallback (Since: v7.9.0) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_DOMAIN_EVENT_ID_LAST
@@ -5525,6 +5669,8 @@ typedef enum {
      * NB: this enum value will increase over time as new events are
      * added to the libvirt API. It reflects the last event ID supported
      * by this version of the libvirt API.
+     *
+     * Since: v0.8.0
      */
 # endif
 } virDomainEventID;
@@ -5551,9 +5697,9 @@ typedef enum {
 
     VIR_DOMAIN_CONSOLE_FORCE = (1 << 0), /* abort a (possibly) active console
                                             connection to force a new
-                                            connection */
+                                            connection (Since: v0.9.11) */
     VIR_DOMAIN_CONSOLE_SAFE = (1 << 1), /* check if the console driver supports
-                                           safe console operations */
+                                           safe console operations (Since: v0.9.11) */
 } virDomainConsoleFlags;
 
 int virDomainOpenConsole(virDomainPtr dom,
@@ -5569,7 +5715,7 @@ int virDomainOpenConsole(virDomainPtr dom,
 typedef enum {
     VIR_DOMAIN_CHANNEL_FORCE = (1 << 0), /* abort a (possibly) active channel
                                             connection to force a new
-                                            connection */
+                                            connection (Since: v1.0.2) */
 } virDomainChannelFlags;
 
 int virDomainOpenChannel(virDomainPtr dom,
@@ -5583,7 +5729,7 @@ int virDomainOpenChannel(virDomainPtr dom,
  * Since: v0.9.7
  */
 typedef enum {
-    VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH = (1 << 0),
+    VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH = (1 << 0), /* (Since: v0.9.7) */
 } virDomainOpenGraphicsFlags;
 
 int virDomainOpenGraphics(virDomainPtr dom,
@@ -5652,7 +5798,7 @@ int virDomainGetTime(virDomainPtr dom,
  * Since: v1.2.5
  */
 typedef enum {
-    VIR_DOMAIN_TIME_SYNC = (1 << 0), /* Re-sync domain time from domain's RTC */
+    VIR_DOMAIN_TIME_SYNC = (1 << 0), /* Re-sync domain time from domain's RTC (Since: v1.2.5) */
 } virDomainSetTimeFlags;
 
 int virDomainSetTime(virDomainPtr dom,
@@ -5669,12 +5815,12 @@ int virDomainSetTime(virDomainPtr dom,
  * Since: v0.2.3
  */
 typedef enum {
-    VIR_DOMAIN_SCHED_FIELD_INT     = VIR_TYPED_PARAM_INT,
-    VIR_DOMAIN_SCHED_FIELD_UINT    = VIR_TYPED_PARAM_UINT,
-    VIR_DOMAIN_SCHED_FIELD_LLONG   = VIR_TYPED_PARAM_LLONG,
-    VIR_DOMAIN_SCHED_FIELD_ULLONG  = VIR_TYPED_PARAM_ULLONG,
-    VIR_DOMAIN_SCHED_FIELD_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
-    VIR_DOMAIN_SCHED_FIELD_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
+    VIR_DOMAIN_SCHED_FIELD_INT     = VIR_TYPED_PARAM_INT, /* (Since: v0.2.3) */
+    VIR_DOMAIN_SCHED_FIELD_UINT    = VIR_TYPED_PARAM_UINT, /* (Since: v0.2.3) */
+    VIR_DOMAIN_SCHED_FIELD_LLONG   = VIR_TYPED_PARAM_LLONG, /* (Since: v0.2.3) */
+    VIR_DOMAIN_SCHED_FIELD_ULLONG  = VIR_TYPED_PARAM_ULLONG, /* (Since: v0.2.3) */
+    VIR_DOMAIN_SCHED_FIELD_DOUBLE  = VIR_TYPED_PARAM_DOUBLE, /* (Since: v0.2.3) */
+    VIR_DOMAIN_SCHED_FIELD_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN, /* (Since: v0.2.3) */
 } virSchedParameterType;
 
 /**
@@ -5726,12 +5872,12 @@ typedef virSchedParameter *virSchedParameterPtr;
  * Since: v0.9.0
  */
 typedef enum {
-    VIR_DOMAIN_BLKIO_PARAM_INT     = VIR_TYPED_PARAM_INT,
-    VIR_DOMAIN_BLKIO_PARAM_UINT    = VIR_TYPED_PARAM_UINT,
-    VIR_DOMAIN_BLKIO_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG,
-    VIR_DOMAIN_BLKIO_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG,
-    VIR_DOMAIN_BLKIO_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
-    VIR_DOMAIN_BLKIO_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
+    VIR_DOMAIN_BLKIO_PARAM_INT     = VIR_TYPED_PARAM_INT, /* (Since: v0.9.0) */
+    VIR_DOMAIN_BLKIO_PARAM_UINT    = VIR_TYPED_PARAM_UINT, /* (Since: v0.9.0) */
+    VIR_DOMAIN_BLKIO_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG, /* (Since: v0.9.0) */
+    VIR_DOMAIN_BLKIO_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG, /* (Since: v0.9.0) */
+    VIR_DOMAIN_BLKIO_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE, /* (Since: v0.9.0) */
+    VIR_DOMAIN_BLKIO_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN, /* (Since: v0.9.0) */
 } virBlkioParameterType;
 
 /**
@@ -5783,12 +5929,12 @@ typedef virBlkioParameter *virBlkioParameterPtr;
  * Since: v0.8.5
  */
 typedef enum {
-    VIR_DOMAIN_MEMORY_PARAM_INT     = VIR_TYPED_PARAM_INT,
-    VIR_DOMAIN_MEMORY_PARAM_UINT    = VIR_TYPED_PARAM_UINT,
-    VIR_DOMAIN_MEMORY_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG,
-    VIR_DOMAIN_MEMORY_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG,
-    VIR_DOMAIN_MEMORY_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE,
-    VIR_DOMAIN_MEMORY_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN,
+    VIR_DOMAIN_MEMORY_PARAM_INT     = VIR_TYPED_PARAM_INT, /* (Since: v0.8.5) */
+    VIR_DOMAIN_MEMORY_PARAM_UINT    = VIR_TYPED_PARAM_UINT, /* (Since: v0.8.5) */
+    VIR_DOMAIN_MEMORY_PARAM_LLONG   = VIR_TYPED_PARAM_LLONG, /* (Since: v0.8.5) */
+    VIR_DOMAIN_MEMORY_PARAM_ULLONG  = VIR_TYPED_PARAM_ULLONG, /* (Since: v0.8.5) */
+    VIR_DOMAIN_MEMORY_PARAM_DOUBLE  = VIR_TYPED_PARAM_DOUBLE, /* (Since: v0.8.5) */
+    VIR_DOMAIN_MEMORY_PARAM_BOOLEAN = VIR_TYPED_PARAM_BOOLEAN, /* (Since: v0.8.5) */
 } virMemoryParameterType;
 
 /**
@@ -5837,12 +5983,12 @@ typedef virMemoryParameter *virMemoryParameterPtr;
  * Since: v1.2.14
  */
 typedef enum {
-    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE = 0, /* Parse DHCP lease file */
-    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT = 1, /* Query qemu guest agent */
-    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP = 2, /* Query ARP tables */
+    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE = 0, /* Parse DHCP lease file (Since: v1.2.14) */
+    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT = 1, /* Query qemu guest agent (Since: v1.2.14) */
+    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP = 2, /* Query ARP tables (Since: v4.2.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LAST
+    VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LAST /* (Since: v1.2.14) */
 # endif
 } virDomainInterfaceAddressesSource;
 
@@ -5898,7 +6044,7 @@ void virDomainInterfaceFree(virDomainInterfacePtr iface);
  * Since: v1.2.16
  */
 typedef enum {
-    VIR_DOMAIN_PASSWORD_ENCRYPTED = 1 << 0, /* the password is already encrypted */
+    VIR_DOMAIN_PASSWORD_ENCRYPTED = 1 << 0, /* the password is already encrypted (Since: v1.2.16) */
 } virDomainSetUserPasswordFlags;
 
 int virDomainSetUserPassword(virDomainPtr dom,
@@ -5936,12 +6082,12 @@ int virDomainSetBlockThreshold(virDomainPtr domain,
  * Since: v3.9.0
  */
 typedef enum {
-    VIR_DOMAIN_LIFECYCLE_POWEROFF = 0,
-    VIR_DOMAIN_LIFECYCLE_REBOOT = 1,
-    VIR_DOMAIN_LIFECYCLE_CRASH = 2,
+    VIR_DOMAIN_LIFECYCLE_POWEROFF = 0, /* (Since: v3.9.0) */
+    VIR_DOMAIN_LIFECYCLE_REBOOT = 1, /* (Since: v3.9.0) */
+    VIR_DOMAIN_LIFECYCLE_CRASH = 2, /* (Since: v3.9.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_LIFECYCLE_LAST
+    VIR_DOMAIN_LIFECYCLE_LAST /* (Since: v3.9.0) */
 # endif
 } virDomainLifecycle;
 
@@ -5951,15 +6097,15 @@ typedef enum {
  * Since: v3.9.0
  */
 typedef enum {
-    VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY = 0,
-    VIR_DOMAIN_LIFECYCLE_ACTION_RESTART = 1,
-    VIR_DOMAIN_LIFECYCLE_ACTION_RESTART_RENAME = 2,
-    VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE = 3,
-    VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_DESTROY = 4,
-    VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART = 5,
+    VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY = 0, /* (Since: v3.9.0) */
+    VIR_DOMAIN_LIFECYCLE_ACTION_RESTART = 1, /* (Since: v3.9.0) */
+    VIR_DOMAIN_LIFECYCLE_ACTION_RESTART_RENAME = 2, /* (Since: v3.9.0) */
+    VIR_DOMAIN_LIFECYCLE_ACTION_PRESERVE = 3, /* (Since: v3.9.0) */
+    VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_DESTROY = 4, /* (Since: v3.9.0) */
+    VIR_DOMAIN_LIFECYCLE_ACTION_COREDUMP_RESTART = 5, /* (Since: v3.9.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_LIFECYCLE_ACTION_LAST
+    VIR_DOMAIN_LIFECYCLE_ACTION_LAST /* (Since: v3.9.0) */
 # endif
 } virDomainLifecycleAction;
 
@@ -6075,13 +6221,13 @@ int virDomainSetLaunchSecurityState(virDomainPtr domain,
  * Since: v5.7.0
  */
 typedef enum {
-    VIR_DOMAIN_GUEST_INFO_USERS = (1 << 0), /* return active users */
-    VIR_DOMAIN_GUEST_INFO_OS = (1 << 1), /* return OS information */
-    VIR_DOMAIN_GUEST_INFO_TIMEZONE = (1 << 2), /* return timezone information */
-    VIR_DOMAIN_GUEST_INFO_HOSTNAME = (1 << 3), /* return hostname information */
-    VIR_DOMAIN_GUEST_INFO_FILESYSTEM = (1 << 4), /* return filesystem information */
-    VIR_DOMAIN_GUEST_INFO_DISKS = (1 << 5), /* return disks information */
-    VIR_DOMAIN_GUEST_INFO_INTERFACES = (1 << 6), /* return interfaces information */
+    VIR_DOMAIN_GUEST_INFO_USERS = (1 << 0), /* return active users (Since: v5.7.0) */
+    VIR_DOMAIN_GUEST_INFO_OS = (1 << 1), /* return OS information (Since: v5.7.0) */
+    VIR_DOMAIN_GUEST_INFO_TIMEZONE = (1 << 2), /* return timezone information (Since: v5.7.0) */
+    VIR_DOMAIN_GUEST_INFO_HOSTNAME = (1 << 3), /* return hostname information (Since: v5.7.0) */
+    VIR_DOMAIN_GUEST_INFO_FILESYSTEM = (1 << 4), /* return filesystem information (Since: v5.7.0) */
+    VIR_DOMAIN_GUEST_INFO_DISKS = (1 << 5), /* return disks information (Since: v7.0.0) */
+    VIR_DOMAIN_GUEST_INFO_INTERFACES = (1 << 6), /* return interfaces information (Since: v7.10.0) */
 } virDomainGuestInfoTypes;
 
 int virDomainGetGuestInfo(virDomainPtr domain,
@@ -6096,9 +6242,9 @@ int virDomainGetGuestInfo(virDomainPtr domain,
  * Since: v5.10.0
  */
 typedef enum {
-    VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_BLOCK = -2,
-    VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_DEFAULT = -1,
-    VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_NOWAIT = 0,
+    VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_BLOCK = -2, /* (Since: v5.10.0) */
+    VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_DEFAULT = -1, /* (Since: v5.10.0) */
+    VIR_DOMAIN_AGENT_RESPONSE_TIMEOUT_NOWAIT = 0, /* (Since: v5.10.0) */
 } virDomainAgentResponseTimeoutValues;
 
 int virDomainAgentSetResponseTimeout(virDomainPtr domain,
@@ -6112,7 +6258,7 @@ int virDomainAgentSetResponseTimeout(virDomainPtr domain,
  */
 typedef enum {
     VIR_DOMAIN_BACKUP_BEGIN_REUSE_EXTERNAL = (1 << 0), /* reuse separately
-                                                          provided images */
+                                                          provided images (Since: v6.0.0) */
 } virDomainBackupBeginFlags;
 
 int virDomainBackupBegin(virDomainPtr domain,
@@ -6134,8 +6280,8 @@ int virDomainAuthorizedSSHKeysGet(virDomainPtr domain,
  * Since: v6.10.0
  */
 typedef enum {
-    VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_APPEND = (1 << 0), /* don't truncate file, just append */
-    VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_REMOVE = (1 << 1), /* remove keys, instead of adding them */
+    VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_APPEND = (1 << 0), /* don't truncate file, just append (Since: v6.10.0) */
+    VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_REMOVE = (1 << 1), /* remove keys, instead of adding them (Since: v6.10.0) */
 
 } virDomainAuthorizedSSHKeysSetFlags;
 
@@ -6151,8 +6297,8 @@ int virDomainAuthorizedSSHKeysSet(virDomainPtr domain,
  * Since: v7.1.0
  */
 typedef enum {
-    VIR_DOMAIN_MESSAGE_DEPRECATION = (1 << 0),
-    VIR_DOMAIN_MESSAGE_TAINTING = (1 << 1),
+    VIR_DOMAIN_MESSAGE_DEPRECATION = (1 << 0), /* (Since: v7.1.0) */
+    VIR_DOMAIN_MESSAGE_TAINTING = (1 << 1), /* (Since: v7.1.0) */
 } virDomainMessageType;
 
 int virDomainGetMessages(virDomainPtr domain,
@@ -6168,14 +6314,14 @@ int virDomainGetMessages(virDomainPtr domain,
  */
 typedef enum {
     VIR_DOMAIN_DIRTYRATE_UNSTARTED = 0, /* the dirtyrate calculation has
-                                           not been started */
+                                           not been started (Since: v7.2.0) */
     VIR_DOMAIN_DIRTYRATE_MEASURING = 1, /* the dirtyrate calculation is
-                                           measuring */
+                                           measuring (Since: v7.2.0) */
     VIR_DOMAIN_DIRTYRATE_MEASURED  = 2, /* the dirtyrate calculation is
-                                           completed */
+                                           completed (Since: v7.2.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_DOMAIN_DIRTYRATE_LAST
+    VIR_DOMAIN_DIRTYRATE_LAST /* (Since: v7.2.0) */
 # endif
 } virDomainDirtyRateStatus;
 
@@ -6189,9 +6335,9 @@ typedef enum {
  * Since: v8.1.0
  */
 typedef enum {
-    VIR_DOMAIN_DIRTYRATE_MODE_PAGE_SAMPLING = 0,        /* default mode - page-sampling */
-    VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP = 1 << 0,    /* dirty-bitmap mode */
-    VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING = 1 << 1,      /* dirty-ring mode */
+    VIR_DOMAIN_DIRTYRATE_MODE_PAGE_SAMPLING = 0,        /* default mode - page-sampling (Since: v8.1.0) */
+    VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP = 1 << 0,    /* dirty-bitmap mode (Since: v8.1.0) */
+    VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING = 1 << 1,      /* dirty-ring mode (Since: v8.1.0) */
 } virDomainDirtyRateCalcFlags;
 
 int virDomainStartDirtyRateCalc(virDomainPtr domain,
diff --git a/include/libvirt/libvirt-event.h b/include/libvirt/libvirt-event.h
index 76b06eca38..89dea437c0 100644
--- a/include/libvirt/libvirt-event.h
+++ b/include/libvirt/libvirt-event.h
@@ -38,10 +38,10 @@
  * Since: v0.5.0
  */
 typedef enum {
-    VIR_EVENT_HANDLE_READABLE  = (1 << 0),
-    VIR_EVENT_HANDLE_WRITABLE  = (1 << 1),
-    VIR_EVENT_HANDLE_ERROR     = (1 << 2),
-    VIR_EVENT_HANDLE_HANGUP    = (1 << 3),
+    VIR_EVENT_HANDLE_READABLE  = (1 << 0), /* (Since: v0.5.0) */
+    VIR_EVENT_HANDLE_WRITABLE  = (1 << 1), /* (Since: v0.5.0) */
+    VIR_EVENT_HANDLE_ERROR     = (1 << 2), /* (Since: v0.5.0) */
+    VIR_EVENT_HANDLE_HANGUP    = (1 << 3), /* (Since: v0.5.0) */
 } virEventHandleType;
 
 /**
diff --git a/include/libvirt/libvirt-host.h b/include/libvirt/libvirt-host.h
index 763c5fe774..aa4d2a583f 100644
--- a/include/libvirt/libvirt-host.h
+++ b/include/libvirt/libvirt-host.h
@@ -57,12 +57,12 @@ typedef virConnect *virConnectPtr;
  * Since: v0.9.8
  */
 typedef enum {
-    VIR_NODE_SUSPEND_TARGET_MEM     = 0,
-    VIR_NODE_SUSPEND_TARGET_DISK    = 1,
-    VIR_NODE_SUSPEND_TARGET_HYBRID  = 2,
+    VIR_NODE_SUSPEND_TARGET_MEM     = 0, /* (Since: v0.9.8) */
+    VIR_NODE_SUSPEND_TARGET_DISK    = 1, /* (Since: v0.9.8) */
+    VIR_NODE_SUSPEND_TARGET_HYBRID  = 2, /* (Since: v0.9.8) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_NODE_SUSPEND_TARGET_LAST /* This constant is subject to change */
+    VIR_NODE_SUSPEND_TARGET_LAST /* This constant is subject to change (Since: v0.9.8) */
 # endif
 } virNodeSuspendTarget;
 
@@ -214,7 +214,7 @@ struct _virNodeInfo {
  * Since: v0.9.8
  */
 typedef enum {
-    VIR_NODE_CPU_STATS_ALL_CPUS = -1,
+    VIR_NODE_CPU_STATS_ALL_CPUS = -1, /* (Since: v0.9.3) */
 } virNodeGetCPUStatsAllCPUs;
 
 /**
@@ -310,7 +310,7 @@ struct _virNodeCPUStats {
  * Since: v0.9.8
  */
 typedef enum {
-    VIR_NODE_MEMORY_STATS_ALL_CELLS = -1,
+    VIR_NODE_MEMORY_STATS_ALL_CELLS = -1, /* (Since: v0.9.3) */
 } virNodeGetMemoryStatsAllCells;
 
 /**
@@ -589,8 +589,8 @@ int virNodeGetSEVInfo (virConnectPtr conn,
  * Since: v0.4.1
  */
 typedef enum {
-    VIR_CONNECT_RO         = (1 << 0),  /* A readonly connection */
-    VIR_CONNECT_NO_ALIASES = (1 << 1),  /* Don't try to resolve URI aliases */
+    VIR_CONNECT_RO         = (1 << 0),  /* A readonly connection (Since: v0.4.1) */
+    VIR_CONNECT_NO_ALIASES = (1 << 1),  /* Don't try to resolve URI aliases (Since: v0.9.7) */
 } virConnectFlags;
 
 /**
@@ -599,18 +599,18 @@ typedef enum {
  * Since: v0.4.1
  */
 typedef enum {
-    VIR_CRED_USERNAME = 1,     /* Identity to act as */
-    VIR_CRED_AUTHNAME = 2,     /* Identify to authorize as */
-    VIR_CRED_LANGUAGE = 3,     /* RFC 1766 languages, comma separated */
-    VIR_CRED_CNONCE = 4,       /* client supplies a nonce */
-    VIR_CRED_PASSPHRASE = 5,   /* Passphrase secret */
-    VIR_CRED_ECHOPROMPT = 6,   /* Challenge response */
-    VIR_CRED_NOECHOPROMPT = 7, /* Challenge response */
-    VIR_CRED_REALM = 8,        /* Authentication realm */
-    VIR_CRED_EXTERNAL = 9,     /* Externally managed credential */
+    VIR_CRED_USERNAME = 1,     /* Identity to act as (Since: v0.4.1) */
+    VIR_CRED_AUTHNAME = 2,     /* Identify to authorize as (Since: v0.4.1) */
+    VIR_CRED_LANGUAGE = 3,     /* RFC 1766 languages, comma separated (Since: v0.4.1) */
+    VIR_CRED_CNONCE = 4,       /* client supplies a nonce (Since: v0.4.1) */
+    VIR_CRED_PASSPHRASE = 5,   /* Passphrase secret (Since: v0.4.1) */
+    VIR_CRED_ECHOPROMPT = 6,   /* Challenge response (Since: v0.4.1) */
+    VIR_CRED_NOECHOPROMPT = 7, /* Challenge response (Since: v0.4.1) */
+    VIR_CRED_REALM = 8,        /* Authentication realm (Since: v0.4.1) */
+    VIR_CRED_EXTERNAL = 9,     /* Externally managed credential (Since: v0.4.1) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_CRED_LAST              /* More may be added - expect the unexpected */
+    VIR_CRED_LAST              /* More may be added - expect the unexpected (Since: v0.9.10) */
 # endif
 } virConnectCredentialType;
 
@@ -909,13 +909,13 @@ int virConnectIsAlive(virConnectPtr conn);
  * Since: v0.7.5
  */
 typedef enum {
-    VIR_CPU_COMPARE_ERROR           = -1,
-    VIR_CPU_COMPARE_INCOMPATIBLE    = 0,
-    VIR_CPU_COMPARE_IDENTICAL       = 1,
-    VIR_CPU_COMPARE_SUPERSET        = 2,
+    VIR_CPU_COMPARE_ERROR           = -1, /* (Since: v0.7.5) */
+    VIR_CPU_COMPARE_INCOMPATIBLE    = 0, /* (Since: v0.7.5) */
+    VIR_CPU_COMPARE_IDENTICAL       = 1, /* (Since: v0.7.5) */
+    VIR_CPU_COMPARE_SUPERSET        = 2, /* (Since: v0.7.5) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_CPU_COMPARE_LAST
+    VIR_CPU_COMPARE_LAST /* (Since: v0.9.10) */
 # endif
 } virCPUCompareResult;
 
@@ -926,9 +926,9 @@ typedef enum {
  */
 typedef enum {
     VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE = (1 << 0), /* treat incompatible
-                                                             CPUs as failure */
+                                                             CPUs as failure (Since: v1.2.6) */
     VIR_CONNECT_COMPARE_CPU_VALIDATE_XML = (1 << 1), /* validate the xml
-                                                        document */
+                                                        document (Since: v6.9.0) */
 } virConnectCompareCPUFlags;
 
 int virConnectCompareCPU(virConnectPtr conn,
@@ -955,8 +955,8 @@ int virConnectGetCPUModelNames(virConnectPtr conn,
  * Since: v1.1.2
  */
 typedef enum {
-    VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES  = (1 << 0),  /* show all features */
-    VIR_CONNECT_BASELINE_CPU_MIGRATABLE = (1 << 1),  /* filter out non-migratable features */
+    VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES  = (1 << 0),  /* show all features (Since: v1.1.2) */
+    VIR_CONNECT_BASELINE_CPU_MIGRATABLE = (1 << 1),  /* filter out non-migratable features (Since: v1.2.14) */
 } virConnectBaselineCPUFlags;
 
 char *virConnectBaselineCPU(virConnectPtr conn,
@@ -987,10 +987,10 @@ int virNodeGetFreePages(virConnectPtr conn,
  */
 typedef enum {
     VIR_NODE_ALLOC_PAGES_ADD = 0, /* Add @pageCounts to the pages pool. This
-                                     can be used only to size up the pool. */
+                                     can be used only to size up the pool. (Since: v1.2.9) */
     VIR_NODE_ALLOC_PAGES_SET = (1 << 0), /* Don't add @pageCounts, instead set
                                             passed number of pages. This can be
-                                            used to free allocated pages. */
+                                            used to free allocated pages. (Since: v1.2.9) */
 } virNodeAllocPagesFlags;
 
 int virNodeAllocPages(virConnectPtr conn,
diff --git a/include/libvirt/libvirt-interface.h b/include/libvirt/libvirt-interface.h
index 9d140b27bb..66ede43f43 100644
--- a/include/libvirt/libvirt-interface.h
+++ b/include/libvirt/libvirt-interface.h
@@ -65,8 +65,8 @@ int                     virConnectListDefinedInterfaces  (virConnectPtr conn,
  * Since: v0.10.2
  */
 typedef enum {
-    VIR_CONNECT_LIST_INTERFACES_INACTIVE      = 1 << 0,
-    VIR_CONNECT_LIST_INTERFACES_ACTIVE        = 1 << 1,
+    VIR_CONNECT_LIST_INTERFACES_INACTIVE      = 1 << 0, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_INTERFACES_ACTIVE        = 1 << 1, /* (Since: v0.10.2) */
 } virConnectListAllInterfacesFlags;
 
 int                     virConnectListAllInterfaces (virConnectPtr conn,
@@ -87,7 +87,7 @@ const char*             virInterfaceGetMACString  (virInterfacePtr iface);
  * Since: v0.7.3
  */
 typedef enum {
-    VIR_INTERFACE_XML_INACTIVE = 1 << 0 /* dump inactive interface information */
+    VIR_INTERFACE_XML_INACTIVE = 1 << 0 /* dump inactive interface information (Since: v0.7.3) */
 } virInterfaceXMLFlags;
 
 /**
@@ -96,7 +96,7 @@ typedef enum {
  * Since: v7.7.0
  */
 typedef enum {
-    VIR_INTERFACE_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema */
+    VIR_INTERFACE_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema (Since: v7.7.0) */
 } virInterfaceDefineFlags;
 
 char *                  virInterfaceGetXMLDesc    (virInterfacePtr iface,
diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h
index 0eb60700e2..39a38f0c3f 100644
--- a/include/libvirt/libvirt-network.h
+++ b/include/libvirt/libvirt-network.h
@@ -33,7 +33,7 @@
  * Since: v0.9.10
  */
 typedef enum {
-    VIR_NETWORK_XML_INACTIVE = (1 << 0), /* dump inactive network information */
+    VIR_NETWORK_XML_INACTIVE = (1 << 0), /* dump inactive network information (Since: v0.9.10) */
 } virNetworkXMLFlags;
 
 /**
@@ -104,14 +104,14 @@ int                     virConnectListDefinedNetworks   (virConnectPtr conn,
  * Since: v0.10.2
  */
 typedef enum {
-    VIR_CONNECT_LIST_NETWORKS_INACTIVE      = 1 << 0,
-    VIR_CONNECT_LIST_NETWORKS_ACTIVE        = 1 << 1,
+    VIR_CONNECT_LIST_NETWORKS_INACTIVE      = 1 << 0, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NETWORKS_ACTIVE        = 1 << 1, /* (Since: v0.10.2) */
 
-    VIR_CONNECT_LIST_NETWORKS_PERSISTENT    = 1 << 2,
-    VIR_CONNECT_LIST_NETWORKS_TRANSIENT     = 1 << 3,
+    VIR_CONNECT_LIST_NETWORKS_PERSISTENT    = 1 << 2, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NETWORKS_TRANSIENT     = 1 << 3, /* (Since: v0.10.2) */
 
-    VIR_CONNECT_LIST_NETWORKS_AUTOSTART     = 1 << 4,
-    VIR_CONNECT_LIST_NETWORKS_NO_AUTOSTART  = 1 << 5,
+    VIR_CONNECT_LIST_NETWORKS_AUTOSTART     = 1 << 4, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NETWORKS_NO_AUTOSTART  = 1 << 5, /* (Since: v0.10.2) */
 } virConnectListAllNetworksFlags;
 
 int                     virConnectListAllNetworks       (virConnectPtr conn,
@@ -133,7 +133,7 @@ virNetworkPtr           virNetworkLookupByUUIDString    (virConnectPtr conn,
  * Since: v7.8.0
  */
 typedef enum {
-    VIR_NETWORK_CREATE_VALIDATE = 1 << 0, /* Validate the XML document against schema */
+    VIR_NETWORK_CREATE_VALIDATE = 1 << 0, /* Validate the XML document against schema (Since: v7.8.0) */
 } virNetworkCreateFlags;
 
 /*
@@ -150,7 +150,7 @@ virNetworkPtr           virNetworkCreateXMLFlags(virConnectPtr conn,
  * Since: v7.7.0
  */
 typedef enum {
-    VIR_NETWORK_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema */
+    VIR_NETWORK_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema (Since: v7.7.0) */
 } virNetworkDefineFlags;
 
 /*
@@ -176,13 +176,13 @@ int                     virNetworkUndefine      (virNetworkPtr network);
  * Since: v0.10.2
  */
 typedef enum {
-    VIR_NETWORK_UPDATE_COMMAND_NONE      = 0, /* (invalid) */
-    VIR_NETWORK_UPDATE_COMMAND_MODIFY    = 1, /* modify an existing element */
-    VIR_NETWORK_UPDATE_COMMAND_DELETE    = 2, /* delete an existing element */
-    VIR_NETWORK_UPDATE_COMMAND_ADD_LAST  = 3, /* add an element at end of list */
-    VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list */
+    VIR_NETWORK_UPDATE_COMMAND_NONE      = 0, /* (invalid (Since: v0.10.2) */
+    VIR_NETWORK_UPDATE_COMMAND_MODIFY    = 1, /* modify an existing element (Since: v0.10.2) */
+    VIR_NETWORK_UPDATE_COMMAND_DELETE    = 2, /* delete an existing element (Since: v0.10.2) */
+    VIR_NETWORK_UPDATE_COMMAND_ADD_LAST  = 3, /* add an element at end of list (Since: v0.10.2) */
+    VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST = 4, /* add an element at start of list (Since: v0.10.2) */
 # ifdef VIR_ENUM_SENTINELS
-    VIR_NETWORK_UPDATE_COMMAND_LAST
+    VIR_NETWORK_UPDATE_COMMAND_LAST /* (Since: v0.10.2) */
 # endif
 } virNetworkUpdateCommand;
 
@@ -195,21 +195,21 @@ typedef enum {
  * Since: v0.10.2
  */
 typedef enum {
-    VIR_NETWORK_SECTION_NONE              =  0, /* (invalid) */
-    VIR_NETWORK_SECTION_BRIDGE            =  1, /* <bridge> */
-    VIR_NETWORK_SECTION_DOMAIN            =  2, /* <domain> */
-    VIR_NETWORK_SECTION_IP                =  3, /* <ip> */
-    VIR_NETWORK_SECTION_IP_DHCP_HOST      =  4, /* <ip>/<dhcp>/<host> */
-    VIR_NETWORK_SECTION_IP_DHCP_RANGE     =  5, /* <ip>/<dhcp>/<range> */
-    VIR_NETWORK_SECTION_FORWARD           =  6, /* <forward> */
-    VIR_NETWORK_SECTION_FORWARD_INTERFACE =  7, /* <forward>/<interface> */
-    VIR_NETWORK_SECTION_FORWARD_PF        =  8, /* <forward>/<pf> */
-    VIR_NETWORK_SECTION_PORTGROUP         =  9, /* <portgroup> */
-    VIR_NETWORK_SECTION_DNS_HOST          = 10, /* <dns>/<host> */
-    VIR_NETWORK_SECTION_DNS_TXT           = 11, /* <dns>/<txt> */
-    VIR_NETWORK_SECTION_DNS_SRV           = 12, /* <dns>/<srv> */
+    VIR_NETWORK_SECTION_NONE              =  0, /* (invalid (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_BRIDGE            =  1, /* <bridge> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_DOMAIN            =  2, /* <domain> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_IP                =  3, /* <ip> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_IP_DHCP_HOST      =  4, /* <ip>/<dhcp>/<host> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_IP_DHCP_RANGE     =  5, /* <ip>/<dhcp>/<range> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_FORWARD           =  6, /* <forward> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_FORWARD_INTERFACE =  7, /* <forward>/<interface> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_FORWARD_PF        =  8, /* <forward>/<pf> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_PORTGROUP         =  9, /* <portgroup> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_DNS_HOST          = 10, /* <dns>/<host> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_DNS_TXT           = 11, /* <dns>/<txt> (Since: v0.10.2) */
+    VIR_NETWORK_SECTION_DNS_SRV           = 12, /* <dns>/<srv> (Since: v0.10.2) */
 # ifdef VIR_ENUM_SENTINELS
-    VIR_NETWORK_SECTION_LAST
+    VIR_NETWORK_SECTION_LAST /* (Since: v0.10.2) */
 # endif
 } virNetworkUpdateSection;
 
@@ -222,9 +222,9 @@ typedef enum {
  */
 typedef enum {
     VIR_NETWORK_UPDATE_AFFECT_CURRENT = 0,      /* affect live if network is active,
-                                                   config if it's not active */
-    VIR_NETWORK_UPDATE_AFFECT_LIVE    = 1 << 0, /* affect live state of network only */
-    VIR_NETWORK_UPDATE_AFFECT_CONFIG  = 1 << 1, /* affect persistent config only */
+                                                   config if it's not active (Since: v0.10.2) */
+    VIR_NETWORK_UPDATE_AFFECT_LIVE    = 1 << 0, /* affect live state of network only (Since: v0.10.2) */
+    VIR_NETWORK_UPDATE_AFFECT_CONFIG  = 1 << 1, /* affect persistent config only (Since: v0.10.2) */
 } virNetworkUpdateFlags;
 
 /*
@@ -277,13 +277,13 @@ int virNetworkIsPersistent(virNetworkPtr net);
  * Since: v1.2.1
  */
 typedef enum {
-    VIR_NETWORK_EVENT_DEFINED = 0,
-    VIR_NETWORK_EVENT_UNDEFINED = 1,
-    VIR_NETWORK_EVENT_STARTED = 2,
-    VIR_NETWORK_EVENT_STOPPED = 3,
+    VIR_NETWORK_EVENT_DEFINED = 0, /* (Since: v1.2.1) */
+    VIR_NETWORK_EVENT_UNDEFINED = 1, /* (Since: v1.2.1) */
+    VIR_NETWORK_EVENT_STARTED = 2, /* (Since: v1.2.1) */
+    VIR_NETWORK_EVENT_STOPPED = 3, /* (Since: v1.2.1) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_NETWORK_EVENT_LAST
+    VIR_NETWORK_EVENT_LAST /* (Since: v1.2.1) */
 # endif
 } virNetworkEventLifecycleType;
 
@@ -327,7 +327,7 @@ typedef void (*virConnectNetworkEventLifecycleCallback)(virConnectPtr conn,
  * Since: v1.2.1
  */
 typedef enum {
-    VIR_NETWORK_EVENT_ID_LIFECYCLE = 0,       /* virConnectNetworkEventLifecycleCallback */
+    VIR_NETWORK_EVENT_ID_LIFECYCLE = 0,       /* virConnectNetworkEventLifecycleCallback (Since: v1.2.1) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_NETWORK_EVENT_ID_LAST
@@ -335,6 +335,8 @@ typedef enum {
      * NB: this enum value will increase over time as new events are
      * added to the libvirt API. It reflects the last event ID supported
      * by this version of the libvirt API.
+     *
+     * Since: v1.2.1
      */
 # endif
 } virNetworkEventID;
@@ -345,11 +347,11 @@ typedef enum {
  * Since: v1.2.6
  */
 typedef enum {
-    VIR_IP_ADDR_TYPE_IPV4,
-    VIR_IP_ADDR_TYPE_IPV6,
+    VIR_IP_ADDR_TYPE_IPV4, /* (Since: v1.2.6) */
+    VIR_IP_ADDR_TYPE_IPV6, /* (Since: v1.2.6) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_IP_ADDR_TYPE_LAST
+    VIR_IP_ADDR_TYPE_LAST /* (Since: v1.2.6) */
 # endif
 } virIPAddrType;
 
@@ -427,8 +429,8 @@ virNetworkPortLookupByUUIDString(virNetworkPtr net,
  * Since: v5.5.0
  */
 typedef enum {
-    VIR_NETWORK_PORT_CREATE_RECLAIM = (1 << 0), /* reclaim existing used resources */
-    VIR_NETWORK_PORT_CREATE_VALIDATE = (1 << 1), /* Validate the XML document against schema */
+    VIR_NETWORK_PORT_CREATE_RECLAIM = (1 << 0), /* reclaim existing used resources (Since: v5.5.0) */
+    VIR_NETWORK_PORT_CREATE_VALIDATE = (1 << 1), /* Validate the XML document against schema (Since: v7.8.0) */
 } virNetworkPortCreateFlags;
 
 virNetworkPortPtr
diff --git a/include/libvirt/libvirt-nodedev.h b/include/libvirt/libvirt-nodedev.h
index cdf0df9e0a..7d4dbd58b9 100644
--- a/include/libvirt/libvirt-nodedev.h
+++ b/include/libvirt/libvirt-nodedev.h
@@ -68,31 +68,31 @@ int                     virNodeListDevices      (virConnectPtr conn,
  * Since: v0.10.2
  */
 typedef enum {
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SYSTEM        = 1 << 0,  /* System capability */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_PCI_DEV       = 1 << 1,  /* PCI device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_USB_DEV       = 1 << 2,  /* USB device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_USB_INTERFACE = 1 << 3,  /* USB interface */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_NET           = 1 << 4,  /* Network device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_HOST     = 1 << 5,  /* SCSI Host Bus Adapter */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_TARGET   = 1 << 6,  /* SCSI Target */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI          = 1 << 7,  /* SCSI device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_STORAGE       = 1 << 8,  /* Storage device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST       = 1 << 9,  /* FC Host Bus Adapter */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS        = 1 << 10, /* Capable of vport */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC  = 1 << 11, /* Capable of scsi_generic */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM           = 1 << 12, /* DRM device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV_TYPES    = 1 << 13, /* Capable of mediated devices */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV          = 1 << 14, /* Mediated device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV       = 1 << 15, /* CCW device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_CSS_DEV       = 1 << 16, /* CSS device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_VDPA          = 1 << 17, /* vDPA device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_AP_CARD       = 1 << 18, /* s390 AP Card device */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_AP_QUEUE      = 1 << 19, /* s390 AP Queue */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_AP_MATRIX     = 1 << 20, /* s390 AP Matrix */
-    VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPD           = 1 << 21, /* Device with VPD */
-
-    VIR_CONNECT_LIST_NODE_DEVICES_INACTIVE          = 1 << 30, /* Inactive devices */
-    VIR_CONNECT_LIST_NODE_DEVICES_ACTIVE            = 1U << 31, /* Active devices */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SYSTEM        = 1 << 0,  /* System capability (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_PCI_DEV       = 1 << 1,  /* PCI device (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_USB_DEV       = 1 << 2,  /* USB device (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_USB_INTERFACE = 1 << 3,  /* USB interface (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_NET           = 1 << 4,  /* Network device (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_HOST     = 1 << 5,  /* SCSI Host Bus Adapter (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_TARGET   = 1 << 6,  /* SCSI Target (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI          = 1 << 7,  /* SCSI device (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_STORAGE       = 1 << 8,  /* Storage device (Since: v0.10.2) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST       = 1 << 9,  /* FC Host Bus Adapter (Since: v1.0.4) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS        = 1 << 10, /* Capable of vport (Since: v1.0.4) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC  = 1 << 11, /* Capable of scsi_generic (Since: v1.1.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM           = 1 << 12, /* DRM device (Since: v3.1.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV_TYPES    = 1 << 13, /* Capable of mediated devices (Since: v3.4.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV          = 1 << 14, /* Mediated device (Since: v3.4.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV       = 1 << 15, /* CCW device (Since: v3.4.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_CSS_DEV       = 1 << 16, /* CSS device (Since: v6.8.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_VDPA          = 1 << 17, /* vDPA device (Since: v6.9.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_AP_CARD       = 1 << 18, /* s390 AP Card device (Since: v7.0.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_AP_QUEUE      = 1 << 19, /* s390 AP Queue (Since: v7.0.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_AP_MATRIX     = 1 << 20, /* s390 AP Matrix (Since: v7.0.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPD           = 1 << 21, /* Device with VPD (Since: v7.9.0) */
+
+    VIR_CONNECT_LIST_NODE_DEVICES_INACTIVE          = 1 << 30, /* Inactive devices (Since: v7.3.0) */
+    VIR_CONNECT_LIST_NODE_DEVICES_ACTIVE            = 1U << 31, /* Active devices (Since: v7.3.0) */
 } virConnectListAllNodeDeviceFlags;
 
 int                     virConnectListAllNodeDevices (virConnectPtr conn,
@@ -176,8 +176,8 @@ int virNodeDeviceIsActive(virNodeDevicePtr dev);
  * Since: v2.2.0
  */
 typedef enum {
-    VIR_NODE_DEVICE_EVENT_ID_LIFECYCLE = 0, /* virConnectNodeDeviceEventLifecycleCallback */
-    VIR_NODE_DEVICE_EVENT_ID_UPDATE = 1, /* virConnectNodeDeviceEventGenericCallback */
+    VIR_NODE_DEVICE_EVENT_ID_LIFECYCLE = 0, /* virConnectNodeDeviceEventLifecycleCallback (Since: v2.2.0) */
+    VIR_NODE_DEVICE_EVENT_ID_UPDATE = 1, /* virConnectNodeDeviceEventGenericCallback (Since: v2.2.0) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_NODE_DEVICE_EVENT_ID_LAST
@@ -185,6 +185,8 @@ typedef enum {
      * NB: this enum value will increase over time as new events are
      * added to the libvirt API. It reflects the last event ID supported
      * by this version of the libvirt API.
+     *
+     * Since: v2.2.0
      */
 # endif
 } virNodeDeviceEventID;
@@ -225,13 +227,13 @@ int virConnectNodeDeviceEventDeregisterAny(virConnectPtr conn,
  * Since: v2.2.0
  */
 typedef enum {
-    VIR_NODE_DEVICE_EVENT_CREATED = 0,
-    VIR_NODE_DEVICE_EVENT_DELETED = 1,
-    VIR_NODE_DEVICE_EVENT_DEFINED = 2,
-    VIR_NODE_DEVICE_EVENT_UNDEFINED = 3,
+    VIR_NODE_DEVICE_EVENT_CREATED = 0, /* (Since: v2.2.0) */
+    VIR_NODE_DEVICE_EVENT_DELETED = 1, /* (Since: v2.2.0) */
+    VIR_NODE_DEVICE_EVENT_DEFINED = 2, /* (Since: v7.3.0) */
+    VIR_NODE_DEVICE_EVENT_UNDEFINED = 3, /* (Since: v7.3.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_NODE_DEVICE_EVENT_LAST
+    VIR_NODE_DEVICE_EVENT_LAST /* (Since: v2.2.0) */
 # endif
 } virNodeDeviceEventLifecycleType;
 
diff --git a/include/libvirt/libvirt-nwfilter.h b/include/libvirt/libvirt-nwfilter.h
index e08616f5e2..279cc3740e 100644
--- a/include/libvirt/libvirt-nwfilter.h
+++ b/include/libvirt/libvirt-nwfilter.h
@@ -93,7 +93,7 @@ virNWFilterPtr          virNWFilterLookupByUUIDString (virConnectPtr conn,
  * Since: v7.7.0
  */
 typedef enum {
-    VIR_NWFILTER_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema */
+    VIR_NWFILTER_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema (Since: v7.7.0) */
 } virNWFilterDefineFlags;
 
 /*
@@ -126,7 +126,7 @@ int                     virNWFilterFree         (virNWFilterPtr nwfilter);
  * Since: v7.8.0
  */
 typedef enum {
-    VIR_NWFILTER_BINDING_CREATE_VALIDATE = 1 << 0, /* Validate the XML document against schema */
+    VIR_NWFILTER_BINDING_CREATE_VALIDATE = 1 << 0, /* Validate the XML document against schema (Since: v7.8.0) */
 } virNWFilterBindingCreateFlags;
 
 const char*             virNWFilterGetName       (virNWFilterPtr nwfilter);
diff --git a/include/libvirt/libvirt-secret.h b/include/libvirt/libvirt-secret.h
index 5af6f13b6d..537b5595b4 100644
--- a/include/libvirt/libvirt-secret.h
+++ b/include/libvirt/libvirt-secret.h
@@ -51,12 +51,12 @@ typedef virSecret *virSecretPtr;
  * Since: v0.7.1
  */
 typedef enum {
-    VIR_SECRET_USAGE_TYPE_NONE = 0,
-    VIR_SECRET_USAGE_TYPE_VOLUME = 1,
-    VIR_SECRET_USAGE_TYPE_CEPH = 2,
-    VIR_SECRET_USAGE_TYPE_ISCSI = 3,
-    VIR_SECRET_USAGE_TYPE_TLS = 4,
-    VIR_SECRET_USAGE_TYPE_VTPM = 5,
+    VIR_SECRET_USAGE_TYPE_NONE = 0, /* (Since: v0.7.1) */
+    VIR_SECRET_USAGE_TYPE_VOLUME = 1, /* (Since: v0.7.1) */
+    VIR_SECRET_USAGE_TYPE_CEPH = 2, /* (Since: v0.9.7) */
+    VIR_SECRET_USAGE_TYPE_ISCSI = 3, /* (Since: v1.0.4) */
+    VIR_SECRET_USAGE_TYPE_TLS = 4, /* (Since: v2.3.0) */
+    VIR_SECRET_USAGE_TYPE_VTPM = 5, /* (Since: v5.6.0) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_SECRET_USAGE_TYPE_LAST
@@ -64,6 +64,8 @@ typedef enum {
      * NB: this enum value will increase over time as new usage types are
      * added to the libvirt API. It reflects the last usage type supported
      * by this version of the libvirt API.
+     *
+     * Since: v0.9.7
      */
 # endif
 } virSecretUsageType;
@@ -84,13 +86,13 @@ int                     virConnectListSecrets   (virConnectPtr conn,
  */
 typedef enum {
     VIR_CONNECT_LIST_SECRETS_EPHEMERAL    = 1 << 0, /* kept in memory, never
-                                                       stored persistently */
-    VIR_CONNECT_LIST_SECRETS_NO_EPHEMERAL = 1 << 1,
+                                                       stored persistently (Since: v0.10.2) */
+    VIR_CONNECT_LIST_SECRETS_NO_EPHEMERAL = 1 << 1, /* (Since: v0.10.2) */
 
     VIR_CONNECT_LIST_SECRETS_PRIVATE      = 1 << 2, /* not revealed to any caller
                                                        of libvirt, nor to any other
-                                                       node */
-    VIR_CONNECT_LIST_SECRETS_NO_PRIVATE   = 1 << 3,
+                                                       node (Since: v0.10.2) */
+    VIR_CONNECT_LIST_SECRETS_NO_PRIVATE   = 1 << 3, /* (Since: v0.10.2) */
 } virConnectListAllSecretsFlags;
 
 int                     virConnectListAllSecrets(virConnectPtr conn,
@@ -109,7 +111,7 @@ virSecretPtr            virSecretLookupByUsage(virConnectPtr conn,
  * Since: v7.7.0
  */
 typedef enum {
-    VIR_SECRET_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema */
+    VIR_SECRET_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema (Since: v7.7.0) */
 } virSecretDefineFlags;
 
 virSecretPtr            virSecretDefineXML      (virConnectPtr conn,
@@ -154,8 +156,8 @@ int                     virSecretFree           (virSecretPtr secret);
  * Since: v3.0.0
  */
 typedef enum {
-    VIR_SECRET_EVENT_ID_LIFECYCLE = 0, /* virConnectSecretEventLifecycleCallback */
-    VIR_SECRET_EVENT_ID_VALUE_CHANGED = 1, /* virConnectSecretEventGenericCallback */
+    VIR_SECRET_EVENT_ID_LIFECYCLE = 0, /* virConnectSecretEventLifecycleCallback (Since: v3.0.0) */
+    VIR_SECRET_EVENT_ID_VALUE_CHANGED = 1, /* virConnectSecretEventGenericCallback (Since: v3.0.0) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_SECRET_EVENT_ID_LAST
@@ -163,6 +165,8 @@ typedef enum {
      * NB: this enum value will increase over time as new events are
      * added to the libvirt API. It reflects the last event ID supported
      * by this version of the libvirt API.
+     *
+     * Since: v3.0.0
      */
 # endif
 } virSecretEventID;
@@ -203,11 +207,11 @@ int virConnectSecretEventDeregisterAny(virConnectPtr conn,
  * Since: v3.0.0
  */
 typedef enum {
-    VIR_SECRET_EVENT_DEFINED = 0,
-    VIR_SECRET_EVENT_UNDEFINED = 1,
+    VIR_SECRET_EVENT_DEFINED = 0, /* (Since: v3.0.0) */
+    VIR_SECRET_EVENT_UNDEFINED = 1, /* (Since: v3.0.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_SECRET_EVENT_LAST
+    VIR_SECRET_EVENT_LAST /* (Since: v3.0.0) */
 # endif
 } virSecretEventLifecycleType;
 
diff --git a/include/libvirt/libvirt-storage.h b/include/libvirt/libvirt-storage.h
index 381a8d95bc..8f62b6f87a 100644
--- a/include/libvirt/libvirt-storage.h
+++ b/include/libvirt/libvirt-storage.h
@@ -54,14 +54,14 @@ typedef virStoragePool *virStoragePoolPtr;
  * Since: v0.4.1
  */
 typedef enum {
-    VIR_STORAGE_POOL_INACTIVE = 0, /* Not running */
-    VIR_STORAGE_POOL_BUILDING = 1, /* Initializing pool, not available */
-    VIR_STORAGE_POOL_RUNNING = 2,  /* Running normally */
-    VIR_STORAGE_POOL_DEGRADED = 3, /* Running degraded */
-    VIR_STORAGE_POOL_INACCESSIBLE = 4, /* Running, but not accessible */
+    VIR_STORAGE_POOL_INACTIVE = 0, /* Not running (Since: v0.4.1) */
+    VIR_STORAGE_POOL_BUILDING = 1, /* Initializing pool, not available (Since: v0.4.1) */
+    VIR_STORAGE_POOL_RUNNING = 2,  /* Running normally (Since: v0.4.1) */
+    VIR_STORAGE_POOL_DEGRADED = 3, /* Running degraded (Since: v0.4.1) */
+    VIR_STORAGE_POOL_INACCESSIBLE = 4, /* Running, but not accessible (Since: v0.8.2) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_STORAGE_POOL_STATE_LAST
+    VIR_STORAGE_POOL_STATE_LAST /* (Since: v0.9.10) */
 # endif
 } virStoragePoolState;
 
@@ -71,11 +71,11 @@ typedef enum {
  * Since: v0.4.1
  */
 typedef enum {
-    VIR_STORAGE_POOL_BUILD_NEW  = 0,   /* Regular build from scratch */
-    VIR_STORAGE_POOL_BUILD_REPAIR = (1 << 0), /* Repair / reinitialize */
-    VIR_STORAGE_POOL_BUILD_RESIZE = (1 << 1),  /* Extend existing pool */
-    VIR_STORAGE_POOL_BUILD_NO_OVERWRITE = (1 << 2),  /* Do not overwrite existing pool */
-    VIR_STORAGE_POOL_BUILD_OVERWRITE = (1 << 3),  /* Overwrite data */
+    VIR_STORAGE_POOL_BUILD_NEW  = 0,   /* Regular build from scratch (Since: v0.4.1) */
+    VIR_STORAGE_POOL_BUILD_REPAIR = (1 << 0), /* Repair / reinitialize (Since: v0.4.1) */
+    VIR_STORAGE_POOL_BUILD_RESIZE = (1 << 1),  /* Extend existing pool (Since: v0.4.1) */
+    VIR_STORAGE_POOL_BUILD_NO_OVERWRITE = (1 << 2),  /* Do not overwrite existing pool (Since: v0.9.5) */
+    VIR_STORAGE_POOL_BUILD_OVERWRITE = (1 << 3),  /* Overwrite data (Since: v0.9.5) */
 } virStoragePoolBuildFlags;
 
 /**
@@ -84,8 +84,8 @@ typedef enum {
  * Since: v0.4.1
  */
 typedef enum {
-    VIR_STORAGE_POOL_DELETE_NORMAL = 0, /* Delete metadata only    (fast) */
-    VIR_STORAGE_POOL_DELETE_ZEROED = 1 << 0,  /* Clear all data to zeros (slow) */
+    VIR_STORAGE_POOL_DELETE_NORMAL = 0, /* Delete metadata only    (fast) (Since: v0.4.1) */
+    VIR_STORAGE_POOL_DELETE_ZEROED = 1 << 0,  /* Clear all data to zeros (slow) (Since: v0.4.1) */
 } virStoragePoolDeleteFlags;
 
 /**
@@ -94,20 +94,26 @@ typedef enum {
  * Since: v1.3.1
  */
 typedef enum {
-    /* Create the pool but do not perform pool build */
+    /* Create the pool but do not perform pool build (Since: v1.3.1) */
     VIR_STORAGE_POOL_CREATE_NORMAL = 0,
 
-    /* Create the pool and perform pool build without any flags */
+    /* Create the pool and perform pool build without any flags (Since: v1.3.1) */
     VIR_STORAGE_POOL_CREATE_WITH_BUILD = 1 << 0,
 
     /* Create the pool and perform pool build using the
      * VIR_STORAGE_POOL_BUILD_OVERWRITE flag. This is mutually
-     * exclusive to VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE */
+     * exclusive to VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE
+     *
+     * Since: v1.3.1
+     */
     VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE = 1 << 1,
 
     /* Create the pool and perform pool build using the
      * VIR_STORAGE_POOL_BUILD_NO_OVERWRITE flag. This is mutually
-     * exclusive to VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE */
+     * exclusive to VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE
+     *
+     * Since: v1.3.1
+     */
     VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE = 1 << 2,
 } virStoragePoolCreateFlags;
 
@@ -159,16 +165,16 @@ typedef virStorageVol *virStorageVolPtr;
  * Since: v0.4.1
  */
 typedef enum {
-    VIR_STORAGE_VOL_FILE = 0,     /* Regular file based volumes */
-    VIR_STORAGE_VOL_BLOCK = 1,    /* Block based volumes */
-    VIR_STORAGE_VOL_DIR = 2,      /* Directory-passthrough based volume */
-    VIR_STORAGE_VOL_NETWORK = 3,  /* Network volumes like RBD (RADOS Block Device) */
+    VIR_STORAGE_VOL_FILE = 0,     /* Regular file based volumes (Since: v0.4.1) */
+    VIR_STORAGE_VOL_BLOCK = 1,    /* Block based volumes (Since: v0.4.1) */
+    VIR_STORAGE_VOL_DIR = 2,      /* Directory-passthrough based volume (Since: v0.9.5) */
+    VIR_STORAGE_VOL_NETWORK = 3,  /* Network volumes like RBD (RADOS Block Device) (Since: v0.9.13) */
     VIR_STORAGE_VOL_NETDIR = 4,   /* Network accessible directory that can
-                                   * contain other network volumes */
-    VIR_STORAGE_VOL_PLOOP = 5,    /* Ploop based volumes */
+                                   * contain other network volumes (Since: v1.2.0) */
+    VIR_STORAGE_VOL_PLOOP = 5,    /* Ploop based volumes (Since: v1.3.4) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_STORAGE_VOL_LAST
+    VIR_STORAGE_VOL_LAST /* (Since: v0.9.10) */
 # endif
 } virStorageVolType;
 
@@ -178,9 +184,9 @@ typedef enum {
  * Since: v0.4.1
  */
 typedef enum {
-    VIR_STORAGE_VOL_DELETE_NORMAL = 0, /* Delete metadata only    (fast) */
-    VIR_STORAGE_VOL_DELETE_ZEROED = 1 << 0,  /* Clear all data to zeros (slow) */
-    VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS = 1 << 1, /* Force removal of volume, even if in use */
+    VIR_STORAGE_VOL_DELETE_NORMAL = 0, /* Delete metadata only    (fast) (Since: v0.4.1) */
+    VIR_STORAGE_VOL_DELETE_ZEROED = 1 << 0,  /* Clear all data to zeros (slow) (Since: v0.4.1) */
+    VIR_STORAGE_VOL_DELETE_WITH_SNAPSHOTS = 1 << 1, /* Force removal of volume, even if in use (Since: v1.2.21) */
 } virStorageVolDeleteFlags;
 
 /**
@@ -189,26 +195,26 @@ typedef enum {
  * Since: v0.9.10
  */
 typedef enum {
-    VIR_STORAGE_VOL_WIPE_ALG_ZERO = 0, /* 1-pass, all zeroes */
+    VIR_STORAGE_VOL_WIPE_ALG_ZERO = 0, /* 1-pass, all zeroes (Since: v0.9.10) */
     VIR_STORAGE_VOL_WIPE_ALG_NNSA = 1, /* 4-pass  NNSA Policy Letter
-                                          NAP-14.1-C (XVI-8) */
+                                          NAP-14.1-C (XVI-8) (Since: v0.9.10) */
     VIR_STORAGE_VOL_WIPE_ALG_DOD = 2, /* 4-pass DoD 5220.22-M section
-                                         8-306 procedure */
+                                         8-306 procedure (Since: v0.9.10) */
     VIR_STORAGE_VOL_WIPE_ALG_BSI = 3, /* 9-pass method recommended by the
                                          German Center of Security in
-                                         Information Technologies */
-    VIR_STORAGE_VOL_WIPE_ALG_GUTMANN = 4, /* The canonical 35-pass sequence */
+                                         Information Technologies (Since: v0.9.10) */
+    VIR_STORAGE_VOL_WIPE_ALG_GUTMANN = 4, /* The canonical 35-pass sequence (Since: v0.9.10) */
     VIR_STORAGE_VOL_WIPE_ALG_SCHNEIER = 5, /* 7-pass method described by
                                               Bruce Schneier in "Applied
-                                              Cryptography" (1996) */
-    VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7 = 6, /* 7-pass random data */
+                                              Cryptography" (1996) (Since: v0.9.10) */
+    VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7 = 6, /* 7-pass random data (Since: v0.9.10) */
 
-    VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33 = 7, /* 33-pass random data */
+    VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33 = 7, /* 33-pass random data (Since: v0.9.10) */
 
-    VIR_STORAGE_VOL_WIPE_ALG_RANDOM = 8, /* 1-pass random data */
+    VIR_STORAGE_VOL_WIPE_ALG_RANDOM = 8, /* 1-pass random data (Since: v0.9.10) */
 
     VIR_STORAGE_VOL_WIPE_ALG_TRIM = 9, /* 1-pass, trim all data on the
-                                          volume by using TRIM or DISCARD */
+                                          volume by using TRIM or DISCARD (Since: v1.3.2) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_STORAGE_VOL_WIPE_ALG_LAST
@@ -216,6 +222,8 @@ typedef enum {
      * NB: this enum value will increase over time as new algorithms are
      * added to the libvirt API. It reflects the last algorithm supported
      * by this version of the libvirt API.
+     *
+     * Since: v0.9.10
      */
 # endif
 } virStorageVolWipeAlgorithm;
@@ -257,7 +265,7 @@ typedef virStorageVolInfo *virStorageVolInfoPtr;
  * Since: v0.9.13
  */
 typedef enum {
-    VIR_STORAGE_XML_INACTIVE    = (1 << 0), /* dump inactive pool/volume information */
+    VIR_STORAGE_XML_INACTIVE    = (1 << 0), /* dump inactive pool/volume information (Since: v0.9.13) */
 } virStorageXMLFlags;
 
 /*
@@ -295,29 +303,29 @@ int                     virConnectListDefinedStoragePools(virConnectPtr conn,
  * Since: v0.10.2
  */
 typedef enum {
-    VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE      = 1 << 0,
-    VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE        = 1 << 1,
-
-    VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT    = 1 << 2,
-    VIR_CONNECT_LIST_STORAGE_POOLS_TRANSIENT     = 1 << 3,
-
-    VIR_CONNECT_LIST_STORAGE_POOLS_AUTOSTART     = 1 << 4,
-    VIR_CONNECT_LIST_STORAGE_POOLS_NO_AUTOSTART  = 1 << 5,
-
-    VIR_CONNECT_LIST_STORAGE_POOLS_DIR           = 1 << 6,
-    VIR_CONNECT_LIST_STORAGE_POOLS_FS            = 1 << 7,
-    VIR_CONNECT_LIST_STORAGE_POOLS_NETFS         = 1 << 8,
-    VIR_CONNECT_LIST_STORAGE_POOLS_LOGICAL       = 1 << 9,
-    VIR_CONNECT_LIST_STORAGE_POOLS_DISK          = 1 << 10,
-    VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI         = 1 << 11,
-    VIR_CONNECT_LIST_STORAGE_POOLS_SCSI          = 1 << 12,
-    VIR_CONNECT_LIST_STORAGE_POOLS_MPATH         = 1 << 13,
-    VIR_CONNECT_LIST_STORAGE_POOLS_RBD           = 1 << 14,
-    VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG      = 1 << 15,
-    VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER       = 1 << 16,
-    VIR_CONNECT_LIST_STORAGE_POOLS_ZFS           = 1 << 17,
-    VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE      = 1 << 18,
-    VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI_DIRECT  = 1 << 19,
+    VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE      = 1 << 0, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE        = 1 << 1, /* (Since: v0.10.2) */
+
+    VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT    = 1 << 2, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_TRANSIENT     = 1 << 3, /* (Since: v0.10.2) */
+
+    VIR_CONNECT_LIST_STORAGE_POOLS_AUTOSTART     = 1 << 4, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_NO_AUTOSTART  = 1 << 5, /* (Since: v0.10.2) */
+
+    VIR_CONNECT_LIST_STORAGE_POOLS_DIR           = 1 << 6, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_FS            = 1 << 7, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_NETFS         = 1 << 8, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_LOGICAL       = 1 << 9, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_DISK          = 1 << 10, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI         = 1 << 11, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_SCSI          = 1 << 12, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_MPATH         = 1 << 13, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_RBD           = 1 << 14, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG      = 1 << 15, /* (Since: v0.10.2) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER       = 1 << 16, /* (Since: v1.2.1) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_ZFS           = 1 << 17, /* (Since: v1.2.8) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE      = 1 << 18, /* (Since: v3.1.0) */
+    VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI_DIRECT  = 1 << 19, /* (Since: v5.6.0) */
 } virConnectListAllStoragePoolsFlags;
 
 int                     virConnectListAllStoragePools(virConnectPtr conn,
@@ -349,7 +357,7 @@ virStoragePoolPtr       virStoragePoolLookupByTargetPath(virConnectPtr conn,
  * Since: v7.7.0
  */
 typedef enum {
-    VIR_STORAGE_POOL_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema */
+    VIR_STORAGE_POOL_DEFINE_VALIDATE = 1 << 0, /* Validate the XML document against schema (Since: v7.7.0) */
 } virStoragePoolDefineFlags;
 
 /*
@@ -427,8 +435,8 @@ const char*             virStorageVolGetKey             (virStorageVolPtr vol);
  * Since: v1.0.1
  */
 typedef enum {
-    VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA = 1 << 0,
-    VIR_STORAGE_VOL_CREATE_REFLINK = 1 << 1, /* perform a btrfs lightweight copy */
+    VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA = 1 << 0, /* (Since: v1.0.1) */
+    VIR_STORAGE_VOL_CREATE_REFLINK = 1 << 1, /* perform a btrfs lightweight copy (Since: v1.2.13) */
 } virStorageVolCreateFlags;
 
 virStorageVolPtr        virStorageVolCreateXML          (virStoragePoolPtr pool,
@@ -444,7 +452,7 @@ virStorageVolPtr        virStorageVolCreateXMLFrom      (virStoragePoolPtr pool,
  * Since: v3.4.0
  */
 typedef enum {
-    VIR_STORAGE_VOL_DOWNLOAD_SPARSE_STREAM = 1 << 0, /* Use sparse stream */
+    VIR_STORAGE_VOL_DOWNLOAD_SPARSE_STREAM = 1 << 0, /* Use sparse stream (Since: v3.4.0) */
 } virStorageVolDownloadFlags;
 
 int                     virStorageVolDownload           (virStorageVolPtr vol,
@@ -459,7 +467,7 @@ int                     virStorageVolDownload           (virStorageVolPtr vol,
  * Since: v3.4.0
  */
 typedef enum {
-    VIR_STORAGE_VOL_UPLOAD_SPARSE_STREAM = 1 << 0,  /* Use sparse stream */
+    VIR_STORAGE_VOL_UPLOAD_SPARSE_STREAM = 1 << 0,  /* Use sparse stream (Since: v3.4.0) */
 } virStorageVolUploadFlags;
 
 int                     virStorageVolUpload             (virStorageVolPtr vol,
@@ -493,9 +501,9 @@ char *                  virStorageVolGetPath            (virStorageVolPtr vol);
  * Since: v0.9.10
  */
 typedef enum {
-    VIR_STORAGE_VOL_RESIZE_ALLOCATE = 1 << 0, /* force allocation of new size */
-    VIR_STORAGE_VOL_RESIZE_DELTA    = 1 << 1, /* size is relative to current */
-    VIR_STORAGE_VOL_RESIZE_SHRINK   = 1 << 2, /* allow decrease in capacity */
+    VIR_STORAGE_VOL_RESIZE_ALLOCATE = 1 << 0, /* force allocation of new size (Since: v0.9.10) */
+    VIR_STORAGE_VOL_RESIZE_DELTA    = 1 << 1, /* size is relative to current (Since: v0.9.10) */
+    VIR_STORAGE_VOL_RESIZE_SHRINK   = 1 << 2, /* allow decrease in capacity (Since: v0.9.10) */
 } virStorageVolResizeFlags;
 
 int                     virStorageVolResize             (virStorageVolPtr vol,
@@ -525,8 +533,8 @@ int virStoragePoolIsPersistent(virStoragePoolPtr pool);
  * Since: v2.0.0
  */
 typedef enum {
-    VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE = 0, /* virConnectStoragePoolEventLifecycleCallback */
-    VIR_STORAGE_POOL_EVENT_ID_REFRESH = 1, /* virConnectStoragePoolEventGenericCallback */
+    VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE = 0, /* virConnectStoragePoolEventLifecycleCallback (Since: v2.0.0) */
+    VIR_STORAGE_POOL_EVENT_ID_REFRESH = 1, /* virConnectStoragePoolEventGenericCallback (Since: v2.0.0) */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_STORAGE_POOL_EVENT_ID_LAST
@@ -534,6 +542,8 @@ typedef enum {
      * NB: this enum value will increase over time as new events are
      * added to the libvirt API. It reflects the last event ID supported
      * by this version of the libvirt API.
+     *
+     * Since: v2.0.0
      */
 # endif
 } virStoragePoolEventID;
@@ -574,15 +584,15 @@ int virConnectStoragePoolEventDeregisterAny(virConnectPtr conn,
  * Since: v2.0.0
  */
 typedef enum {
-    VIR_STORAGE_POOL_EVENT_DEFINED = 0,
-    VIR_STORAGE_POOL_EVENT_UNDEFINED = 1,
-    VIR_STORAGE_POOL_EVENT_STARTED = 2,
-    VIR_STORAGE_POOL_EVENT_STOPPED = 3,
-    VIR_STORAGE_POOL_EVENT_CREATED = 4,
-    VIR_STORAGE_POOL_EVENT_DELETED = 5,
+    VIR_STORAGE_POOL_EVENT_DEFINED = 0, /* (Since: v2.0.0) */
+    VIR_STORAGE_POOL_EVENT_UNDEFINED = 1, /* (Since: v2.0.0) */
+    VIR_STORAGE_POOL_EVENT_STARTED = 2, /* (Since: v2.0.0) */
+    VIR_STORAGE_POOL_EVENT_STOPPED = 3, /* (Since: v2.0.0) */
+    VIR_STORAGE_POOL_EVENT_CREATED = 4, /* (Since: v3.8.0) */
+    VIR_STORAGE_POOL_EVENT_DELETED = 5, /* (Since: v3.8.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_STORAGE_POOL_EVENT_LAST
+    VIR_STORAGE_POOL_EVENT_LAST /* (Since: v2.0.0) */
 # endif
 } virStoragePoolEventLifecycleType;
 
diff --git a/include/libvirt/libvirt-stream.h b/include/libvirt/libvirt-stream.h
index 7c320e278e..a44612cd88 100644
--- a/include/libvirt/libvirt-stream.h
+++ b/include/libvirt/libvirt-stream.h
@@ -34,7 +34,7 @@
  * Since: v0.7.2
  */
 typedef enum {
-    VIR_STREAM_NONBLOCK = (1 << 0),
+    VIR_STREAM_NONBLOCK = (1 << 0), /* (Since: v0.7.2) */
 } virStreamFlags;
 
 virStreamPtr virStreamNew(virConnectPtr conn,
@@ -55,7 +55,7 @@ int virStreamRecv(virStreamPtr st,
  * Since: v3.4.0
  */
 typedef enum {
-    VIR_STREAM_RECV_STOP_AT_HOLE = (1 << 0),
+    VIR_STREAM_RECV_STOP_AT_HOLE = (1 << 0), /* (Since: v3.4.0) */
 } virStreamRecvFlagsValues;
 
 int virStreamRecvFlags(virStreamPtr st,
@@ -245,10 +245,10 @@ int virStreamSparseRecvAll(virStreamPtr stream,
  * Since: v0.7.2
  */
 typedef enum {
-    VIR_STREAM_EVENT_READABLE  = (1 << 0),
-    VIR_STREAM_EVENT_WRITABLE  = (1 << 1),
-    VIR_STREAM_EVENT_ERROR     = (1 << 2),
-    VIR_STREAM_EVENT_HANGUP    = (1 << 3),
+    VIR_STREAM_EVENT_READABLE  = (1 << 0), /* (Since: v0.7.2) */
+    VIR_STREAM_EVENT_WRITABLE  = (1 << 1), /* (Since: v0.7.2) */
+    VIR_STREAM_EVENT_ERROR     = (1 << 2), /* (Since: v0.7.2) */
+    VIR_STREAM_EVENT_HANGUP    = (1 << 3), /* (Since: v0.7.2) */
 } virStreamEventType;
 
 
diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h
index 2ae2b93be3..c4bcdf88bf 100644
--- a/include/libvirt/virterror.h
+++ b/include/libvirt/virterror.h
@@ -38,9 +38,9 @@ extern "C" {
  * Since: v0.1.0
  */
 typedef enum {
-    VIR_ERR_NONE = 0,
-    VIR_ERR_WARNING = 1,        /* A simple warning */
-    VIR_ERR_ERROR = 2           /* An error */
+    VIR_ERR_NONE = 0, /* (Since: v0.1.0) */
+    VIR_ERR_WARNING = 1,        /* A simple warning (Since: v0.1.0) */
+    VIR_ERR_ERROR = 2           /* An error (Since: v0.1.0) */
 } virErrorLevel;
 
 /**
@@ -52,98 +52,98 @@ typedef enum {
  * Since: v0.1.0
  */
 typedef enum {
-    VIR_FROM_NONE = 0,
-    VIR_FROM_XEN = 1,           /* Error at Xen hypervisor layer */
-    VIR_FROM_XEND = 2,          /* Error at connection with xend daemon */
-    VIR_FROM_XENSTORE = 3,      /* Error at connection with xen store */
-    VIR_FROM_SEXPR = 4,         /* Error in the S-Expression code */
-
-    VIR_FROM_XML = 5,           /* Error in the XML code */
-    VIR_FROM_DOM = 6,           /* Error when operating on a domain */
-    VIR_FROM_RPC = 7,           /* Error in the XML-RPC code */
+    VIR_FROM_NONE = 0,          /* (Since: v0.1.0) */
+    VIR_FROM_XEN = 1,           /* Error at Xen hypervisor layer (Since: v0.1.0) */
+    VIR_FROM_XEND = 2,          /* Error at connection with xend daemon (Since: v0.1.0) */
+    VIR_FROM_XENSTORE = 3,      /* Error at connection with xen store (Since: v0.1.0) */
+    VIR_FROM_SEXPR = 4,         /* Error in the S-Expression code (Since: v0.1.0) */
+
+    VIR_FROM_XML = 5,           /* Error in the XML code (Since: v0.1.0) */
+    VIR_FROM_DOM = 6,           /* Error when operating on a domain (Since: v0.1.0) */
+    VIR_FROM_RPC = 7,           /* Error in the XML-RPC code (Since: v0.1.1) */
     VIR_FROM_PROXY = 8,         /* Error in the proxy code; unused since
-                                   0.8.6 */
-    VIR_FROM_CONF = 9,          /* Error in the configuration file handling */
-
-    VIR_FROM_QEMU = 10,         /* Error at the QEMU daemon */
-    VIR_FROM_NET = 11,          /* Error when operating on a network */
-    VIR_FROM_TEST = 12,         /* Error from test driver */
-    VIR_FROM_REMOTE = 13,       /* Error from remote driver */
-    VIR_FROM_OPENVZ = 14,       /* Error from OpenVZ driver */
-
-    VIR_FROM_XENXM = 15,        /* Error at Xen XM layer */
-    VIR_FROM_STATS_LINUX = 16,  /* Error in the Linux Stats code */
-    VIR_FROM_LXC = 17,          /* Error from Linux Container driver */
-    VIR_FROM_STORAGE = 18,      /* Error from storage driver */
-    VIR_FROM_NETWORK = 19,      /* Error from network config */
-
-    VIR_FROM_DOMAIN = 20,       /* Error from domain config */
-    VIR_FROM_UML = 21,          /* Error at the UML driver; unused since 5.0.0 */
-    VIR_FROM_NODEDEV = 22,      /* Error from node device monitor */
-    VIR_FROM_XEN_INOTIFY = 23,  /* Error from xen inotify layer */
-    VIR_FROM_SECURITY = 24,     /* Error from security framework */
-
-    VIR_FROM_VBOX = 25,         /* Error from VirtualBox driver */
-    VIR_FROM_INTERFACE = 26,    /* Error when operating on an interface */
+                                   0.8.6 (Since: v0.1.3) */
+    VIR_FROM_CONF = 9,          /* Error in the configuration file handling (Since: v0.1.6) */
+
+    VIR_FROM_QEMU = 10,         /* Error at the QEMU daemon (Since: v0.2.0) */
+    VIR_FROM_NET = 11,          /* Error when operating on a network (Since: v0.2.0) */
+    VIR_FROM_TEST = 12,         /* Error from test driver (Since: v0.2.3) */
+    VIR_FROM_REMOTE = 13,       /* Error from remote driver (Since: v0.2.3) */
+    VIR_FROM_OPENVZ = 14,       /* Error from OpenVZ driver (Since: v0.3.1) */
+
+    VIR_FROM_XENXM = 15,        /* Error at Xen XM layer (Since: v0.4.1) */
+    VIR_FROM_STATS_LINUX = 16,  /* Error in the Linux Stats code (Since: v0.4.1) */
+    VIR_FROM_LXC = 17,          /* Error from Linux Container driver (Since: v0.4.2) */
+    VIR_FROM_STORAGE = 18,      /* Error from storage driver (Since: v0.4.1) */
+    VIR_FROM_NETWORK = 19,      /* Error from network config (Since: v0.4.6) */
+
+    VIR_FROM_DOMAIN = 20,       /* Error from domain config (Since: v0.4.6) */
+    VIR_FROM_UML = 21,          /* Error at the UML driver; unused since 5.0.0 (Since: v0.5.0) */
+    VIR_FROM_NODEDEV = 22,      /* Error from node device monitor (Since: v0.5.0) */
+    VIR_FROM_XEN_INOTIFY = 23,  /* Error from xen inotify layer (Since: v0.5.0) */
+    VIR_FROM_SECURITY = 24,     /* Error from security framework (Since: v0.6.1) */
+
+    VIR_FROM_VBOX = 25,         /* Error from VirtualBox driver (Since: v0.6.3) */
+    VIR_FROM_INTERFACE = 26,    /* Error when operating on an interface (Since: v0.6.4) */
     VIR_FROM_ONE = 27,          /* The OpenNebula driver no longer exists.
-                                   Retained for ABI/API compat only */
-    VIR_FROM_ESX = 28,          /* Error from ESX driver */
-    VIR_FROM_PHYP = 29,         /* Error from the phyp driver, unused since 6.0.0 */
-
-    VIR_FROM_SECRET = 30,       /* Error from secret storage */
-    VIR_FROM_CPU = 31,          /* Error from CPU driver */
-    VIR_FROM_XENAPI = 32,       /* Error from XenAPI */
-    VIR_FROM_NWFILTER = 33,     /* Error from network filter driver */
-    VIR_FROM_HOOK = 34,         /* Error from Synchronous hooks */
-
-    VIR_FROM_DOMAIN_SNAPSHOT = 35,/* Error from domain snapshot */
-    VIR_FROM_AUDIT = 36,        /* Error from auditing subsystem */
-    VIR_FROM_SYSINFO = 37,      /* Error from sysinfo/SMBIOS */
-    VIR_FROM_STREAMS = 38,      /* Error from I/O streams */
-    VIR_FROM_VMWARE = 39,       /* Error from VMware driver */
-
-    VIR_FROM_EVENT = 40,        /* Error from event loop impl */
-    VIR_FROM_LIBXL = 41,        /* Error from libxenlight driver */
-    VIR_FROM_LOCKING = 42,      /* Error from lock manager */
-    VIR_FROM_HYPERV = 43,       /* Error from Hyper-V driver */
-    VIR_FROM_CAPABILITIES = 44, /* Error from capabilities */
-
-    VIR_FROM_URI = 45,          /* Error from URI handling */
-    VIR_FROM_AUTH = 46,         /* Error from auth handling */
-    VIR_FROM_DBUS = 47,         /* Error from DBus */
-    VIR_FROM_PARALLELS = 48,    /* Error from Parallels */
-    VIR_FROM_DEVICE = 49,       /* Error from Device */
-
-    VIR_FROM_SSH = 50,          /* Error from libssh2 connection transport */
-    VIR_FROM_LOCKSPACE = 51,    /* Error from lockspace */
-    VIR_FROM_INITCTL = 52,      /* Error from initctl device communication */
-    VIR_FROM_IDENTITY = 53,     /* Error from identity code */
-    VIR_FROM_CGROUP = 54,       /* Error from cgroups */
-
-    VIR_FROM_ACCESS = 55,       /* Error from access control manager */
-    VIR_FROM_SYSTEMD = 56,      /* Error from systemd code */
-    VIR_FROM_BHYVE = 57,        /* Error from bhyve driver */
-    VIR_FROM_CRYPTO = 58,       /* Error from crypto code */
-    VIR_FROM_FIREWALL = 59,     /* Error from firewall */
-
-    VIR_FROM_POLKIT = 60,       /* Error from polkit code */
-    VIR_FROM_THREAD = 61,       /* Error from thread utils */
-    VIR_FROM_ADMIN = 62,        /* Error from admin backend */
-    VIR_FROM_LOGGING = 63,      /* Error from log manager */
-    VIR_FROM_XENXL = 64,        /* Error from Xen xl config code */
-
-    VIR_FROM_PERF = 65,         /* Error from perf */
-    VIR_FROM_LIBSSH = 66,       /* Error from libssh connection transport */
-    VIR_FROM_RESCTRL = 67,      /* Error from resource control */
-    VIR_FROM_FIREWALLD = 68,    /* Error from firewalld */
-    VIR_FROM_DOMAIN_CHECKPOINT = 69, /* Error from domain checkpoint */
-
-    VIR_FROM_TPM = 70,          /* Error from TPM */
-    VIR_FROM_BPF = 71,          /* Error from BPF code */
-    VIR_FROM_CH = 72,           /* Error from Cloud-Hypervisor driver */
+                                   Retained for ABI/API compat only (Since: v0.6.4) */
+    VIR_FROM_ESX = 28,          /* Error from ESX driver (Since: v0.7.0) */
+    VIR_FROM_PHYP = 29,         /* Error from the phyp driver, unused since 6.0.0 (Since: v0.7.0) */
+
+    VIR_FROM_SECRET = 30,       /* Error from secret storage (Since: v0.7.1) */
+    VIR_FROM_CPU = 31,          /* Error from CPU driver (Since: v0.7.5) */
+    VIR_FROM_XENAPI = 32,       /* Error from XenAPI (Since: v0.8.0) */
+    VIR_FROM_NWFILTER = 33,     /* Error from network filter driver (Since: v0.8.0) */
+    VIR_FROM_HOOK = 34,         /* Error from Synchronous hooks (Since: v0.8.0) */
+
+    VIR_FROM_DOMAIN_SNAPSHOT = 35,/* Error from domain snapshot (Since: v0.8.0) */
+    VIR_FROM_AUDIT = 36,        /* Error from auditing subsystem (Since: v0.8.5) */
+    VIR_FROM_SYSINFO = 37,      /* Error from sysinfo/SMBIOS (Since: v0.8.6) */
+    VIR_FROM_STREAMS = 38,      /* Error from I/O streams (Since: v0.8.6) */
+    VIR_FROM_VMWARE = 39,       /* Error from VMware driver (Since: v0.8.7) */
+
+    VIR_FROM_EVENT = 40,        /* Error from event loop impl (Since: v0.9.0) */
+    VIR_FROM_LIBXL = 41,        /* Error from libxenlight driver (Since: v0.9.0) */
+    VIR_FROM_LOCKING = 42,      /* Error from lock manager (Since: v0.9.2) */
+    VIR_FROM_HYPERV = 43,       /* Error from Hyper-V driver (Since: v0.9.5) */
+    VIR_FROM_CAPABILITIES = 44, /* Error from capabilities (Since: v0.9.8) */
+
+    VIR_FROM_URI = 45,          /* Error from URI handling (Since: v0.9.11) */
+    VIR_FROM_AUTH = 46,         /* Error from auth handling (Since: v0.9.11) */
+    VIR_FROM_DBUS = 47,         /* Error from DBus (Since: v0.9.12) */
+    VIR_FROM_PARALLELS = 48,    /* Error from Parallels (Since: v0.10.0) */
+    VIR_FROM_DEVICE = 49,       /* Error from Device (Since: v0.10.0) */
+
+    VIR_FROM_SSH = 50,          /* Error from libssh2 connection transport (Since: v0.10.0) */
+    VIR_FROM_LOCKSPACE = 51,    /* Error from lockspace (Since: v1.0.0) */
+    VIR_FROM_INITCTL = 52,      /* Error from initctl device communication (Since: v1.0.1) */
+    VIR_FROM_IDENTITY = 53,     /* Error from identity code (Since: v1.0.4) */
+    VIR_FROM_CGROUP = 54,       /* Error from cgroups (Since: v1.0.5) */
+
+    VIR_FROM_ACCESS = 55,       /* Error from access control manager (Since: v1.1.0) */
+    VIR_FROM_SYSTEMD = 56,      /* Error from systemd code (Since: v1.1.1) */
+    VIR_FROM_BHYVE = 57,        /* Error from bhyve driver (Since: v1.2.2) */
+    VIR_FROM_CRYPTO = 58,       /* Error from crypto code (Since: v1.2.3) */
+    VIR_FROM_FIREWALL = 59,     /* Error from firewall (Since: v1.2.4) */
+
+    VIR_FROM_POLKIT = 60,       /* Error from polkit code (Since: v1.2.9) */
+    VIR_FROM_THREAD = 61,       /* Error from thread utils (Since: v1.2.14) */
+    VIR_FROM_ADMIN = 62,        /* Error from admin backend (Since: v1.2.17) */
+    VIR_FROM_LOGGING = 63,      /* Error from log manager (Since: v1.3.0) */
+    VIR_FROM_XENXL = 64,        /* Error from Xen xl config code (Since: v1.3.2) */
+
+    VIR_FROM_PERF = 65,         /* Error from perf (Since: v1.3.3) */
+    VIR_FROM_LIBSSH = 66,       /* Error from libssh connection transport (Since: v2.5.0) */
+    VIR_FROM_RESCTRL = 67,      /* Error from resource control (Since: v3.7.0) */
+    VIR_FROM_FIREWALLD = 68,    /* Error from firewalld (Since: v5.1.0) */
+    VIR_FROM_DOMAIN_CHECKPOINT = 69, /* Error from domain checkpoint (Since: v5.2.0) */
+
+    VIR_FROM_TPM = 70,          /* Error from TPM (Since: v5.6.0) */
+    VIR_FROM_BPF = 71,          /* Error from BPF code (Since: v5.10.0) */
+    VIR_FROM_CH = 72,           /* Error from Cloud-Hypervisor driver (Since: v7.5.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_ERR_DOMAIN_LAST
+    VIR_ERR_DOMAIN_LAST /* (Since: v0.9.13) */
 # endif
 } virErrorDomain;
 
@@ -220,137 +220,137 @@ struct _virError {
  * Since: v0.1.0
  */
 typedef enum {
-    VIR_ERR_OK = 0,
-    VIR_ERR_INTERNAL_ERROR = 1,         /* internal error */
-    VIR_ERR_NO_MEMORY = 2,              /* memory allocation failure */
-    VIR_ERR_NO_SUPPORT = 3,             /* no support for this function */
-    VIR_ERR_UNKNOWN_HOST = 4,           /* could not resolve hostname */
-    VIR_ERR_NO_CONNECT = 5,             /* can't connect to hypervisor */
-    VIR_ERR_INVALID_CONN = 6,           /* invalid connection object */
-    VIR_ERR_INVALID_DOMAIN = 7,         /* invalid domain object */
-    VIR_ERR_INVALID_ARG = 8,            /* invalid function argument */
-    VIR_ERR_OPERATION_FAILED = 9,       /* a command to hypervisor failed */
-    VIR_ERR_GET_FAILED = 10,            /* a HTTP GET command to failed */
-    VIR_ERR_POST_FAILED = 11,           /* a HTTP POST command to failed */
-    VIR_ERR_HTTP_ERROR = 12,            /* unexpected HTTP error code */
-    VIR_ERR_SEXPR_SERIAL = 13,          /* failure to serialize an S-Expr */
+    VIR_ERR_OK = 0, /* (Since: v0.1.0) */
+    VIR_ERR_INTERNAL_ERROR = 1,         /* internal error (Since: v0.1.0) */
+    VIR_ERR_NO_MEMORY = 2,              /* memory allocation failure (Since: v0.1.0) */
+    VIR_ERR_NO_SUPPORT = 3,             /* no support for this function (Since: v0.1.0) */
+    VIR_ERR_UNKNOWN_HOST = 4,           /* could not resolve hostname (Since: v0.1.0) */
+    VIR_ERR_NO_CONNECT = 5,             /* can't connect to hypervisor (Since: v0.1.0) */
+    VIR_ERR_INVALID_CONN = 6,           /* invalid connection object (Since: v0.1.0) */
+    VIR_ERR_INVALID_DOMAIN = 7,         /* invalid domain object (Since: v0.1.0) */
+    VIR_ERR_INVALID_ARG = 8,            /* invalid function argument (Since: v0.1.0) */
+    VIR_ERR_OPERATION_FAILED = 9,       /* a command to hypervisor failed (Since: v0.1.0) */
+    VIR_ERR_GET_FAILED = 10,            /* a HTTP GET command to failed (Since: v0.1.0) */
+    VIR_ERR_POST_FAILED = 11,           /* a HTTP POST command to failed (Since: v0.1.0) */
+    VIR_ERR_HTTP_ERROR = 12,            /* unexpected HTTP error code (Since: v0.1.0) */
+    VIR_ERR_SEXPR_SERIAL = 13,          /* failure to serialize an S-Expr (Since: v0.1.0) */
     VIR_ERR_NO_XEN = 14,                /* could not open Xen hypervisor
-                                           control */
-    VIR_ERR_XEN_CALL = 15,              /* failure doing an hypervisor call */
-    VIR_ERR_OS_TYPE = 16,               /* unknown OS type */
-    VIR_ERR_NO_KERNEL = 17,             /* missing kernel information */
-    VIR_ERR_NO_ROOT = 18,               /* missing root device information */
-    VIR_ERR_NO_SOURCE = 19,             /* missing source device information */
-    VIR_ERR_NO_TARGET = 20,             /* missing target device information */
-    VIR_ERR_NO_NAME = 21,               /* missing domain name information */
-    VIR_ERR_NO_OS = 22,                 /* missing domain OS information */
-    VIR_ERR_NO_DEVICE = 23,             /* missing domain devices information */
-    VIR_ERR_NO_XENSTORE = 24,           /* could not open Xen Store control */
-    VIR_ERR_DRIVER_FULL = 25,           /* too many drivers registered */
+                                           control (Since: v0.1.0) */
+    VIR_ERR_XEN_CALL = 15,              /* failure doing an hypervisor call (Since: v0.1.0) */
+    VIR_ERR_OS_TYPE = 16,               /* unknown OS type (Since: v0.1.0) */
+    VIR_ERR_NO_KERNEL = 17,             /* missing kernel information (Since: v0.1.0) */
+    VIR_ERR_NO_ROOT = 18,               /* missing root device information (Since: v0.1.0) */
+    VIR_ERR_NO_SOURCE = 19,             /* missing source device information (Since: v0.1.0) */
+    VIR_ERR_NO_TARGET = 20,             /* missing target device information (Since: v0.1.0) */
+    VIR_ERR_NO_NAME = 21,               /* missing domain name information (Since: v0.1.0) */
+    VIR_ERR_NO_OS = 22,                 /* missing domain OS information (Since: v0.1.0) */
+    VIR_ERR_NO_DEVICE = 23,             /* missing domain devices information (Since: v0.1.0) */
+    VIR_ERR_NO_XENSTORE = 24,           /* could not open Xen Store control (Since: v0.1.0) */
+    VIR_ERR_DRIVER_FULL = 25,           /* too many drivers registered (Since: v0.1.0) */
     VIR_ERR_CALL_FAILED = 26,           /* not supported by the drivers
-                                           (DEPRECATED) */
+                                           (DEPRECATED) (Since: v0.1.0) */
     VIR_ERR_XML_ERROR = 27,             /* an XML description is not well
-                                           formed or broken */
-    VIR_ERR_DOM_EXIST = 28,             /* the domain already exist */
+                                           formed or broken (Since: v0.1.1) */
+    VIR_ERR_DOM_EXIST = 28,             /* the domain already exist (Since: v0.1.1) */
     VIR_ERR_OPERATION_DENIED = 29,      /* operation forbidden on read-only
-                                           connections */
-    VIR_ERR_OPEN_FAILED = 30,           /* failed to open a conf file */
-    VIR_ERR_READ_FAILED = 31,           /* failed to read a conf file */
-    VIR_ERR_PARSE_FAILED = 32,          /* failed to parse a conf file */
+                                           connections (Since: v0.1.4) */
+    VIR_ERR_OPEN_FAILED = 30,           /* failed to open a conf file (Since: v0.1.6) */
+    VIR_ERR_READ_FAILED = 31,           /* failed to read a conf file (Since: v0.1.6) */
+    VIR_ERR_PARSE_FAILED = 32,          /* failed to parse a conf file (Since: v0.1.6) */
     VIR_ERR_CONF_SYNTAX = 33,           /* failed to parse the syntax of a
-                                           conf file */
-    VIR_ERR_WRITE_FAILED = 34,          /* failed to write a conf file */
-    VIR_ERR_XML_DETAIL = 35,            /* detail of an XML error */
-    VIR_ERR_INVALID_NETWORK = 36,       /* invalid network object */
-    VIR_ERR_NETWORK_EXIST = 37,         /* the network already exist */
-    VIR_ERR_SYSTEM_ERROR = 38,          /* general system call failure */
-    VIR_ERR_RPC = 39,                   /* some sort of RPC error */
-    VIR_ERR_GNUTLS_ERROR = 40,          /* error from a GNUTLS call */
-    VIR_WAR_NO_NETWORK = 41,            /* failed to start network */
+                                           conf file (Since: v0.1.6) */
+    VIR_ERR_WRITE_FAILED = 34,          /* failed to write a conf file (Since: v0.1.6) */
+    VIR_ERR_XML_DETAIL = 35,            /* detail of an XML error (Since: v0.1.9) */
+    VIR_ERR_INVALID_NETWORK = 36,       /* invalid network object (Since: v0.2.0) */
+    VIR_ERR_NETWORK_EXIST = 37,         /* the network already exist (Since: v0.2.0) */
+    VIR_ERR_SYSTEM_ERROR = 38,          /* general system call failure (Since: v0.2.1) */
+    VIR_ERR_RPC = 39,                   /* some sort of RPC error (Since: v0.2.3) */
+    VIR_ERR_GNUTLS_ERROR = 40,          /* error from a GNUTLS call (Since: v0.2.3) */
+    VIR_WAR_NO_NETWORK = 41,            /* failed to start network (Since: v0.2.3) */
     VIR_ERR_NO_DOMAIN = 42,             /* domain not found or unexpectedly
-                                           disappeared */
-    VIR_ERR_NO_NETWORK = 43,            /* network not found */
-    VIR_ERR_INVALID_MAC = 44,           /* invalid MAC address */
-    VIR_ERR_AUTH_FAILED = 45,           /* authentication failed */
-    VIR_ERR_INVALID_STORAGE_POOL = 46,  /* invalid storage pool object */
-    VIR_ERR_INVALID_STORAGE_VOL = 47,   /* invalid storage vol object */
-    VIR_WAR_NO_STORAGE = 48,            /* failed to start storage */
-    VIR_ERR_NO_STORAGE_POOL = 49,       /* storage pool not found */
-    VIR_ERR_NO_STORAGE_VOL = 50,        /* storage volume not found */
-    VIR_WAR_NO_NODE = 51,               /* failed to start node driver */
-    VIR_ERR_INVALID_NODE_DEVICE = 52,   /* invalid node device object */
-    VIR_ERR_NO_NODE_DEVICE = 53,        /* node device not found */
-    VIR_ERR_NO_SECURITY_MODEL = 54,     /* security model not found */
+                                           disappeared (Since: v0.3.0) */
+    VIR_ERR_NO_NETWORK = 43,            /* network not found (Since: v0.3.0) */
+    VIR_ERR_INVALID_MAC = 44,           /* invalid MAC address (Since: v0.3.1) */
+    VIR_ERR_AUTH_FAILED = 45,           /* authentication failed (Since: v0.4.1) */
+    VIR_ERR_INVALID_STORAGE_POOL = 46,  /* invalid storage pool object (Since: v0.4.1) */
+    VIR_ERR_INVALID_STORAGE_VOL = 47,   /* invalid storage vol object (Since: v0.4.1) */
+    VIR_WAR_NO_STORAGE = 48,            /* failed to start storage (Since: v0.4.1) */
+    VIR_ERR_NO_STORAGE_POOL = 49,       /* storage pool not found (Since: v0.4.1) */
+    VIR_ERR_NO_STORAGE_VOL = 50,        /* storage volume not found (Since: v0.4.1) */
+    VIR_WAR_NO_NODE = 51,               /* failed to start node driver (Since: v0.5.0) */
+    VIR_ERR_INVALID_NODE_DEVICE = 52,   /* invalid node device object (Since: v0.5.0) */
+    VIR_ERR_NO_NODE_DEVICE = 53,        /* node device not found (Since: v0.5.0) */
+    VIR_ERR_NO_SECURITY_MODEL = 54,     /* security model not found (Since: v0.6.1) */
     VIR_ERR_OPERATION_INVALID = 55,     /* operation is not applicable at this
-                                           time */
-    VIR_WAR_NO_INTERFACE = 56,          /* failed to start interface driver */
-    VIR_ERR_NO_INTERFACE = 57,          /* interface driver not running */
-    VIR_ERR_INVALID_INTERFACE = 58,     /* invalid interface object */
+                                           time (Since: v0.6.4) */
+    VIR_WAR_NO_INTERFACE = 56,          /* failed to start interface driver (Since: v0.6.4) */
+    VIR_ERR_NO_INTERFACE = 57,          /* interface driver not running (Since: v0.6.4) */
+    VIR_ERR_INVALID_INTERFACE = 58,     /* invalid interface object (Since: v0.6.4) */
     VIR_ERR_MULTIPLE_INTERFACES = 59,   /* more than one matching interface
-                                           found */
-    VIR_WAR_NO_NWFILTER = 60,           /* failed to start nwfilter driver */
-    VIR_ERR_INVALID_NWFILTER = 61,      /* invalid nwfilter object */
-    VIR_ERR_NO_NWFILTER = 62,           /* nw filter pool not found */
-    VIR_ERR_BUILD_FIREWALL = 63,        /* nw filter pool not found */
-    VIR_WAR_NO_SECRET = 64,             /* failed to start secret storage */
-    VIR_ERR_INVALID_SECRET = 65,        /* invalid secret */
-    VIR_ERR_NO_SECRET = 66,             /* secret not found */
+                                           found (Since: v0.7.0) */
+    VIR_WAR_NO_NWFILTER = 60,           /* failed to start nwfilter driver (Since: v0.8.0) */
+    VIR_ERR_INVALID_NWFILTER = 61,      /* invalid nwfilter object (Since: v0.8.0) */
+    VIR_ERR_NO_NWFILTER = 62,           /* nw filter pool not found (Since: v0.8.0) */
+    VIR_ERR_BUILD_FIREWALL = 63,        /* nw filter pool not found (Since: v0.8.0) */
+    VIR_WAR_NO_SECRET = 64,             /* failed to start secret storage (Since: v0.7.1) */
+    VIR_ERR_INVALID_SECRET = 65,        /* invalid secret (Since: v0.7.1) */
+    VIR_ERR_NO_SECRET = 66,             /* secret not found (Since: v0.7.1) */
     VIR_ERR_CONFIG_UNSUPPORTED = 67,    /* unsupported configuration
-                                           construct */
-    VIR_ERR_OPERATION_TIMEOUT = 68,     /* timeout occurred during operation */
+                                           construct (Since: v0.7.3) */
+    VIR_ERR_OPERATION_TIMEOUT = 68,     /* timeout occurred during operation (Since: v0.7.3) */
     VIR_ERR_MIGRATE_PERSIST_FAILED = 69,/* a migration worked, but making the
-                                           VM persist on the dest host failed */
-    VIR_ERR_HOOK_SCRIPT_FAILED = 70,    /* a synchronous hook script failed */
-    VIR_ERR_INVALID_DOMAIN_SNAPSHOT = 71,/* invalid domain snapshot */
-    VIR_ERR_NO_DOMAIN_SNAPSHOT = 72,    /* domain snapshot not found */
-    VIR_ERR_INVALID_STREAM = 73,        /* stream pointer not valid */
+                                           VM persist on the dest host failed (Since: v0.7.3) */
+    VIR_ERR_HOOK_SCRIPT_FAILED = 70,    /* a synchronous hook script failed (Since: v0.8.0) */
+    VIR_ERR_INVALID_DOMAIN_SNAPSHOT = 71,/* invalid domain snapshot (Since: v0.8.0) */
+    VIR_ERR_NO_DOMAIN_SNAPSHOT = 72,    /* domain snapshot not found (Since: v0.8.0) */
+    VIR_ERR_INVALID_STREAM = 73,        /* stream pointer not valid (Since: v0.9.0) */
     VIR_ERR_ARGUMENT_UNSUPPORTED = 74,  /* valid API use but unsupported by
-                                           the given driver */
-    VIR_ERR_STORAGE_PROBE_FAILED = 75,  /* storage pool probe failed */
-    VIR_ERR_STORAGE_POOL_BUILT = 76,    /* storage pool already built */
+                                           the given driver (Since: v0.9.4) */
+    VIR_ERR_STORAGE_PROBE_FAILED = 75,  /* storage pool probe failed (Since: v0.9.5) */
+    VIR_ERR_STORAGE_POOL_BUILT = 76,    /* storage pool already built (Since: v0.9.5) */
     VIR_ERR_SNAPSHOT_REVERT_RISKY = 77, /* force was not requested for a
-                                           risky domain snapshot revert */
+                                           risky domain snapshot revert (Since: v0.9.7) */
     VIR_ERR_OPERATION_ABORTED = 78,     /* operation on a domain was
-                                           canceled/aborted by user */
-    VIR_ERR_AUTH_CANCELLED = 79,        /* authentication cancelled */
-    VIR_ERR_NO_DOMAIN_METADATA = 80,    /* The metadata is not present */
-    VIR_ERR_MIGRATE_UNSAFE = 81,        /* Migration is not safe */
-    VIR_ERR_OVERFLOW = 82,              /* integer overflow */
-    VIR_ERR_BLOCK_COPY_ACTIVE = 83,     /* action prevented by block copy job */
+                                           canceled/aborted by user (Since: v0.9.9) */
+    VIR_ERR_AUTH_CANCELLED = 79,        /* authentication cancelled (Since: v0.9.10) */
+    VIR_ERR_NO_DOMAIN_METADATA = 80,    /* The metadata is not present (Since: v0.9.10) */
+    VIR_ERR_MIGRATE_UNSAFE = 81,        /* Migration is not safe (Since: v0.9.11) */
+    VIR_ERR_OVERFLOW = 82,              /* integer overflow (Since: v0.9.11) */
+    VIR_ERR_BLOCK_COPY_ACTIVE = 83,     /* action prevented by block copy job (Since: v0.9.12) */
     VIR_ERR_OPERATION_UNSUPPORTED = 84, /* The requested operation is not
-                                           supported */
-    VIR_ERR_SSH = 85,                   /* error in ssh transport driver */
+                                           supported (Since: v0.10.0) */
+    VIR_ERR_SSH = 85,                   /* error in ssh transport driver (Since: v0.10.0) */
     VIR_ERR_AGENT_UNRESPONSIVE = 86,    /* guest agent is unresponsive,
-                                           not running or not usable */
-    VIR_ERR_RESOURCE_BUSY = 87,         /* resource is already in use */
+                                           not running or not usable (Since: v0.10.0) */
+    VIR_ERR_RESOURCE_BUSY = 87,         /* resource is already in use (Since: v1.0.0) */
     VIR_ERR_ACCESS_DENIED = 88,         /* operation on the object/resource
-                                           was denied */
-    VIR_ERR_DBUS_SERVICE = 89,          /* error from a dbus service */
-    VIR_ERR_STORAGE_VOL_EXIST = 90,     /* the storage vol already exists */
-    VIR_ERR_CPU_INCOMPATIBLE = 91,      /* given CPU is incompatible with host CPU */
-    VIR_ERR_XML_INVALID_SCHEMA = 92,    /* XML document doesn't validate against schema */
-    VIR_ERR_MIGRATE_FINISH_OK = 93,     /* Finish API succeeded but it is expected to return NULL */
-    VIR_ERR_AUTH_UNAVAILABLE = 94,      /* authentication unavailable */
-    VIR_ERR_NO_SERVER = 95,             /* Server was not found */
-    VIR_ERR_NO_CLIENT = 96,             /* Client was not found */
+                                           was denied (Since: v1.1.0) */
+    VIR_ERR_DBUS_SERVICE = 89,          /* error from a dbus service (Since: v1.1.1) */
+    VIR_ERR_STORAGE_VOL_EXIST = 90,     /* the storage vol already exists (Since: v1.1.4) */
+    VIR_ERR_CPU_INCOMPATIBLE = 91,      /* given CPU is incompatible with host CPU (Since: v1.2.6) */
+    VIR_ERR_XML_INVALID_SCHEMA = 92,    /* XML document doesn't validate against schema (Since: v1.2.12) */
+    VIR_ERR_MIGRATE_FINISH_OK = 93,     /* Finish API succeeded but it is expected to return NULL (Since: v1.2.18) */
+    VIR_ERR_AUTH_UNAVAILABLE = 94,      /* authentication unavailable (Since: v1.3.3) */
+    VIR_ERR_NO_SERVER = 95,             /* Server was not found (Since: v1.3.3) */
+    VIR_ERR_NO_CLIENT = 96,             /* Client was not found (Since: v1.3.5) */
     VIR_ERR_AGENT_UNSYNCED = 97,        /* guest agent replies with wrong id
-                                           to guest-sync command (DEPRECATED) */
-    VIR_ERR_LIBSSH = 98,                /* error in libssh transport driver */
-    VIR_ERR_DEVICE_MISSING = 99,        /* fail to find the desired device */
-    VIR_ERR_INVALID_NWFILTER_BINDING = 100,  /* invalid nwfilter binding */
-    VIR_ERR_NO_NWFILTER_BINDING = 101,  /* no nwfilter binding */
-    VIR_ERR_INVALID_DOMAIN_CHECKPOINT = 102, /* invalid domain checkpoint */
-    VIR_ERR_NO_DOMAIN_CHECKPOINT = 103, /* domain checkpoint not found */
-    VIR_ERR_NO_DOMAIN_BACKUP = 104,     /* domain backup job id not found */
-    VIR_ERR_INVALID_NETWORK_PORT = 105, /* invalid network port object */
-    VIR_ERR_NETWORK_PORT_EXIST = 106,   /* the network port already exist */
-    VIR_ERR_NO_NETWORK_PORT = 107,      /* network port not found */
-    VIR_ERR_NO_HOSTNAME = 108,          /* no domain's hostname found */
-    VIR_ERR_CHECKPOINT_INCONSISTENT = 109, /* checkpoint can't be used */
-    VIR_ERR_MULTIPLE_DOMAINS = 110,     /* more than one matching domain found */
+                                           to guest-sync command (DEPRECATED) (Since: v2.3.0) */
+    VIR_ERR_LIBSSH = 98,                /* error in libssh transport driver (Since: v2.5.0) */
+    VIR_ERR_DEVICE_MISSING = 99,        /* fail to find the desired device (Since: v4.1.0) */
+    VIR_ERR_INVALID_NWFILTER_BINDING = 100,  /* invalid nwfilter binding (Since: v4.5.0) */
+    VIR_ERR_NO_NWFILTER_BINDING = 101,  /* no nwfilter binding (Since: v4.5.0) */
+    VIR_ERR_INVALID_DOMAIN_CHECKPOINT = 102, /* invalid domain checkpoint (Since: v5.2.0) */
+    VIR_ERR_NO_DOMAIN_CHECKPOINT = 103, /* domain checkpoint not found (Since: v5.2.0) */
+    VIR_ERR_NO_DOMAIN_BACKUP = 104,     /* domain backup job id not found (Since: v5.2.0) */
+    VIR_ERR_INVALID_NETWORK_PORT = 105, /* invalid network port object (Since: v5.5.0) */
+    VIR_ERR_NETWORK_PORT_EXIST = 106,   /* the network port already exist (Since: v5.5.0) */
+    VIR_ERR_NO_NETWORK_PORT = 107,      /* network port not found (Since: v5.5.0) */
+    VIR_ERR_NO_HOSTNAME = 108,          /* no domain's hostname found (Since: v6.1.0) */
+    VIR_ERR_CHECKPOINT_INCONSISTENT = 109, /* checkpoint can't be used (Since: v6.10.0) */
+    VIR_ERR_MULTIPLE_DOMAINS = 110,     /* more than one matching domain found (Since: v7.1.0) */
 
 # ifdef VIR_ENUM_SENTINELS
-    VIR_ERR_NUMBER_LAST
+    VIR_ERR_NUMBER_LAST /* (Since: v5.0.0) */
 # endif
 } virErrorNumber;
 
-- 
2.35.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux