1{
2    "$schema": "http://json-schema.org/draft-07/schema#",
3    "definitions": {
4        "EMExposesElement": {
5            "description": "The exposes property element schema.  An element of the exposes property is always an array where elements are of type exposes entry.",
6            "oneOf": [
7                {
8                    "$ref": "ibm.json#/definitions/PowerModeProperties"
9                },
10                {
11                    "$ref": "ibm.json#/definitions/IBMCompatibleSystem"
12                },
13                {
14                    "$ref": "ibm.json#/definitions/IBMCFFPSConnector"
15                },
16                {
17                    "$ref": "intel.json#/definitions/IntelFanConnector"
18                },
19                {
20                    "$ref": "pid.json#/definitions/Pid"
21                },
22                {
23                    "$ref": "pid_zone.json#/definitions/PidZone"
24                },
25                {
26                    "$ref": "satellite_controller.json#/definitions/SatelliteController"
27                },
28                {
29                    "$ref": "stepwise.json#/definitions/Stepwise"
30                },
31                {
32                    "$ref": "legacy.json#/definitions/Aggregate"
33                },
34                {
35                    "$ref": "virtual_sensor.json#/definitions/VirtualSensor"
36                },
37                {
38                    "description": "Ensure the parent oneOf schema does not validate when an element does not define a type property.",
39                    "not": {
40                        "required": ["Type"]
41                    },
42                    "title": "Missing Type"
43                },
44                {
45                    "description": "Ensure the parent oneOf schema does not validate when an element does not define a name property.",
46                    "not": {
47                        "required": ["Name"]
48                    },
49                    "title": "Missing Name"
50                }
51            ],
52            "title": "Exposes Property Element"
53        },
54        "EMConfig": {
55            "title": "Entity Manager Configuration",
56            "description": "The schema for an entity manager configuration. An entity manager configuration describes an association between a match condition, also known as a probe, and an array of heterogeneous configuration data.  When a probe match occurs, the configuration data is exported to DBus.",
57            "additionalProperties": false,
58            "type": "object",
59            "properties": {
60                "Bus": {
61                    "type": "string"
62                },
63                "Exposes": {
64                    "description": "The schema for the exposes property. The exposes property must be an array where elements are of type EMExposesElement.  The exposes property is the heterogeneous configuration data exported to DBus upon a probe match.",
65                    "type": "array",
66                    "items": {
67                        "$ref": "#/definitions/EMExposesElement"
68                    }
69                },
70                "Logging": {
71                    "enum": ["Off"]
72                },
73                "Name": {
74                    "description": "The schema for the name property.  The name property identifies the configuration.  When exported, the configuration will be instantiated at: /xyz/openbmc_project/configuration/<Type>/<Name>",
75                    "type": "string"
76                },
77                "Probe": {
78                    "description": "The schema for an entity manager probe statement. Probes can be a single string or an array. Probes describe a match condition, for example when a DBus property has a specific value. When the match condition occurs, the information described by the Exposes property is exported onto the DBus.",
79                    "anyOf": [
80                        {
81                            "type": "string"
82                        },
83                        {
84                            "type": "array",
85                            "items": {
86                                "type": "string"
87                            }
88                        }
89                    ]
90                },
91                "Type": {
92                    "title": "Configuration Type",
93                    "description": "The schema for the type property. The type property identifies the type of the configuration.  When exported, configurations will be instantiated as children of: /xyz/openbmc_project/configuration/<Type>",
94                    "enum": ["Board", "Chassis", "NVMe", "PowerSupply"]
95                },
96                "xyz.openbmc_project.Common.UUID": {
97                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Common/UUID"
98                },
99                "xyz.openbmc_project.Inventory.Decorator.Asset": {
100                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Decorator/Asset"
101                },
102                "ProductId": {
103                    "type": "number"
104                },
105                "xyz.openbmc_project.Inventory.Decorator.AssetTag": {
106                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Decorator/AssetTag"
107                },
108                "xyz.openbmc_project.Inventory.Decorator.Compatible": {
109                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Decorator/Compatible"
110                },
111                "xyz.openbmc_project.Inventory.Decorator.Replaceable": {
112                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Decorator/Replaceable"
113                },
114                "xyz.openbmc_project.Inventory.Decorator.Slot": {
115                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Decorator/Slot"
116                },
117                "xyz.openbmc_project.Inventory.Decorator.Revision": {
118                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Decorator/Revision"
119                },
120                "xyz.openbmc_project.Inventory.Item.Board.Motherboard": {
121                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Item/Board/Motherboard"
122                },
123                "xyz.openbmc_project.Inventory.Item.Chassis": {
124                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Item/Chassis"
125                },
126                "xyz.openbmc_project.Inventory.Item.Panel": {
127                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Item/Panel"
128                },
129                "xyz.openbmc_project.Inventory.Item.System": {
130                    "$ref": "openbmc-dbus.json#/definitions/xyz/openbmc_project/Inventory/Item/System"
131                }
132            },
133            "required": ["Exposes", "Name", "Probe", "Type"]
134        }
135    },
136    "title": "Entity Manager Configuration File",
137    "description": "The schema for an entity manager configuration file. An entity mananger configuration file can consist of a single object, or an array of objects. Objects must be of type EMConfig.",
138    "anyOf": [
139        {
140            "type": "array",
141            "items": {
142                "$ref": "#/definitions/EMConfig"
143            }
144        },
145        {
146            "$ref": "#/definitions/EMConfig"
147        }
148    ]
149}
150