1{
2    "$id": "cper-json-section-descriptor",
3    "$schema": "https://json-schema.org/draft/2020-12/schema",
4    "type": "object",
5    "description": "Common Platform Record Section Descriptor as defined in UEFI Appendix N section 2.2",
6    "required": [
7        "sectionOffset",
8        "sectionLength",
9        "revision",
10        "validationBits",
11        "flags",
12        "sectionType",
13        "severity"
14    ],
15    "additionalProperties": false,
16    "properties": {
17        "sectionOffset": {
18            "type": "integer",
19            "description": "Offset in bytes of the section body from the base of the record header."
20        },
21        "sectionLength": {
22            "type": "integer",
23            "description": "The length in bytes of the section body."
24        },
25        "revision": {
26            "type": "object",
27            "description": "This is a 2-byte field representing a major and minor version number for the error record definition in BCD format.",
28            "required": ["major", "minor"],
29            "properties": {
30                "major": {
31                    "type": "integer",
32                    "minimum": 0
33                },
34                "minor": {
35                    "type": "integer",
36                    "minimum": 0
37                }
38            }
39        },
40        "validationBits": {
41            "type": "object",
42            "description": "This field indicates the validity of other feilds in this descriptor.",
43            "required": ["fruIDValid", "fruStringValid"],
44            "properties": {
45                "fruIDValid": {
46                    "type": "boolean"
47                },
48                "fruStringValid": {
49                    "type": "boolean"
50                }
51            }
52        },
53        "flags": {
54            "type": "object",
55            "required": [
56                "primary",
57                "containmentWarning",
58                "reset",
59                "errorThresholdExceeded",
60                "resourceNotAccessible",
61                "latentError",
62                "propagated",
63                "overflow"
64            ],
65            "properties": {
66                "primary": {
67                    "type": "boolean",
68                    "description": "If set, identifies the section as the section to be associated with the error condition."
69                },
70                "containmentWarning": {
71                    "type": "boolean",
72                    "description": "If set, the error was not contained within the processor or memory hierarchy and the error may have propagated to persistent storage or network."
73                },
74                "reset": {
75                    "type": "boolean",
76                    "description": "If set, the component has been reset and must be re-initialized or re-enabled by the operating system prior to use."
77                },
78                "errorThresholdExceeded": {
79                    "type": "boolean",
80                    "description": "If set, OS may choose to discontinue use of this resource."
81                },
82                "resourceNotAccessible": {
83                    "type": "boolean",
84                    "description": "If set, the resource could not be queried for error information due to conflicts with other system software or resources."
85                },
86                "latentError": {
87                    "type": "boolean",
88                    "description": "If set this flag indicates that action has been taken to ensure error containment"
89                },
90                "propagated": {
91                    "type": "boolean",
92                    "description": "If set this flag indicates the section is to be associated with an error that has been propagated due to hardware poisoning."
93                },
94                "overflow": {
95                    "type": "boolean",
96                    "description": "If set this flag indicates the firmware has detected an overflow of buffers/queues that are used to accumulate, collect, or report errors"
97                }
98            }
99        },
100        "sectionType": {
101            "type": "object",
102            "description": "This field holds a pre-assigned GUID value indicating that it is a section of a particular error.",
103            "required": ["data", "type"],
104            "properties": {
105                "data": {
106                    "type": "string",
107                    "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{16}$"
108                },
109                "type": {
110                    "type": "string"
111                }
112            }
113        },
114        "fruID": {
115            "type": "string",
116            "description": "GUID representing the FRU ID, if it exists, for the section reporting the error. The default value is zero indicating an invalid FRU ID."
117        },
118        "severity": {
119            "type": "object",
120            "description": "This field indicates the severity associated with the error section.",
121            "required": ["code", "name"],
122            "properties": {
123                "code": {
124                    "type": "integer",
125                    "minimum": 0
126                },
127                "name": {
128                    "type": "string"
129                }
130            }
131        },
132        "fruText": {
133            "type": "string",
134            "description": "ASCII string identifying the FRU hardware."
135        }
136    }
137}
138