{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.twindev.org/aig/AuditableItemGraphVertex",
	"title": "AuditableItemGraphVertex",
	"description": "Interface describing an auditable item graph vertex.",
	"type": "object",
	"properties": {
		"@context": {
			"type": "array",
			"prefixItems": [
				{
					"const": "https://schema.twindev.org/aig/"
				},
				{
					"const": "https://schema.twindev.org/common/"
				}
			],
			"items": {
				"$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinitionElement"
			},
			"minItems": 2,
			"description": "JSON-LD Context."
		},
		"id": {
			"type": "string",
			"description": "The id of the element."
		},
		"type": {
			"const": "AuditableItemGraphVertex",
			"description": "JSON-LD Type."
		},
		"organizationIdentity": {
			"type": "string",
			"description": "The identity of the organization which controls the vertex."
		},
		"annotationObject": {
			"$ref": "https://schema.twindev.org/json-ld/JsonLdNodeObject",
			"description": "The JSON-LD annotation object for the vertex."
		},
		"aliases": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/aig/AuditableItemGraphAlias"
			},
			"description": "Alternative aliases that can be used to identify the vertex."
		},
		"resources": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/aig/AuditableItemGraphResource"
			},
			"description": "The resources attached to the vertex."
		},
		"edges": {
			"type": "array",
			"items": {
				"$ref": "https://schema.twindev.org/aig/AuditableItemGraphEdge"
			},
			"description": "Edges connected to the vertex."
		},
		"verified": {
			"type": "boolean",
			"description": "Is the vertex verified, will only be populated when verification is requested."
		}
	},
	"required": ["@context", "id", "type"],
	"allOf": [
		{
			"description": "Interface describing the base properties for auditable elements.",
			"type": "object",
			"properties": {
				"dateCreated": {
					"type": "string",
					"description": "The date/time of when the element was created."
				},
				"dateModified": {
					"type": "string",
					"description": "The date/time of when the element was modified."
				},
				"dateDeleted": {
					"type": "string",
					"description": "The date/time of when the element was deleted, as we never actually remove items."
				}
			},
			"$comment": "Inlined utility base type AuditableItemGraphAuditedElement so utility transformations can operate on concrete properties instead of a $ref."
		}
	]
}
