{
  "$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%3CSCStudyModuleTranslatableProperties%3E",
      "description": "Translated fields of a study module"
    },
    "type": {
      "type": "string",
      "const": "study module",
      "description": "Type of the study module"
    },
    "uid": {
      "$ref": "#/definitions/SCUuid",
      "description": "Universally unique identifier of the thing"
    },
    "origin": {
      "anyOf": [
        {
          "$ref": "#/definitions/SCThingRemoteOrigin"
        },
        {
          "$ref": "#/definitions/SCThingUserOrigin"
        }
      ],
      "description": "Origin of the thing"
    },
    "offers": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SCThingThatCanBeOfferedOffer%3CSCAcademicPriceGroup%3E"
      },
      "description": "List of offers for that thing"
    },
    "ects": {
      "type": "number",
      "description": "ECTS points (European Credit Transfer System)"
    },
    "language": {
      "$ref": "#/definitions/SCLanguage",
      "description": "The language in which the study module is offered"
    },
    "majors": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Majors that this study module is meant for"
    },
    "necessity": {
      "$ref": "#/definitions/SCMap%3CSCStudyModuleNecessity%3E",
      "description": "Represents the modules necessity for each given major (of the major property)"
    },
    "academicEvents": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SCAcademicEventWithoutReferences"
      },
      "description": "Academic events that make up a study module"
    },
    "faculty": {
      "$ref": "#/definitions/SCOrganizationWithoutReferences",
      "description": "The faculty that manages and curates the study module"
    },
    "partnerModules": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SCStudyModuleWithoutReferences"
      },
      "description": "Study modules needed for each others fulfillment"
    },
    "requiredModules": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/SCStudyModuleWithoutReferences"
      },
      "description": "Study modules required beforehand"
    },
    "secretary": {
      "anyOf": [
        {
          "$ref": "#/definitions/SCOrganizationWithoutReferences"
        },
        {
          "$ref": "#/definitions/SCPersonWithoutReferences"
        }
      ],
      "description": "The secretary that administers requests and questions concerning the study module by eg. students"
    }
  },
  "required": [
    "academicEvents",
    "ects",
    "faculty",
    "language",
    "majors",
    "name",
    "necessity",
    "origin",
    "secretary",
    "type",
    "uid"
  ],
  "additionalProperties": false,
  "description": "A study module",
  "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<SCStudyModuleTranslatableProperties>": {
      "type": "object",
      "properties": {
        "de": {
          "$ref": "#/definitions/SCStudyModuleTranslatableProperties",
          "description": "German translations"
        },
        "en": {
          "$ref": "#/definitions/SCStudyModuleTranslatableProperties",
          "description": "English translations"
        }
      },
      "additionalProperties": false,
      "description": "Translations for specific languages"
    },
    "SCStudyModuleTranslatableProperties": {
      "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"
        },
        "majors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Translations of the majors that this study module is meant for"
        },
        "necessity": {
          "$ref": "#/definitions/SCMap%3CSCStudyModuleNecessity%3E",
          "description": "Translations of the modules necessity for each given major (of the major property)"
        }
      },
      "required": [
        "necessity"
      ],
      "additionalProperties": false
    },
    "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"
    },
    "SCMap<SCStudyModuleNecessity>": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/SCStudyModuleNecessity",
        "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)"
    },
    "SCStudyModuleNecessity": {
      "type": "string",
      "enum": [
        "required",
        "elective",
        "optional"
      ],
      "description": "Represents a modules necessity (in a major) as it may be required, optional or is in a pool of n optional modules were m out of them have to be taken/completed. Hence the elective option."
    },
    "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"
    },
    "SCAcademicEventWithoutReferences": {
      "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%3CSCAcademicEventTranslatableProperties%3E",
          "description": "Translated fields of an academic event"
        },
        "type": {
          "type": "string",
          "const": "academic event",
          "description": "Type of an academic event"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCAcademicEventCategories"
          },
          "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."
        },
        "maximumParticipants": {
          "type": "number",
          "description": "Maximum number of participants of the event\n\nA maximum number of people that can participate in the event."
        },
        "remainingAttendeeCapacity": {
          "type": "number",
          "description": "Remaining attendee capacity of the event\n\nThis number represents the remaining open spots."
        },
        "majors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Majors of the academic event that this event belongs to"
        },
        "originalCategory": {
          "type": "string",
          "description": "Original unmapped category from the source of the academic event"
        }
      },
      "required": [
        "categories",
        "name",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "An academic event without references"
    },
    "SCTranslations<SCAcademicEventTranslatableProperties>": {
      "type": "object",
      "properties": {
        "de": {
          "$ref": "#/definitions/SCAcademicEventTranslatableProperties",
          "description": "German translations"
        },
        "en": {
          "$ref": "#/definitions/SCAcademicEventTranslatableProperties",
          "description": "English translations"
        }
      },
      "additionalProperties": false,
      "description": "Translations for specific languages"
    },
    "SCAcademicEventTranslatableProperties": {
      "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"
        },
        "majors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Translations of the majors of the academic event that this event belongs to"
        },
        "originalCategory": {
          "type": "string",
          "description": "Translation of the original unmapped category from the source of the academic event"
        }
      },
      "additionalProperties": false,
      "description": "Translatable properties of an academic event"
    },
    "SCAcademicEventCategories": {
      "type": "string",
      "enum": [
        "lecture",
        "seminar",
        "integrated course",
        "written exam",
        "oral exam",
        "tutorial",
        "project",
        "colloquium",
        "practicum",
        "introductory class",
        "course",
        "practicum introduction",
        "excursion",
        "exercise",
        "special"
      ],
      "description": "Categories of academic events"
    },
    "SCStudyModuleWithoutReferences": {
      "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%3CSCStudyModuleTranslatableProperties%3E",
          "description": "Translated fields of a study module"
        },
        "type": {
          "type": "string",
          "const": "study module",
          "description": "Type of the study module"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "ects": {
          "type": "number",
          "description": "ECTS points (European Credit Transfer System)"
        },
        "language": {
          "$ref": "#/definitions/SCLanguage",
          "description": "The language in which the study module is offered"
        },
        "majors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Majors that this study module is meant for"
        },
        "necessity": {
          "$ref": "#/definitions/SCMap%3CSCStudyModuleNecessity%3E",
          "description": "Represents the modules necessity for each given major (of the major property)"
        }
      },
      "required": [
        "ects",
        "language",
        "majors",
        "name",
        "necessity",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "A study module without references"
    },
    "SCSCStudyModule": {
      "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%3CSCStudyModuleTranslatableProperties%3E",
          "description": "Translated fields of a study module"
        },
        "type": {
          "type": "string",
          "const": "study module",
          "description": "Type of the study module"
        },
        "uid": {
          "$ref": "#/definitions/SCUuid",
          "description": "Universally unique identifier of the thing"
        },
        "origin": {
          "anyOf": [
            {
              "$ref": "#/definitions/SCThingRemoteOrigin"
            },
            {
              "$ref": "#/definitions/SCThingUserOrigin"
            }
          ],
          "description": "Origin of the thing"
        },
        "offers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCThingThatCanBeOfferedOffer%3CSCAcademicPriceGroup%3E"
          },
          "description": "List of offers for that thing"
        },
        "ects": {
          "type": "number",
          "description": "ECTS points (European Credit Transfer System)"
        },
        "language": {
          "$ref": "#/definitions/SCLanguage",
          "description": "The language in which the study module is offered"
        },
        "majors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Majors that this study module is meant for"
        },
        "necessity": {
          "$ref": "#/definitions/SCMap%3CSCStudyModuleNecessity%3E",
          "description": "Represents the modules necessity for each given major (of the major property)"
        },
        "academicEvents": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCAcademicEventWithoutReferences"
          },
          "description": "Academic events that make up a study module"
        },
        "faculty": {
          "$ref": "#/definitions/SCOrganizationWithoutReferences",
          "description": "The faculty that manages and curates the study module"
        },
        "partnerModules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCStudyModuleWithoutReferences"
          },
          "description": "Study modules needed for each others fulfillment"
        },
        "requiredModules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SCStudyModuleWithoutReferences"
          },
          "description": "Study modules required beforehand"
        },
        "secretary": {
          "anyOf": [
            {
              "$ref": "#/definitions/SCOrganizationWithoutReferences"
            },
            {
              "$ref": "#/definitions/SCPersonWithoutReferences"
            }
          ],
          "description": "The secretary that administers requests and questions concerning the study module by eg. students"
        }
      },
      "required": [
        "academicEvents",
        "ects",
        "faculty",
        "language",
        "majors",
        "name",
        "necessity",
        "origin",
        "secretary",
        "type",
        "uid"
      ],
      "additionalProperties": false,
      "description": "A study module"
    }
  },
  "$id": "https://core.stapps.tu-berlin.de/v4.0.2/lib/schema/SCStudyModule.json"
}