{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "#NetworkInterface",
    "description": "An re-assignable software defined network interface resource entity. Do not create an entity for a network interface _configured_ on a Host. Use this only if the network interface is a reusable resource, such as an Elastic Network Interface object in AWS.",
    "type": "object",
    "allOf": [
        {
            "$ref": "#Entity"
        },
        {
            "properties": {
                "macAddress": {
                    "description": "The assigned MAC address",
                    "oneOf": [
                        {
                            "type": "string",
                            "pattern": "^([0-9a-f]{2}:){5}([0-9a-f]{2})$"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "dnsName": {
                    "description": "The assigned DNS name",
                    "type": "string",
                    "format": "hostname"
                },
                "ipAddress": {
                    "description": "The assigned primary IP address",
                    "type": "string",
                    "format": "ip"
                },
                "publicIpAddress": {
                    "description": "The assigned public IP address",
                    "type": "string",
                    "format": "ip"
                },
                "privateIpAddress": {
                    "description": "The assigned private IP address",
                    "type": "string",
                    "format": "ip"
                },
                "ipVersion": {
                    "description": "Indicates IP version 4 or 6",
                    "type": "integer",
                    "default": 4,
                    "enum": [4, 6]
                }
            },
            "required": []
        }
    ]
}
