- Beispiele
- Indexabfragen
- Abfragen des Systemdatenverzeichnisses (Objekttypdaten)
- Abfragen des Systemdatenverzeichnisses (Funktionsdaten)
- Objektabfragen
- Einzelbefehls-Transaktion
- Komplexe Transaktion: Verbund-Ausgabe, ohne explizite Statement-Indizierung
- Komplexe Transaktion: Verbund-Ausgabe, mit expliziter Statement-Indizierung
- Komplexe Transaktion: Verbund-Ausgabe, explizite Statement-Indizierung und Constraint-Angabe; Filterung unbenötigter Objektattribute
- Komplexe Transaktion: Ausgabe globaler Objektattribute
- Komplexe Transaktion: Objektsuche über globale Objektattribute
- Objektmodifikationen
- Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit nicht-leerer Antwort (dns.record.create)
- Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit nicht-leerer Antwort (dns.record.imp)
- Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit nicht-leerer Antwort (nd.device.imp)
- Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit leerer Antwort (dns.record.delete)
- Komplexe Transaktion mit mehreren Dateneingaben und -Ausgaben und expliziter Statement-Indizierung
Beispiele
Die nachfolgenden Beispiele dienen ausschließlich der prinzipiellen Veranschaulichung und haben keinen Anspruch auf Korrektheit. Sie sind daher inhaltlich als ungültig zu betrachten. Verbindliche Daten müssen über den Objekttyp- bzw. Funktionsindex der WebAPI abgefragt werden.
Hinweise:
- Je nach Betriebssystem bzw. Kommandozeileninterpreter (Shell) wird der Backslash ‘\‘ als Shell-Escape-Character verwendet. Eine einfache Formatierung der JSON-Ausgabe mit Zeilenumbrüchen und Einrückungen erreicht man z.B. mit ‘curl … | python -m json.tool’.
- Aus Sicherheitsgründen empfiehlt es sich, den Token-Text in einer curl-Konfigurationsdatei zu hinterlegen bzw. diese vorher entsprechend zu generieren. Der Token-Text sollte nicht direkt über die Kommandozeile übergeben werden.
- Bei GET-Requests müssen Sonderzeichen
[]
,{}
in der Parameterzeichenkette (query string) entweder einen vorangestellten Backslash bekommen, oder man verwendet die curl-Option-g
bzw.--globoff
.
Indexabfragen
Die Indexabfragen erlauben es, die gültigen Wertebelegungen der jeweils nächsten Unterebene des URI-Schemas festzustellen.
Versionsindex
- Ziel: Ausgabe der implementierten Versionen
- Inhalt der curl-Konfigurationsdatei
curl.cfg
(Authentifizierung nicht erforderlich):
--url "https://api.netdb.scc.kit.edu"
--header "Content-Type: application/json"
- Aufruf:
curl --config curl.cfg
- Antwort:
[
[
{
"description": null,
"doc_uri": "https://doku.netdb.scc.kit.edu/webapi/3.2/intro",
"last_status_change_date": "03.03.2022 18:10:54.358366 CET",
"major": 3,
"minor": 2,
"numeric": "3.2.22",
"patch": 22,
"semantic": "alpha",
"status": "Entwicklung"
},
{
"description": null,
"doc_uri": "https://doku.netdb.scc.kit.edu/webapi/3.1/intro",
"last_status_change_date": "03.03.2022 18:10:54.358366 CET",
"major": 3,
"minor": 1,
"numeric": "3.1.16",
"patch": 16,
"semantic": "release",
"status": "aktuelle Version für den Produktionsbetrieb"
},
{
"description": null,
"doc_uri": "https://doku.netdb.scc.kit.edu/webapi/3.0/intro",
"last_status_change_date": "03.03.2022 18:10:54.358366 CET",
"major": 3,
"minor": 0,
"numeric": "3.0.9",
"patch": 9,
"semantic": "oldrelease",
"status": "veraltete Version (Vorgänger der aktuellen Version)"
}
]
]
Systemindex
- Ziel: Ausgabe aller unter Version
3.2
implementierten Systeme - Inhalt der curl-Konfigurationsdatei
curl.cfg
(Authentifizierung nicht erforderlich):
--url "https://api.netdb.scc.kit.edu/3.2"
--header "Content-Type: application/json"
- Aufruf:
curl --config curl.cfg
- Antwort:
[
[
{
"description": "DNSVS",
"name": "dns"
},
{
"description": "Netzdokumentation",
"name": "nd"
},
{
"description": "Netzmanagement",
"name": "nm"
},
{
"description": "DB-Event-Log",
"name": "evlog"
},
{
"description": "WebAPI - Systemdatenbereich",
"name": "wapi"
},
{
"description": "DNS Security Extensions",
"name": "dnssec"
},
{
"description": "macadress-basierte Authentifizierung",
"name": "macauth"
},
{
"description": "DHCPVS",
"name": "dhcp"
},
{
"description": "DNSVS - Konfiguration",
"name": "dnscfg"
},
{
"description": "DHCPVS - Konfiguration",
"name": "dhcpcfg"
},
{
"description": "Netzdokumentation - Konfiguration",
"name": "ndcfg"
},
{
"description": "Organisationsstruktur (OEs/Verwaltungseinheiten)",
"name": "org"
},
{
"description": "Zentrale Funktionen (Admin, Systemverzeichnis, Benutzerkonten, Gruppen, Rollen etc.)",
"name": "cntl"
}
]
]
Objekttypindex
- Ziel: Ausgabe der in Version
3.2
im Systemorg
implementierten Objekttypen - Inhalt der curl-Konfigurationsdatei
curl.cfg
(Authentifizierung nicht erforderlich):
--url "https://api.netdb.scc.kit.edu/3.2/org"
--header "Content-Type: application/json"
- Aufruf:
curl --config curl.cfg
- Antwort:
[
[
{
"attributes": {
"gpk": {
"data_type": "uuid",
"description_detail": "Globaler Primärschlüssel des Objektdatensatzes (Organisationseinheits-Typ)",
"description_obj_type_scope": "Globaler Primärschlüssel",
"description_sys_scope": "Globaler Organisationseinheits-Typ-Primärschlüssel",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"name": {
"data_type": "text_short",
"description_detail": "Name des OE-Typs",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Typ-Name",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"position": {
"data_type": "integer8",
"description_detail": "willkürliche Position zur Sortierung des OE-Typs",
"description_obj_type_scope": "Sortierung",
"description_sys_scope": "OE-Typ-Sortierung",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"short_name": {
"data_type": "text_kw_mc_short",
"description_detail": "Kurzbezeichnung des OE-Typs",
"description_obj_type_scope": "Kurzbezeichnung",
"description_sys_scope": "OE-Typ-Kurzbezeichnung",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
}
},
"constraints": {
"api_pkey_org_unit_type": {
"attributes": [
"gpk"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "pkey_org_unit_type",
"is_deferred": false,
"type": "P"
},
"api_unq_org_unit_type": {
"attributes": [
"short_name"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "unq_org_unit_type_sname",
"is_deferred": false,
"type": "UP"
},
"api_unq_org_unit_type_name": {
"attributes": [
"name"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "unq_org_unit_type_name",
"is_deferred": false,
"type": "U"
}
},
"description_abbrev": "OET",
"description_detail": "Organisationseinheits-Typen",
"description_title": "Arten von Organisationseinheiten",
"fq_name": "org.unit_type",
"is_log_dst": false,
"is_log_src": false,
"is_otattr_dst": false,
"is_otattr_src": true,
"name": "unit_type",
"referenceable": {
"api_pkey_org_unit_type": {
"attributes": [
"gpk"
],
"is_deferred": false,
"referenced_by": [],
"type": "P"
},
"api_unq_org_unit_type": {
"attributes": [
"short_name"
],
"is_deferred": false,
"referenced_by": [],
"type": "UP"
},
"api_unq_org_unit_type_name": {
"attributes": [
"name"
],
"is_deferred": false,
"referenced_by": [
{
"is_join_default": true,
"name": "api_fkey_org_unit_type",
"object_type": "unit",
"system": "org"
}
],
"type": "U"
}
},
"referencing": {},
"system": "org"
},
{
"attributes": {
"gpk": {
"data_type": "uuid",
"description_detail": "Globaler Primärschlüssel des Objektdatensatzes (Organisationseinheit)",
"description_obj_type_scope": "Globaler Primärschlüssel",
"description_sys_scope": "Globaler Organisationseinheits-Primärschlüssel",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"is_mgr_assignable": {
"data_type": "boolean",
"description_detail": "Sperre für Zuordbarkeit der OE-Betreuer, um zu große OE-Teilbäume für Betreuer zu verhindern.",
"description_obj_type_scope": "ist OE-Betreuern zuordbar",
"description_sys_scope": "OE ist Betreuern zuordbar",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"name": {
"data_type": "text_short",
"description_detail": "Name der Organisationseinheit",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Name",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"parent_short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "eindeutiger kurzer Name der übergeordneten Organisationseinheit",
"description_obj_type_scope": "üg. Kurzbezeichnung",
"description_sys_scope": "üg. OE-Kurzbezeichnung",
"is_core": true,
"is_deprecated": false,
"is_nullable": true
},
"root_node_set": {
"data_type": "integer8_array",
"description_detail": "Menge (Set) der Knoten-IDs aller übergeordneten Organisationseinheiten in hierarchischer Reihenfolge",
"description_obj_type_scope": "Pfad Richtung Wurzel",
"description_sys_scope": "Pfad der OE-Knoten Richtung Wurzelknoten",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "Abkürzung der Organisationseinheit",
"description_obj_type_scope": "Kurzbezeichnung",
"description_sys_scope": "OE-Kurzbezeichnung",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"sub_position": {
"data_type": "integer8",
"description_detail": "willkürliche Position zur Sortierung der OE innerhalb der übergeordneten OE",
"description_obj_type_scope": "Position",
"description_sys_scope": "OE-Position",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"tree_level": {
"data_type": "integer4",
"description_detail": "Hierarchieebene des OE-Knotens im ORG-Baum. Wurzelknoten haben Stufe 0.",
"description_obj_type_scope": "Stufe",
"description_sys_scope": "Stufe der OE im ORG-Baum",
"is_core": false,
"is_deprecated": false,
"is_nullable": false
},
"type": {
"data_type": "text_short",
"description_detail": "Name des OE-Typs",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Typ-Name",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
}
},
"constraints": {
"api_chk_org_unit_sname": {
"attributes": [
"short_name"
],
"description": "OE-Kurzbezeichnung enthält keinen Hierarchie-Separator ':'",
"errors": [],
"grants_read_access": false,
"internal_name": "chk_org_unit_sname",
"is_deferred": false,
"type": "C"
},
"api_fkey_org_unit_parent": {
"attributes": [
"parent_short_name"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "fkey_org_unit_parent",
"is_deferred": false,
"type": "F"
},
"api_fkey_org_unit_type": {
"attributes": [
"type"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "fkey_org_unit_type",
"is_deferred": false,
"type": "F"
},
"api_func_org_unit_is_intersect_of_root_node_set": {
"attributes": [
"root_node_set"
],
"description": "OE ist gleich- oder über- oder untergeordnet",
"errors": [],
"grants_read_access": false,
"internal_name": "func_org_unit_is_intersect_of_root_node_set",
"is_deferred": false,
"type": "FN"
},
"api_func_org_unit_is_subset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"description": "OE ist gleich- oder übergeordnet",
"errors": [],
"grants_read_access": false,
"internal_name": "func_org_unit_is_subset_of_root_node_set",
"is_deferred": false,
"type": "FN"
},
"api_func_org_unit_is_superset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"description": "OE ist gleich- oder untergeordnet",
"errors": [],
"grants_read_access": false,
"internal_name": "func_org_unit_is_superset_of_root_node_set",
"is_deferred": false,
"type": "FN"
},
"api_pkey_org_unit": {
"attributes": [
"gpk"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "pkey_org_unit",
"is_deferred": false,
"type": "P"
},
"api_unq_org_unit": {
"attributes": [
"short_name"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "unq_org_unit_sname",
"is_deferred": false,
"type": "UP"
},
"api_unq_org_unit_pos": {
"attributes": [
"parent_short_name",
"sub_position"
],
"description": "Position ist innerhalb der übergeordneten OE eindeutig",
"errors": [],
"grants_read_access": false,
"internal_name": "unq_org_unit_pos",
"is_deferred": false,
"type": "U"
},
"api_unq_org_unit_root_node_set": {
"attributes": [
"root_node_set"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "unq_org_unit_hpk_list",
"is_deferred": false,
"type": "U"
}
},
"description_abbrev": "OE",
"description_detail": "Organisationseinheiten",
"description_title": "Organisationseinheiten",
"fq_name": "org.unit",
"is_log_dst": false,
"is_log_src": true,
"is_otattr_dst": false,
"is_otattr_src": true,
"name": "unit",
"referenceable": {
"api_pkey_org_unit": {
"attributes": [
"gpk"
],
"is_deferred": false,
"referenced_by": [],
"type": "P"
},
"api_unq_org_unit": {
"attributes": [
"short_name"
],
"is_deferred": false,
"referenced_by": [
{
"is_join_default": true,
"name": "api_fkey_cntl_group_ou",
"object_type": "group",
"system": "cntl"
},
{
"is_join_default": true,
"name": "api_fkey_cntl_mgr2ou_ou",
"object_type": "mgr2ou",
"system": "cntl"
},
{
"is_join_default": true,
"name": "api_fkey_dns_fqdn2ou_ou",
"object_type": "fqdn2ou",
"system": "dns"
},
{
"is_join_default": true,
"name": "api_fkey_nd_bcd2ou_ou",
"object_type": "bcd2ou",
"system": "nd"
},
{
"is_join_default": true,
"name": "api_fkey_org_unit_parent",
"object_type": "unit",
"system": "org"
}
],
"type": "UP"
},
"api_unq_org_unit_pos": {
"attributes": [
"parent_short_name",
"sub_position"
],
"is_deferred": false,
"referenced_by": [],
"type": "U"
},
"api_unq_org_unit_root_node_set": {
"attributes": [
"root_node_set"
],
"is_deferred": false,
"referenced_by": [
{
"is_join_default": false,
"name": "api_func_org_unit_is_intersect_of_root_node_set",
"object_type": "unit",
"system": "org"
},
{
"is_join_default": false,
"name": "api_func_org_unit_is_subset_of_root_node_set",
"object_type": "unit",
"system": "org"
},
{
"is_join_default": false,
"name": "api_func_org_unit_is_superset_of_root_node_set",
"object_type": "unit",
"system": "org"
}
],
"type": "U"
}
},
"referencing": {
"api_fkey_org_unit_parent": {
"attributes": [
"parent_short_name"
],
"grants_read_access": false,
"is_deferred": false,
"is_join_default": true,
"on_delete": "raise",
"references": {
"name": "api_unq_org_unit",
"object_type": "unit",
"system": "org"
}
},
"api_fkey_org_unit_type": {
"attributes": [
"type"
],
"grants_read_access": false,
"is_deferred": false,
"is_join_default": true,
"on_delete": "raise",
"references": {
"name": "api_unq_org_unit_type_name",
"object_type": "unit_type",
"system": "org"
}
},
"api_func_org_unit_is_intersect_of_root_node_set": {
"attributes": [
"root_node_set"
],
"grants_read_access": false,
"is_deferred": null,
"is_join_default": false,
"on_delete": null,
"references": {
"name": "api_unq_org_unit_root_node_set",
"object_type": "unit",
"system": "org"
}
},
"api_func_org_unit_is_subset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"grants_read_access": false,
"is_deferred": null,
"is_join_default": false,
"on_delete": null,
"references": {
"name": "api_unq_org_unit_root_node_set",
"object_type": "unit",
"system": "org"
}
},
"api_func_org_unit_is_superset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"grants_read_access": false,
"is_deferred": null,
"is_join_default": false,
"on_delete": null,
"references": {
"name": "api_unq_org_unit_root_node_set",
"object_type": "unit",
"system": "org"
}
}
},
"system": "org"
}
]
]
Funktionsindex
- Ziel: Ausgabe der in Version
3.2
im Systemorg
und dem Objekttypou
verfügbaren Funktionen - Inhalt der curl-Konfigurationsdatei
curl.cfg
(Authentifizierung nicht erforderlich):
--url "https://api.netdb.scc.kit.edu/3.2/org/unit"
--header "Content-Type: application/json"
- Aufruf:
curl --config curl.cfg
- Antwort:
[
[
{
"fq_name": "org.unit.create",
"is_data_manipulating": true,
"is_executable": true,
"is_returning": true,
"is_returning_referenceable": true,
"name": "create",
"object_type": "unit",
"parameters": {
"is_mgr_assignable": {
"data_type": "boolean",
"description_detail": "Sperre für Zuordbarkeit der OE-Betreuer, um zu große OE-Teilbäume für Betreuer zu verhindern.",
"description_obj_type_scope": "ist OE-Betreuern zuordbar",
"description_sys_scope": "OE ist Betreuern zuordbar",
"is_deprecated": false,
"new": {
"data_default": true,
"is_nullable": false,
"is_required": false
}
},
"name": {
"data_type": "text_short",
"description_detail": "Name der Organisationseinheit",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Name",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": true
}
},
"parent_short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "eindeutiger kurzer Name der übergeordneten Organisationseinheit",
"description_obj_type_scope": "üg. Kurzbezeichnung",
"description_sys_scope": "üg. OE-Kurzbezeichnung",
"is_deprecated": false,
"new": {
"is_nullable": true,
"is_required": false
}
},
"short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "Abkürzung der Organisationseinheit",
"description_obj_type_scope": "Kurzbezeichnung",
"description_sys_scope": "OE-Kurzbezeichnung",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": true
}
},
"sub_position": {
"data_type": "integer8",
"description_detail": "willkürliche Position zur Sortierung der OE innerhalb der übergeordneten OE",
"description_obj_type_scope": "Position",
"description_sys_scope": "OE-Position",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": false
}
},
"type": {
"data_type": "text_short",
"description_detail": "Name des OE-Typs",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Typ-Name",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": true
}
}
},
"system": "org"
},
{
"fq_name": "org.unit.delete",
"is_data_manipulating": true,
"is_executable": true,
"is_returning": false,
"is_returning_referenceable": false,
"name": "delete",
"object_type": "unit",
"parameters": {
"merge_short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "OE, die die BCD-Zuordnungen der alten OE ersetzen soll.",
"description_obj_type_scope": "Kurzbezeichnung für Ersatz",
"description_sys_scope": "OE-Kurzbezeichnung für Ersatz",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": false
}
},
"short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "Abkürzung der Organisationseinheit",
"description_obj_type_scope": "Kurzbezeichnung",
"description_sys_scope": "OE-Kurzbezeichnung",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": true
}
}
},
"system": "org"
},
{
"fq_name": "org.unit.list",
"is_data_manipulating": false,
"is_executable": true,
"is_returning": true,
"is_returning_referenceable": false,
"name": "list",
"object_type": "unit",
"parameters": {
"do_root_only": {
"data_type": "boolean",
"description_detail": "Rekursive Ausgabe der höchsten übergeordneten OE (Wurzelknoten).",
"description_obj_type_scope": "rekursive Ausgabe (nur Wurzelknoten)",
"description_sys_scope": "rekursive OE-Ausgabe (nur Wurzelknoten)",
"is_deprecated": true,
"old": {
"data_default": false,
"is_nullable": false,
"is_required": false
}
},
"do_rootpath": {
"data_type": "boolean",
"description_detail": "Ausgabe aller übergeordneten OEs.",
"description_obj_type_scope": "rekursive Ausgabe (Richtung Wurzelknoten)",
"description_sys_scope": "rekursive OE-Ausgabe (Richtung Wurzelknoten)",
"is_deprecated": true,
"old": {
"data_default": false,
"is_nullable": false,
"is_required": false
}
},
"do_subtree": {
"data_type": "boolean",
"description_detail": "Ausgabe aller untergeordneten OEs.",
"description_obj_type_scope": "rekursive Ausgabe (Richtung Unterzweige)",
"description_sys_scope": "rekursive OE-Ausgabe (Richtung Unterzweige)",
"is_deprecated": true,
"old": {
"data_default": false,
"is_nullable": false,
"is_required": false
}
},
"fetch_limit": {
"data_type": "integer8",
"description_detail": "Obergrenze der Anzahl der ausgegebenen Datensätze. Wenn keine Sortierung verwendet wird, kann das Ergebnis mehrerer gleichartiger Abfragen verschieden sein.",
"description_obj_type_scope": "maximale Anzahl der Ergebnisdatensätze",
"description_sys_scope": "maximale Anzahl der Ergebnisdatensätze",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"fetch_offset": {
"data_type": "integer8",
"description_detail": "Anzahl der Datensätze, die zu Beginn der Ausgabe übersprungen werden. Wenn keine Sortierung verwendet wird, kann das Ergebnis mehrerer gleichartiger Abfragen verschieden sein.",
"description_obj_type_scope": "Anzahl der zu ignorierenden Ergebnisdatensätze",
"description_sys_scope": "Anzahl der zu ignorierenden Ergebnisdatensätze",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"filter_params_dict": {
"data_type": "json_object",
"description_detail": "JSON-Dict der zu filternden Objektattribute. Erwartete Schlüssel und Format: '{ \"show\": true | false, \"attrs_list\": [\"<attribute_name>\", ...] }'. Für 'show' = true werden nur die Attribute in 'attrs_list' zurückgegeben (Positivfilter); für 'show' = false werden alle außer den Attributen in 'attrs_list' zurückgegeben (Negativfilter). Für '{ \"show\": true, \"attrs_list\": null }' wird das zurückgegebene JSON-Array des Statements komplett leer sein.",
"description_obj_type_scope": "Filterparameter",
"description_sys_scope": "Filterparameter",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"gpk": {
"data_type": "uuid",
"description_detail": "Globaler Primärschlüssel des Objektdatensatzes (Organisationseinheit)",
"description_obj_type_scope": "Globaler Primärschlüssel",
"description_sys_scope": "Globaler Organisationseinheits-Primärschlüssel",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"is_mgr_assignable": {
"data_type": "boolean",
"description_detail": "Sperre für Zuordbarkeit der OE-Betreuer, um zu große OE-Teilbäume für Betreuer zu verhindern.",
"description_obj_type_scope": "ist OE-Betreuern zuordbar",
"description_sys_scope": "OE ist Betreuern zuordbar",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"name_regexp": {
"data_type": "regexp",
"description_detail": "Regulärer Ausdruck des Suchmusters für OE-Bezeichnungen",
"description_obj_type_scope": "Bezeichnungs-RE",
"description_sys_scope": "OE-Bezeichnungs-RE",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "Abkürzung der Organisationseinheit",
"description_obj_type_scope": "Kurzbezeichnung",
"description_sys_scope": "OE-Kurzbezeichnung",
"is_deprecated": false,
"old": {
"is_nullable": true,
"is_required": false
}
},
"short_name_regexp": {
"data_type": "regexp",
"description_detail": "Regulärer Ausdruck des Suchmusters für OE-Kurzbezeichnungen",
"description_obj_type_scope": "Kurzbezeichnungs-RE",
"description_sys_scope": "OD-Kurzbezeichnungs-RE",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"sorting_params_list": {
"data_type": "text_array",
"description_detail": "Liste der Sortierungsparameter (Literale). Pro Parameter gilt das Muster '<attribute_name> [ASC | DESC ] [ NULLS { FIRST | LAST }]'. <attribute_name> darf nicht mehrfach vorkommen.",
"description_obj_type_scope": "Sortierungsparameter",
"description_sys_scope": "Sortierungsparameter",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"tree_level": {
"data_type": "integer4",
"description_detail": "Hierarchieebene des OE-Knotens im ORG-Baum. Wurzelknoten haben Stufe 0.",
"description_obj_type_scope": "Stufe",
"description_sys_scope": "Stufe der OE im ORG-Baum",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
},
"type": {
"data_type": "text_short",
"description_detail": "Name des OE-Typs",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Typ-Name",
"is_deprecated": false,
"old": {
"is_nullable": false,
"is_required": false
}
}
},
"system": "org"
},
{
"fq_name": "org.unit.update",
"is_data_manipulating": true,
"is_executable": true,
"is_returning": true,
"is_returning_referenceable": true,
"name": "update",
"object_type": "unit",
"parameters": {
"is_mgr_assignable": {
"data_type": "boolean",
"description_detail": "Sperre für Zuordbarkeit der OE-Betreuer, um zu große OE-Teilbäume für Betreuer zu verhindern.",
"description_obj_type_scope": "ist OE-Betreuern zuordbar",
"description_sys_scope": "OE ist Betreuern zuordbar",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": false
}
},
"name": {
"data_type": "text_short",
"description_detail": "Name der Organisationseinheit",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Name",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": false
}
},
"parent_short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "eindeutiger kurzer Name der übergeordneten Organisationseinheit",
"description_obj_type_scope": "üg. Kurzbezeichnung",
"description_sys_scope": "üg. OE-Kurzbezeichnung",
"is_deprecated": false,
"new": {
"is_nullable": true,
"is_required": false
}
},
"short_name": {
"data_type": "text_kw_uc_short",
"description_detail": "Abkürzung der Organisationseinheit",
"description_obj_type_scope": "Kurzbezeichnung",
"description_sys_scope": "OE-Kurzbezeichnung",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": false
},
"old": {
"is_nullable": false,
"is_required": true
}
},
"sub_position": {
"data_type": "integer8",
"description_detail": "willkürliche Position zur Sortierung der OE innerhalb der übergeordneten OE",
"description_obj_type_scope": "Position",
"description_sys_scope": "OE-Position",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": false
}
},
"type": {
"data_type": "text_short",
"description_detail": "Name des OE-Typs",
"description_obj_type_scope": "Name",
"description_sys_scope": "OE-Typ-Name",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": false
}
}
},
"system": "org"
}
]
]
Abfragen des Systemdatenverzeichnisses (Objekttypdaten)
- Ziel: Ausgabe der Objektdaten für System
wapi
, Objekttypobject_type
, Eingrenzung der Suche auf den Systemnamen “dns” und den Objekttypnamen “fqdn” - entspricht: Ausgabe der Objekttypdaten für System
dns
, Objekttypfqdn
- Inhalt der curl-Konfigurationsdatei
curl.cfg
(Authentifizierung nicht erforderlich):
--header "Content-Type: application/json"
- Aufruf als GET-Request:
curl --globoff --config curl.cfg 'https://api.netdb.scc.kit.edu/3.2/wapi/object_type/list?system_list=["dns"]&name_list=["fqdn"]'
- Gleichwertiger Aufruf als POST-Request:
curl --config curl.cfg -d '{"old": {"system_list": ["dns"], "name_list": ["fqdn"]}}' 'https://api.netdb.scc.kit.edu/3.2/wapi/object_type/list'
- Antwort:
[
[
{
"attributes": {
"description": {
"data_type": "text_short",
"description_detail": "Freitext-Info zum FQDN",
"description_obj_type_scope": "Info",
"description_sys_scope": "FQDN-Info",
"is_core": true,
"is_deprecated": false,
"is_nullable": true
},
"gpk": {
"data_type": "uuid",
"description_detail": "Globaler Primärschlüssel des Objektdatensatzes (Namensobjekt)",
"description_obj_type_scope": "Globaler Primärschlüssel",
"description_sys_scope": "Globaler Namensobjekt-Primärschlüssel",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"has_rr": {
"data_type": "boolean",
"description_detail": "Diesem FQDN sind Resource Records zugeordnet",
"description_obj_type_scope": "hat Resource Records",
"description_sys_scope": "FQDN hat Resource Records",
"is_core": false,
"is_deprecated": false,
"is_nullable": false
},
"is_dhcp": {
"data_type": "boolean",
"description_detail": "DHCP-Hostnamens-Attribut: FQDN's dieses Typs sind für adreßbasierte RR's (Basis-Hostnamen für DHCP-Betrieb) vorgesehen und unterliegen der DHCP-Anwendungslogik",
"description_obj_type_scope": "DHCP-Hostnamens-Attribut",
"description_sys_scope": "DBNT-DHCP-Hostnamens-Attribut",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"is_empty_nonterminal": {
"data_type": "boolean",
"description_detail": "FQDN hat keine RRs (empty), hat aber Subdomains (Untereinträge), die wiederum RRs haben (nonterminal)",
"description_obj_type_scope": "ist empty/nonterminal",
"description_sys_scope": "FQDN ist empty/nonterminal",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"is_host": {
"data_type": "boolean",
"description_detail": "Hostnamens-Attribut: FQDN's dieses Typs sind für adreßbasierte RR's (Host-Kontext) vorgesehen",
"description_obj_type_scope": "Hostnamens-Attribut",
"description_sys_scope": "DBNT-Hostnamens-Attribut",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"is_nonterminal": {
"data_type": "boolean",
"description_detail": "Non-Terminal-FQDN-Attribut: wenn 'true', sind Untereinträge (Subdomains) unter FQDN's dieses Typs möglich. Außerdem ist die Referenzierung als Zone, Netzbereichszuordnung (BCD), Permission-Zuordnung, DHCP-Subdomain möglich.",
"description_obj_type_scope": "Non-Terminal-FQDN-Attribut",
"description_sys_scope": "DBNT-Non-Terminal-FQDN-Attribut",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"is_own": {
"data_type": "boolean",
"description_detail": "FQDN ist dem eigenem Namensraum des Benutzers zugeordnet.",
"description_obj_type_scope": "ist eigener FQDN",
"description_sys_scope": "ist eigener FQDN",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"is_wildcard": {
"data_type": "boolean",
"description_detail": "Wildcard-Attribut: FQDN's dieses Typs (Label: '*') sind für Wildcard-RR's vorgesehen",
"description_obj_type_scope": "Wildcard-Attribut",
"description_sys_scope": "DBNT-Wildcard-Attribut",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"label": {
"data_type": "fqdn_label",
"description_detail": "linker Teil des FQDN's bis zum ersten Punkt",
"description_obj_type_scope": "Label",
"description_sys_scope": "DNS-Label",
"is_core": true,
"is_deprecated": false,
"is_nullable": true
},
"parent_value": {
"data_type": "fqdn",
"description_detail": "übergeordneter Domainname (FQDN)",
"description_obj_type_scope": "üg. FQDN",
"description_sys_scope": "üg. Domainname (FQDN)",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"rad_type": {
"data_type": "integer8",
"description_detail": "Reverse-Adreß-Domain-Attribut: FQDN's dieses Typs sind für Reverse-Adreß-Domains (PTR-RR's, Namensraum je nach Attributwert > 0) vorgesehen",
"description_obj_type_scope": "RAD-Attribut",
"description_sys_scope": "DBNT-RAD-Attribut",
"is_core": true,
"is_deprecated": false,
"is_nullable": false,
"supported_values": {
"0": "[nicht belegt]",
"1": "ENUM (E.164)",
"4": "IPv4",
"6": "IPv6"
}
},
"root_node_set": {
"data_type": "integer8_array",
"description_detail": "Menge (Set) der Knoten-IDs aller übergeordneten FQDNs in hierarchischer Reihenfolge",
"description_obj_type_scope": "Pfad Richtung Wurzel",
"description_sys_scope": "Pfad der FQDN-Knoten Richtung Wurzelknoten",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"rr_chain_target_bcd_list": {
"data_type": "text_array",
"description_detail": "BCD-Liste für RRs des FQDNs mit Ziel-Adressauflösung (RR-Kette endet an IP-Adresse, deren BCD in der Liste steht).",
"description_obj_type_scope": "BCD-Liste der Ziel-IP-Adressen via RR-Kette",
"description_sys_scope": "BCD-Liste der Ziel-IP-Adressen via RR-Kette des FQDNs",
"is_core": false,
"is_deprecated": true,
"is_nullable": true
},
"rr_chain_target_is_own": {
"data_type": "boolean",
"description_detail": "FQDN hat RRs und die RR-Kette hat Adressauflösung und ist dem betreuerbasierten Adressraum des ausführenden Benutzerkontos zugeordnet.",
"description_obj_type_scope": "ist eigenem Adressraum zuordbar",
"description_sys_scope": "ist eigenem Adressraum zuordbar",
"is_core": false,
"is_deprecated": false,
"is_nullable": false
},
"rr_chain_target_subnet_list": {
"data_type": "ip_network_array",
"description_detail": "Liste der IP-Subnetze, die den Zieladressen der RR-Kette zugeordnet sind.",
"description_obj_type_scope": "Ziel-Subnetze via RR-Kette",
"description_sys_scope": "FQDN-Ziel-Subnetze via RR-Kette",
"is_core": true,
"is_deprecated": false,
"is_nullable": true
},
"sub_fqdn_count": {
"data_type": "integer8",
"description_detail": "Anzahl der FQDNs unterhalb dieses FQDNs (nur direkte Unterebene)",
"description_obj_type_scope": "# Unter-FQDNs",
"description_sys_scope": "# Unter-FQDNs",
"is_core": false,
"is_deprecated": false,
"is_nullable": false
},
"tree_level": {
"data_type": "integer4",
"description_detail": "Hierarchieebene des FQDN-Knotens. Wurzelknoten haben Stufe 0.",
"description_obj_type_scope": "Stufe",
"description_sys_scope": "Stufe des FQDNs im Namensbaum",
"is_core": false,
"is_deprecated": false,
"is_nullable": false
},
"type": {
"data_type": "text",
"description_detail": "Für die betreffende Version sichtbarer Wert des FQDN-Typs. NULL bedeutet, dass dieser Typ in der betreffenden Version nicht vorhanden ist.",
"description_obj_type_scope": "Typ",
"description_sys_scope": "FQDN-Typ",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"value": {
"data_type": "fqdn",
"description_detail": "FQDN (Fully Qualified Domain Name)",
"description_obj_type_scope": "FQDN",
"description_sys_scope": "FQDN",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"value_idna": {
"data_type": "text",
"description_detail": "FQDN in internationalisierter Schreibweise",
"description_obj_type_scope": "FQDN (IDN)",
"description_sys_scope": "FQDN (IDN)",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
},
"zone": {
"data_type": "fqdn",
"description_detail": "Zonen-FQDN des FQDNs",
"description_obj_type_scope": "Zone",
"description_sys_scope": "Zonen-FQDN",
"is_core": true,
"is_deprecated": false,
"is_nullable": false
}
},
"constraints": {
"api_chk_dns_fqdn_label": {
"attributes": [
"is_wildcard",
"is_host",
"type"
],
"description": "Für Labels hostbezogener Namenstypen gilt: erstes Zeichen: alphanumerisch [a-z,0-9], nachfolgende Zeichen: alphanumerisch oder '-' oder leer, letztes Zeichen darf kein '-' sein. Für Labels in SRV-Namenstypen gilt RFC-6335 bzgl. des 'Service Name', zuzüglich der Voranstellung genau eines Unterstrichs '_'. Für Labels aller anderen nicht-hostbezogenen Namenstypen ist der vorangestellte Unterstrich optional. Für Wildcard-Labels ist ausschließlich '*' erlaubt.",
"errors": [
{
"code": 35,
"description": "FQDN-Namenskonvention verletzt",
"details": "Für Labels hostbezogener Namenstypen gilt: erstes Zeichen: alphanumerisch [a-z,0-9], nachfolgende Zeichen: alphanumerisch oder '-' oder leer, letztes Zeichen darf kein '-' sein. Für Labels in SRV-Namenstypen gilt RFC-6335 bzgl. des 'Service Name', zuzüglich der Voranstellung genau eines Unterstrichs '_'. Für Labels aller anderen nicht-hostbezogenen Namenstypen ist der vorangestellte Unterstrich optional. Für Wildcard-Labels ist ausschließlich '*' erlaubt.",
"type": -20102
}
],
"grants_read_access": false,
"internal_name": "chk_dns_ntree_name",
"is_deferred": false,
"type": "C"
},
"api_chk_dns_fqdn_rad": {
"attributes": [
"rad_type",
"value",
"type"
],
"description": "erlaubte Zeichen in Labels / Maximalzahl d. Labels in FQDN: unter in-addr.arpa: 0..255 / max. 6 Labels; unter ip6.arpa: 0..9, a-f / max. 34 Labels; unter e164.arpa: 0..9 / max. 123 Labels.",
"errors": [
{
"code": 36,
"description": "FQDN-Namenskonvention für RAD verletzt",
"details": "Labels für Reverse Adress Domains (RAD): Dezimalzahl von 0..255 (IPv4) oder Hexadezimalzahl von 0..f (IPv6). RAD-FQDNs müssen zur SLD 'in-addr.arpa' (IPv4) bzw. 'ip6.arpa' (IPv6) bzw. 'e164.arpa' (ENUM) gehören. Alle anderen FQDNs dürfen nicht zur TLD '.arpa' gehören.",
"type": -20102
}
],
"grants_read_access": false,
"internal_name": "chk_dns_ntree_rad",
"is_deferred": false,
"type": "C"
},
"api_fkey_dns_fqdn_parent": {
"attributes": [
"parent_value"
],
"description": null,
"errors": [
{
"code": 1,
"description": "Übergeordneter FQDN ist 'terminal FQDN' (kann keine Subdomains enthalten) oder ist nicht vorhanden.",
"details": "Der übergeordnete FQDN muss bereits existieren und vom Typ 'non-terminal FQDN' sein.",
"type": -20101
},
{
"code": 58,
"description": "FQDN enthält noch Untereinträge",
"details": null,
"type": -20101
}
],
"grants_read_access": false,
"internal_name": "fkey_dns_ntree_parent",
"is_deferred": false,
"type": "F"
},
"api_fkey_dns_fqdn_type": {
"attributes": [
"type"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "fkey_dns_ntree_nt",
"is_deferred": false,
"type": "F"
},
"api_fkey_dns_fqdn_zone": {
"attributes": [
"zone"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "fkey_dns_ntree_zone",
"is_deferred": true,
"type": "F"
},
"api_func_dns_fqdn_is_intersect_of_root_node_set": {
"attributes": [
"root_node_set"
],
"description": "FQDN ist gleich- oder über- oder untergeordnet",
"errors": [],
"grants_read_access": false,
"internal_name": "func_dns_ntree_is_intersect_of_root_node_set",
"is_deferred": false,
"type": "FN"
},
"api_func_dns_fqdn_is_subset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"description": "FQDN ist gleich- oder übergeordnet",
"errors": [],
"grants_read_access": false,
"internal_name": "func_dns_ntree_is_subset_of_root_node_set",
"is_deferred": false,
"type": "FN"
},
"api_func_dns_fqdn_is_superset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"description": "FQDN ist gleich- oder untergeordnet",
"errors": [],
"grants_read_access": false,
"internal_name": "func_dns_ntree_is_superset_of_root_node_set",
"is_deferred": false,
"type": "FN"
},
"api_func_dns_fqdn_rr_chain_target_contains_subnet": {
"attributes": [
"rr_chain_target_subnet_list"
],
"description": "RR-Kette des FQDNs ist (über RR-Zieladressen) Ziel-Subnetzen zugeordnet",
"errors": [],
"grants_read_access": false,
"internal_name": "func_dns_ntree_rr_chain_target_contains_subnet",
"is_deferred": false,
"type": "FN"
},
"api_pkey_dns_fqdn": {
"attributes": [
"gpk"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "pkey_dns_ntree",
"is_deferred": false,
"type": "P"
},
"api_unq_dns_fqdn": {
"attributes": [
"value"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "unq_dns_ntree_fqdn",
"is_deferred": false,
"type": "UP"
},
"api_unq_dns_fqdn_label": {
"attributes": [
"label",
"parent_value"
],
"description": "Label in Domain eindeutig",
"errors": [
{
"code": 15,
"description": "Label in Domain schon vorhanden",
"details": null,
"type": -20100
}
],
"grants_read_access": false,
"internal_name": "unq_dns_ntree_name",
"is_deferred": false,
"type": "U"
},
"api_unq_dns_fqdn_root_node_set": {
"attributes": [
"root_node_set"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "unq_dns_ntree_hpk_list",
"is_deferred": false,
"type": "U"
},
"api_unq_dns_fqdn_type": {
"attributes": [
"value",
"type"
],
"description": null,
"errors": [],
"grants_read_access": false,
"internal_name": "unq_dns_ntree_nt",
"is_deferred": false,
"type": "U"
}
},
"description_abbrev": "N",
"description_detail": "DNS-Namensobjekte",
"description_title": "DNS-Namensobjekte (FQDN) in hierarchischer Struktur",
"fq_name": "dns.fqdn",
"is_log_dst": false,
"is_log_src": true,
"is_otattr_dst": false,
"is_otattr_src": true,
"name": "fqdn",
"referenceable": {
"api_pkey_dns_fqdn": {
"attributes": [
"gpk"
],
"is_deferred": false,
"referenced_by": [],
"type": "P"
},
"api_unq_dns_fqdn": {
"attributes": [
"value"
],
"is_deferred": false,
"referenced_by": [
{
"is_join_default": true,
"name": "api_fkey_cntl_replication_pub2sub_p",
"object_type": "replication_pub2sub",
"system": "cntl"
},
{
"is_join_default": false,
"name": "api_fkey_cntl_replication_pub2sub_s",
"object_type": "replication_pub2sub",
"system": "cntl"
},
{
"is_join_default": true,
"name": "api_fkey_dns_fqdn_parent",
"object_type": "fqdn",
"system": "dns"
},
{
"is_join_default": true,
"name": "api_fkey_dns_fqdn2group_fqdn",
"object_type": "fqdn2group",
"system": "dns"
},
{
"is_join_default": true,
"name": "api_fkey_dns_fqdn2ou_fqdn",
"object_type": "fqdn2ou",
"system": "dns"
},
{
"is_join_default": false,
"name": "api_fkey_dns_zone_fqdn",
"object_type": "zone",
"system": "dns"
},
{
"is_join_default": true,
"name": "api_fkey_dnscfg_fqdn2perm_fqdn",
"object_type": "fqdn2perm",
"system": "dnscfg"
},
{
"is_join_default": true,
"name": "api_fkey_nd_bcd_dhcp_domain",
"object_type": "bcd",
"system": "nd"
},
{
"is_join_default": true,
"name": "api_fkey_nd_device_fqdn",
"object_type": "device",
"system": "nd"
},
{
"is_join_default": true,
"name": "api_fkey_nd_diq_ta_entry_dev",
"object_type": "diq_ta_entry",
"system": "nd"
},
{
"is_join_default": true,
"name": "api_fkey_nd_module2device_fqdn",
"object_type": "module2device",
"system": "nd"
}
],
"type": "UP"
},
"api_unq_dns_fqdn_label": {
"attributes": [
"label",
"parent_value"
],
"is_deferred": false,
"referenced_by": [],
"type": "U"
},
"api_unq_dns_fqdn_root_node_set": {
"attributes": [
"root_node_set"
],
"is_deferred": false,
"referenced_by": [
{
"is_join_default": false,
"name": "api_func_dns_fqdn_is_intersect_of_root_node_set",
"object_type": "fqdn",
"system": "dns"
},
{
"is_join_default": false,
"name": "api_func_dns_fqdn_is_subset_of_root_node_set",
"object_type": "fqdn",
"system": "dns"
},
{
"is_join_default": false,
"name": "api_func_dns_fqdn_is_superset_of_root_node_set",
"object_type": "fqdn",
"system": "dns"
}
],
"type": "U"
},
"api_unq_dns_fqdn_type": {
"attributes": [
"value",
"type"
],
"is_deferred": false,
"referenced_by": [
{
"is_join_default": true,
"name": "api_fkey_dns_record_fqdn",
"object_type": "record",
"system": "dns"
},
{
"is_join_default": false,
"name": "api_fkey_dns_record_target_fqdn",
"object_type": "record",
"system": "dns"
},
{
"is_join_default": true,
"name": "api_fkey_dnscfg_ns_set_host_host",
"object_type": "ns_set_host",
"system": "dnscfg"
},
{
"is_join_default": true,
"name": "api_fkey_dnscfg_ns_set_member_ns",
"object_type": "ns_set_member",
"system": "dnscfg"
}
],
"type": "U"
}
},
"referencing": {
"api_fkey_dns_fqdn_parent": {
"attributes": [
"parent_value"
],
"grants_read_access": false,
"is_deferred": false,
"is_join_default": true,
"on_delete": "cascade",
"references": {
"name": "api_unq_dns_fqdn",
"object_type": "fqdn",
"system": "dns"
}
},
"api_fkey_dns_fqdn_type": {
"attributes": [
"type"
],
"grants_read_access": false,
"is_deferred": false,
"is_join_default": true,
"on_delete": "raise",
"references": {
"name": "api_unq_dnscfg_fqdn_type",
"object_type": "fqdn_type",
"system": "dnscfg"
}
},
"api_fkey_dns_fqdn_zone": {
"attributes": [
"zone"
],
"grants_read_access": false,
"is_deferred": true,
"is_join_default": false,
"on_delete": "raise",
"references": {
"name": "api_unq_dns_zone",
"object_type": "zone",
"system": "dns"
}
},
"api_func_dns_fqdn_is_intersect_of_root_node_set": {
"attributes": [
"root_node_set"
],
"grants_read_access": false,
"is_deferred": null,
"is_join_default": false,
"on_delete": null,
"references": {
"name": "api_unq_dns_fqdn_root_node_set",
"object_type": "fqdn",
"system": "dns"
}
},
"api_func_dns_fqdn_is_subset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"grants_read_access": false,
"is_deferred": null,
"is_join_default": false,
"on_delete": null,
"references": {
"name": "api_unq_dns_fqdn_root_node_set",
"object_type": "fqdn",
"system": "dns"
}
},
"api_func_dns_fqdn_is_superset_of_root_node_set": {
"attributes": [
"root_node_set"
],
"grants_read_access": false,
"is_deferred": null,
"is_join_default": false,
"on_delete": null,
"references": {
"name": "api_unq_dns_fqdn_root_node_set",
"object_type": "fqdn",
"system": "dns"
}
},
"api_func_dns_fqdn_rr_chain_target_contains_subnet": {
"attributes": [
"rr_chain_target_subnet_list"
],
"grants_read_access": false,
"is_deferred": null,
"is_join_default": false,
"on_delete": null,
"references": {
"name": "api_unq_nd_ip_subnet_pk_list",
"object_type": "ip_subnet",
"system": "nd"
}
}
},
"system": "dns"
}
]
]
Abfragen des Systemdatenverzeichnisses (Funktionsdaten)
- Ziel: Ausgabe der Objektdaten für System
wapi
, Objekttypfunction
, Eingrenzung der Suche auf den Systemnamen “dns”, den Objekttypnamen “fqdn” und den Funktionsnamen “create” - entspricht: Ausgabe der Parameterdaten für System
dns
, Objekttypfqdn
, Funktioncreate
- Inhalt der curl-Konfigurationsdatei
curl.cfg
(Authentifizierung nicht erforderlich):
--header "Content-Type: application/json"
- Aufruf als GET-Request:
curl --globoff --config curl.cfg 'https://api.netdb.scc.kit.edu/3.2/wapi/function/list?system_list=["dns"]&object_type_list=["fqdn"]&name_list=["create"]'
- Gleichwertiger Aufruf als POST-Request:
curl --config curl.cfg -d '{"old": {"system_list": ["dns"], "object_type_list": ["fqdn"], "name_list": ["create"]}}' 'https://api.netdb.scc.kit.edu/3.2/wapi/function/list'
- Antwort:
[
[
{
"fq_name": "dns.fqdn.create",
"is_data_manipulating": true,
"is_executable": true,
"is_returning": true,
"is_returning_referenceable": true,
"name": "create",
"object_type": "fqdn",
"parameters": {
"description": {
"data_type": "text_short",
"description_detail": "Freitext-Info zum FQDN",
"description_obj_type_scope": "Info",
"description_sys_scope": "FQDN-Info",
"is_deprecated": false,
"new": {
"is_nullable": true,
"is_required": false
}
},
"type": {
"data_type": "text",
"description_detail": "Für die betreffende Version sichtbarer Wert des FQDN-Typs. NULL bedeutet, dass dieser Typ in der betreffenden Version nicht vorhanden ist.",
"description_obj_type_scope": "Typ",
"description_sys_scope": "FQDN-Typ",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": true
}
},
"value": {
"data_type": "fqdn",
"description_detail": "FQDN (Fully Qualified Domain Name)",
"description_obj_type_scope": "FQDN",
"description_sys_scope": "FQDN",
"is_deprecated": false,
"new": {
"is_nullable": false,
"is_required": true
}
}
},
"system": "dns"
}
]
]
Objektabfragen
Einzelbefehls-Transaktion
- Ziel: Ausgabe der Objektdaten für System
dns
, Objekttypfqdn
, Eingrenzung der Suche auf das Label-Muster ‘^host’ (als regulärer Ausdruck) - Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf als GET-Request:
curl --globoff --config curl.cfg 'https://api.netdb.scc.kit.edu/3.2/dns/fqdn/list?label_regexp=^host.?$'
- URI als POST-Request:
curl --config curl.cfg -d '{"old": {"label_regexp": "^host.?$"}}' 'https://api.netdb.scc.kit.edu/3.2/dns/fqdn/list'
- Antwort:
[
[
{
"description": "nixxx",
"gpk": "57756e54-4c18-423a-adc3-bb10b3c254c7",
"has_rr": true,
"is_dhcp": false,
"is_empty_nonterminal": false,
"is_host": true,
"is_nonterminal": true,
"is_own": false,
"is_wildcard": false,
"label": "host",
"parent_value": "rz.uni-karlsruhe.de.",
"rad_type": 0,
"root_node_set": [
5491212,
6,
3,
2,
1
],
"rr_chain_target_bcd_list": [
"lane-test"
],
"rr_chain_target_is_own": true,
"rr_chain_target_subnet_list": [
"172.21.93.0/25"
],
"sub_fqdn_count": 0,
"tree_level": 4,
"type": "domain",
"value": "host.rz.uni-karlsruhe.de.",
"value_idna": "host.rz.uni-karlsruhe.de.",
"zone": "uni-karlsruhe.de."
},
{
"description": null,
"gpk": "f8b47036-daa0-4344-a4cd-09e18a1d2b61",
"has_rr": true,
"is_dhcp": false,
"is_empty_nonterminal": false,
"is_host": true,
"is_nonterminal": true,
"is_own": true,
"is_wildcard": false,
"label": "host2",
"parent_value": "net.scc.kit.edu.",
"rad_type": 0,
"root_node_set": [
8446666,
9005115,
150764,
134283,
97,
1
],
"rr_chain_target_bcd_list": [
"lane-test"
],
"rr_chain_target_is_own": true,
"rr_chain_target_subnet_list": [
"172.21.93.0/25"
],
"sub_fqdn_count": 0,
"tree_level": 5,
"type": "domain",
"value": "host2.net.scc.kit.edu.",
"value_idna": "host2.net.scc.kit.edu.",
"zone": "kit.edu."
},
{
"description": null,
"gpk": "ee756ed2-39b0-4e9f-8f19-ffd23d85800f",
"has_rr": true,
"is_dhcp": false,
"is_empty_nonterminal": false,
"is_host": true,
"is_nonterminal": true,
"is_own": true,
"is_wildcard": false,
"label": "host1",
"parent_value": "net.scc.kit.edu.",
"rad_type": 0,
"root_node_set": [
8453472,
9005115,
150764,
134283,
97,
1
],
"rr_chain_target_bcd_list": [
"lane-test"
],
"rr_chain_target_is_own": true,
"rr_chain_target_subnet_list": [
"172.21.93.0/25"
],
"sub_fqdn_count": 0,
"tree_level": 5,
"type": "domain",
"value": "host1.net.scc.kit.edu.",
"value_idna": "host1.net.scc.kit.edu.",
"zone": "kit.edu."
},
{
"description": "VM Host 0 [HP ProLiant DL180 G6]",
"gpk": "8b97ec4e-ffd1-4190-901e-27f67e0d8cd6",
"has_rr": true,
"is_dhcp": false,
"is_empty_nonterminal": false,
"is_host": true,
"is_nonterminal": true,
"is_own": false,
"is_wildcard": false,
"label": "host0",
"parent_value": "abh.whka.de.",
"rad_type": 0,
"root_node_set": [
9396551,
8614496,
8581842,
2,
1
],
"rr_chain_target_bcd_list": [
"wh-abh-1"
],
"rr_chain_target_is_own": false,
"rr_chain_target_subnet_list": [
"100.119.0.0/18",
"2001:7c7:20dc::/47"
],
"sub_fqdn_count": 0,
"tree_level": 4,
"type": "domain",
"value": "host0.abh.whka.de.",
"value_idna": "host0.abh.whka.de.",
"zone": "whka.de."
},
{
"description": "VM Host 1 [HP ProLiant DL360 G5]",
"gpk": "3bce6d7b-29cd-4c1a-b154-9fb88b7e109b",
"has_rr": true,
"is_dhcp": false,
"is_empty_nonterminal": false,
"is_host": true,
"is_nonterminal": true,
"is_own": false,
"is_wildcard": false,
"label": "host1",
"parent_value": "abh.whka.de.",
"rad_type": 0,
"root_node_set": [
9396553,
8614496,
8581842,
2,
1
],
"rr_chain_target_bcd_list": [
"wh-abh-1"
],
"rr_chain_target_is_own": false,
"rr_chain_target_subnet_list": [
"100.119.0.0/18",
"2001:7c7:20dc::/47"
],
"sub_fqdn_count": 0,
"tree_level": 4,
"type": "domain",
"value": "host1.abh.whka.de.",
"value_idna": "host1.abh.whka.de.",
"zone": "whka.de."
},
{
"description": null,
"gpk": "bce9973c-b163-4ea4-a227-1dec5cd27639",
"has_rr": true,
"is_dhcp": false,
"is_empty_nonterminal": false,
"is_host": false,
"is_nonterminal": true,
"is_own": false,
"is_wildcard": false,
"label": "host0",
"parent_value": "abh.uni-karlsruhe.de.",
"rad_type": 0,
"root_node_set": [
9425787,
55,
3,
2,
1
],
"rr_chain_target_bcd_list": [
"wh-abh-1"
],
"rr_chain_target_is_own": false,
"rr_chain_target_subnet_list": [
"100.119.0.0/18",
"2001:7c7:20dc::/47"
],
"sub_fqdn_count": 0,
"tree_level": 4,
"type": "alias",
"value": "host0.abh.uni-karlsruhe.de.",
"value_idna": "host0.abh.uni-karlsruhe.de.",
"zone": "uni-karlsruhe.de."
},
{
"description": null,
"gpk": "5c8890c8-f163-4b36-b051-c35de4e1a2dc",
"has_rr": true,
"is_dhcp": false,
"is_empty_nonterminal": false,
"is_host": false,
"is_nonterminal": true,
"is_own": false,
"is_wildcard": false,
"label": "host1",
"parent_value": "abh.uni-karlsruhe.de.",
"rad_type": 0,
"root_node_set": [
9425788,
55,
3,
2,
1
],
"rr_chain_target_bcd_list": [
"wh-abh-1"
],
"rr_chain_target_is_own": false,
"rr_chain_target_subnet_list": [
"100.119.0.0/18",
"2001:7c7:20dc::/47"
],
"sub_fqdn_count": 0,
"tree_level": 4,
"type": "alias",
"value": "host1.abh.uni-karlsruhe.de.",
"value_idna": "host1.abh.uni-karlsruhe.de.",
"zone": "uni-karlsruhe.de."
}
]
]
Komplexe Transaktion: Verbund-Ausgabe, ohne explizite Statement-Indizierung
-
Ziel: Die folgenden 7 Statements (mit Positionsangabe) liefern
[0]
: alle eigenen Netzbereiche (BCDs)[1]
: alle Gruppenzuordnungen zu den Netzbereichen aus dem 0. Stmt.[2]
: alle Gruppen zu den Gruppenzuordnungen aus dem 1. Stmt.[3]
: alle Betreuerzuordnungen zu den Gruppen aus dem 2. Stmt.[4]
: alle Domainzuordnungen zu den Gruppen aus dem 2. Stmt.[5]
: alle neuesten Top-5-Eventlog-Records, die den Netzbereichen (BCD) aus dem 0. Stmt. zugeordnet sind (zeitlich absteigend je BCD)[6]
: alle ältesten Top-5-Eventlog-Records, die den Netzbereichen (BCD) aus dem 0. Stmt. zugeordnet sind (zeitlich aufsteigend je BCD)
-
Vorbereitung:
- Als Statement-Index wird automatisch die Position eingesetzt. JOIN-Anweisungen müssen sich auf diese Position beziehen.
- Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
query_dns.json
)
[
{"name": "nd.bcd.list", "old": {"is_own": true}},
{"name": "nd.bcd2group.list", "join": {"0": "default"}},
{"name": "cntl.group.list", "join": {"1": "default"}},
{"name": "cntl.mgr2group.list", "join": {"2": "default"}},
{"name": "dns.fqdn2group.list", "join": {"2": "default"}},
{"name": "evlog.record.list", "old": {"top_n": 5, "sorting_params_list": ["object_gfk", "ta_timestamp desc"]}, "join": {"0": null}},
{"name": "evlog.record.list", "old": {"top_n": 5, "top_n_from_newest": false, "sorting_params_list": ["object_gfk", "ta_timestamp asc"]}, "join": {"0": null}}
]
- generischer Transaktionsaufruf über
/wapi/transaction/execute
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/wapi/transaction/execute"
--data "@query_dns.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
Komplexe Transaktion: Verbund-Ausgabe, mit expliziter Statement-Indizierung
- Ziel: analog zum vorigen Beispiel
- Vorbereitung:
- Auswahl der Indexnamen für alle Statements, die referenziert werden (Pos. 0-2)
- Einsetzen der Indexnamen in die (referenzierenden) JOIN-Anweisungen
- Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
query_dns.json
)
[
{"idx": "bcd", "name": "nd.bcd.list", "old": {"is_own": true}},
{"idx": "b2g", "name": "nd.bcd2group.list", "join": {"bcd": "default"}},
{"idx": "g", "name": "cntl.group.list", "join": {"b2g": "default"}},
{"name": "cntl.mgr2group.list", "join": {"g": "default"}},
{"name": "dns.fqdn2group.list", "join": {"g": "default"}},
{"name": "evlog.record.list", "old": {"top_n": 5, "sorting_params_list": ["object_gfk", "ta_timestamp desc"]}, "join": {"bcd": null}},
{"name": "evlog.record.list", "old": {"top_n": 5, "top_n_from_newest": false, "sorting_params_list": ["object_gfk", "ta_timestamp asc"]}, "join": {"bcd": null}}
]
- generischer Transaktionsaufruf über
/wapi/transaction/execute
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/wapi/transaction/execute"
--data "@query_dns.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
Komplexe Transaktion: Verbund-Ausgabe, explizite Statement-Indizierung und Constraint-Angabe; Filterung unbenötigter Objektattribute
-
Ziel: Die folgenden 3 Statements (mit Indexangabe) liefern
"rr_cname"
: alle eigenen CNAME-RRs"fqdn_cname"
: alle Ziel-FQDNs zu den RRs via Stmt-Index “rr_cname”. Dieses Statement wird nur als Verbindung zwischen vorigem und nachfolgendem Statement benötigt, daher soll die Ausgabe komplett gefiltert werden."rr_target"
: alle Ziel-RRs zu den Owner-FQDNs via Stmt-Index “fqdn_cname”. In diesem Statement werden nur die Objektattributefqdn
,ttl
,type
,data
benötigt.
-
Vorbereitung:
- Auswahl der Indexnamen für alle Statements
- Einsetzen der Indexnamen in die (referenzierenden) JOIN-Anweisungen
- Ermitteln der Constraint-Namen unter Abfrage des Systemdatenbereichs
für die relevanten Objekttypen
dns.fqdn
unddns.record
, da es zwischen diesen beiden Objekkttypen 2 FK-Constraints (TypF
) gibt. Für die Ziel-FQDNs der RRs muss demnach"api_fkey_dns_record_target_fqdn"
als Constraint eingesetzt werden; für die Owner-FQDNs kann"api_fkey_dns_record_fqdn"
oder"default"
eingesetzt werden. - Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
query_dns.json
)
[
{"idx": "rr_cname", "name": "dns.record.list", "old": {"is_own": true, "type": "CNAME"}},
{"idx": "fqdn_cname", "name": "dns.fqdn.list", "old": {"filter_params_dict": {"show": true, "attrs_list": null}}, "join": {"rr_cname": "api_fkey_dns_record_target_fqdn"}},
{"idx": "rr_target", "name": "dns.record.list", "old": {"filter_params_dict": {"show": true, "attrs_list": ["fqdn","ttl","type","data"]}}, "join": {"fqdn_cname": "api_fkey_dns_record_fqdn"}}
]
- generischer Transaktionsaufruf über
/wapi/transaction/execute
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/wapi/transaction/execute"
--data "@query_dns.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
Komplexe Transaktion: Ausgabe globaler Objektattribute
-
Ziel: Die folgenden 4 Statements (mit Indexangabe) liefern
"dev"
: einen Datensatz des Objekttypsnd.device
(via Primärparameter"fqdn"
)"otav"
: alle Objektattribute, die zum vorigen Objekt gehören"otak"
: alle Objekttypattribute zum Stmt-|ndex “otav”"otad"
: alle Objekttypattribut-Schüsselwortdefinitionen zum Stmt-|ndex “otak”
-
Vorbereitung:
- Auswahl der Indexnamen für alle Statements
- Einsetzen der Indexnamen in die (referenzierenden) JOIN-Anweisungen
- Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
query_dns.json
)
[
{"idx": "dev", "name": "nd.device.list", "old": {"fqdn": "r-bb-wh.tmn.scc.kit.edu."}},
{"idx": "otav", "name": "cntl.ot_attr_val.list", "join": {"dev": null}},
{"idx": "otak", "name": "cntl.ot_attr_key.list", "join": {"otav": "default"}},
{"idx": "otad", "name": "cntl.ot_attr_def.list", "join": {"otak": "default"}}
]
- generischer Transaktionsaufruf über
/wapi/transaction/execute
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/wapi/transaction/execute"
--data "@query_dns.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
Komplexe Transaktion: Objektsuche über globale Objektattribute
-
Ziel: Die folgenden 2 Statements (mit Indexangabe) liefern
"otav"
: alle Objektattribute zum Objekttypnd.module
mit dem Schlüsselwort"stack_pos"
und mit Werten zwischen 2 und 4"mdl2otav"
: alle Module, die zu den gefundenen Attributen aus dem Stmt-|ndex “otav” gehören
-
Vorbereitung:
- Auswahl der Indexnamen für alle Statements
- Einsetzen der Indexnamen in die (referenzierenden) JOIN-Anweisungen
- Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
query_dns.json
)
[
{"idx": "otav", "name": "cntl.ot_attr_val.list", "old": {"object_type_fq_name": "nd.module", "ot_attr_def_key_word": "stack_pos", "value": 2, "value_operator": "int_range", "value_range": 4}},
{"idx": "mdl2otav", "name": "nd.module.list", "join": {"otav": null}}
]
- generischer Transaktionsaufruf über
/wapi/transaction/execute
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/wapi/transaction/execute"
--data "@query_dns.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
Objektmodifikationen
Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit nicht-leerer Antwort (dns.record.create
)
- Ziel: Anlegen eines DNS-A-Records eines RR-Sets (Satz von potenziell mehreren Records)
- Vorbereitung: Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
create_rr.json
).
{
"new": {
"fqdn": "myhost.kit.test",
"fqdn_description": "blubb",
"target_is_reverse_unique": false,
"target_is_singleton": false,
"type": "A",
"data": "192.168.1.1"
}
}
- Die in obiger Datei nicht enthaltenen, aber erforderlichen Daten für System, Objekttyp und Funktion werden in der URI-Adresse übergeben
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/dns/record/create"
--data "@create_rr.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
- Antwort bei fehlerfreier Ausführung:
[
[
{
"data": "192.168.1.1",
"fqdn": "myhost.kit.test.",
"fqdn_description": "blubb",
"fqdn_type": "domain",
"gpk": "01d61bc0-3851-4150-9e2d-2e7829ed16c1",
"host_is_nws": false,
"is_auth": true,
"is_own": false,
"rr_chain_target_subnet_list": [
"192.168.1.0/24"
],
"target_bcd_list": [
"stk-library-privat-1"
],
"target_data_unref": null,
"target_fqdn": null,
"target_fqdn_type": null,
"target_ipaddr": "192.168.1.1",
"target_is_reverse_unique": false,
"target_is_singleton": false,
"ttl": null,
"ttl_reset_date": null,
"ttl_reset_days": null,
"ttl_zone_default": 3600,
"type": "A",
"zone": "test."
}
]
]
- Antwort bei Datenbank-Fehlern: z.B. Eindeutigkeitsverletzung durch wiederholtes Ausführen derselben Transaktion bei ansonsten unverändertem Datenbestand:
{
"exception": {
"constraint": {
"description": "FQDN, Typ und Ziel-IP-Adresse sind eindeutig",
"name": "api_unq_dns_record_a"
},
"error": {
"code": 12,
"description": "[dns] RR schon vorhanden",
"details": "Ein DNS-Resource-Record mit gleichlautenden Parametern für FQDN, Typ, Ziel (RR-Data) ist bereits vorhanden."
},
"error_type": {
"code": -20100,
"description": "Dateneindeutigkeit verletzt",
"name": "unq_constraint_violation"
},
"others": {},
"stacked_diag_params": {
"column": "",
"constraint": "dns_rr_dst_a_uidx",
"context": "PL/pgSQL function eh.set_err(eh.stacked_diag_params_rec_type,name,name,eh.userparams_kv_rec_type[],eh.typecode_rec_type) line 8 at RAISE\\nSQL statement \"SELECT eh.set_err(sd_rec, fpkg, fname, up_kv_rec_list, et_rec)\"\\nPL/pgSQL function dns_wapi_3_2.ta_stmt_handler(jsonb,wapi_3_2.exec_ta_stmt_rec_type) line 213 at PERFORM\\nPL/pgSQL function wapi_3_2.exec_ta_handler(bigint,jsonb,boolean,boolean,boolean,boolean,text) line 433 at RETURN QUERY\\nPL/pgSQL function wapi_3_2.ta_handler(text,text,text,boolean,boolean,boolean,text) line 27 at RETURN QUERY",
"datatype": "",
"detail": "Key (dns_rr_set_key_nr, dns_addr_key_nr)=(6409620, 863645) already exists.",
"dml_src_table": "dns_rr_dst",
"hint": "",
"message": "duplicate key value violates unique constraint \"dns_rr_dst_a_uidx\"",
"schema": "netadmin",
"sqlstate": "23505",
"table": "dns_rr_dst"
},
"traceback": [
{
"function": "dns.exec_insert_rr_osd",
"param": {
"dns.record.fqdn": "myhost.kit.test.",
"dns.record.target_data_unref": null,
"dns.record.target_ipaddr": "192.168.1.1",
"dns.record.target_ipaddr_type": "4",
"dns.record.target_is_reverse_unique": false,
"dns.record.target_is_singleton": false,
"dnscfg.record_inttype._intname": "dflt:11000,:,0004,A",
"dnscfg.record_inttype.description": "A-RR-Set für Host",
"dnscfg.record_inttype.target_addr_type": "4",
"dnscfg.record_inttype.target_is_reverse_unique": false,
"dnscfg.record_inttype.target_is_singleton": false
}
},
{
"function": "dns_wapi_3_2.do_insert_rr",
"param": {
"dns.fqdn.value": "myhost.kit.test."
}
},
{
"function": "wapi_3_2.exec_ta_handler",
"param": {
"wapi.transaction_stmt.idx": "0",
"wapi.transaction_stmt.pos": 0
}
}
]
}
}
Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit nicht-leerer Antwort (dns.record.imp
)
- Ziel: Importieren der RR-Sätze zu einem FQDN
- Vorbereitung: Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
import_rr.json
).
{
"old": {
"fqdn": "myhost.kit.test"
},
"new": {
"import_data": {
"dns.record_imp": [
{"type": "A", "target_is_reverse_unique": false, "data_list": ["192.168.1.1"]},
{"type": "AAAA", "target_is_reverse_unique": true, "target_is_singleton": false, "data_list": ["abcd::1", "abcd::2"]},
{"type": "TXT", "data_list": ["\"textpart_in_same_rr_1\" \"textpart_in_same_rr_2\""]},
{"type": "MX", "data_list": ["10 mail.kit.test"] }
]
}
}
}
- Die in obiger Datei nicht enthaltenen, aber erforderlichen Daten für System, Objekttyp und Funktion werden in der URI-Adresse übergeben
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/dns/record/imp"
--data "@import_rr.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
- Antwort bei fehlerfreier Ausführung:
[
[
{
"data": "192.168.1.1",
"fqdn": "myhost.kit.test.",
"fqdn_description": "blubb",
"fqdn_type": "domain",
"gpk": "01d61bc0-3851-4150-9e2d-2e7829ed16c1",
"host_is_nws": false,
"is_auth": true,
"is_own": false,
"rr_chain_target_subnet_list": [
"192.168.1.0/24"
],
"target_bcd_list": [
"stk-library-privat-1"
],
"target_data_unref": null,
"target_fqdn": null,
"target_fqdn_type": null,
"target_ipaddr": "192.168.1.1",
"target_is_reverse_unique": false,
"target_is_singleton": false,
"ttl": null,
"ttl_reset_date": null,
"ttl_reset_days": null,
"ttl_zone_default": 3600,
"type": "A",
"zone": "test."
},
{
"data": "abcd::1",
"fqdn": "myhost.kit.test.",
"fqdn_description": "blubb",
"fqdn_type": "domain",
"gpk": "a24e7c3e-246e-4940-9cd6-f4ec514af183",
"host_is_nws": false,
"is_auth": true,
"is_own": false,
"rr_chain_target_subnet_list": [
"abcd::/64"
],
"target_bcd_list": [
"any"
],
"target_data_unref": null,
"target_fqdn": null,
"target_fqdn_type": null,
"target_ipaddr": "abcd::1",
"target_is_reverse_unique": true,
"target_is_singleton": false,
"ttl": null,
"ttl_reset_date": null,
"ttl_reset_days": null,
"ttl_zone_default": 3600,
"type": "AAAA",
"zone": "test."
},
{
"data": "abcd::2",
"fqdn": "myhost.kit.test.",
"fqdn_description": "blubb",
"fqdn_type": "domain",
"gpk": "806aec87-3c9d-4dab-8c2e-877c5b2ea8f4",
"host_is_nws": false,
"is_auth": true,
"is_own": false,
"rr_chain_target_subnet_list": [
"abcd::/64"
],
"target_bcd_list": [
"any"
],
"target_data_unref": null,
"target_fqdn": null,
"target_fqdn_type": null,
"target_ipaddr": "abcd::2",
"target_is_reverse_unique": true,
"target_is_singleton": false,
"ttl": null,
"ttl_reset_date": null,
"ttl_reset_days": null,
"ttl_zone_default": 3600,
"type": "AAAA",
"zone": "test."
},
{
"data": "10 mail.kit.test.",
"fqdn": "myhost.kit.test.",
"fqdn_description": "blubb",
"fqdn_type": "domain",
"gpk": "1b67e933-a7bc-4b11-9665-610cde822be2",
"host_is_nws": false,
"is_auth": true,
"is_own": false,
"rr_chain_target_subnet_list": [
"192.168.10.0/24"
],
"target_bcd_list": [
"i93-san"
],
"target_data_unref": "10",
"target_fqdn": "mail.kit.test.",
"target_fqdn_type": "domain",
"target_ipaddr": null,
"target_is_reverse_unique": false,
"target_is_singleton": false,
"ttl": null,
"ttl_reset_date": null,
"ttl_reset_days": null,
"ttl_zone_default": 3600,
"type": "MX",
"zone": "test."
},
{
"data": "\"textpart_in_same_rr_1\" \"textpart_in_same_rr_2\"",
"fqdn": "myhost.kit.test.",
"fqdn_description": "blubb",
"fqdn_type": "domain",
"gpk": "2416c1d1-b474-4a13-b9e0-3a66a57b7887",
"host_is_nws": false,
"is_auth": true,
"is_own": false,
"rr_chain_target_subnet_list": null,
"target_bcd_list": null,
"target_data_unref": "\"textpart_in_same_rr_1\" \"textpart_in_same_rr_2\"",
"target_fqdn": null,
"target_fqdn_type": null,
"target_ipaddr": null,
"target_is_reverse_unique": false,
"target_is_singleton": false,
"ttl": null,
"ttl_reset_date": null,
"ttl_reset_days": null,
"ttl_zone_default": 3600,
"type": "TXT",
"zone": "test."
}
]
]
Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit nicht-leerer Antwort (nd.device.imp
)
- Ziel: Importieren der Device-Daten (L-Ports, IP-Interfaces, nicht-statische Objektattribute)
- Vorbereitung: Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
import_dev.json
).
{
"new": {
"fqdn": "mydevice.kit.test",
"nc": "cs",
"acg": "rz-netze-mgmt",
"type": "z",
"description": "more details about mydevice",
"import_data": {
"nd.l_port_imp": [ {"name": "1", "tag_list": ["static"]}, {"name": "2"} ],
"nd.ip_intf_imp": [ {"ip_addr": "abcd::1", "l_port_name": "1"}, {"ip_addr": "192.168.1.1", "l_port_name": "1"}],
"nd.device_attribute_imp": [ {"key_word": "os_name", "value": "OS name/version of mydevice"}, {"key_word": "gen_single_ii_port_name", "value": "1"} ]
}
}
}
- Die in obiger Datei nicht enthaltenen, aber erforderlichen Daten für System, Objekttyp und Funktion werden in der URI-Adresse übergeben
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/nd/device/imp"
--data "@import_dev.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
- Antwort bei fehlerfreier Ausführung:
[
[
{
"nc": "cs",
"acg": "rz-netze-mgmt",
"gpk": "0206bce9-40df-4532-aaa0-e1c6c0d29df7",
"fqdn": "mydevice.kit.test",
"type": "z",
"is_valid": true,
"sysdescr": null,
"uses_vlans": false,
"description": "more details about mydevice",
"assigned_parser": "generic-single-ip-intf",
"executable_parser": "generic-single-ip-intf"
}
]
]
Einfache Dateneingabe durch eine Einzelbefehls-Transaktion mit leerer Antwort (dns.record.delete
)
- Ziel: Inhalt: Löschen eines DNS-A-Records eines RR-Sets (Satz von potenziell mehreren Records)
- Vorbereitung: Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
delete_rr.json
).
{
"old": {
"fqdn": "myhost.kit.test",
"type": "A",
"data": "192.168.1.1"
}
}
- Die in obiger Datei nicht enthaltenen, aber erforderlichen Daten für System, Objekttyp und Funktion werden in der URI-Adresse übergeben
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/dns/record/delete"
--data "@delete_rr.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg
- Antwort bei fehlerfreier Ausführung:
[
[]
]
Komplexe Transaktion mit mehreren Dateneingaben und -Ausgaben und expliziter Statement-Indizierung
-
Ziel: Die folgenden 4 Statements (mit Indexangabe) bewirken:
"ls_create"
Erzeugen eines neuen Lease-Datensatzes"addr_list"
Ausgabe des via Stmt-Index “ls_create” zugeordneten IP-Adress-Datensatzes (Zuordnung durch dynamische Übergabe des Parameterwertesdhcp.lease.ip_addr_value
andns.ip_addr.value_cidr_mask
)"og2ls_create"
Erzeugen einer neuen Optionsgruppen-Zuordnung zur Lease aus dem Stmt-Index “ls_create” (Zuordnung durch dynamische Übergabe des Parameterwertesdhcp.lease.gpk
andhcp.og2lease.lease_gfk
)"subnet_list"
Ausgabe des Subnetzes zur IP-Adresse via Stmt-Index “addr_list” mit JOIN
-
Vorbereitung:
- Auswahl der Indexnamen für alle Statements
- Einsetzen der Indexnamen in die JOIN-Anweisungen und Bezugsparameter
- Ermitteln der Parameter-Namen unter Abfrage des Funktionsindexes
für die relevanten Objekttypen
lease
,ip_addr
,og2lease
des Systemsdhcp
- Bereitstellen des Request Body als JSON-Dokument (z.B. als Eingabedatei
mod_dhcp.json
)
[
{"idx": "ls_create", "name": "dhcp.lease.create", "new": {"ip_subnet_cidr_spec":"192.168.1.0/24", "ip_addr_value":"192.168.1.1", "mac_addr":"00:11:22:aa:bb:cc", "is_static":true }},
{"idx": "addr_list", "name": "dns.ip_addr.list", "old_ref": {"value_cidr_mask": {"idx": "ls_create", "param": "ip_addr_value"}}},
{"idx": "og2ls_create", "name": "dhcp.og2lease.create", "new_ref": {"lease_gfk": {"idx": "ls_create", "param": "gpk"}}, "new": {"og_ip_subnet_cidr_spec": "192.168.1.0/24", "og_name": "wapi-test-optgroup", "priority": 15 }},
{"idx": "subnet_list", "name": "nd.ip_subnet.list", "join": {"addr_list": "default"}}
]
- generischer Transaktionsaufruf im Test-Modus (es werden keine Daten permanent gespeichert, aber die Ausgabedaten werden trotzdem erzeugt):
- Inhalt der curl-Konfigurationsdatei
curl.cfg
:
--url "https://api.netdb.scc.kit.edu/3.2/wapi/transaction/execute?dry_mode=true"
--data "@mod_dhcp.json"
--header "Content-Type: application/json"
--header "Authorization: Bearer ***AUTH-TOKEN-TEXT***"
- Aufruf:
curl --config curl.cfg