{
	"id": "#stompunkt-1.1.1.json",
	"$schema": "http://json-schema.org/draft-04/schema#",
	"title": "Stompunkt Direkt",
	"description": "Schema for Stompunkt Direkt",
	"oneOf": [
		{
			"$ref": "#/definitions/request"
		},
		{
			"$ref": "#/definitions/response"
		},
		{
			"$ref": "#/definitions/simplifiedresponse"
		}
	],
	"definitions": {
		"request": {
			"oneOf": [
				{
					"$ref": "#/definitions/idrequest"
				},
				{
					"$ref": "#/definitions/geometrirequest"
				}
			]
		},
		"response": {
			"oneOf": [
				{
					"$ref": "#/definitions/emptyresponse"
				},
				{
					"$ref": "#/definitions/stompunkterdatamangd"
				},
				{
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/fault/v1/fault-1.0.json#/definitions/fault"
				}
			]
		},
		"simplifiedresponse": {
			"oneOf": [
				{
					"$ref": "#/definitions/emptyresponse"
				},
				{
					"$ref": "#/definitions/simplifiedstompunkterdatamangd"
				},
				{
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/fault/v1/fault-1.0.json#/definitions/fault"
				}
			]
		},
		"idrequest": {
			"title": "IdRequest",
			"type": "array",
			"items": {
				"type": "string"
			},
			"minItems": 1
		},
		"geometrirequest": {
			"title": "GeometriRequest",
			"type": "object",
			"properties": {
				"geometri": {
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/geojson/v1/geojson-1.0.json#/definitions/geometry"
				},
				"buffer": {
					"type": "integer"
				}
			},
			"required": [
				"geometri"
			],
			"additionalProperties": false
		},
		"emptyresponse": {
			"type": "object",
			"properties": {
				"type": {
					"type": "string",
					"enum": ["FeatureCollection"]
				},
				"crs": {
					"type": "null"
				},
				"features": {
					"type": "array",
					"maxItems": 0
				}
			}
		},
		"stompunkterdatamangd": {
			"allOf": [
				{
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/geojson/v1/geojson-1.0.json#/definitions/featurecollection"
				},
				{
					"properties": {
						"id": {
							"$ref": "#/definitions/Identifier"
						},
						"uttagDatum": {
							"type": "string",
							"format": "date-time"
						},
						"metadata": {
							"type": "string",
							"format": "uri"
						},
						"koordinatsystemPlan": {
							"$ref": "#/definitions/KoordinatsystemPlan"
						},
						"hojdsystem": {
							"$ref": "#/definitions/Hojdsystem"
						},
						"dimension": {
							"$ref": "#/definitions/Dimension"
						},
						"features": {
							"type": "array",
							"items": {
								"$ref": "#/definitions/StompunktFeature"
							}
						}
					},
					"required": [
						"id",
						"uttagDatum",
						"koordinatsystemPlan",
						"features"
					]
				}
			]
		},
		"simplifiedstompunkterdatamangd": {
			"allOf": [
				{
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/geojson/v1/geojson-1.0.json#/definitions/featurecollection"
				},
				{
					"properties": {
						"id": {
							"$ref": "#/definitions/Identifier"
						},
						"uttagDatum": {
							"type": "string",
							"format": "date-time"
						},
						"metadata": {
							"type": "string",
							"format": "uri"
						},
						"koordinatsystemPlan": {
							"$ref": "#/definitions/KoordinatsystemPlan"
						},
						"hojdsystem": {
							"$ref": "#/definitions/Hojdsystem"
						},
						"dimension": {
							"$ref": "#/definitions/Dimension"
						},
						"features": {
							"type": "array",
							"items": {
								"$ref": "#/definitions/SimplifiedStompunktFeature"
							}
						}
					},
					"required": [
						"id",
						"uttagDatum",
						"koordinatsystemPlan",
						"features"
					]
				}
			]
		},
		"StompunktFeature": {
			"title": "Stompunkt Feature",
			"type": "object",
			"allOf": [
				{
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/geojson/v1/geojson-1.0.json#/definitions/feature"
				},
				{
					"properties": {
						"id": {
							"type": "string"
						},
						"properties": {
							"$ref": "#/definitions/Stompunkt"
						}
					},
					"required": [
						"id",
						"geometry",
						"properties"
					]
				}
			]
		},
		"SimplifiedStompunktFeature": {
			"title": "Simplified Stompunkt Feature",
			"type": "object",
			"allOf": [
				{
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/geojson/v1/geojson-1.0.json#/definitions/feature"
				},
				{
					"properties": {
						"id": {
							"type": "string"
						},
						"properties": {
							"$ref": "#/definitions/SimplifiedStompunkt"
						}
					},
					"required": [
						"id",
						"geometry",
						"properties"
					]
				}
			]
		},
		"SimplifiedStompunkt":{
			"type": "object",
			"properties": {
				"stompunktId": {
					"type": "string"
				},
				"namn": {
					"type": "string"
				},
				"mbPlan": {
					"type": "object",
					"properties": {
						"kvalitetKlass": {
							"type": "string"
						}
					}
				},
				"historik": {
					"$ref": "#/definitions/Historik"
				},
				"stomnat": {
					"type": "object",
					"properties": {
						"natNamn": {
							"type": "string"
						}
					}
				}
			},
			"additionalProperties": false
		},
		"Stompunkt": {
			"type": "object",
			"properties": {
				"stompunktId": {
					"type": "string"
				},
				"alternativId": {
					"type": "array",
					"items": {
						"type": "string"
					}
				},
				"namn": {
					"type": "string"
				},
				"typ": {
					"$ref": "#/definitions/StompunktTyp"
				},
				"kategori": {
					"$ref": "#/definitions/StompunktKategori"
				},
				"mbHojd": {
					"$ref": "#/definitions/mbHojd"
				},
				"mbPlan": {
					"$ref": "#/definitions/mbPlan"
				},
				"markering": {
					"$ref": "#/definitions/Markering"
				},
				"historik": {
					"$ref": "#/definitions/Historik"
				},
				"anmarkning": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/StompunktAnmarkning"
					}
				},
				"kommun": {
					"type": "string"
				},
				"lan": {
					"type": "string"
				},
				"land": {
					"type": "string",
					"enum": [
						"SE"
					]
				},
				"bild": {
					"type": "array",
					"items": {
						"type": "string",
						"format": "uri"
					}
				},
				"beskrivning": {
					"type": "string",
					"format": "uri"
				},
				"stomnat": {
					"$ref": "#/definitions/StomNat"
				},
				"stompunktProjekt": {
					"$ref": "#/definitions/StompunktProjekt"
				},
				"referensstation": {
					"$ref": "#/definitions/Referensstation"
				},
				"aldreHojdsystem": {
					"$ref": "#/definitions/AldreHojdsystem"
				},
				"sweref99Kartesisk": {
					"$ref": "#/definitions/Sweref99Kartesisk"
				}
			},
			"required": [
				"stompunktId",
				"typ",
				"kategori",
				"markering",
				"historik"
			],
			"additionalProperties": false
		},
		"Identifier": {
			"type": "object",
			"properties": {
				"localId": {
					"type": "string"
				},
				"namespace": {
					"type": "string"
				},
				"versionId": {
					"type": "string"
				}
			},
			"required": [
				"localId",
				"namespace"
			]
		},
		"Dimension": {
			"type": "integer",
			"enum": [
				2,
				3
			]
		},
		"Hojdsystem": {
			"type": "string",
			"enum": [
				"EPSG:5613"
			]
		},
		"StompunktTyp": {
			"type": "string",
			"enum": [
				"planpunkt",
				"höjdpunkt",
				"plan-höjdpunkt"
			]
		},
		"StompunktKategori": {
			"type": "string",
			"enum": [
				"rikspunkt",
				"anslutningspunkt",
				"brukspunkt"
			]
		},
		"StompunktAnmarkning": {
			"type": "object",
			"properties": {
				"anmarkningTyp": {
					"$ref": "#/definitions/StompunktAnmarkningTyp"
				},
				"anmarkningText": {
					"type": "string"
				}
			},
			"required": [
				"anmarkningTyp",
				"anmarkningText"
			],
			"additionalProperties": false
		},
		"StompunktAnmarkningTyp": {
			"type": "string",
			"enum": [
				"lägesbeskrivning",
				"markhöjd",
				"distansbricka",
				"excentriska markeringar",
				"övrigt"
			]
		},
		"mbPlan": {
			"type": "object",
			"properties": {
				"ursprung": {
					"$ref": "#/definitions/UrsprungPlan"
				},
				"matmetod": {
					"$ref": "#/definitions/Matmetod"
				},
				"matningDatum": {
					"$ref": "#/definitions/DateOrYear"
				},
				"berakningDatum": {
					"$ref": "#/definitions/DateOrYear"
				},
				"kvalitetKlass": {
					"type": "string"
				},
				"lagesosakerhet": {
					"type": "number"
				}
			},
			"required": [
				"ursprung",
				"lagesosakerhet"
			],
			"additionalProperties": false
		},
		"mbHojd": {
			"type": "object",
			"properties": {
				"ursprung": {
					"$ref": "#/definitions/UrsprungHojd"
				},
				"matmetod": {
					"$ref": "#/definitions/Matmetod"
				},
				"matningDatum": {
					"$ref": "#/definitions/DateOrYear"
				},
				"berakningDatum": {
					"$ref": "#/definitions/DateOrYear"
				},
				"geoidmodell": {
					"$ref": "#/definitions/Geoidmodell"
				},
				"kvalitetKlass": {
					"type": "string"
				},
				"lagesosakerhet": {
					"type": "number"
				}
			},
			"required": [
				"ursprung",
				"lagesosakerhet"
			],
			"additionalProperties": false
		},
		"Geoidmodell": {
			"type": "string",
			"enum": [
				"SWEN05_RH2000",
				"SWEN08_RH2000",
				"SWEN17_RH2000"
			]
		},
		"Matmetod": {
			"type": "string",
			"enum": [
				"avvägning",
				"nätverks-RTK",
				"RTK",
				"statisk GNSS",
				"totalstation",
				"integrerad mätning"
			]
		},
		"UrsprungHojd": {
			"type": "string",
			"enum": [
				"utjämnad (RH 2000)",
				"transformerad (RH 2000)",
				"GNSS",
				"höjd saknas"
			]
		},
		"UrsprungPlan": {
			"type": "string",
			"enum": [
				"utjämnad (SWEREF 99)",
				"transformerad (SWEREF 99)",
				"DGNSS",
				"GNSS",
				"RTK",
				"digitaliserad"
			]
		},
		"RelatedParty": {
			"type": "object",
			"properties": {
				"individualName": {
					"type": "string"
				},
				"organisationName": {
					"type": "string",
					"enum": [
						"Lantmäteriet"
					]
				},
				"positionName": {
					"type": "string"
				},
				"contact": {
					"$ref": "#/definitions/Contact"
				},
				"role": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/PartyRoleValue"
					}
				}
			},
			"anyOf": [
				{
					"required": [
						"individualName"
					]
				},
				{
					"required": [
						"organisationName"
					]
				},
				{
					"required": [
						"positionName"
					]
				}
			],
			"additionalProperties": false
		},
		"StomNat": {
			"type": "object",
			"properties": {
				"stomnatId": {
					"type": "string"
				},
				"natTyp": {
					"$ref": "#/definitions/NatTyp"
				},
				"natAgare": {
					"$ref": "#/definitions/RelatedParty"
				},
				"natOmrade": {
					"$ref": "http://namespace.lantmateriet.se/distribution/produkter/geojson/v1/geojson-1.0.json#/definitions/multipolygon"
				},
				"natNamn": {
					"type": "string"
				},
				"referenssystemPlan": {
					"$ref": "#/definitions/KoordinatsystemPlan"
				},
				"referenssystemHojd": {
					"$ref": "#/definitions/HojdSystem"
				}
			},
			"required": [
				"stomnatId",
				"natTyp",
				"natAgare",
				"natOmrade",
				"referenssystemPlan"
			],
			"additionalProperties": false
		},
		"HojdSystem": {
			"type": "string",
			"enum": [
				"EPSG:5613"
			]
		},
		"KoordinatsystemPlan": {
			"type": "string",
			"enum": [
				"EPSG:3006",
				"EPSG:3007",
				"EPSG:3008",
				"EPSG:3009",
				"EPSG:3010",
				"EPSG:3011",
				"EPSG:3012",
				"EPSG:3013",
				"EPSG:3014",
				"EPSG:3015",
				"EPSG:3016",
				"EPSG:3017",
				"EPSG:3018",
				"EPSG:4619",
				"EPSG:4976",
				"EPSG:4977"
			]
		},
		"NatTyp": {
			"type": "string",
			"enum": [
				"referensstationsnät",
				"GNSS-nät",
				"triangelnät",
				"polygonnät",
				"avvägningsnät",
				"specialnät"
			]
		},
		"Contact": {
			"type": "object",
			"properties": {
				"address": {
					"type": "string"
				},
				"contactInstructions": {
					"type": "string"
				},
				"electronicMailAdress": {
					"type": "string"
				},
				"hoursOfService": {
					"type": "string"
				},
				"telephoneFacsimile": {
					"type": "array",
					"items": {
						"type": "string"
					}
				},
				"telephoneVoice": {
					"type": "array",
					"items": {
						"type": "string"
					}
				},
				"website": {
					"type": "string",
					"format": "uri",
					"enum": [
						"https://lantmateriet.se"
					]
				}
			}
		},
		"PartyRoleValue": {
			"type": "string",
			"enum": [
				"resourceProvider",
				"custodian",
				"owner",
				"user",
				"distributor",
				"originator",
				"pointOfContact",
				"principalInvestigator",
				"processor",
				"publisher",
				"author"
			]
		},
		"StompunktProjekt": {
			"allOf": [
				{
					"$ref": "#/definitions/Projekt"
				},
				{
					"properties": {
						"projektOmrade": {
							"$ref": "http://namespace.lantmateriet.se/distribution/produkter/geojson/v1/geojson-1.0.json#/definitions/multipolygon"
						},
						"matningUtforare": {
							"type": "array",
							"items": {
								"$ref": "#/definitions/RelatedParty"
							}
						},
						"berakningUtforare": {
							"type": "array",
							"items": {
								"$ref": "#/definitions/RelatedParty"
							}
						}
					}
				}
			]
		},
		"Projekt": {
			"type": "object",
			"properties": {
				"projektId": {
					"type": "string"
				},
				"geodataProducent": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/RelatedParty"
					}
				},
				"geodataAgare": {
					"type": "array",
					"minItems": 1,
					"items": {
						"$ref": "#/definitions/RelatedParty"
					}
				},
				"projektNamn": {
					"type": "string"
				},
				"projektRapportLank": {
					"type": "string",
					"format": "uri"
				},
				"uppdragsgivare": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/RelatedParty"
					}
				}
			},
			"required": [
				"projektId",
				"geodataAgare"
			]
		},
		"DateOrYear":{
			"oneOf":[
				{
					"type": "string",
					"format": "date",
					"pattern": "^([12]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01]))$"
				},
				{
					"type": "integer"
				}
			]
		},
		"Historik": {
			"type": "object",
			"properties": {
				"markerad": {
					"$ref": "#/definitions/DateOrYear"
				},
				"aterfunnen": {
					"$ref": "#/definitions/DateOrYear"
				},
				"ejAterfunnen": {
					"$ref": "#/definitions/DateOrYear"
				},
				"forstord": {
					"$ref": "#/definitions/DateOrYear"
				}
			},
			"additionalProperties": false
		},
		"Markering": {
			"type": "object",
			"properties": {
				"markeringTyp": {
					"$ref": "#/definitions/MarkeringTyp"
				},
				"underlag": {
					"$ref": "#/definitions/Underlag"
				},
				"material": {
					"$ref": "#/definitions/Material"
				},
				"tillbehor": {
					"type": "array",
					"items": {
						"$ref": "#/definitions/Tillbehor"
					}
				}
			},
			"required": [
				"markeringTyp",
				"underlag"
			],
			"additionalProperties": false
		},
		"Referensstation": {
			"type": "object",
			"properties": {
				"namn": {
					"type": "string"
				},
				"referensstationTyp": {
					"$ref": "#/definitions/ReferensstationTyp"
				},
				"antennTyp": {
					"type": "string"
				},
				"offset": {
					"$ref": "#/definitions/Offset"
				}
			},
			"required": [
				"namn",
				"referensStation",
				"antennTyp",
				"offset"
			]
		},
		"ReferensstationTyp": {
			"type": "string",
			"enum": [
				"riksnätstation",
				"projektnätstation",
				"basstation"
			]
		},
		"Offset": {
			"type": "object",
			"properties": {
				"avvikelseN": {
					"type": "number"
				},
				"avvikelseE": {
					"type": "number"
				},
				"avvikelseH": {
					"type": "number"
				}
			},
			"required": [
				"avvikelseN",
				"avvikelseE",
				"avvikelseH"
			]
		},
		"MarkeringTyp": {
			"type": "string",
			"enum": [
				"rör",
				"järn i rör",
				"dubb",
				"spik",
				"hål",
				"bult",
				"spira",
				"antenn",
				"prisma",
				"polyfix",
				"reflex",
				"stång",
				"okänd"
			]
		},
		"Underlag": {
			"type": "string",
			"enum": [
				"mark",
				"jord",
				"berg",
				"sten",
				"gjutning",
				"byggnad",
				"tak inkl. torn",
				"mur",
				"asfalt",
				"stolpe",
				"stubbe",
				"träd",
				"okänt"
			]
		},
		"Material": {
			"type": "string",
			"enum": [
				"järn",
				"stål",
				"koppar",
				"mässing",
				"aluminium"
			]
		},
		"Tillbehor": {
			"type": "string",
			"enum": [
				"däcksel",
				"kors",
				"ring",
				"triangel",
				"fyrkant",
				"stjärna",
				"våffla",
				"T-märke",
				"I-märke",
				"Y-märke",
				"pelare",
				"trappa",
				"stativ",
				"väggkonsol",
				"instrumentfäste",
				"platta",
				"plopp",
				"bricka",
				"annat"
			]
		},
		"AldreHojdsystem": {
			"type": "object",
			"properties": {
				"rh00": {
					"type": "number"
				},
				"rh70": {
					"type": "number"
				},
				"rhb70": {
					"type": "number"
				}
			}
		},
		"Sweref99Kartesisk": {
			"type": "object",
			"properties": {
				"x": {
					"type": "number"
				},
				"y": {
					"type": "number"
				},
				"z": {
					"type": "number"
				}
			},
			"required": [
				"x",
				"y",
				"z"
			],
			"additionalProperties": false
		}
	}
}
