Facts wire format - v5

Facts are represented as JSON. Unless otherwise noted, null is not allowed anywhere in the set of facts.

{"certname": <string>,
 "environment": <string>,
 "producer_timestamp": <datetime>,
 "producer": <string>,
 "values": {
     <string>: <any>,
     ...
     },
 "package_inventory": [<package_tuple>, <package_tuple>, ...]

}

The "certname" key is the certname the facts are associated with.

The "environment" key is the environment associated to the node when the facts were collected.

The "values" key points to a JSON Object that represents the set of facts. Each key is the fact name, and the value is the fact value.

The "producer_timestamp" key points to a timestamp reflecting the time of fact set submission from the Server to PuppetDB.

The "producer" key is the certname of the Puppet Server that sent the fact set to PuppetDB. This field may be null.

Fact names and values must be strings.

The "package_inventory" keys is optional, if present, must be an array of <package_tuple>.

Encoding

The entire fact set is expected to be valid JSON, which mandates UTF-8 encoding.

Data type: <package_tuple>

An array of three strings:

[ "<package_name>", "<version>", "<provider>" ]