{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.twindev.org/w3c-did/DataIntegrityProof",
	"title": "DataIntegrityProof",
	"description": "Interface describing a did proof.\nhttps://www.w3.org/TR/vc-data-integrity/",
	"type": "object",
	"properties": {
		"@context": {
			"anyOf": [
				{
					"const": "https://w3id.org/security/data-integrity/v2"
				},
				{
					"type": "array",
					"items": {
						"anyOf": [
							{
								"$ref": "https://schema.twindev.org/json-ld/JsonLdContextDefinitionElement"
							},
							{
								"const": "https://w3id.org/security/data-integrity/v2"
							}
						]
					},
					"contains": {
						"const": "https://w3id.org/security/data-integrity/v2"
					},
					"minContains": 1,
					"maxContains": 1,
					"minItems": 1
				}
			],
			"description": "JSON-LD Context."
		},
		"type": {
			"const": "DataIntegrityProof",
			"description": "JSON-LD Type."
		},
		"cryptosuite": {
			"anyOf": [
				{
					"$ref": "https://schema.twindev.org/w3c-did/DidCryptoSuites"
				},
				{
					"type": "string"
				}
			],
			"description": "An identifier for the cryptographic suite that can be used to verify the proof."
		},
		"id": {
			"type": "string",
			"description": "The id of the proof."
		},
		"proofPurpose": {
			"type": "string",
			"description": "The reason the proof was created."
		},
		"proofValue": {
			"type": "string",
			"description": "Contains the base-encoded binary data necessary to verify the\ndigital proof using the verificationMethod specified."
		},
		"verificationMethod": {
			"type": "string",
			"description": "The verification method of the proof."
		},
		"created": {
			"type": "string",
			"description": "The iso date of when the proof was created."
		},
		"expires": {
			"type": "string",
			"description": "The iso date of when the proof expires."
		},
		"domain": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "One or more security domains in which the proof is meant to be used."
		},
		"challenge": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "array",
					"items": {
						"type": "string"
					}
				}
			],
			"description": "Provided to mitigate replay attacks on domains."
		},
		"previousProof": {
			"type": "string",
			"description": "Identifies another data integrity proof that MUST verify before\nthe current proof is processed"
		},
		"nonce": {
			"type": "string",
			"description": "Use of this field is to increase privacy by decreasing linkability\nthat is the result of deterministically generated signatures."
		}
	},
	"required": ["type", "cryptosuite", "proofPurpose"]
}
