{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.twindev.org/unece/UneceIOTDevice",
	"title": "UneceIOTDevice",
	"description": "An IOT (Internet of Things) piece of mechanical or electronic equipment which can collect, report and autonomously\ntransmit digital data.",
	"type": "object",
	"properties": {
		"@context": {
			"$ref": "https://schema.twindev.org/unece/UneceContextType",
			"description": "JSON-LD Context."
		},
		"type": {
			"const": "IOTDevice",
			"description": "JSON-LD Type."
		},
		"attachedAssetId": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"$ref": "https://schema.twindev.org/json-ld/JsonLdValueObject"
				}
			],
			"description": "The identifier for the asset, such as a container, to which this monitoring IOT device is attached."
		},
		"communicationCapabilityCode": {
			"type": "string",
			"description": "The code specifying the communication capability of this monitoring IOT device."
		},
		"embeddedSensor": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/unece/UneceSensor"
			},
			"description": "An embedded sensor of this monitoring IOT device."
		},
		"grantedCertificate": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/unece/UneceProductCertificate"
			},
			"description": "A product certificate granted for this monitoring IOT device."
		},
		"identifier": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"$ref": "https://schema.twindev.org/json-ld/JsonLdValueObject"
				}
			],
			"description": "An identifier for this monitoring IOT device."
		},
		"interfaceEquipment": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/unece/UneceEquipment"
			},
			"description": "An interface between an OEM (Original Equipment Manufacturer) equipment and this monitoring IOT device."
		},
		"latestReceivedGeographicalCoordinate": {
			"$ref": "https://schema.twindev.org/unece/UneceGeographicalCoordinate",
			"description": "The latest geographical coordinates received by this monitoring IOT device, from the perspective of the receiver."
		},
		"latestReceivedSignalDateTime": {
			"type": "string",
			"description": "The date, time, date time or other date time value of the latest received signal for this monitoring IOT device, from\nthe perspective of the receiver.",
			"format": "date-time"
		},
		"manufacturerParty": {
			"$ref": "https://schema.twindev.org/unece/UneceTradeParty",
			"description": "The manufacturer party of this monitoring IOT device."
		},
		"modelId": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"$ref": "https://schema.twindev.org/json-ld/JsonLdValueObject"
				}
			],
			"description": "A model identifier for this monitoring IOT device."
		},
		"operationalStatusCode": {
			"type": "string",
			"description": "The code specifying the operational status, such as broken, stolen, unpaired, inactive of this monitoring IOT device."
		},
		"operatorParty": {
			"$ref": "https://schema.twindev.org/unece/UneceTradeParty",
			"description": "The operator party, such as terminal operator, service provider, network operator of this monitoring IOT device."
		},
		"ownerParty": {
			"$ref": "https://schema.twindev.org/unece/UneceTradeParty",
			"description": "The owner party of this monitoring IOT device."
		},
		"positionCode": {
			"type": "string",
			"description": "The code specifying the position of this monitoring IOT device."
		},
		"powerSourceTypeCode": {
			"type": "string",
			"description": "The code specifying a type of power source for this monitoring IOT device."
		},
		"providerParty": {
			"$ref": "https://schema.twindev.org/unece/UneceTradeParty",
			"description": "The provider party for this monitoring IOT device."
		},
		"relatedEvent": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/unece/UneceCommunicationEvent"
			},
			"description": "A communication event related to this monitoring IOT device."
		},
		"remainingBatteryChargePercent": {
			"type": "string",
			"description": "The percentage of the remaining battery charge of this monitoring IOT device."
		},
		"remoteSensor": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/unece/UneceSensor"
			},
			"description": "A remote sensor of this monitoring IOT device."
		},
		"reportedTransportEvent": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/unece/UneceTransportEvent"
			},
			"description": "A transport event reported by this monitoring IOT device."
		},
		"reportingSensorPairing": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/unece/UnecePairing"
			},
			"description": "A sensor communication pairing reported for this monitoring IOT device."
		},
		"typeCode": {
			"anyOf": [
				{
					"$ref": "https://schema.twindev.org/unece/UneceIOTDeviceTypeCodeList"
				},
				{
					"type": "string"
				}
			],
			"description": "The code specifying the type of monitoring IOT device."
		}
	},
	"required": ["type"]
}
