{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.twindev.org/gs1-epcis/EpcisTransactionEvent",
	"title": "EpcisTransactionEvent",
	"description": "EPCIS 2.0 TransactionEvent relating objects or quantities to one or more\nbusiness transactions, optionally with a parent identifier.",
	"type": "object",
	"properties": {
		"type": {
			"const": "TransactionEvent",
			"description": "Fixed to TransactionEvent."
		},
		"bizTransactionList": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/gs1-epcis/EpcisBizTransaction"
			},
			"description": "Business transaction list (required by schema)."
		},
		"parentID": {
			"type": "string",
			"description": "(Optional when action is OBSERVE, required otherwise) Identifier of the parent\nof the aggregation or association; use the pure identity URI when the parent is\nan EPC."
		},
		"epcList": {
			"type": "array",
			"items": {
				"type": "string"
			},
			"description": "(Optional) An unordered list of one or more EPCs naming specific objects to\nwhich the event pertained."
		},
		"quantityList": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/gs1-epcis/EpcisQuantity"
			},
			"description": "An unordered list of one or more QuantityElements identifying (at the class\nlevel) contained objects."
		},
		"action": {
			"$ref": "https://schema.twindev.org/gs1-epcis/EpcisActionTypes",
			"description": "How this event relates to the lifecycle of the EPCs named in this event."
		},
		"bizStep": {
			"anyOf": [
				{
					"$ref": "https://schema.twindev.org/gs1-epcis/EpcisBizStepTypes"
				},
				{
					"type": "string"
				}
			],
			"description": "(Optional) The business step of which this event was a part."
		},
		"disposition": {
			"anyOf": [
				{
					"$ref": "https://schema.twindev.org/gs1-epcis/EpcisDispositionTypes"
				},
				{
					"type": "string"
				}
			],
			"description": "(Optional) The business condition of the objects associated with the EPCs,\npresumed to hold true until contradicted by a subsequent event."
		},
		"readPoint": {
			"$ref": "https://schema.twindev.org/gs1-epcis/EpcisLocation",
			"description": "(Optional) The read point at which the event took place."
		},
		"bizLocation": {
			"$ref": "https://schema.twindev.org/gs1-epcis/EpcisLocation",
			"description": "(Optional) The business location where the objects associated with the EPCs\nmay be found, until contradicted by a subsequent event."
		},
		"sourceList": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/gs1-epcis/EpcisSource"
			},
			"description": "(Optional) Unordered list of Source elements that provide context about the\noriginating endpoint of a business transfer of which this event is a part."
		},
		"destinationList": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/gs1-epcis/EpcisDestination"
			},
			"description": "(Optional) Unordered list of Destination elements that provide context about the\nterminating endpoint of a business transfer of which this event is a part."
		},
		"sensorElementList": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/gs1-epcis/EpcisSensorElement"
			},
			"description": "(Optional) Connects event to one or more SensorElements."
		}
	},
	"required": ["type", "bizTransactionList", "action"],
	"allOf": [
		{
			"$ref": "https://schema.twindev.org/gs1-epcis/EpcisEvent"
		}
	]
}
