{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "alternateNames": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Alternate names of the thing"
    },
    "description": {
      "type": "string",
      "description": "Description of the thing",
      "minLength": 1
    },
    "identifiers": {
      "$ref": "#/definitions/SCMap%3Cstring%3E",
      "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
    },
    "image": {
      "type": "string",
      "description": "URL of an image of the thing"
    },
    "name": {
      "type": "string",
      "description": "Name of the thing",
      "minLength": 1
    },
    "sameAs": {
      "type": "string",
      "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
    },
    "translations": {
      "$ref": "#/definitions/SCTranslations%3CSCCourseOfStudyTranslatableProperties%3E",
      "description": "Translated fields of a course of study"
    },
    "type": {
      "type": "string",
      "const": "course of study",
      "description": "Type of the course of study"
    },
    "uid": {
      "$ref": "#/definitions/SCUuid",
      "description": "Universally unique identifier of the thing"
    },
    "origin": {
      "anyOf": [
        {
          "$ref": "#/definitions/SCThingRemoteOrigin"
        },
        {
          "$ref": "#/definitions/SCThingUserOrigin"
        }
      ],
      "description": "Origin of the thing"
    },
    "academicDegree": {
      "type": "string",
      "description": "The achievable academic degree"
    },
    "academicDegreewithField": {
      "type": "string",
      "description": "The achievable academic degree with academic field specification (eg. Master of Science)"
    },
    "academicDegreewithFieldShort": {
      "type": "string",
      "description": "The achievable academic degree with academic field specification shorted (eg. M.Sc.)."
    },
    "offers": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SCThingThatCanBeOfferedOffer%3CSCAcademicPriceGroup%3E"
      },
      "description": "List of offers for that thing"
    },
    "mainLanguage": {
      "$ref": "#/definitions/SCLanguage",
      "description": "The main language in which the course of study is beeing offered"
    },
    "mode": {
      "$ref": "#/definitions/SCCourseOfStudyMode",
      "description": "The modes the course of study is offered in"
    },
    "timeMode": {
      "$ref": "#/definitions/SCCourseOfStudyTimeMode",
      "description": "The time modes the course of study is offered in"
    },
    "department": {
      "$ref": "#/definitions/SCOrganizationWithoutReferences",
      "description": "The department that manages the course of study"
    },
    "secretary": {
      "$ref": "#/definitions/SCOrganizationWithoutReferences",
      "description": "The secretary that administers requests and questions concerning the course of study"
    },
    "startDates": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SCDateSeriesWithoutReferences"
      },
      "description": "Dates at which the course of study is planned to start"
    }
  },
  "required": [
    "academicDegree",
    "name",
    "origin",
    "type",
    "uid"
  ],
  "additionalProperties": false,
  "description": "A course of study",
  "definitions": {
    "SCMap<string>": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "description": "One value for each key"
      },
      "description": "Capsulation for a map with a string as key with values of type `T`\n\n!!! BEWARE !!! Can't be refactored to a `Map<K, V>`, because it can't be serialized via JSON.stringify(map)"
    },
    "SCTranslations<SCCourseOfStudyTranslatableProperties>": {
      "type": "object",
      "properties": {
        "de": {
          "$ref": "#/definitions/SCCourseOfStudyTranslatableProperties",
          "description": "German translations"
        },
        "en": {
          "$ref": "#/definitions/SCCourseOfStudyTranslatableProperties",
          "description": "English translations"
        }
      },
      "additionalProperties": false,
      "description": "Translations for specific languages"
    },
    "SCCourseOfStudyTranslatableProperties": {
      "$ref": "#/definitions/SCThingThatCanBeOfferedTranslatableProperties",
      "description": "Translatable properties of a course of study"
    },
    "SCThingThatCanBeOfferedTranslatableProperties": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Translation of the description of the thing"
        },
        "name": {
          "type": "string",
          "description": "Translation of the name of the thing"
        },
        "origin": {
          "$ref": "#/definitions/SCThingTranslatablePropertyOrigin",
          "description": "Origin of the thing"
        },
        "offers[].availability": {
          "type": "string",
          "description": "Availability of an offer"
        }
      },
      "additionalProperties": false,
      "description": "Translatable properties of a thing that can be offered"
    },
    "SCThingTranslatablePropertyOrigin": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Translation of the name of the origin"
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false,
      "description": "Translatable property of an origin"
    },
    "SCUuid": {
      "type": "string",
      "description": "Universally unique identifier of the thing",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
    },
    "SCThingRemoteOrigin": {
      "type": "object",
      "properties": {
        "maintainer": {
          "anyOf": [
            {
              "$ref": "#/definitions/SCPersonWithoutReferences"
            },
            {
              "$ref": "#/definitions/SCOrganizationWithoutReferences"
            }
          ],
          "description": "Maintainer of the origin\n\ne.g. restaurant of a dish"
        },
        "modified": {
          "$ref": "#/definitions/SCISO8601Date",
          "description": "When the thing was modified last in the origin"
        },
        "type": {
          "type": "string",
          "const": "remote",
          "description": "Type of the origin"
        },
        "indexed": {
          "$ref": "#/definitions/SCISO8601Date",
          "description": "When the thing was indexed last from the origin"
        },
        "name": {
          "type": "string",
          "description": "Name of the origin"
        },
        "originalId": {
          "type": "string",
          "description": "Original ID of the thing in the origin"
        },
        "responsibleEntity": {
          "anyOf": [
            {
              "$ref": "#/definitions/SCPersonWithoutReferences"
            },
            {
              "$ref": "#/definitions/SCOrganizationWithoutReferences"
            }
          ],
          "description": "Entity that is responsible for the entity\n\ne.g. an organizer for an event"
        },
        "url": {
          "type": "string",
          "description": "Main URL of the origin"
        }
      },
      "required": [
        "indexed",
        "name",
        "type"
      ],
      "additionalProperties": false,
      "description": "Remote origin of a thing"
    },
    "SCPersonWithoutReferences": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternate names of the thing"
        },
        "description": {
          "type": "string",
          "description": "Description of the thing",
          "minLength": 1
        },
        "identifiers": {
          "$ref": "#/definitions/SCMap%3Cstring%3E",
          "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
        },
        "image": {
          "type": "string",
          "description": "URL of an image of the thing"
        },
        "name": {
          "type": "string",
          "description": "The complete name of the person combining all the parts of the name into one."
        },
        "sameAs": {
          "type": "string",
          "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
        },
        "translations": {
          "$ref": "#/definitions/SCTranslations%3CSCThingTranslatableProperties%3E",
          "description": "Translations of specific values of the object\n\nTake precedence over \"main\" value for selected languages."
        },
        "type": {
          "type": "string",
          "const": "person",
          "description": "Type of a person"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "additionalName": {
          "type": "string",
          "description": "Additional first names of the person."
        },
        "birthDate": {
          "$ref": "#/definitions/SCISO8601Date",
          "description": "The birth date of the person."
        },
        "email": {
          "type": "string",
          "description": "The private email address of the person."
        },
        "familyName": {
          "type": "string",
          "description": "The family name of the person."
        },
        "faxNumber": {
          "type": "string",
          "description": "The private fax number of the person."
        },
        "gender": {
          "$ref": "#/definitions/SCPersonGender",
          "description": "The gender of the person."
        },
        "givenName": {
          "type": "string",
          "description": "The first name of the person."
        },
        "honorificPrefix": {
          "type": "string",
          "description": "Honorific prefix of the person."
        },
        "honorificSuffix": {
          "type": "string",
          "description": "Honorific suffix of the person."
        },
        "jobTitles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Titles of jobs that the person has."
        },
        "nationality": {
          "$ref": "#/definitions/SCNationality",
          "description": "The nationality of the person."
        },
        "telephone": {
          "type": "string",
          "description": "The private telephone number of the person."
        }
      },
      "required": [
        "name",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "A person without references"
    },
    "SCTranslations<SCThingTranslatableProperties>": {
      "type": "object",
      "properties": {
        "de": {
          "$ref": "#/definitions/SCThingTranslatableProperties",
          "description": "German translations"
        },
        "en": {
          "$ref": "#/definitions/SCThingTranslatableProperties",
          "description": "English translations"
        }
      },
      "additionalProperties": false,
      "description": "Translations for specific languages"
    },
    "SCThingTranslatableProperties": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Translation of the description of the thing"
        },
        "name": {
          "type": "string",
          "description": "Translation of the name of the thing"
        },
        "origin": {
          "$ref": "#/definitions/SCThingTranslatablePropertyOrigin",
          "description": "Origin of the thing"
        }
      },
      "additionalProperties": false,
      "description": "Translatable properties of things"
    },
    "SCISO8601Date": {
      "type": "string",
      "description": "An ISO8601 date",
      "pattern": "^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])(T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])([\\.,][0-9]{0,7})?(Z|[+-](?:2[0-3]|[01][0-9])(:?[0-5][0-9])?)?)?$"
    },
    "SCPersonGender": {
      "type": "string",
      "enum": [
        "male",
        "female",
        "inter",
        "undefined"
      ],
      "description": "Gender of a person"
    },
    "SCNationality": {
      "type": "string",
      "enum": [
        "Afghanistan",
        "Åland Islands",
        "Albania",
        "Algeria",
        "American Samoa",
        "Andorra",
        "Angola",
        "Anguilla",
        "Antarctica",
        "Antigua and Barbuda",
        "Argentina",
        "Armenia",
        "Aruba",
        "Australia",
        "Austria",
        "Azerbaijan",
        "Bahamas",
        "Bahrain",
        "Bangladesh",
        "Barbados",
        "Belarus",
        "Belgium",
        "Belize",
        "Benin",
        "Bermuda",
        "Bhutan",
        "Bolivia (Plurinational State of)",
        "Bonaire, Sint Eustatius and Saba",
        "Bosnia and Herzegovina",
        "Botswana",
        "Bouvet Island",
        "Brazil",
        "British Indian Ocean Territory",
        "Brunei Darussalam",
        "Bulgaria",
        "Burkina Faso",
        "Burundi",
        "Cambodia",
        "Cameroon",
        "Canada",
        "Cabo Verde",
        "Cayman Islands",
        "Central African Republic",
        "Chad",
        "Chile",
        "China",
        "Christmas Island",
        "Cocos (Keeling) Islands",
        "Colombia",
        "Comoros",
        "Congo",
        "Congo (Democratic Republic of the)",
        "Cook Islands",
        "Costa Rica",
        "Côte d'Ivoire",
        "Croatia",
        "Cuba",
        "Curaçao",
        "Cyprus",
        "Czech Republic",
        "Denmark",
        "Djibouti",
        "Dominica",
        "Dominican Republic",
        "Ecuador",
        "Egypt",
        "El Salvador",
        "Equatorial Guinea",
        "Eritrea",
        "Estonia",
        "Ethiopia",
        "Falkland Islands (Malvinas)",
        "Faroe Islands",
        "Fiji",
        "Finland",
        "France",
        "French Guiana",
        "French Polynesia",
        "French Southern Territories",
        "Gabon",
        "Gambia",
        "Georgia",
        "Germany",
        "Ghana",
        "Gibraltar",
        "Greece",
        "Greenland",
        "Grenada",
        "Guadeloupe",
        "Guam",
        "Guatemala",
        "Guernsey",
        "Guinea",
        "Guinea-Bissau",
        "Guyana",
        "Haiti",
        "Heard Island and McDonald Islands",
        "Holy See",
        "Honduras",
        "Hong Kong",
        "Hungary",
        "Iceland",
        "India",
        "Indonesia",
        "Iran (Islamic Republic of)",
        "Iraq",
        "Ireland",
        "Isle of Man",
        "Israel",
        "Italy",
        "Jamaica",
        "Japan",
        "Jersey",
        "Jordan",
        "Kazakhstan",
        "Kenya",
        "Kiribati",
        "Korea (Democratic People's Republic of)",
        "Korea (Republic of)",
        "Kuwait",
        "Kyrgyzstan",
        "Lao People's Democratic Republic",
        "Latvia",
        "Lebanon",
        "Lesotho",
        "Liberia",
        "Libya",
        "Liechtenstein",
        "Lithuania",
        "Luxembourg",
        "Macao",
        "Macedonia (the former Yugoslav Republic of)",
        "Madagascar",
        "Malawi",
        "Malaysia",
        "Maldives",
        "Mali",
        "Malta",
        "Marshall Islands",
        "Martinique",
        "Mauritania",
        "Mauritius",
        "Mayotte",
        "Mexico",
        "Micronesia (Federated States of)",
        "Moldova (Republic of)",
        "Monaco",
        "Mongolia",
        "Montenegro",
        "Montserrat",
        "Morocco",
        "Mozambique",
        "Myanmar",
        "Namibia",
        "Nauru",
        "Nepal",
        "Netherlands",
        "New Caledonia",
        "New Zealand",
        "Nicaragua",
        "Niger",
        "Nigeria",
        "Niue",
        "Norfolk Island",
        "Northern Mariana Islands",
        "Norway",
        "Oman",
        "Pakistan",
        "Palau",
        "Palestine, State of",
        "Panama",
        "Papua New Guinea",
        "Paraguay",
        "Peru",
        "Philippines",
        "Pitcairn",
        "Poland",
        "Portugal",
        "Puerto Rico",
        "Qatar",
        "Réunion",
        "Romania",
        "Russian Federation",
        "Rwanda",
        "Saint Barthélemy",
        "Saint Helena, Ascension and Tristan da Cunha",
        "Saint Kitts and Nevis",
        "Saint Lucia",
        "Saint Martin (French part)",
        "Saint Pierre and Miquelon",
        "Saint Vincent and the Grenadines",
        "Samoa",
        "San Marino",
        "Sao Tome and Principe",
        "Saudi Arabia",
        "Senegal",
        "Serbia",
        "Seychelles",
        "Sierra Leone",
        "Singapore",
        "Sint Maarten (Dutch part)",
        "Slovakia",
        "Slovenia",
        "Solomon Islands",
        "Somalia",
        "South Africa",
        "South Georgia and the South Sandwich Islands",
        "South Sudan",
        "Spain",
        "Sri Lanka",
        "Sudan",
        "Suriname",
        "Svalbard and Jan Mayen",
        "Swaziland",
        "Sweden",
        "Switzerland",
        "Syrian Arab Republic",
        "Taiwan, Province of China",
        "Tajikistan",
        "Tanzania, United Republic of",
        "Thailand",
        "Timor-Leste",
        "Togo",
        "Tokelau",
        "Tonga",
        "Trinidad and Tobago",
        "Tunisia",
        "Turkey",
        "Turkmenistan",
        "Turks and Caicos Islands",
        "Tuvalu",
        "Uganda",
        "Ukraine",
        "United Arab Emirates",
        "United Kingdom of Great Britain and Northern Ireland",
        "United States of America",
        "United States Minor Outlying Islands",
        "Uruguay",
        "Uzbekistan",
        "Vanuatu",
        "Venezuela (Bolivarian Republic of)",
        "Viet Nam",
        "Virgin Islands (British)",
        "Virgin Islands (U.S.)",
        "Wallis and Futuna",
        "Western Sahara",
        "Yemen",
        "Zambia",
        "Zimbabwe"
      ],
      "description": "A list of possible nationalities"
    },
    "SCOrganizationWithoutReferences": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternate names of the thing"
        },
        "description": {
          "type": "string",
          "description": "Description of the thing",
          "minLength": 1
        },
        "identifiers": {
          "$ref": "#/definitions/SCMap%3Cstring%3E",
          "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
        },
        "image": {
          "type": "string",
          "description": "URL of an image of the thing"
        },
        "name": {
          "type": "string",
          "description": "Name of the thing",
          "minLength": 1
        },
        "sameAs": {
          "type": "string",
          "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
        },
        "translations": {
          "$ref": "#/definitions/SCTranslations%3CSCThingTranslatableProperties%3E",
          "description": "Translations of specific values of the object\n\nTake precedence over \"main\" value for selected languages."
        },
        "type": {
          "type": "string",
          "const": "organization",
          "description": "Type of an organization"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        }
      },
      "required": [
        "name",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "An organization without references"
    },
    "SCThingUserOrigin": {
      "type": "object",
      "properties": {
        "maintainer": {
          "anyOf": [
            {
              "$ref": "#/definitions/SCPersonWithoutReferences"
            },
            {
              "$ref": "#/definitions/SCOrganizationWithoutReferences"
            }
          ],
          "description": "Maintainer of the origin\n\ne.g. restaurant of a dish"
        },
        "modified": {
          "$ref": "#/definitions/SCISO8601Date",
          "description": "When the thing was modified last in the origin"
        },
        "type": {
          "type": "string",
          "const": "user",
          "description": "Type of the origin"
        },
        "created": {
          "$ref": "#/definitions/SCISO8601Date",
          "description": "When the thing was created"
        },
        "deleted": {
          "type": "boolean",
          "description": "If it is deleted or not, defaults to false"
        },
        "updated": {
          "$ref": "#/definitions/SCISO8601Date",
          "description": "When the saved thing was last updated with the latest state (e.g. from the backend)"
        }
      },
      "required": [
        "created",
        "type"
      ],
      "additionalProperties": false,
      "description": "User origin of a thing (data created through user interaction)"
    },
    "SCThingThatCanBeOfferedOffer<SCAcademicPriceGroup>": {
      "type": "object",
      "properties": {
        "inPlace": {
          "anyOf": [
            {
              "$ref": "#/definitions/SCBuildingWithoutReferences"
            },
            {
              "$ref": "#/definitions/SCPointOfInterestWithoutReferences"
            },
            {
              "$ref": "#/definitions/SCRoomWithoutReferences"
            }
          ],
          "description": "Place the thing is or happens in"
        },
        "availability": {
          "$ref": "#/definitions/SCThingThatCanBeOfferedAvailability",
          "description": "Availability of an offer"
        },
        "availabilityRange": {
          "$ref": "#/definitions/SCISO8601DateRange",
          "description": "The time when the thing is available."
        },
        "prices": {
          "$ref": "#/definitions/SCAcademicPriceGroup",
          "description": "List of prices that are distinct for specific groups"
        },
        "provider": {
          "$ref": "#/definitions/SCThingThatCanBeOfferedProvider",
          "description": "Provider of an offer"
        }
      },
      "required": [
        "availability",
        "provider"
      ],
      "additionalProperties": false,
      "description": "Offer of a thing"
    },
    "SCBuildingWithoutReferences": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternate names of the thing"
        },
        "description": {
          "type": "string",
          "description": "Description of the thing",
          "minLength": 1
        },
        "identifiers": {
          "$ref": "#/definitions/SCMap%3Cstring%3E",
          "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
        },
        "image": {
          "type": "string",
          "description": "URL of an image of the thing"
        },
        "name": {
          "type": "string",
          "description": "Name of the thing",
          "minLength": 1
        },
        "sameAs": {
          "type": "string",
          "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
        },
        "translations": {
          "$ref": "#/definitions/SCTranslations%3CSCBuildingTranslatableProperties%3E",
          "description": "Translated fields of a building"
        },
        "type": {
          "type": "string",
          "const": "building",
          "description": "Type of the building"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "address": {
          "$ref": "#/definitions/SCPostalAddress",
          "description": "Address of the place"
        },
        "geo": {
          "$ref": "#/definitions/SCGeoInformation",
          "description": "Positional information of the place\n\n!!! BEWARE !!! Can not be a GeometryCollection because ElasticSearch does not allow distance filtering/sorting on other types"
        },
        "openingHours": {
          "type": "string",
          "description": "Opening hours of the place"
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCBuildingCategories"
          },
          "description": "Categories of a thing with categories"
        },
        "categorySpecificValues": {
          "$ref": "#/definitions/SCMap%3CSCThingWithCategoriesSpecificValues%3E",
          "description": "Use this to explicitly override general opening hours brought in scope by openingHoursSpecification or openingHours\n\nA map from categories to their specific values."
        },
        "floors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of floor names of the place"
        }
      },
      "required": [
        "categories",
        "geo",
        "name",
        "type",
        "uid"
      ],
      "additionalProperties": false
    },
    "SCTranslations<SCBuildingTranslatableProperties>": {
      "type": "object",
      "properties": {
        "de": {
          "$ref": "#/definitions/SCBuildingTranslatableProperties",
          "description": "German translations"
        },
        "en": {
          "$ref": "#/definitions/SCBuildingTranslatableProperties",
          "description": "English translations"
        }
      },
      "additionalProperties": false,
      "description": "Translations for specific languages"
    },
    "SCBuildingTranslatableProperties": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Translation of the description of the thing"
        },
        "name": {
          "type": "string",
          "description": "Translation of the name of the thing"
        },
        "origin": {
          "$ref": "#/definitions/SCThingTranslatablePropertyOrigin",
          "description": "Origin of the thing"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "translations of the categories of a thing with categories"
        },
        "address": {
          "$ref": "#/definitions/SCPostalAddress",
          "description": "Address of a place"
        },
        "floors": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "SCPostalAddress": {
      "type": "object",
      "properties": {
        "addressCountry": {
          "type": "string",
          "description": "Country of the address"
        },
        "addressLocality": {
          "type": "string",
          "description": "City of the address"
        },
        "addressRegion": {
          "type": "string",
          "description": "State of the address"
        },
        "postalCode": {
          "type": "string",
          "description": "Zip code of the address"
        },
        "postOfficeBoxNumber": {
          "type": "string",
          "description": "Optional post box number"
        },
        "streetAddress": {
          "type": "string",
          "description": "Street of the address - with house number!"
        }
      },
      "required": [
        "addressCountry",
        "addressLocality",
        "postalCode",
        "streetAddress"
      ],
      "additionalProperties": false,
      "description": "A postal address"
    },
    "SCGeoInformation": {
      "type": "object",
      "properties": {
        "point": {
          "$ref": "#/definitions/Point",
          "description": "Center point of a place"
        },
        "polygon": {
          "$ref": "#/definitions/Polygon",
          "description": "Shape of a place"
        }
      },
      "required": [
        "point"
      ],
      "additionalProperties": false,
      "description": "Positional information"
    },
    "Point": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "const": "Point"
        },
        "bbox": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "crs": {
          "$ref": "#/definitions/CoordinateReferenceSystem"
        },
        "coordinates": {
          "$ref": "#/definitions/Position"
        }
      },
      "required": [
        "coordinates",
        "type"
      ],
      "additionalProperties": false,
      "description": "* http://geojson.org/geojson-spec.html#point"
    },
    "CoordinateReferenceSystem": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "properties": {}
      },
      "required": [
        "type",
        "properties"
      ],
      "additionalProperties": false,
      "description": "* http://geojson.org/geojson-spec.html#coordinate-reference-system-objects"
    },
    "Position": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "description": "* http://geojson.org/geojson-spec.html#positions"
    },
    "Polygon": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "const": "Polygon"
        },
        "bbox": {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "crs": {
          "$ref": "#/definitions/CoordinateReferenceSystem"
        },
        "coordinates": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/Position"
            }
          }
        }
      },
      "required": [
        "coordinates",
        "type"
      ],
      "additionalProperties": false,
      "description": "* http://geojson.org/geojson-spec.html#polygon"
    },
    "SCBuildingCategories": {
      "type": "string",
      "enum": [
        "cafe",
        "education",
        "library",
        "office",
        "canteen",
        "student canteen",
        "restaurant",
        "restroom"
      ]
    },
    "SCMap<SCThingWithCategoriesSpecificValues>": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/SCThingWithCategoriesSpecificValues",
        "description": "One value for each key"
      },
      "description": "Capsulation for a map with a string as key with values of type `T`\n\n!!! BEWARE !!! Can't be refactored to a `Map<K, V>`, because it can't be serialized via JSON.stringify(map)"
    },
    "SCThingWithCategoriesSpecificValues": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Category specific alternate names of a thing"
        },
        "description": {
          "type": "string",
          "description": "Category specific description of a thing"
        },
        "image": {
          "type": "string",
          "description": "URL of a category specific image of a thing"
        },
        "name": {
          "type": "string",
          "description": "Category specific name of a thing"
        },
        "url": {
          "type": "string",
          "description": "Category specific URL of a thing"
        }
      },
      "additionalProperties": false,
      "description": "Category specific values of a thing with categories\n\nThis interface contains properties that can be specific to a certain category."
    },
    "SCPointOfInterestWithoutReferences": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternate names of the thing"
        },
        "description": {
          "type": "string",
          "description": "Description of the thing",
          "minLength": 1
        },
        "identifiers": {
          "$ref": "#/definitions/SCMap%3Cstring%3E",
          "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
        },
        "image": {
          "type": "string",
          "description": "URL of an image of the thing"
        },
        "name": {
          "type": "string",
          "description": "Name of the thing",
          "minLength": 1
        },
        "sameAs": {
          "type": "string",
          "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
        },
        "translations": {
          "$ref": "#/definitions/SCTranslations%3CSCThingWithCategoriesTranslatableProperties%3E",
          "description": "Translated properties of a point of interest"
        },
        "type": {
          "type": "string",
          "const": "point of interest",
          "description": "Type of a point of interest"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "address": {
          "$ref": "#/definitions/SCPostalAddress",
          "description": "Address of the place"
        },
        "geo": {
          "$ref": "#/definitions/SCGeoInformation",
          "description": "Positional information of the place\n\n!!! BEWARE !!! Can not be a GeometryCollection because ElasticSearch does not allow distance filtering/sorting on other types"
        },
        "openingHours": {
          "type": "string",
          "description": "Opening hours of the place"
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCPointOfInterestCategories"
          },
          "description": "Categories of a thing with categories"
        },
        "categorySpecificValues": {
          "$ref": "#/definitions/SCMap%3CSCThingWithCategoriesSpecificValues%3E",
          "description": "Use this to explicitly override general opening hours brought in scope by openingHoursSpecification or openingHours\n\nA map from categories to their specific values."
        }
      },
      "required": [
        "categories",
        "geo",
        "name",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "A point of interest without references"
    },
    "SCTranslations<SCThingWithCategoriesTranslatableProperties>": {
      "type": "object",
      "properties": {
        "de": {
          "$ref": "#/definitions/SCThingWithCategoriesTranslatableProperties",
          "description": "German translations"
        },
        "en": {
          "$ref": "#/definitions/SCThingWithCategoriesTranslatableProperties",
          "description": "English translations"
        }
      },
      "additionalProperties": false,
      "description": "Translations for specific languages"
    },
    "SCThingWithCategoriesTranslatableProperties": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "Translation of the description of the thing"
        },
        "name": {
          "type": "string",
          "description": "Translation of the name of the thing"
        },
        "origin": {
          "$ref": "#/definitions/SCThingTranslatablePropertyOrigin",
          "description": "Origin of the thing"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "translations of the categories of a thing with categories"
        }
      },
      "additionalProperties": false,
      "description": "Translatable properties of a thing with categories"
    },
    "SCPointOfInterestCategories": {
      "type": "string",
      "enum": [
        "computer",
        "validator",
        "card charger",
        "printer",
        "disabled access"
      ],
      "description": "Categories of a point of interest"
    },
    "SCRoomWithoutReferences": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternate names of the thing"
        },
        "description": {
          "type": "string",
          "description": "Description of the thing",
          "minLength": 1
        },
        "identifiers": {
          "$ref": "#/definitions/SCMap%3Cstring%3E",
          "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
        },
        "image": {
          "type": "string",
          "description": "URL of an image of the thing"
        },
        "name": {
          "type": "string",
          "description": "Name of the thing",
          "minLength": 1
        },
        "sameAs": {
          "type": "string",
          "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
        },
        "translations": {
          "$ref": "#/definitions/SCTranslations%3CSCThingWithCategoriesTranslatableProperties%3E",
          "description": "Translations of specific values of the object\n\nTake precedence over \"main\" value for selected languages."
        },
        "type": {
          "type": "string",
          "const": "room",
          "description": "Type of the room"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCRoomCategories"
          },
          "description": "Categories of a thing with categories"
        },
        "categorySpecificValues": {
          "$ref": "#/definitions/SCMap%3CSCRoomSpecificValues%3E",
          "description": "Use this to explicitly override general opening hours brought in scope by openingHoursSpecification or openingHours\n\nA map from categories to their specific values."
        },
        "paymentsAccepted": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCThingThatAcceptsPaymentsAcceptedPayments"
          },
          "description": "Accepted payments of the place"
        },
        "address": {
          "$ref": "#/definitions/SCPostalAddress",
          "description": "Address of the place"
        },
        "geo": {
          "$ref": "#/definitions/SCGeoInformation",
          "description": "Positional information of the place\n\n!!! BEWARE !!! Can not be a GeometryCollection because ElasticSearch does not allow distance filtering/sorting on other types"
        },
        "openingHours": {
          "type": "string",
          "description": "Opening hours of the place"
        },
        "floorName": {
          "type": "string",
          "description": "The name of the floor in which the room is in."
        },
        "inventory": {
          "$ref": "#/definitions/SCMap%3Cnumber%3E",
          "description": "The inventory of the place/room as a list of items and their quantity."
        }
      },
      "required": [
        "categories",
        "geo",
        "name",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "A room without references"
    },
    "SCRoomCategories": {
      "type": "string",
      "enum": [
        "cafe",
        "canteen",
        "computer",
        "education",
        "laboratory",
        "learn",
        "library",
        "lounge",
        "office",
        "restaurant",
        "restroom",
        "student canteen",
        "student union"
      ],
      "description": "Categories of a room"
    },
    "SCMap<SCRoomSpecificValues>": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/SCRoomSpecificValues",
        "description": "One value for each key"
      },
      "description": "Capsulation for a map with a string as key with values of type `T`\n\n!!! BEWARE !!! Can't be refactored to a `Map<K, V>`, because it can't be serialized via JSON.stringify(map)"
    },
    "SCRoomSpecificValues": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Category specific alternate names of a thing"
        },
        "description": {
          "type": "string",
          "description": "Category specific description of a thing"
        },
        "image": {
          "type": "string",
          "description": "URL of a category specific image of a thing"
        },
        "name": {
          "type": "string",
          "description": "Category specific name of a thing"
        },
        "url": {
          "type": "string",
          "description": "Category specific URL of a thing"
        },
        "openingHours": {
          "type": "string",
          "description": "Category specific opening hours of the room"
        },
        "serviceHours": {
          "type": "string",
          "description": "Category specific service hours of the room (e.g. cooked food serving hours)"
        }
      },
      "additionalProperties": false,
      "description": "Category specific values of a room"
    },
    "SCThingThatAcceptsPaymentsAcceptedPayments": {
      "type": "string",
      "enum": [
        "cash",
        "credit",
        "cafeteria card"
      ],
      "description": "Types of payment that are accepted at a place."
    },
    "SCMap<number>": {
      "type": "object",
      "additionalProperties": {
        "type": "number",
        "description": "One value for each key"
      },
      "description": "Capsulation for a map with a string as key with values of type `T`\n\n!!! BEWARE !!! Can't be refactored to a `Map<K, V>`, because it can't be serialized via JSON.stringify(map)"
    },
    "SCThingThatCanBeOfferedAvailability": {
      "type": "string",
      "enum": [
        "in stock",
        "out of stock",
        "online only",
        "limited availability"
      ],
      "description": "Availability of an Offer"
    },
    "SCISO8601DateRange": {
      "$ref": "#/definitions/SCRange%3CSCISO8601Date%3E",
      "description": "Date Range\n\nCAUTION: Changing the name requires changes in the core-tools premaps"
    },
    "SCRange<SCISO8601Date>": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "gte": {
              "$ref": "#/definitions/SCISO8601Date",
              "description": "Greater or equal to value"
            },
            "lte": {
              "$ref": "#/definitions/SCISO8601Date",
              "description": "Greater or equal to value"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "gt": {
              "$ref": "#/definitions/SCISO8601Date"
            },
            "lt": {
              "$ref": "#/definitions/SCISO8601Date"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "gt": {
              "$ref": "#/definitions/SCISO8601Date"
            },
            "lte": {
              "$ref": "#/definitions/SCISO8601Date"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "gte": {
              "$ref": "#/definitions/SCISO8601Date"
            },
            "lt": {
              "$ref": "#/definitions/SCISO8601Date"
            }
          },
          "additionalProperties": false
        }
      ],
      "description": "Generic range type"
    },
    "SCAcademicPriceGroup": {
      "type": "object",
      "properties": {
        "default": {
          "type": "number",
          "description": "Default price of the thing"
        },
        "employee": {
          "type": "number",
          "description": "Price for employees"
        },
        "guest": {
          "type": "number",
          "description": "Price for guests"
        },
        "student": {
          "type": "number",
          "description": "Price for students"
        }
      },
      "additionalProperties": false,
      "required": [
        "default"
      ],
      "description": "Price distinctions for academic context"
    },
    "SCThingThatCanBeOfferedProvider": {
      "anyOf": [
        {
          "$ref": "#/definitions/SCOrganizationWithoutReferences"
        },
        {
          "$ref": "#/definitions/SCPersonWithoutReferences"
        }
      ],
      "description": "Entity responsible for the offer"
    },
    "SCLanguage": {
      "type": "object",
      "properties": {
        "code": {
          "$ref": "#/definitions/SCLanguageCode",
          "description": "The two letter ISO 639-1 Code of the Language"
        },
        "name": {
          "$ref": "#/definitions/SCLanguageName",
          "description": "The Fulltext name of the Language"
        }
      },
      "required": [
        "code",
        "name"
      ],
      "additionalProperties": false,
      "description": "An Language"
    },
    "SCLanguageCode": {
      "type": "string",
      "enum": [
        "aa",
        "ab",
        "ae",
        "af",
        "ak",
        "am",
        "an",
        "ar",
        "as",
        "av",
        "ay",
        "az",
        "ba",
        "be",
        "bg",
        "bh",
        "bi",
        "bm",
        "bn",
        "bo",
        "br",
        "bs",
        "ca",
        "ce",
        "ch",
        "co",
        "cr",
        "cs",
        "cu",
        "cv",
        "cy",
        "da",
        "de",
        "dv",
        "dz",
        "ee",
        "el",
        "en",
        "eo",
        "es",
        "et",
        "eu",
        "fa",
        "ff",
        "fi",
        "fj",
        "fl",
        "fo",
        "fr",
        "fy",
        "ga",
        "gd",
        "gl",
        "gn",
        "gu",
        "gv",
        "ha",
        "he",
        "hi",
        "ho",
        "hr",
        "ht",
        "hu",
        "hy",
        "hz",
        "ia",
        "id",
        "ig",
        "ii",
        "ik",
        "io",
        "is",
        "it",
        "iu",
        "ja",
        "jv",
        "ka",
        "kg",
        "ki",
        "kj",
        "kk",
        "kl",
        "km",
        "kn",
        "ko",
        "kr",
        "ks",
        "ku",
        "kv",
        "kw",
        "ky",
        "la",
        "lb",
        "lg",
        "li",
        "ln",
        "lo",
        "lt",
        "lu",
        "lv",
        "mg",
        "mh",
        "mi",
        "mk",
        "ml",
        "mn",
        "mr",
        "ms",
        "mt",
        "my",
        "na",
        "nb",
        "nd",
        "ne",
        "ng",
        "nl",
        "nn",
        "no",
        "nr",
        "nv",
        "ny",
        "oc",
        "oj",
        "om",
        "or",
        "os",
        "pa",
        "pi",
        "pl",
        "ps",
        "pt",
        "qu",
        "rm",
        "rn",
        "ro",
        "ru",
        "rw",
        "sa",
        "sc",
        "sd",
        "se",
        "sg",
        "si",
        "sk",
        "sl",
        "sm",
        "sn",
        "so",
        "sq",
        "sr",
        "ss",
        "st",
        "su",
        "sv",
        "sw",
        "ta",
        "te",
        "tg",
        "th",
        "ti",
        "tk",
        "tl",
        "tn",
        "to",
        "tr",
        "ts",
        "tt",
        "tw",
        "ty",
        "ug",
        "uk",
        "ur",
        "uz",
        "ve",
        "vi",
        "vo",
        "wa",
        "wo",
        "xh",
        "yi",
        "yo",
        "za",
        "zh",
        "zu"
      ],
      "description": "A List of all possible Languages as ISO 639-1 Codes"
    },
    "SCLanguageName": {
      "type": "string",
      "enum": [
        "afar",
        "abkhazian",
        "avestan",
        "afrikaans",
        "akan",
        "amharic",
        "aragonese",
        "arabic",
        "assamese",
        "avaric",
        "aymara",
        "azerbaijani",
        "bashkir",
        "belarusian",
        "bulgarian",
        "bihari languages",
        "bislama",
        "bambara",
        "bengali",
        "tibetan",
        "breton",
        "bosnian",
        "catalan; valencian",
        "chechen",
        "chamorro",
        "corsican",
        "cree",
        "czech",
        "church slavic; old slavonic; church slavonic; old bulgarian; old church slavonic",
        "chuvash",
        "welsh",
        "danish",
        "german",
        "divehi; dhivehi; maldivian",
        "dzongkha",
        "ewe",
        "greek, modern (1453-)",
        "english",
        "esperanto",
        "spanish; castilian",
        "estonian",
        "basque",
        "persian",
        "fulah",
        "finnish",
        "fijian",
        "filipino",
        "faroese",
        "french",
        "western frisian",
        "irish",
        "gaelic; scottish gaelic",
        "galician",
        "guarani",
        "gujarati",
        "manx",
        "hausa",
        "hebrew",
        "hindi",
        "hiri motu",
        "croatian",
        "haitian; haitian creole",
        "hungarian",
        "armenian",
        "herero",
        "interlingua (international auxiliary language association)",
        "indonesian",
        "interlingue; occidental",
        "igbo",
        "sichuan yi; nuosu",
        "inupiaq",
        "ido",
        "icelandic",
        "italian",
        "inuktitut",
        "japanese",
        "javanese",
        "georgian",
        "kongo",
        "kikuyu; gikuyu",
        "kuanyama; kwanyama",
        "kazakh",
        "kalaallisut; greenlandic",
        "central khmer",
        "kannada",
        "korean",
        "kanuri",
        "kashmiri",
        "kurdish",
        "komi",
        "cornish",
        "kirghiz; kyrgyz",
        "latin",
        "luxembourgish; letzeburgesch",
        "ganda",
        "limburgan; limburger; limburgish",
        "lingala",
        "lao",
        "lithuanian",
        "luba-katanga",
        "latvian",
        "malagasy",
        "marshallese",
        "maori",
        "macedonian",
        "malayalam",
        "mongolian",
        "marathi",
        "malay",
        "maltese",
        "burmese",
        "nauru",
        "bokmål, norwegian; norwegian bokmål",
        "ndebele, north; north ndebele",
        "nepali",
        "ndonga",
        "dutch; flemish",
        "norwegian nynorsk; nynorsk, norwegian",
        "norwegian",
        "ndebele, south; south ndebele",
        "navajo; navaho",
        "chichewa; chewa; nyanja",
        "occitan (post 1500); provençal",
        "ojibwa",
        "oromo",
        "oriya",
        "ossetian; ossetic",
        "panjabi; punjabi",
        "pali",
        "polish",
        "pushto; pashto",
        "portuguese",
        "quechua",
        "romansh",
        "rundi",
        "romanian; moldavian; moldovan",
        "russian",
        "kinyarwanda",
        "sanskrit",
        "sardinian",
        "sindhi",
        "northern sami",
        "sango",
        "sinhala; sinhalese",
        "slovak",
        "slovenian",
        "samoan",
        "shona",
        "somali",
        "albanian",
        "serbian",
        "swati",
        "sotho, southern",
        "sundanese",
        "swedish",
        "swahili",
        "tamil",
        "telugu",
        "tajik",
        "thai",
        "tigrinya",
        "turkmen",
        "tagalog",
        "tswana",
        "tonga (tonga islands)",
        "turkish",
        "tsonga",
        "tatar",
        "twi",
        "tahitian",
        "uighur; uyghur",
        "ukrainian",
        "urdu",
        "uzbek",
        "venda",
        "vietnamese",
        "volapük",
        "walloon",
        "wolof",
        "xhosa",
        "yiddish",
        "yoruba",
        "zhuang; chuang",
        "chinese",
        "zulu"
      ],
      "description": "A list of possible languages in english"
    },
    "SCCourseOfStudyMode": {
      "type": "string",
      "enum": [
        "combination",
        "dual",
        "double-degree",
        "standard"
      ],
      "description": "Types of (german) course of study modes"
    },
    "SCCourseOfStudyTimeMode": {
      "type": "string",
      "enum": [
        "fulltime",
        "parttime"
      ],
      "description": "Types of (german) course of study time modes"
    },
    "SCDateSeriesWithoutReferences": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternate names of the thing"
        },
        "description": {
          "type": "string",
          "description": "Description of the thing",
          "minLength": 1
        },
        "identifiers": {
          "$ref": "#/definitions/SCMap%3Cstring%3E",
          "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
        },
        "image": {
          "type": "string",
          "description": "URL of an image of the thing"
        },
        "name": {
          "type": "string",
          "description": "Name of the thing",
          "minLength": 1
        },
        "sameAs": {
          "type": "string",
          "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
        },
        "translations": {
          "$ref": "#/definitions/SCTranslations%3CSCDateSeriesTranslatableProperties%3E",
          "description": "Translated properties"
        },
        "type": {
          "type": "string",
          "const": "date series",
          "description": "Type of a date series"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "dates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCISO8601Date"
          },
          "description": "Dates of the date series that are initially planned to be held"
        },
        "duration": {
          "$ref": "#/definitions/SCISO8601Duration",
          "description": "Duration of the date series"
        },
        "exceptions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCISO8601Date"
          },
          "description": "Dates that where initially planned to be held but are cancelled"
        },
        "repeatFrequency": {
          "$ref": "#/definitions/SCISO8601Duration",
          "description": "Frequency of the date series"
        }
      },
      "required": [
        "dates",
        "duration",
        "name",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "A date without references"
    },
    "SCTranslations<SCDateSeriesTranslatableProperties>": {
      "type": "object",
      "properties": {
        "de": {
          "$ref": "#/definitions/SCDateSeriesTranslatableProperties",
          "description": "German translations"
        },
        "en": {
          "$ref": "#/definitions/SCDateSeriesTranslatableProperties",
          "description": "English translations"
        }
      },
      "additionalProperties": false,
      "description": "Translations for specific languages"
    },
    "SCDateSeriesTranslatableProperties": {
      "$ref": "#/definitions/SCThingThatCanBeOfferedTranslatableProperties",
      "description": "Translatable properties of date series'"
    },
    "SCISO8601Duration": {
      "type": "string",
      "description": "An ISO8601 duration",
      "pattern": "^(R\\d*\\/)?P(?:\\d+(?:\\.\\d+)?Y)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?W)?(?:\\d+(?:\\.\\d+)?D)?(?:T(?:\\d+(?:\\.\\d+)?H)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?S)?)?$"
    },
    "SCSCCourseOfStudy": {
      "type": "object",
      "properties": {
        "alternateNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Alternate names of the thing"
        },
        "description": {
          "type": "string",
          "description": "Description of the thing",
          "minLength": 1
        },
        "identifiers": {
          "$ref": "#/definitions/SCMap%3Cstring%3E",
          "description": "The identifier property represents any kind of additional identifier for any kind of SCThing\n\nE.g. GTIN codes, UUIDs, Database IDs etc."
        },
        "image": {
          "type": "string",
          "description": "URL of an image of the thing"
        },
        "name": {
          "type": "string",
          "description": "Name of the thing",
          "minLength": 1
        },
        "sameAs": {
          "type": "string",
          "description": "URL of a reference Web page that unambiguously indicates the item's identity\n\nE.g. the URL of the item's Wikipedia page, Wikidata entry, or official website."
        },
        "translations": {
          "$ref": "#/definitions/SCTranslations%3CSCCourseOfStudyTranslatableProperties%3E",
          "description": "Translated fields of a course of study"
        },
        "type": {
          "type": "string",
          "const": "course of study",
          "description": "Type of the course of study"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "origin": {
          "anyOf": [
            {
              "$ref": "#/definitions/SCThingRemoteOrigin"
            },
            {
              "$ref": "#/definitions/SCThingUserOrigin"
            }
          ],
          "description": "Origin of the thing"
        },
        "academicDegree": {
          "type": "string",
          "description": "The achievable academic degree"
        },
        "academicDegreewithField": {
          "type": "string",
          "description": "The achievable academic degree with academic field specification (eg. Master of Science)"
        },
        "academicDegreewithFieldShort": {
          "type": "string",
          "description": "The achievable academic degree with academic field specification shorted (eg. M.Sc.)."
        },
        "offers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCThingThatCanBeOfferedOffer%3CSCAcademicPriceGroup%3E"
          },
          "description": "List of offers for that thing"
        },
        "mainLanguage": {
          "$ref": "#/definitions/SCLanguage",
          "description": "The main language in which the course of study is beeing offered"
        },
        "mode": {
          "$ref": "#/definitions/SCCourseOfStudyMode",
          "description": "The modes the course of study is offered in"
        },
        "timeMode": {
          "$ref": "#/definitions/SCCourseOfStudyTimeMode",
          "description": "The time modes the course of study is offered in"
        },
        "department": {
          "$ref": "#/definitions/SCOrganizationWithoutReferences",
          "description": "The department that manages the course of study"
        },
        "secretary": {
          "$ref": "#/definitions/SCOrganizationWithoutReferences",
          "description": "The secretary that administers requests and questions concerning the course of study"
        },
        "startDates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCDateSeriesWithoutReferences"
          },
          "description": "Dates at which the course of study is planned to start"
        }
      },
      "required": [
        "academicDegree",
        "name",
        "origin",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "A course of study"
    }
  },
  "$id": "https://core.stapps.tu-berlin.de/v4.0.2/lib/schema/SCCourseOfStudy.json"
}