{
    "$id": "http://redfish.dmtf.org/schemas/v1/PCIeFunction.v1_6_0.json",
    "$ref": "#/definitions/PCIeFunction",
    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
    "copyright": "Copyright 2014-2024 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
    "definitions": {
        "Actions": {
            "additionalProperties": false,
            "description": "The available actions for this resource.",
            "longDescription": "This type shall contain the available actions for this resource.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "integer",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "Oem": {
                    "$ref": "#/definitions/OemActions",
                    "description": "The available OEM-specific actions for this resource.",
                    "longDescription": "This property shall contain the available OEM-specific actions for this resource.",
                    "versionAdded": "v1_1_0"
                }
            },
            "type": "object"
        },
        "DeviceClass": {
            "enum": [
                "UnclassifiedDevice",
                "MassStorageController",
                "NetworkController",
                "DisplayController",
                "MultimediaController",
                "MemoryController",
                "Bridge",
                "CommunicationController",
                "GenericSystemPeripheral",
                "InputDeviceController",
                "DockingStation",
                "Processor",
                "SerialBusController",
                "WirelessController",
                "IntelligentController",
                "SatelliteCommunicationsController",
                "EncryptionController",
                "SignalProcessingController",
                "ProcessingAccelerators",
                "NonEssentialInstrumentation",
                "Coprocessor",
                "UnassignedClass",
                "Other"
            ],
            "enumDescriptions": {
                "Bridge": "A bridge.",
                "CommunicationController": "A communication controller.",
                "Coprocessor": "A coprocessor.",
                "DisplayController": "A display controller.",
                "DockingStation": "A docking station.",
                "EncryptionController": "An encryption controller.",
                "GenericSystemPeripheral": "A generic system peripheral.",
                "InputDeviceController": "An input device controller.",
                "IntelligentController": "An intelligent controller.",
                "MassStorageController": "A mass storage controller.",
                "MemoryController": "A memory controller.",
                "MultimediaController": "A multimedia controller.",
                "NetworkController": "A network controller.",
                "NonEssentialInstrumentation": "A non-essential instrumentation.",
                "Other": "Other class.  The function Class Code needs to be verified.",
                "ProcessingAccelerators": "A processing accelerators.",
                "Processor": "A processor.",
                "SatelliteCommunicationsController": "A satellite communications controller.",
                "SerialBusController": "A serial bus controller.",
                "SignalProcessingController": "A signal processing controller.",
                "UnassignedClass": "An unassigned class.",
                "UnclassifiedDevice": "An unclassified device.",
                "WirelessController": "A wireless controller."
            },
            "type": "string"
        },
        "FunctionProtocol": {
            "enum": [
                "PCIe",
                "CXL"
            ],
            "enumDescriptions": {
                "CXL": "A PCIe function supporting CXL extensions.",
                "PCIe": "A standard PCIe function."
            },
            "type": "string"
        },
        "FunctionType": {
            "enum": [
                "Physical",
                "Virtual"
            ],
            "enumDescriptions": {
                "Physical": "A physical PCIe function.",
                "Virtual": "A virtual PCIe function."
            },
            "type": "string"
        },
        "Links": {
            "additionalProperties": false,
            "description": "The links to other resources that are related to this resource.",
            "longDescription": "This Redfish Specification-described type shall contain links to resources that are related to but are not contained by, or subordinate to, this resource.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "integer",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "CXLLogicalDevice": {
                    "anyOf": [
                        {
                            "$ref": "http://redfish.dmtf.org/schemas/v1/CXLLogicalDevice.json#/definitions/CXLLogicalDevice"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "The link to the CXL logical device to which this function is assigned.",
                    "longDescription": "This property shall contain a link to a resource of type `CXLLogicalDevice` that represents the CXL logical device to which this PCIe function is assigned.",
                    "readonly": true,
                    "versionAdded": "v1_5_0"
                },
                "Drives": {
                    "description": "An array of links to the drives that this PCIe function produces.",
                    "items": {
                        "$ref": "http://redfish.dmtf.org/schemas/v1/Drive.json#/definitions/Drive"
                    },
                    "longDescription": "This property shall contain an array of links to resources of type `Drive` that represent the drives associated with this PCIe function.",
                    "readonly": true,
                    "type": "array"
                },
                "Drives@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                },
                "EthernetInterfaces": {
                    "description": "An array of links to the Ethernet interfaces that this PCIe function produces.",
                    "items": {
                        "$ref": "http://redfish.dmtf.org/schemas/v1/EthernetInterface.json#/definitions/EthernetInterface"
                    },
                    "longDescription": "This property shall contain an array of links to resources of type `EthernetInterface` that represent the network interfaces associated with this PCIe function.",
                    "readonly": true,
                    "type": "array"
                },
                "EthernetInterfaces@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                },
                "MemoryDomains": {
                    "description": "An array of links to the memory domains that the PCIe function produces.",
                    "items": {
                        "$ref": "http://redfish.dmtf.org/schemas/v1/MemoryDomain.json#/definitions/MemoryDomain"
                    },
                    "longDescription": "This property shall contain an array of links to resources of type `MemoryDomain` that represent the memory domains associated with this PCIe function.",
                    "readonly": true,
                    "type": "array",
                    "versionAdded": "v1_5_0"
                },
                "MemoryDomains@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                },
                "NetworkDeviceFunctions": {
                    "description": "An array of links to the network device functions that the PCIe function produces.",
                    "items": {
                        "$ref": "http://redfish.dmtf.org/schemas/v1/NetworkDeviceFunction.json#/definitions/NetworkDeviceFunction"
                    },
                    "longDescription": "This property shall contain an array of links to resources of type `NetworkDeviceFunction` that represent the network device functions associated with this PCIe function.",
                    "readonly": true,
                    "type": "array",
                    "versionAdded": "v1_2_0"
                },
                "NetworkDeviceFunctions@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                },
                "Oem": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
                    "description": "The OEM extension property.",
                    "longDescription": "This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."
                },
                "PCIeDevice": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/PCIeDevice.json#/definitions/PCIeDevice",
                    "description": "The link to the PCIe device on which this function resides.",
                    "longDescription": "This property shall contain a link to a resource of type `PCIeDevice` that represents the PCIe devices on which this function resides.",
                    "readonly": true
                },
                "Processor": {
                    "anyOf": [
                        {
                            "$ref": "http://redfish.dmtf.org/schemas/v1/Processor.json#/definitions/Processor"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "The link to a processor that is hosted on this PCIe function.",
                    "longDescription": "This property shall link to a resource of type `Processor` that represents the processor that is hosted on this PCIe function.",
                    "readonly": true,
                    "versionAdded": "v1_4_0"
                },
                "StorageControllers": {
                    "description": "An array of links to the storage controllers that this PCIe function produces.",
                    "items": {
                        "$ref": "http://redfish.dmtf.org/schemas/v1/Storage.json#/definitions/StorageController"
                    },
                    "longDescription": "This property shall contain an array of links to referenceable members of type `StorageController` that represent the storage controllers associated with this PCIe function.",
                    "readonly": true,
                    "type": "array"
                },
                "StorageControllers@odata.count": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                }
            },
            "type": "object"
        },
        "OemActions": {
            "additionalProperties": true,
            "description": "The available OEM-specific actions for this resource.",
            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "integer",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {},
            "type": "object"
        },
        "PCIeFunction": {
            "additionalProperties": false,
            "description": "The `PCIeFunction` schema describes the properties of a PCIe function that is attached to a system.",
            "longDescription": "This resource shall represent a PCIe function in a Redfish implementation.",
            "patternProperties": {
                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                    "description": "This property shall specify a valid odata or Redfish property.",
                    "type": [
                        "array",
                        "boolean",
                        "integer",
                        "number",
                        "null",
                        "object",
                        "string"
                    ]
                }
            },
            "properties": {
                "@odata.context": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
                },
                "@odata.etag": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
                },
                "@odata.id": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
                },
                "@odata.type": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
                },
                "Actions": {
                    "$ref": "#/definitions/Actions",
                    "description": "The available actions for this resource.",
                    "longDescription": "This property shall contain the available actions for this resource.",
                    "versionAdded": "v1_1_0"
                },
                "BusNumber": {
                    "description": "The bus number of this PCIe function.",
                    "longDescription": "This property shall contain the PCIe bus number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
                    "pattern": "^0[xX][0-9a-fA-F]{2}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ],
                    "versionAdded": "v1_6_0"
                },
                "ClassCode": {
                    "description": "The Class Code of this PCIe function.",
                    "longDescription": "This property shall contain the PCI Class Code, Subclass, and Programming Interface of the PCIe device function in the order listed.",
                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){3}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "Description": {
                    "anyOf": [
                        {
                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "readonly": true
                },
                "DeviceClass": {
                    "$ref": "#/definitions/DeviceClass",
                    "description": "The class for this PCIe function.",
                    "longDescription": "This property shall contain the device class of the PCIe device function, such as storage, network, or memory.",
                    "readonly": true
                },
                "DeviceId": {
                    "description": "The Device ID of this PCIe function.",
                    "longDescription": "This property shall contain the PCI Device ID of the PCIe device function with the most significant byte shown first.",
                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "DeviceNumber": {
                    "description": "The device number of this PCIe function.",
                    "longDescription": "This property shall contain the PCIe device number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
                    "pattern": "^0[xX][0-1][0-9a-fA-F]{1}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ],
                    "versionAdded": "v1_6_0"
                },
                "Enabled": {
                    "description": "An indication of whether this PCIe device function is enabled.",
                    "longDescription": "The value of this property shall indicate if this PCIe device function is enabled.",
                    "readonly": false,
                    "type": "boolean",
                    "versionAdded": "v1_3_0"
                },
                "FunctionId": {
                    "description": "The PCIe function number.",
                    "longDescription": "This property shall contain the PCIe function number within a given PCIe device.",
                    "readonly": true,
                    "type": [
                        "integer",
                        "null"
                    ]
                },
                "FunctionNumber": {
                    "description": "The function number of this PCIe function.",
                    "longDescription": "This property shall contain the PCIe function number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
                    "pattern": "^0[xX][0-7]$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ],
                    "versionAdded": "v1_6_0"
                },
                "FunctionProtocol": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/FunctionProtocol"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "description": "The PCIe function protocol.",
                    "longDescription": "This property shall contain the protocol supported by this PCIe function.",
                    "readonly": true,
                    "versionAdded": "v1_5_0"
                },
                "FunctionType": {
                    "$ref": "#/definitions/FunctionType",
                    "description": "The type of the PCIe function.",
                    "longDescription": "This property shall contain the function type of the PCIe device function such as physical or virtual.",
                    "readonly": true
                },
                "Id": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
                    "readonly": true
                },
                "Links": {
                    "$ref": "#/definitions/Links",
                    "description": "The links to other resources that are related to this resource.",
                    "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."
                },
                "Name": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
                    "readonly": true
                },
                "Oem": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
                    "description": "The OEM extension property.",
                    "longDescription": "This property shall contain the OEM extensions.  All values for properties that this object contains shall conform to the Redfish Specification-described requirements."
                },
                "RevisionId": {
                    "description": "The Revision ID of this PCIe function.",
                    "longDescription": "This property shall contain the PCI Revision ID of the PCIe device function.",
                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){1}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "SegmentNumber": {
                    "description": "The segment number of this PCIe function.",
                    "longDescription": "This property shall contain the PCIe segment number of the PCIe device function.  This property shall not be present if the PCIe device function is fabric-attached or is shared with multiple systems.",
                    "pattern": "^0[xX][0-9a-fA-F]{4}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ],
                    "versionAdded": "v1_6_0"
                },
                "Status": {
                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
                    "description": "The status and health of the resource and its subordinate or dependent resources.",
                    "longDescription": "This property shall contain any status or health properties of the resource."
                },
                "SubsystemId": {
                    "description": "The Subsystem ID of this PCIe function.",
                    "longDescription": "This property shall contain the PCI Subsystem ID of the PCIe device function with the most significant byte shown first.",
                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "SubsystemVendorId": {
                    "description": "The Subsystem Vendor ID of this PCIe function.",
                    "longDescription": "This property shall contain the PCI Subsystem Vendor ID of the PCIe device function with the most significant byte shown first.",
                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "VendorId": {
                    "description": "The Vendor ID of this PCIe function.",
                    "longDescription": "This property shall contain the PCI Vendor ID of the PCIe device function with the most significant byte shown first.",
                    "pattern": "^0[xX]([0-9A-Fa-f]{2}){2}$",
                    "readonly": true,
                    "type": [
                        "string",
                        "null"
                    ]
                }
            },
            "required": [
                "@odata.id",
                "@odata.type",
                "Id",
                "Name"
            ],
            "type": "object"
        }
    },
    "language": "en",
    "owningEntity": "DMTF",
    "release": "2024.1",
    "title": "#PCIeFunction.v1_6_0.PCIeFunction"
}