---
source: tests/schemars_snapshots.rs
expression: "schema_json::<Vertrag>()"
---
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Vertrag",
  "description": "Modell für die Abbildung von Vertragsbeziehungen;\nDas Objekt dient dazu, alle Arten von Verträgen, die in der Energiewirtschaft Verwendung finden, abzubilden.\n\n> **Note:** [Vertrag JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/bo/Vertrag.json)",
  "type": "object",
  "properties": {
    "_id": {
      "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
      "type": [
        "string",
        "null"
      ]
    },
    "_typ": {
      "description": "BO type identifier — always `BoTyp::Vertrag` for this struct.",
      "anyOf": [
        {
          "$ref": "#/$defs/BoTyp"
        },
        {
          "type": "null"
        }
      ]
    },
    "_version": {
      "description": "Version der BO-Struktur aka \"fachliche Versionierung\"",
      "type": [
        "string",
        "null"
      ]
    },
    "beschreibung": {
      "description": "Beschreibung zum Vertrag",
      "type": [
        "string",
        "null"
      ]
    },
    "sparte": {
      "description": "Unterscheidungsmöglichkeiten für die Sparte",
      "anyOf": [
        {
          "$ref": "#/$defs/Sparte"
        },
        {
          "type": "null"
        }
      ]
    },
    "unterzeichnervp1": {
      "description": "Unterzeichner des Vertragspartners 1",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/Unterschrift"
      }
    },
    "unterzeichnervp2": {
      "description": "Unterzeichner des Vertragspartners 2",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/Unterschrift"
      }
    },
    "vertragsart": {
      "description": "Hier ist festgelegt, um welche Art von Vertrag es sich handelt.",
      "anyOf": [
        {
          "$ref": "#/$defs/Vertragsart"
        },
        {
          "type": "null"
        }
      ]
    },
    "vertragsbeginn": {
      "description": "Gibt an, wann der Vertrag beginnt (inklusiv)",
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "vertragsende": {
      "description": "Gibt an, wann der Vertrag (voraussichtlich) endet oder beendet wurde (exklusiv)",
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "vertragskonditionen": {
      "description": "Festlegungen zu Laufzeiten und Kündigungsfristen",
      "anyOf": [
        {
          "$ref": "#/$defs/Vertragskonditionen"
        },
        {
          "type": "null"
        }
      ]
    },
    "vertragsnummer": {
      "description": "Eine im Verwendungskontext eindeutige Nummer für den Vertrag",
      "type": [
        "string",
        "null"
      ]
    },
    "vertragspartner1": {
      "description": "Der \"erstgenannte\" Vertragspartner.\nIn der Regel der Aussteller des Vertrags.\nBeispiel: \"Vertrag zwischen Vertragspartner 1 ...\"",
      "anyOf": [
        {
          "$ref": "#/$defs/Geschaeftspartner"
        },
        {
          "type": "null"
        }
      ]
    },
    "vertragspartner2": {
      "description": "Der \"zweitgenannte\" Vertragspartner.\nIn der Regel der Empfänger des Vertrags.\nBeispiel \"Vertrag zwischen Vertragspartner 1 und Vertragspartner 2\".",
      "anyOf": [
        {
          "$ref": "#/$defs/Geschaeftspartner"
        },
        {
          "type": "null"
        }
      ]
    },
    "vertragsstatus": {
      "description": "Gibt den Status des Vertrags an",
      "anyOf": [
        {
          "$ref": "#/$defs/Vertragsstatus"
        },
        {
          "type": "null"
        }
      ]
    },
    "vertragsteile": {
      "description": "Der Vertragsteil wird dazu verwendet, eine vertragliche Leistung in Bezug zu einer Lokation\n(Markt- oder Messlokation) festzulegen.",
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/Vertragsteil"
      }
    },
    "zusatzAttribute": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/ZusatzAttribut"
      }
    }
  },
  "additionalProperties": true,
  "$defs": {
    "Adresse": {
      "description": "Contains an address that can be used for most purposes.\n\n> **Note:** [Adresse JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Adresse.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "adresszusatz": {
          "description": "Zusatzhinweis zum Auffinden der Adresse, z.B. \"3. Stock linke Wohnung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "coErgaenzung": {
          "description": "Im Falle einer c/o-Adresse steht in diesem Attribut die Anrede. Z.B. \"c/o Veronica Hauptmieterin\"",
          "type": [
            "string",
            "null"
          ]
        },
        "hausnummer": {
          "description": "Hausnummer inkl. Zusatz; z.B. \"3\", \"4a\"",
          "type": [
            "string",
            "null"
          ]
        },
        "landescode": {
          "description": "Offizieller ISO-Landescode",
          "anyOf": [
            {
              "$ref": "#/$defs/Landescode"
            },
            {
              "type": "null"
            }
          ]
        },
        "ort": {
          "description": "Bezeichnung der Stadt; z.B. \"Hückelhoven\"",
          "type": [
            "string",
            "null"
          ]
        },
        "ortsteil": {
          "description": "Bezeichnung des Ortsteils; z.B. \"Mitte\"",
          "type": [
            "string",
            "null"
          ]
        },
        "postfach": {
          "description": "Im Falle einer Postfachadresse das Postfach; Damit werden Straße und Hausnummer nicht berücksichtigt",
          "type": [
            "string",
            "null"
          ]
        },
        "postleitzahl": {
          "description": "Die Postleitzahl; z.B: \"41836\"",
          "type": [
            "string",
            "null"
          ]
        },
        "strasse": {
          "description": "Bezeichnung der Straße; z.B. \"Weserstraße\"",
          "type": [
            "string",
            "null"
          ]
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "Anrede": {
      "description": "Übersicht möglicher Anreden, z.B. eines Geschäftspartners.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "HERR",
            "FRAU",
            "EHELEUTE",
            "FIRMA",
            "FAMILIE",
            "ERBENGEMEINSCHAFT",
            "GRUNDSTUECKSGEMEINSCHAFT"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "BoTyp": {
      "description": "Auflistung sämtlicher existierender Geschäftsobjekte.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ANGEBOT",
            "AUSSCHREIBUNG",
            "BILANZIERUNG",
            "BUENDELVERTRAG",
            "ENERGIEMENGE",
            "FREMDKOSTEN",
            "GERAET",
            "GESCHAEFTSOBJEKT",
            "GESCHAEFTSPARTNER",
            "KOSTEN",
            "LASTGANG",
            "MARKTLOKATION",
            "MESSLOKATION",
            "NETZLOKATION",
            "MARKTTEILNEHMER",
            "NETZNUTZUNGSRECHNUNG",
            "TECHNISCHERESSOURCE",
            "STEUERBARERESSOURCE",
            "PERSON",
            "PREISBLATT",
            "PREISBLATTDIENSTLEISTUNG",
            "PREISBLATTHARDWARE",
            "PREISBLATTKONZESSIONSABGABE",
            "PREISBLATTMESSUNG",
            "PREISBLATTNETZNUTZUNG",
            "PREISBLATTUMLAGEN",
            "RECHNUNG",
            "REGION",
            "REGIONALTARIF",
            "STANDORTEIGENSCHAFTEN",
            "TARIF",
            "TARIFINFO",
            "TARIFKOSTEN",
            "TARIFPREISBLATT",
            "VERTRAG",
            "ZAEHLER",
            "ZEITREIHE",
            "LOKATIONSZUORDNUNG"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "ComTyp": {
      "description": "Auflistung sämtlicher existierender Komponenten.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ADRESSE",
            "ANGEBOTSPOSITION",
            "ANGEBOTSTEIL",
            "ANGEBOTSVARIANTE",
            "AUFABSCHLAG",
            "AUFABSCHLAGPROORT",
            "AUFABSCHLAGREGIONAL",
            "AUFABSCHLAGSTAFFELPROORT",
            "AUSSCHREIBUNGSDETAIL",
            "AUSSCHREIBUNGSLOS",
            "BETRAG",
            "DIENSTLEISTUNG",
            "ENERGIEHERKUNFT",
            "ENERGIEMIX",
            "FREMDKOSTENBLOCK",
            "FREMDKOSTENPOSITION",
            "GEOKOORDINATEN",
            "KATASTERADRESSE",
            "KONFIGURATIONSPRODUKT",
            "KONTAKTWEG",
            "KONZESSIONSABGABE",
            "KOSTENBLOCK",
            "KOSTENPOSITION",
            "KRITERIUMWERT",
            "LASTPROFIL",
            "MARKTGEBIETINFO",
            "MENGE",
            "POSITIONSAUFABSCHLAG",
            "PREIS",
            "PREISGARANTIE",
            "PREISPOSITION",
            "PREISSTAFFEL",
            "RECHNUNGSPOSITION",
            "REGIONALEGUELTIGKEIT",
            "REGIONALEPREISGARANTIE",
            "REGIONALEPREISSTAFFEL",
            "REGIONALERAUFABSCHLAG",
            "REGIONALETARIFPREISPOSITION",
            "REGIONSKRITERIUM",
            "SIGMOIDPARAMETER",
            "STANDORTEIGENSCHAFTENGAS",
            "STANDORTEIGENSCHAFTENSTROM",
            "STEUERBETRAG",
            "TAGESPARAMETER",
            "TARIFBERECHNUNGSPARAMETER",
            "TARIFEINSCHRAENKUNG",
            "TARIFPREIS",
            "TARIFPREISPOSITION",
            "TARIFPREISPOSITIONPROORT",
            "TARIFPREISSTAFFELPROORT",
            "UNTERSCHRIFT",
            "VERBRAUCH",
            "VERTRAGSKONDITIONEN",
            "VERTRAGSTEIL",
            "VERWENDUNGSZWECKPROMARKTROLLE",
            "ZAEHLWERK",
            "ZAEHLZEITREGISTER",
            "ZEITRAUM",
            "ZEITREIHENWERT",
            "ZUSTAENDIGKEIT"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Geschaeftspartner": {
      "description": "Mit diesem Objekt können Geschäftspartner übertragen werden.\nSowohl Unternehmen, als auch Privatpersonen können Geschäftspartner sein.\nHinweis: \"Marktteilnehmer\" haben ein eigenes BO, welches sich von diesem BO ableitet.\nHier sollte daher keine Zuordnung zu Marktrollen erfolgen.\n\n> **Note:** [Geschaeftspartner JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/bo/Geschaeftspartner.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "BO type identifier — always `BoTyp::Geschaeftspartner` for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/BoTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der BO-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "adresse": {
          "description": "Adresse des Geschäftspartners",
          "anyOf": [
            {
              "$ref": "#/$defs/Adresse"
            },
            {
              "type": "null"
            }
          ]
        },
        "amtsgericht": {
          "description": "Amtsgericht bzw Handelsregistergericht, das die Handelsregisternummer herausgegeben hat",
          "type": [
            "string",
            "null"
          ]
        },
        "anrede": {
          "description": "Mögliche Anrede der Person",
          "anyOf": [
            {
              "$ref": "#/$defs/Anrede"
            },
            {
              "type": "null"
            }
          ]
        },
        "ansprechpartner": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Person"
          }
        },
        "geschaeftspartnerrollen": {
          "description": "Rollen, die die Geschäftspartner inne haben (z.B. Interessent, Kunde)",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Geschaeftspartnerrolle"
          }
        },
        "glaeubigerId": {
          "description": "Die Gläubiger-ID welche im Zahlungsverkehr verwendet wird; Z.B. \"DE 47116789\"",
          "type": [
            "string",
            "null"
          ]
        },
        "handelsregisternummer": {
          "description": "Handelsregisternummer des Geschäftspartners",
          "type": [
            "string",
            "null"
          ]
        },
        "individuelleAnrede": {
          "description": "Im Falle einer nicht standardisierten Anrede kann hier eine frei definierbare Anrede vorgegeben werden.\nBeispiel: \"Vereinsgemeinschaft\", \"Pfarrer\", \"Hochwürdigster Herr Abt\".",
          "type": [
            "string",
            "null"
          ]
        },
        "kontaktwege": {
          "description": "Kontaktwege des Geschäftspartners",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Kontaktweg"
          }
        },
        "nachname": {
          "description": "Nachname (Familienname) der Person",
          "type": [
            "string",
            "null"
          ]
        },
        "organisationsname": {
          "description": "Name der Firma, wenn Gewerbe oder andere Organisation.",
          "type": [
            "string",
            "null"
          ]
        },
        "organisationstyp": {
          "description": "Kennzeichnung ob es sich um ein Gewerbe/Unternehmen, eine Privatperson oder eine andere Art von Organisation handelt.",
          "anyOf": [
            {
              "$ref": "#/$defs/Organisationstyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "titel": {
          "description": "Möglicher Titel der Person",
          "anyOf": [
            {
              "$ref": "#/$defs/Titel"
            },
            {
              "type": "null"
            }
          ]
        },
        "umsatzsteuerId": {
          "description": "Die Steuer-ID des Geschäftspartners; Beispiel: \"DE 813281825\"",
          "type": [
            "string",
            "null"
          ]
        },
        "vorname": {
          "description": "Vorname der Person",
          "type": [
            "string",
            "null"
          ]
        },
        "website": {
          "description": "Internetseite des Marktpartners",
          "type": [
            "string",
            "null"
          ]
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "Geschaeftspartnerrolle": {
      "description": "Diese Rollen kann ein Geschäftspartner einnehmen.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "LIEFERANT",
            "DIENSTLEISTER",
            "KUNDE",
            "INTERESSENT",
            "MARKTPARTNER"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Kontaktart": {
      "description": "Gibt an, auf welchem Weg die Person oder der Geschäftspartner kontaktiert werden kann.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "POSTWEG",
            "TELEFON",
            "FAX",
            "E_MAIL",
            "SMS"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Kontaktweg": {
      "description": "Die Komponente wird dazu verwendet, die Kontaktwege innerhalb des BOs Person darzustellen\n\n> **Note:** [Kontakt JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Kontakt.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "beschreibung": {
          "description": "Spezifikation, beispielsweise \"Durchwahl\", \"Sammelnummer\" etc.",
          "type": [
            "string",
            "null"
          ]
        },
        "istBevorzugterKontaktweg": {
          "description": "Gibt an, ob es sich um den bevorzugten Kontaktweg handelt.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "kontaktart": {
          "description": "Gibt die Kontaktart des Kontaktes an.",
          "anyOf": [
            {
              "$ref": "#/$defs/Kontaktart"
            },
            {
              "type": "null"
            }
          ]
        },
        "kontaktwert": {
          "description": "Die Nummer oder E-Mail-Adresse.",
          "type": [
            "string",
            "number",
            "null"
          ],
          "pattern": "^-?\\d+(\\.\\d+)?([eE]\\d+)?$"
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "Landescode": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "AF",
            "AX",
            "AL",
            "DZ",
            "AS",
            "AD",
            "AO",
            "AI",
            "AQ",
            "AG",
            "AR",
            "AM",
            "AW",
            "AU",
            "AT",
            "AZ",
            "BS",
            "BH",
            "BD",
            "BB",
            "BY",
            "BE",
            "BZ",
            "BJ",
            "BM",
            "BT",
            "BO",
            "BQ",
            "BA",
            "BW",
            "BV",
            "BR",
            "IO",
            "BN",
            "BG",
            "BF",
            "BI",
            "KH",
            "CM",
            "CA",
            "CV",
            "KY",
            "CF",
            "TD",
            "CL",
            "CN",
            "CX",
            "CC",
            "CO",
            "KM",
            "CG",
            "CD",
            "CK",
            "CR",
            "CI",
            "HR",
            "CU",
            "CW",
            "CY",
            "CZ",
            "DK",
            "DJ",
            "DM",
            "DO",
            "EC",
            "EG",
            "SV",
            "GQ",
            "ER",
            "EE",
            "ET",
            "FK",
            "FO",
            "FJ",
            "FI",
            "FR",
            "GF",
            "PF",
            "TF",
            "GA",
            "GM",
            "GE",
            "DE",
            "GH",
            "GI",
            "GR",
            "GL",
            "GD",
            "GP",
            "GU",
            "GT",
            "GG",
            "GN",
            "GW",
            "GY",
            "HT",
            "HM",
            "VA",
            "HN",
            "HK",
            "HU",
            "IS",
            "IN",
            "ID",
            "IR",
            "IQ",
            "IE",
            "IM",
            "IL",
            "IT",
            "JM",
            "JP",
            "JE",
            "JO",
            "KZ",
            "KE",
            "KI",
            "KP",
            "KR",
            "XK",
            "KW",
            "KG",
            "LA",
            "LV",
            "LB",
            "LS",
            "LR",
            "LY",
            "LI",
            "LT",
            "LU",
            "MO",
            "MK",
            "MG",
            "MW",
            "MY",
            "MV",
            "ML",
            "MT",
            "MH",
            "MQ",
            "MR",
            "MU",
            "YT",
            "MX",
            "FM",
            "MD",
            "MC",
            "MN",
            "ME",
            "MS",
            "MA",
            "MZ",
            "MM",
            "NA",
            "NR",
            "NP",
            "NL",
            "NC",
            "NZ",
            "NI",
            "NE",
            "NG",
            "NU",
            "NF",
            "MP",
            "NO",
            "OM",
            "PK",
            "PW",
            "PS",
            "PA",
            "PG",
            "PY",
            "PE",
            "PH",
            "PN",
            "PL",
            "PT",
            "PR",
            "QA",
            "RE",
            "RO",
            "RU",
            "RW",
            "BL",
            "SH",
            "KN",
            "LC",
            "MF",
            "PM",
            "VC",
            "WS",
            "SM",
            "ST",
            "SA",
            "SN",
            "RS",
            "SC",
            "SL",
            "SG",
            "SX",
            "SK",
            "SI",
            "SB",
            "SO",
            "ZA",
            "GS",
            "SS",
            "ES",
            "LK",
            "SD",
            "SR",
            "SJ",
            "SZ",
            "SE",
            "CH",
            "SY",
            "TW",
            "TJ",
            "TZ",
            "TH",
            "TL",
            "TG",
            "TK",
            "TO",
            "TT",
            "TN",
            "TR",
            "TM",
            "TC",
            "TV",
            "UG",
            "UA",
            "AE",
            "GB",
            "US",
            "UM",
            "UY",
            "UZ",
            "VU",
            "VE",
            "VN",
            "VG",
            "VI",
            "WF",
            "EH",
            "YE",
            "ZM",
            "ZW"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Menge": {
      "description": "Abbildung einer Menge mit Wert und Einheit.\n\n> **Note:** [Menge JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Menge.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "einheit": {
          "description": "Gibt die Einheit zum jeweiligen Wert an",
          "anyOf": [
            {
              "$ref": "#/$defs/Mengeneinheit"
            },
            {
              "type": "null"
            }
          ]
        },
        "wert": {
          "description": "Gibt den absoluten Wert der Menge an",
          "type": [
            "string",
            "number",
            "null"
          ],
          "pattern": "^-?\\d+(\\.\\d+)?([eE]\\d+)?$"
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "Mengeneinheit": {
      "description": "Einheit: Messgrößen, die per Messung oder Vorgabe ermittelt werden können.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "W",
            "WH",
            "KW",
            "KWH",
            "KVARH",
            "MW",
            "MWH",
            "STUECK",
            "KUBIKMETER",
            "SEKUNDE",
            "MINUTE",
            "STUNDE",
            "VIERTEL_STUNDE",
            "TAG",
            "WOCHE",
            "MONAT",
            "QUARTAL",
            "HALBJAHR",
            "JAHR",
            "PROZENT",
            "KVAR",
            "KWHK",
            "VAR",
            "VARH"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Organisationstyp": {
      "description": "Hier wird festgelegt, ob der Geschäftspartner eine Person, eine Firma oder etwas anderes ist.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "PRIVATPERSON",
            "UNTERNEHMEN",
            "KOMMUNALE_EINRICHTUNG",
            "STAATLICHE_BEHOERDE"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Person": {
      "description": "Object containing information about a Person\n\n> **Note:** [Person JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/bo/Person.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "BO type identifier — always `BoTyp::Person` for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/BoTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der BO-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "adresse": {
          "description": "Adresse der Person, falls diese von der Adresse des Geschäftspartners abweicht",
          "anyOf": [
            {
              "$ref": "#/$defs/Adresse"
            },
            {
              "type": "null"
            }
          ]
        },
        "anrede": {
          "description": "Mögliche Anrede der Person",
          "anyOf": [
            {
              "$ref": "#/$defs/Anrede"
            },
            {
              "type": "null"
            }
          ]
        },
        "geburtsdatum": {
          "description": "Geburtsdatum der Person",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "individuelleAnrede": {
          "description": "Im Falle einer nicht standardisierten Anrede kann hier eine frei definierbare Anrede vorgegeben werden.\nBeispiel: \"Vereinsgemeinschaft\", \"Pfarrer\", \"Hochwürdigster Herr Abt\".",
          "type": [
            "string",
            "null"
          ]
        },
        "kommentar": {
          "description": "Weitere Informationen zur Person",
          "type": [
            "string",
            "null"
          ]
        },
        "kontaktwege": {
          "description": "Kontaktwege der Person",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Kontaktweg"
          }
        },
        "nachname": {
          "description": "Nachname (Familienname) der Person",
          "type": [
            "string",
            "null"
          ]
        },
        "titel": {
          "description": "Möglicher Titel der Person",
          "anyOf": [
            {
              "$ref": "#/$defs/Titel"
            },
            {
              "type": "null"
            }
          ]
        },
        "vorname": {
          "description": "Vorname der Person",
          "type": [
            "string",
            "null"
          ]
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        },
        "zustaendigkeiten": {
          "description": "Liste der Abteilungen und Zuständigkeiten der Person",
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/Zustaendigkeit"
          }
        }
      },
      "additionalProperties": true
    },
    "Sparte": {
      "description": "Unterscheidungsmöglichkeiten für die Sparte.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "STROM",
            "GAS",
            "FERNWAERME",
            "NAHWAERME",
            "WASSER",
            "ABWASSER",
            "STROM_UND_GAS"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Themengebiet": {
      "description": "Über dieses ENUM kann eine thematische Zuordnung, beispielsweise eines Ansprechpartners, vorgenommen werden.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ALLGEMEINER_INFORMATIONSAUSTAUSCH",
            "AN_UND_ABMELDUNG",
            "ANSPRECHPARTNER_ALLGEMEIN",
            "ANSPRECHPARTNER_BDEW_DVGW",
            "ANSPRECHPARTNER_IT_TECHNIK",
            "BILANZIERUNG",
            "BILANZKREISKOORDINATOR",
            "BILANZKREISVERANTWORTLICHER",
            "DATENFORMATE_ZERTIFIKATE_VERSCHLUESSELUNGEN",
            "DEBITORENMANAGEMENT",
            "DEMAND_SIDE_MANAGEMENT",
            "EDI_VEREINBARUNG",
            "EDIFACT",
            "ENERGIEDATENMANAGEMENT",
            "FAHRPLANMANAGEMENT",
            "ALOCAT",
            "APERAK",
            "CONTRL",
            "INVOIC",
            "MSCONS",
            "ORDERS",
            "ORDERSP",
            "REMADV",
            "UTILMD",
            "GABI",
            "GELI",
            "GERAETERUECKGABE",
            "GERAETEWECHSEL",
            "GPKE",
            "INBETRIEBNAHME",
            "KAPAZITAETSMANAGEMENT",
            "KLAERFAELLE",
            "LASTGAENGE_RLM",
            "LIEFERANTENRAHMENVERTRAG",
            "LIEFERANTENWECHSEL",
            "MABIS",
            "MAHNWESEN",
            "MARKTGEBIETSVERANTWORTLICHER",
            "MARKTKOMMUNIKATION",
            "MEHR_MINDERMENGEN",
            "MSB_MDL",
            "NETZABRECHNUNG",
            "NETZENTGELTE",
            "NETZMANAGEMENT",
            "RECHT",
            "REGULIERUNGSMANAGEMENT",
            "REKLAMATIONEN",
            "SPERREN_ENTSPERREN_INKASSO",
            "STAMMDATEN",
            "STOERUNGSFAELLE",
            "TECHNISCHE_FRAGEN",
            "UMSTELLUNG_INVOIC",
            "VERSCHLUESSELUNG_SIGNATUR",
            "VERTRAGSMANAGEMENT",
            "VERTRIEB",
            "WIM",
            "ZAEHLERSTAENDE_SLP",
            "ZAHLUNGSVERKEHR",
            "ZUORDNUNGSVEREINBARUNG",
            "EINSPEISUNG",
            "BEWEGUNGSDATEN"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Titel": {
      "description": "Übersicht möglicher Titel, z.B. eines Geschäftspartners.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "DR",
            "PROF",
            "PROF_DR"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Unterschrift": {
      "description": "Modellierung einer Unterschrift, z.B. für Verträge, Angebote etc.\n\n> **Note:** [Unterschrift JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Unterschrift.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "datum": {
          "description": "Datum der Unterschrift",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "name": {
          "description": "Name des Unterschreibers",
          "type": [
            "string",
            "null"
          ]
        },
        "ort": {
          "description": "Ort, an dem die Unterschrift geleistet wird",
          "type": [
            "string",
            "null"
          ]
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "Vertragsart": {
      "description": "Aufzählung der Vertragsarten.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ENERGIELIEFERVERTRAG",
            "NETZNUTZUNGSVERTRAG",
            "BILANZIERUNGSVERTRAG",
            "MESSSTELLENBETRIEBSVERTRAG",
            "BUENDELVERTRAG"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Vertragskonditionen": {
      "description": "Abbildung für Vertragskonditionen. Die Komponente wird sowohl im Vertrag als auch im Tarif verwendet.\n\n> **Note:** [Vertragskonditionen JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Vertragskonditionen.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "abschlagszyklus": {
          "description": "In diesen Zyklen werden Abschläge gestellt. Alternativ kann auch die Anzahl in den Konditionen angeben werden.",
          "anyOf": [
            {
              "$ref": "#/$defs/Zeitraum"
            },
            {
              "type": "null"
            }
          ]
        },
        "anzahlAbschlaege": {
          "description": "Anzahl der vereinbarten Abschläge pro Jahr, z.B. 12",
          "type": [
            "string",
            "number",
            "null"
          ],
          "pattern": "^-?\\d+(\\.\\d+)?([eE]\\d+)?$"
        },
        "beschreibung": {
          "description": "Freitext zur Beschreibung der Konditionen, z.B. \"Standardkonditionen Gas\"",
          "type": [
            "string",
            "null"
          ]
        },
        "kuendigungsfrist": {
          "description": "Innerhalb dieser Frist kann der Vertrag gekündigt werden",
          "anyOf": [
            {
              "$ref": "#/$defs/Zeitraum"
            },
            {
              "type": "null"
            }
          ]
        },
        "vertragslaufzeit": {
          "description": "Über diesen Zeitraum läuft der Vertrag",
          "anyOf": [
            {
              "$ref": "#/$defs/Zeitraum"
            },
            {
              "type": "null"
            }
          ]
        },
        "vertragsverlaengerung": {
          "description": "Falls der Vertrag nicht gekündigt wird, verlängert er sich automatisch um die hier angegebene Zeit",
          "anyOf": [
            {
              "$ref": "#/$defs/Zeitraum"
            },
            {
              "type": "null"
            }
          ]
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "Vertragsstatus": {
      "description": "Abbildung einer Statusinformation für Verträge.",
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "IN_ARBEIT",
            "UEBERMITTELT",
            "ANGENOMMEN",
            "AKTIV",
            "ABGELEHNT",
            "WIDERRUFEN",
            "STORNIERT",
            "GEKUENDIGT",
            "BEENDET"
          ]
        },
        {
          "description": "Unknown or future variant — produced when deserializing a value\nthat is not yet known to this version of the library.",
          "type": "string",
          "const": "UNKNOWN"
        }
      ]
    },
    "Vertragsteil": {
      "description": "Abbildung für einen Vertragsteil. Der Vertragsteil wird dazu verwendet,\neine vertragliche Leistung in Bezug zu einer Lokation (Markt- oder Messlokation) festzulegen.\n\n> **Note:** [Vertragsteil JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Vertragsteil.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "lokation": {
          "description": "Der Identifier für diejenigen Markt- oder Messlokation, die zu diesem Vertragsteil gehören.\nVerträge für mehrere Lokationen werden mit mehreren Vertragsteilen abgebildet",
          "type": [
            "string",
            "null"
          ]
        },
        "maximaleAbnahmemenge": {
          "description": "Für die Lokation festgelegte maximale Abnahmemenge (exklusiv)",
          "type": [
            "string",
            "number",
            "null"
          ],
          "pattern": "^-?\\d+(\\.\\d+)?([eE]\\d+)?$"
        },
        "minimaleAbnahmemenge": {
          "description": "Für die Lokation festgelegte Mindestabnahmemenge (inklusiv)",
          "type": [
            "string",
            "number",
            "null"
          ],
          "pattern": "^-?\\d+(\\.\\d+)?([eE]\\d+)?$"
        },
        "vertraglichFixierteMenge": {
          "description": "Für die Lokation festgeschriebene Abnahmemenge",
          "anyOf": [
            {
              "$ref": "#/$defs/Menge"
            },
            {
              "type": "null"
            }
          ]
        },
        "vertragsteilbeginn": {
          "description": "Start der Gültigkeit des Vertragsteils (inklusiv)",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "vertragsteilende": {
          "description": "Ende der Gültigkeit des Vertragsteils (exklusiv)",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "Zeitraum": {
      "description": "Diese Komponente wird zur Abbildung von Zeiträumen in Form von Dauern oder der Angabe von Start und Ende verwendet.\nEs muss daher eine der drei Möglichkeiten angegeben sein:\n- Einheit und Dauer oder\n- Zeitraum: Startdatum bis Enddatum oder\n- Zeitraum: Startzeitpunkt (Datum und Uhrzeit) bis Endzeitpunkt (Datum und Uhrzeit)\n\n> **Note:** [Zeitraum JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Zeitraum.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "dauer": {
          "description": "Dauer in ISO 8601 Format.\n\nExample:\n'P1DT30H4S'\n\nSee [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339)",
          "type": [
            "string",
            "null"
          ]
        },
        "enddatum": {
          "description": "Enddatum des betrachteten Zeitraums ist **inklusiv**.\n\nExample:\n'2025-01-01'",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "enduhrzeit": {
          "description": "Enduhrzeit mit Zeitzone. Die angegebene Uhrzeit ist im betrachteten Zeitraum **exklusiv**.\n\nExample:\n'19:00:00+01:00'",
          "type": [
            "string",
            "null"
          ]
        },
        "startdatum": {
          "description": "Startdatum des betrachteten Zeitraums ist **inklusiv**.\n\nExample:\n'2025-01-01'",
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "startuhrzeit": {
          "description": "Startuhrzeit mit Zeitzone. Die angegebene Uhrzeit ist im betrachteten Zeitraum **inklusiv**.\n\nExample:\n'18:00:00+01:00'",
          "type": [
            "string",
            "null"
          ]
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    },
    "ZusatzAttribut": {
      "description": "Viele Datenobjekte weisen in unterschiedlichen Systemen eine eindeutige ID (Kundennummer, GP-Nummer etc.) auf.\nBeim Austausch von Datenobjekten zwischen verschiedenen Systemen ist es daher hilfreich,\nsich die eindeutigen IDs der anzubindenden Systeme zu merken.\n\n> **Note:** [ZusatzAttribut JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/ZusatzAttribut.json)",
      "type": "object",
      "properties": {
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "wert": true
      },
      "additionalProperties": true
    },
    "Zustaendigkeit": {
      "description": "Enthält die zeitliche Zuordnung eines Ansprechpartners zu Abteilungen und Zuständigkeiten.\n\n> **Note:** [Zustaendigkeit JSON Schema](https://json-schema.app/view/%23?url=https://raw.githubusercontent.com/BO4E/BO4E-Schemas/v202501.0.0/src/bo4e_schemas/com/Zustaendigkeit.json)",
      "type": "object",
      "properties": {
        "_id": {
          "description": "Eine generische ID, die für eigene Zwecke genutzt werden kann.\nZ.B. könnten hier UUIDs aus einer Datenbank stehen oder URLs zu einem Backend-System.",
          "type": [
            "string",
            "null"
          ]
        },
        "_typ": {
          "description": "COM type identifier for this struct.",
          "anyOf": [
            {
              "$ref": "#/$defs/ComTyp"
            },
            {
              "type": "null"
            }
          ]
        },
        "_version": {
          "description": "Version der COM-Struktur aka \"fachliche Versionierung\"",
          "type": [
            "string",
            "null"
          ]
        },
        "abteilung": {
          "description": "Abteilung, in der der Ansprechpartner/ die Person tätig ist",
          "type": [
            "string",
            "null"
          ]
        },
        "position": {
          "description": "Berufliche Rolle des Ansprechpartners/ der Person",
          "type": [
            "string",
            "null"
          ]
        },
        "themengebiet": {
          "description": "Hier kann eine thematische Zuordnung des Ansprechpartners bzw. der Person angegeben werden",
          "anyOf": [
            {
              "$ref": "#/$defs/Themengebiet"
            },
            {
              "type": "null"
            }
          ]
        },
        "zusatzAttribute": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ZusatzAttribut"
          }
        }
      },
      "additionalProperties": true
    }
  }
}
