Wasserversorgungsgebiete abrufen
Das folgende Beispiel zeigt den GraphQL-Abruf von Wasserversorgungsgebieten, auf die der angebundene Akteur über entsprechende Leserechte verfügt. Damit Wasserversorgungsgebiete erfolgreich abgefragt und angezeigt werden können, muss der angebundene Akteur über Leserechte für die jeweiligen Wasserversorgungsgebiete verfügen. Behörden können diese Berechtigung bereits im Rahmen der Erstellung erhalten, sofern sie als zuständige oder zusätzliche Behörde hinterlegt werden. Zugelassene Untersuchungsstellen sowie Betreiber von Wasserversorgungsanlagen erhalten den Zugriff über die gezielte Zuweisung eines Leserechts.
ws_area:view/api/graphql/serviceWeitere Informationen zu Basis-URLs und Umgebungen stehen im Kapitel Endpunkte.
Welche Abfrage wann?
| Abfrage | Zweck | Eingabe | Rückgabe |
|---|---|---|---|
wsAreaList | Mehrere Wasserversorgungsgebiete abrufen, zum Beispiel für eine Übersicht oder zur Ermittlung der ID für eine Detailabfrage. | input: WsAreaListInput. In diesem Beispiel wird nur pagination verwendet. | Eine Liste von Wasserversorgungsgebieten unter items und die Gesamtzahl unter total. |
wsAreaById | Ein einzelnes Wasserversorgungsgebiet anhand seiner id abrufen. | id: ID!. | Ein WsAreaDetails-Objekt mit zusätzlichen Detailbeziehungen. |
wsAreaList
wsAreaList eignet sich für Übersichten und Trefferlisten. Die Abfrage liefert die Wasserversorgungsgebiete zurück, für die der angebundene Akteur Leserechte besitzt.
Allgemeine Listenfunktionen wie Pagination, Suche, Filterung und Sortierung werden zentral im Kapitel GraphQL-Variablen und Listenabfragen beschrieben. In diesem Beispiel wird nur pagination verwendet, um die Antwort übersichtlich zu halten.
Objektstruktur und Felder
Die folgende Feldliste dokumentiert die Objektstruktur aus dem vollständigen Beispiel. Die Werte werden unter data.wsAreaList.items zurückgegeben.
Die Badges zeigen die Nullbarkeit aus dem GraphQL-Schema. Non-null bedeutet: Der Wert darf bei ausgewähltem Feld nicht null sein. Nullable bedeutet: Der Wert kann je nach Datensatz, Berechtigung oder konditionaler Struktur null sein.
input
WsAreaListInputtotal
Int!items
[WsAreaItem!]!itemsr
ID!id
ID!name
StringgeoLatitude
DecimalgeoLongitude
DecimalgeoEasting
DecimalgeoNorthing
Decimallau2Code
[String!]dailyWaterDelivery
DecimalnumOfPeopleServed
IntrefYearForDelivery
IntexamFreqAParam
IntexamFreqBParam
IntdateOfEstablishment
DateTimedateOfClosure
DateTimesuccessorIds
[String!]comment
StringgeoPosAndExtent
WsAreaShapefileitems.geoPosAndExtentfilehash
String!filename
String!mimeType
String!size
Int!url
String!itemsactive
Boolean!editable
Booleanmodification
Modification!items.modificationcreated
ModificationCreated!items.modification.createdat
DateTime!by
ModificationActor!items.modification.created.by__typename
String!id
IDusername
Stringfullname
StringStringgroup
Stringentity
BasicEntityInfoitems.modification.created.by.entityty
BasicEntityType!name
Stringid
ID!r
ID!items.modificationupdated
ModificationUpdateditems.modification.updatedat
DateTimeby
ModificationActoritems.modification.updated.by__typename
Stringid
IDusername
Stringfullname
StringStringgroup
Stringentity
BasicEntityInfoitems.modification.updated.by.entityty
BasicEntityType!name
Stringid
ID!r
ID!items.modificationdeactivatedAt
DateTimeitemsreasonForClosure
XwasserCodeitems.reasonForClosurecode
String!text
String!desc
Stringitemsauthority
BasicEntityInfoitems.authorityr
ID!id
ID!name
Stringty
BasicEntityType!itemsresponsible
BasicEntityInfoitems.responsibler
ID!id
ID!name
Stringty
BasicEntityType!query WsAreaList($input: WsAreaListInput) {
wsAreaList(input: $input) {
total
items {
r
id
name
geoLatitude
geoLongitude
geoEasting
geoNorthing
lau2Code
dailyWaterDelivery
numOfPeopleServed
refYearForDelivery
examFreqAParam
examFreqBParam
dateOfEstablishment
dateOfClosure
successorIds
comment
geoPosAndExtent {
filehash
filename
mimeType
size
url
}
active
editable
modification {
created {
at
by {
__typename
... on ModificationIdInfo {
id
}
... on ModificationUserInfo {
id
username
fullname
email
group
entity {
r
id
name
ty
}
}
... on ModificationApiClientInfo {
id
entity {
r
id
name
ty
}
}
}
}
updated {
at
by {
__typename
... on ModificationIdInfo {
id
}
... on ModificationUserInfo {
id
username
fullname
email
group
entity {
r
id
name
ty
}
}
... on ModificationApiClientInfo {
id
entity {
r
id
name
ty
}
}
}
}
deactivatedAt
}
reasonForClosure {
code
text
desc
}
authority {
r
id
name
ty
}
responsible {
r
id
name
ty
}
}
}
}{
"input": {
"pagination": {
"page": 0,
"limit": 1
}
}
}{
"data": {
"wsAreaList": {
"total": 2,
"items": [
{
"r": "2B34CE6BE000",
"id": "DEBY/0022054530211840/1780994403118",
"name": "API Testgebiet",
"geoLatitude": "48.137079",
"geoLongitude": "11.576006",
"geoEasting": "691.59",
"geoNorthing": "334718",
"lau2Code": [
"12 0 52 000 0000"
],
"dailyWaterDelivery": "27.4",
"numOfPeopleServed": 100,
"refYearForDelivery": 2025,
"examFreqAParam": 4,
"examFreqBParam": 1,
"dateOfEstablishment": "2020-02-05T23:00:00+00:00",
"dateOfClosure": "2026-06-09T22:00:00+00:00",
"successorIds": [
"DETH/010101"
],
"comment": "Beispielkommentar",
"geoPosAndExtent": null,
"active": true,
"editable": false,
"modification": {
"created": {
"at": "2026-06-09T08:44:22.063902+00:00",
"by": {
"__typename": "ModificationUserInfo",
"id": "b5a50e97-118b-4676-bdf8-4dc58306f180",
"username": "Vorname.Nachname",
"fullname": "Vorname Nachname",
"email": "vorname.nachname@example.org",
"group": "support",
"entity": null
}
},
"updated": {
"at": "2026-06-10T08:50:32.188985+00:00",
"by": {
"__typename": "ModificationUserInfo",
"id": "b5a50e97-118b-4676-bdf8-4dc58306f180",
"username": "Vorname.Nachname",
"fullname": "Vorname Nachname",
"email": "vorname.nachname@example.org",
"group": "support",
"entity": null
}
},
"deactivatedAt": null
},
"reasonForClosure": {
"code": "N",
"text": "N: Neufestlegung von WVG oder Zuordnung zu anderem(n) WVG",
"desc": "Schließung wegen Neufestlegung von Wasserversorgungsgebieten oder Zuordnung zu anderem(n) Wasserversorgungsgebiet"
},
"authority": {
"r": "R092901B140EF8706000",
"id": "BY123GA801",
"name": "Muster Gesundheitsamt",
"ty": "HDP"
},
"responsible": {
"r": "R092901B140EF8706000",
"id": "BY123GA801",
"name": "Muster Gesundheitsamt",
"ty": "HDP"
}
}
]
}
}
}wsAreaById
wsAreaById wird verwendet, wenn die ID eines Wasserversorgungsgebiets bereits bekannt ist. Die ID stammt typischerweise aus wsAreaList.items.id.
Die Detailabfrage liefert dieselben Basisinformationen wie die Listenabfrage und zusätzlich Detailbeziehungen, zum Beispiel zugeordnete Objekte, Anlagen nach TrinkwV und zusätzliche Behörden.
Detailfelder
Die Detailabfrage verwendet als Variable nur die ID des Wasserversorgungsgebiets.
id
ID!objects
BasicEntityInfoList!objectstotal
Int!objects.itemsr
ID!id
ID!name
Stringty
BasicEntityType!deliveryABSystems
BasicEntityInfoList!deliveryABSystemstotal
Int!deliveryABSystems.itemsr
ID!id
ID!name
Stringty
BasicEntityType!additionalAuthorities
[WsAreaAdditionalAuthority!]!additionalAuthoritiesr
ID!id
ID!name
Stringty
BasicEntityType!editable
Boolean!query WsAreaById($id: ID!) {
wsAreaById(id: $id) {
r
id
name
geoLatitude
geoLongitude
geoEasting
geoNorthing
lau2Code
dailyWaterDelivery
numOfPeopleServed
refYearForDelivery
examFreqAParam
examFreqBParam
dateOfEstablishment
dateOfClosure
successorIds
comment
geoPosAndExtent {
filehash
filename
mimeType
size
url
}
active
editable
modification {
created {
at
by {
__typename
... on ModificationIdInfo {
id
}
... on ModificationUserInfo {
id
username
fullname
email
group
entity {
r
id
name
ty
}
}
... on ModificationApiClientInfo {
id
entity {
r
id
name
ty
}
}
}
}
updated {
at
by {
__typename
... on ModificationIdInfo {
id
}
... on ModificationUserInfo {
id
username
fullname
email
group
entity {
r
id
name
ty
}
}
... on ModificationApiClientInfo {
id
entity {
r
id
name
ty
}
}
}
}
deactivatedAt
}
reasonForClosure {
code
text
desc
}
authority {
r
id
name
ty
}
responsible {
r
id
name
ty
}
objects {
total
items {
r
id
name
ty
}
}
deliveryABSystems {
total
items {
r
id
name
ty
}
}
additionalAuthorities {
r
id
name
ty
editable
}
}
}{
"id": "<DUMMY-SHAPTH-ID>"
}{
"data": {
"wsAreaById": {
"r": "2B34CE6BE000",
"id": "DEBY/0022054530211840/1780994403118",
"name": "API Testgebiet",
"geoLatitude": "48.137079",
"geoLongitude": "11.576006",
"geoEasting": "691.59",
"geoNorthing": "334718",
"lau2Code": [
"12 0 52 000 0000"
],
"dailyWaterDelivery": "27.4",
"numOfPeopleServed": 100,
"refYearForDelivery": 2025,
"examFreqAParam": 4,
"examFreqBParam": 1,
"dateOfEstablishment": "2020-02-05T23:00:00+00:00",
"dateOfClosure": "2026-06-09T22:00:00+00:00",
"successorIds": [
"DETH/010101"
],
"comment": "Beispielkommentar",
"geoPosAndExtent": null,
"active": true,
"editable": false,
"modification": {
"created": {
"at": "2026-06-09T08:44:22.063902+00:00",
"by": {
"__typename": "ModificationUserInfo",
"id": "b5a50e97-118b-4676-bdf8-4dc58306f180",
"username": "Vorname.Nachname",
"fullname": "Vorname Nachname",
"email": "vorname.nachname@example.org",
"group": "support",
"entity": null
}
},
"updated": {
"at": "2026-06-10T08:50:32.188985+00:00",
"by": {
"__typename": "ModificationUserInfo",
"id": "b5a50e97-118b-4676-bdf8-4dc58306f180",
"username": "Vorname.Nachname",
"fullname": "Vorname Nachname",
"email": "vorname.nachname@example.org",
"group": "support",
"entity": null
}
},
"deactivatedAt": null
},
"reasonForClosure": {
"code": "N",
"text": "N: Neufestlegung von WVG oder Zuordnung zu anderem(n) WVG",
"desc": "Schließung wegen Neufestlegung von Wasserversorgungsgebieten oder Zuordnung zu anderem(n) Wasserversorgungsgebiet"
},
"authority": {
"r": "R092901B140EF8706000",
"id": "BY123GA801",
"name": "Muster Gesundheitsamt",
"ty": "HDP"
},
"responsible": {
"r": "R092901B140EF8706000",
"id": "BY123GA801",
"name": "Muster Gesundheitsamt",
"ty": "HDP"
},
"objects": {
"total": 1,
"items": [
{
"r": "R092901B140EF8706001",
"id": "BY175OB0721",
"name": "Beispielobjekt",
"ty": "OBJ"
}
]
},
"deliveryABSystems": {
"total": 1,
"items": [
{
"r": "R092901B140EF8706002",
"id": "BY175TWA5884163",
"name": "Beispielanlage",
"ty": "SYS"
}
]
},
"additionalAuthorities": [
{
"r": "R092901B140EF8706003",
"id": "BY123GA802",
"name": "Zusätzliche Behörde",
"ty": "HDP",
"editable": true
}
]
}
}
}Mögliche Rückgabewerte
XWasser-Codes
Felder vom Typ XwasserCode liefern code, text und desc. Die gültigen Werte werden in den XWasser-Codelisten gepflegt. Die allgemeine XWasser-Übersicht ist im XRepository unter XWasser auffindbar. Die folgende Übersicht verlinkt die XRepository-Seiten der Codelisten. Die konkret verwendeten Dateien stehen zur Orientierung daneben. Darunter sind die Codelisten vollständig abgebildet.
| Feld | XRepository | Verwendete Codeliste |
|---|---|---|
reasonForClosure | Codeliste im XRepository öffnen. | Grund Schließung Wasserversorgungsgebiet_1.xml |
Grund der Schließung
Verwendete Version: Grund Schließung Wasserversorgungsgebiet_1.xml · Hinweis: Ggf. aktuelle Codeliste im XRepository öffnen.
| Code | Grund | Beschreibung |
|---|---|---|
N | N: Neufestlegung von WVG oder Zuordnung zu anderem(n) WVG | Schließung wegen Neufestlegung von Wasserversorgungsgebieten oder Zuordnung zu anderem(n) Wasserversorgungsgebiet |
O | O: Andere Gründe | Andere Gründe für geänderte Trinkwasserbereitstellung |
W | W: Schlechte Wasserqualität | Schlechte Wasserqualität, bei einem oder mehreren Parametern konnte der Grenzwert über längeren Zeitraum (z. B. 3 mal 3 Jahre) nicht eingehalten werden, geeignete Abhilfemaßnahmen waren nicht erfolgreich oder möglich |
GraphQL-Enums
BasicEntityType wird in diesem Use Case bei authority.ty, responsible.ty, objects.items.ty, deliveryABSystems.items.ty und additionalAuthorities.ty verwendet.
BasicEntityType
| Wert | Bedeutung |
|---|---|
OLB | Obere Landesbehörde |
OLB_B | Mittlere Landesbehörde |
HDP | Gesundheitsamt bzw. Health Department |
LAB | Zugelassene Untersuchungsstelle bzw. Labor |
LAB_B | Niederlassung einer zugelassenen Untersuchungsstelle |
WSP | Wasserversorger bzw. Betreiber |
WSP_B | Niederlassung eines Wasserversorgers bzw. Betreibers |
SYS | Wasserversorgungsanlage |
OBJ | Objekt |
SPT | Probennahmestelle |
NONE | Kein Entitätstyp bzw. nicht zugeordnet |
Such- und Sortier-Enums
| Enum | Werte | Einsatz |
|---|---|---|
WsAreaSearchField | ID, NAME | Suchfelder für input.search.fields bei wsAreaList |
WsAreaSortField | ID, NAME, CREATED_AT, CREATED_BY, UPDATED_AT, UPDATED_BY | Sortierfelder für input.sort.by bei wsAreaList |
SortOrder | ASC, DESC | Sortierreihenfolge für input.sort.order |