{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"$id": "https://ref.gs1.org/standards/resolver/1.2.0/description-file-schema",
	"description": "The JSON schema for a conformant GS1 resolver description file to be placed at /.well-known/gs1resolver",
	"type": "object",
	"properties": {
		"resolverRoot": {
			"description": "The root URL of the resolver",
			"type": "string",
			"format": "uri"
		},
		"supportedPrimaryKeys": {
			"description": "An array of primary keys supported by the resolver, provided as their numeric AI. The value 'all' indicates that all GS1 primary identification keys are supported",
			"type": "array",
			"items": {
				"type": "string",
				"enum": ["all", "01", "8006", "8013", "8010", "410", "411", "412", "413", "414", "415", "417", "8017", "8018", "255", "00", "253", "401", "402", "8003", "8004"]
			}
		},
		"name": {
			"description": "The name of the resolver",
			"type": "string"
		},
		"supportedLinkType": {
			"type": "array",
			"items": {
				"properties": {
					"namespace": {
						"description": "A namespace URI recognised by the resolver",
						"type": "string",
						"format": "uri"
					},
					"prefix": {
						"description": "The prefix assigned to this URI for use in CURIEs, including the colon",
						"type": "string",
						"pattern": "^[a-zA-Z_][A-Za-z0-9_-]*?:$"
					}
				}
			}
		},
		"linkTypeDefaultCanBeLinkset": {
			"description": "Boolean flag stating whether the resolver supports the option to make 'linkset' the default linkType.",
			"type": "boolean",
			"default": false
		},
		"supportedContextValuesEnumerated": {
			"description": "Enumerated list of values for context supported by this resolver",
			"type": "array",
			"items": {
				"type": "string"
			}
		},
		"supportedContextValuesExternal": {
			"description": "External lists of supported values for context recognised by this resolver",
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"nameOfList": {
						"description": "The name of the list of values",
						"type": "string"
					},
					"url": {
						"description": "The URL of the external list",
						"type": "string",
						"format": "uri"
					}
				}
			}
		},
		"contact": {
			"description": "Contact details for the resolver operator, uses VCard",
			"type": "object",
			"properties": {
				"fn": {
					"description": "Full name",
					"type": "string"
				},
				"hasAddress": {
					"description": "Address info for the resolver operator",
					"type": "object",
					"properties": {
						"streetAddress": {
							"description": "Street address of hte operator",
							"type": "string"
						},
						"locality": {
							"description": "locality of the operator",
							"type": "string"
						},
						"region": {
							"description": "region of the operator",
							"type": "string"
						},
						"postal-code": {
							"decription": "post code of the operator",
							"type": "string"
						}
					}
				}
			},
			"hasTelephone": {
				"description": "A contact telephone number",
				"type": "string",
				"format": "uri"
			}
		},
		"extensionProfile": {
			"description": "A link to a document that describes any extended key=value pairs supported by the resolver and/or an additional supported compression/decompression capability",
			"type": "string",
			"format": "uri"
		},

		"jsonLdContextLocation": {
			"description": "The location of the JSON-LD context file referenced when serving linksets as JSON",
			"type": "string",
			"format": "uri"
		}


	},
	"required": ["resolverRoot", "supportedPrimaryKeys"]
}

