{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"description": "Schema describing an OpenFlow error message, version 1.3",
	"id": "of13/ofp_error.json",
	"type": "object",
	"required": [
		"header",
		"type",
		"code"
	],
	"properties": {
		"header": {
			"allOf": [
				{
					"$ref": "definitions.json#/ofp_header"
				},
				{
					"properties": {
						"type": {
							"enum": [
								"OFPT_ERROR"
							],
							"default": "OFPT_ERROR"
						}
					}
				}
			]
		},
		"type": {
			"type": "string",
			"enum": [
				"OFPET_HELLO_FAILED",
				"OFPET_BAD_REQUEST",
				"OFPET_BAD_ACTION",
				"OFPET_BAD_INSTRUCTION",
				"OFPET_BAD_MATCH",
				"OFPET_FLOW_MOD_FAILED",
				"OFPET_GROUP_MOD_FAILED",
				"OFPET_PORT_MOD_FAILED",
				"OFPET_TABLE_MOD_FAILED",
				"OFPET_QUEUE_OP_FAILED",
				"OFPET_SWITCH_CONFIG_FAILED",
				"OFPET_ROLE_REQUEST_FAILED",
				"OFPET_METER_MOD_FAILED",
				"OFPET_TABLE_FEATURES_FAILED",
				"OFPET_EXPERIMENTER"
			],
			"default": "OFPET_BAD_REQUEST"
		},
		"code": {
			"type": "string",
			"enum": [
				"OFPHFC_INCOMPATIBLE",
				"OFPHFC_EPERM",
				"OFPBRC_BAD_VERSION",
				"OFPBRC_BAD_TYPE",
				"OFPBRC_BAD_MULTIPART",
				"OFPBRC_BAD_EXPERIMENTER",
				"OFPBRC_BAD_EXP_TYPE",
				"OFPBRC_EPERM",
				"OFPBRC_BAD_LEN",
				"OFPBRC_BUFFER_EMPTY",
				"OFPBRC_BUFFER_UNKNOWN",
				"OFPBRC_BAD_TABLE_ID",
				"OFPBRC_IS_SLAVE",
				"OFPBRC_BAD_PORT",
				"OFPBRC_BAD_PACKET",
				"OFPBRC_MULTIPART_BUFFER_OVERFLOW",
				"OFPBAC_BAD_TYPE",
				"OFPBAC_BAD_LEN",
				"OFPBAC_BAD_EXPERIMENTER",
				"OFPBAC_BAD_EXP_TYPE",
				"OFPBAC_BAD_OUT_PORT",
				"OFPBAC_BAD_ARGUMENT",
				"OFPBAC_EPERM",
				"OFPBAC_TOO_MANY",
				"OFPBAC_BAD_QUEUE",
				"OFPBAC_BAD_OUT_GROUP",
				"OFPBAC_MATCH_INCONSISTENT",
				"OFPBAC_UNSUPPORTED_ORDER",
				"OFPBAC_BAD_TAG",
				"OFPBAC_BAD_SET_TYPE",
				"OFPBAC_BAD_SET_LEN",
				"OFPBAC_BAD_SET_ARGUMENT",
				"OFPBIC_UNKNOWN_INST",
				"OFPBIC_UNSUP_INST",
				"OFPBIC_BAD_TABLE_ID",
				"OFPBIC_UNSUP_METADATA",
				"OFPBIC_UNSUP_METADATA_MASK",
				"OFPBIC_BAD_EXPERIMENTER",
				"OFPBIC_BAD_EXP_TYPE",
				"OFPBIC_BAD_LEN",
				"OFPBIC_EPERM",
				"OFPBMC_BAD_TYPE",
				"OFPBMC_BAD_LEN",
				"OFPBMC_BAD_TAG",
				"OFPBMC_BAD_DL_ADDR_MASK",
				"OFPBMC_BAD_NW_ADDR_MASK",
				"OFPBMC_BAD_WILDCARDS",
				"OFPBMC_BAD_FIELD",
				"OFPBMC_BAD_VALUE",
				"OFPBMC_BAD_MASK",
				"OFPBMC_BAD_PREREQ",
				"OFPBMC_DUP_FIELD",
				"OFPBMC_EPERM",
				"OFPFMFC_UNKNOWN",
				"OFPFMFC_TABLE_FULL",
				"OFPFMFC_BAD_TABLE_ID",
				"OFPFMFC_OVERLAP",
				"OFPFMFC_EPERM",
				"OFPFMFC_BAD_TIMEOUT",
				"OFPFMFC_BAD_COMMAND",
				"OFPFMFC_BAD_FLAGS",
				"OFPGMFC_GROUP_EXISTS",
				"OFPGMFC_INVALID_GROUP",
				"OFPGMFC_WEIGHT_UNSUPPORTED",
				"OFPGMFC_OUT_OF_GROUPS",
				"OFPGMFC_OUT_OF_BUCKETS",
				"OFPGMFC_CHAINING_UNSUPPORTED",
				"OFPGMFC_WATCH_UNSUPPORTED",
				"OFPGMFC_LOOP",
				"OFPGMFC_UNKNOWN_GROUP",
				"OFPGMFC_CHAINED_GROUP",
				"OFPGMFC_BAD_TYPE",
				"OFPGMFC_BAD_COMMAND",
				"OFPGMFC_BAD_BUCKET",
				"OFPGMFC_BAD_WATCH",
				"OFPGMFC_EPERM",
				"OFPPMFC_BAD_PORT",
				"OFPPMFC_BAD_HW_ADDR",
				"OFPPMFC_BAD_CONFIG",
				"OFPPMFC_BAD_ADVERTISE",
				"OFPPMFC_EPERM",
				"OFPTMFC_BAD_TABLE",
				"OFPTMFC_BAD_CONFIG",
				"OFPTMFC_EPERM",
				"OFPQOFC_BAD_PORT",
				"OFPQOFC_BAD_QUEUE",
				"OFPQOFC_EPERM",
				"OFPSCFC_BAD_FLAGS",
				"OFPSCFC_BAD_LEN",
				"OFPSCFC_EPERM",
				"OFPRRFC_STALE",
				"OFPRRFC_UNSUP",
				"OFPRRFC_BAD_ROLE",
				"OFPMMFC_UNKNOWN",
				"OFPMMFC_METER_EXISTS",
				"OFPMMFC_INVALID_METER",
				"OFPMMFC_UNKNOWN_METER",
				"OFPMMFC_BAD_COMMAND",
				"OFPMMFC_BAD_FLAGS",
				"OFPMMFC_BAD_RATE",
				"OFPMMFC_BAD_BURST",
				"OFPMMFC_BAD_BAND",
				"OFPMMFC_BAD_BAND_VALUE",
				"OFPMMFC_OUT_OF_METERS",
				"OFPMMFC_OUT_OF_BANDS",
				"OFPTFFC_BAD_TABLE",
				"OFPTFFC_BAD_METADATA",
				"OFPTFFC_BAD_TYPE",
				"OFPTFFC_BAD_LEN",
				"OFPTFFC_BAD_ARGUMENT",
				"OFPTFFC_EPERM",
				null
			],
			"default": "OFPBRC_BAD_VERSION"
		},
		"data": {
			"$ref": "definitions.json#/optional_data"
		}
	}
}