Fix minor errors in spec, add JSON specification.
diff --git a/specification/json/sections/cper-pcie.json b/specification/json/sections/cper-pcie.json
new file mode 100644
index 0000000..5521e2b
--- /dev/null
+++ b/specification/json/sections/cper-pcie.json
@@ -0,0 +1,169 @@
+{
+ "$id": "cper-json-pcie-section",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "required": ["validationBits", "portType", "version", "commandStatus", "deviceID", "deviceSerialNumber", "bridgeControlStatus", "capabilityStructure", "aerInfo"],
+ "additionalProperties": false,
+ "properties": {
+ "validationBits": {
+ "type": "object",
+ "required": ["portTypeValid", "versionValid", "commandStatusValid", "deviceIDValid", "deviceSerialNumberValid", "bridgeControlStatusValid", "capabilityStructureStatusValid", "aerInfoValid"],
+ "properties": {
+ "portTypeValid": {
+ "type": "boolean"
+ },
+ "versionValid": {
+ "type": "boolean"
+ },
+ "commandStatusValid": {
+ "type": "boolean"
+ },
+ "deviceIDValid": {
+ "type": "boolean"
+ },
+ "deviceSerialNumberValid": {
+ "type": "boolean"
+ },
+ "bridgeControlStatusValid": {
+ "type": "boolean"
+ },
+ "capabilityStructureStatusValid": {
+ "type": "boolean"
+ },
+ "aerInfoValid": {
+ "type": "boolean"
+ }
+ }
+ },
+ "portType": {
+ "type": "object",
+ "$ref": "../common/cper-json-nvp.json"
+ },
+ "version": {
+ "type": "object",
+ "required": ["major", "minor"],
+ "properties": {
+ "major": {
+ "type": "integer"
+ },
+ "minor": {
+ "type": "integer"
+ }
+ }
+ },
+ "commandStatus": {
+ "type": "object",
+ "required": ["commandRegister", "statusRegister"],
+ "properties": {
+ "commandRegister": {
+ "type" : "integer"
+ },
+ "statusRegister": {
+ "type": "integer"
+ }
+ }
+ },
+ "deviceID": {
+ "type": "object",
+ "required": ["vendorID", "deviceID", "classCode", "functionNumber", "deviceNumber", "segmentNumber", "primaryOrDeviceBusNumber", "secondaryBusNumber", "slotNumber"],
+ "properties": {
+ "vendorID": {
+ "type": "integer"
+ },
+ "deviceID": {
+ "type": "integer"
+ },
+ "classCode": {
+ "type": "integer"
+ },
+ "functionNumber": {
+ "type": "integer"
+ },
+ "deviceNumber": {
+ "type": "integer"
+ },
+ "segmentNumber": {
+ "type": "integer"
+ },
+ "primaryOrDeviceBusNumber": {
+ "type": "integer"
+ },
+ "secondaryBusNumber": {
+ "type": "integer"
+ },
+ "slotNumber": {
+ "type": "integer"
+ }
+ }
+ },
+ "deviceSerialNumber": {
+ "type": "integer"
+ },
+ "bridgeControlStatus": {
+ "type": "object",
+ "required": ["secondaryStatusRegister", "controlRegister"],
+ "properties": {
+ "secondaryStatusRegister": {
+ "type": "integer"
+ },
+ "controlRegister": {
+ "type": "integer"
+ }
+ }
+ },
+ "capabilityStructure": {
+ "type": "object",
+ "required": ["data"],
+ "properties": {
+ "data": {
+ "type": "string"
+ }
+ }
+ },
+ "aerInfo": {
+ "type": "object",
+ "required": ["capabilityID", "capabilityVersion", "uncorrectableErrorStatusRegister", "uncorrectableErrorMaskRegister", "uncorrectableErrorSeverityRegister", "correctableErrorStatusRegister", "correctableErrorMaskRegister", "aeccReg", "headerLogRegister", "rootErrorCommand", "rootErrorStatus", "errorSourceIDRegister", "correctableErrorSourceIDRegister"],
+ "properties": {
+ "capabilityID": {
+ "type": "integer"
+ },
+ "capabilityVersion": {
+ "type": "integer"
+ },
+ "uncorrectableErrorStatusRegister": {
+ "type": "integer"
+ },
+ "uncorrectableErrorMaskRegister": {
+ "type": "integer"
+ },
+ "uncorrectableErrorSeverityRegister": {
+ "type": "integer"
+ },
+ "correctableErrorStatusRegister": {
+ "type": "integer"
+ },
+ "correctableErrorMaskRegister": {
+ "type": "integer"
+ },
+ "aeccReg": {
+ "type": "integer"
+ },
+ "headerLogRegister": {
+ "type": "string"
+ },
+ "rootErrorCommand": {
+ "type": "integer"
+ },
+ "rootErrorStatus": {
+ "type": "integer"
+ },
+ "errorSourceIDRegister": {
+ "type": "integer"
+ },
+ "correctableErrorSourceIDRegister": {
+ "type": "integer"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file