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 System org 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 System org und dem Objekttyp ou 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, Objekttyp object_type, Eingrenzung der Suche auf den Systemnamen “dns” und den Objekttypnamen “fqdn”
  • entspricht: Ausgabe der Objekttypdaten für System dns, Objekttyp fqdn
  • 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, Objekttyp function, Eingrenzung der Suche auf den Systemnamen “dns”, den Objekttypnamen “fqdn” und den Funktionsnamen “create”
  • entspricht: Ausgabe der Parameterdaten für System dns, Objekttyp fqdn, Funktion create
  • 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, Objekttyp fqdn, 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 Objektattribute fqdn, 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 und dns.record, da es zwischen diesen beiden Objekkttypen 2 FK-Constraints (Typ F) 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 Objekttyps nd.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 Objekttyp nd.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 Parameterwertes dhcp.lease.ip_addr_value an dns.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 Parameterwertes dhcp.lease.gpk an dhcp.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 Systems dhcp
    • 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