import { Point, Polygon, GeometryObject, FeatureCollection, Feature, LineString, Position } from 'geojson'; import * as jsonpatch from 'json-patch'; import { JSONSchema7 } from 'json-schema'; import { ValidationError } from '@openstapps/core-tools'; /** * An Language */ interface SCLanguage { /** * The two letter ISO 639-1 Code of the Language * @filterable */ code: SCLanguageCode; /** * The Fulltext name of the Language * @filterable */ name: SCLanguageName; } /** * A list of possible languages in english * @see https://en.wikipedia.org/wiki/ISO_639-1 */ type SCLanguageName = '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'; /** * A List of all possible Languages as ISO 639-1 Codes * @see https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes */ type SCLanguageCode = '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' | 'ia' | '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'; /** * A list of possible nationalities * @see https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 */ type SCNationality = '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'; /** * Translations for specific languages * @see https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes */ interface SCTranslations { /** * German translations */ de?: T; /** * English translations */ en?: T; } /** * Type to represent requiredness of translation properties. * Will be changed from RecursivePartial to RecursiveRequired in the future. * (Source: https://stackoverflow.com/a/51365037) */ type RecursivePartial = { [P in keyof T]-?: T[P] extends Array ? Array> : T[P] extends object ? RecursivePartial : T[P]; }; /** * Type to recursively map keys in to a string value (used for translation) */ type SCRequiredTranslationKeys = { [key in keyof RecursivePartial]: string; }; /** * Type that allows mapping from available keys of SCTranslations to SCRequiredTranslationKeys */ type SCRequiredTranslation = { [key in keyof SCTranslations]: SCRequiredTranslationKeys; }; /** * Interface to be implemented by all Meta classes */ interface SCMetaTranslations { /** * Field translations */ fieldTranslations: SCRequiredTranslation; /** * Field value translations */ fieldValueTranslations: unknown; } /** * 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])?)?)?$ * @see https://gist.github.com/philipashlock/8830168 * @date */ type SCISO8601Date = string; /** * 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)?)?$ * @see https://gist.github.com/philipashlock/8830168 */ type SCISO8601Duration = string; /** * An ISO8601 time * @pattern ^(2[0-3]|[01][0-9]):?([0-5][0-9]):?([0-5][0-9])$ */ type SCISO8601Time = string; /** * Universally unique identifier of the thing * @filterable * @pattern ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ * @see http://stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid */ type SCUuid = string; /** * Capsulation for a map with a string as key with values of type `T` * * !!! BEWARE !!! * Can't be refactored to a `Map`, because it can't be serialized via JSON.stringify(map) * @typeparam T Can be any type. */ interface SCMap { /** * One value for each key */ [key: string]: T; } /** * Restricted map with keys, limited to values of `U`, and corresponding values of type `T` * * !!! BEWARE !!! * Can't be refactored to a `Map`, because it can't be serialized via JSON.stringify(map) * Also note, that this is a type not an interface * @typeparam U Must be a type the `in` operator can be applied to and contains only strings or numbers * @typeparam T Can be any type */ type SCRestrictedMap = { [key in U]: T; }; /** * A thing without references with categories * * !!! BEWARE !!! * `T` should be a string literal union type - e.g. `T = 'foo' | 'bar' | 'foobar';` */ interface SCThingWithCategoriesWithoutReferences extends SCThingWithoutReferences { /** * Categories of a thing with categories * @sortable ducet * @aggregatable * @filterable */ categories: T[]; /** * Use this to explicitly override general opening hours brought in scope by openingHoursSpecification or openingHours * * A map from categories to their specific values. */ categorySpecificValues?: SCMap; /** * Translated fields of a thing with categories */ translations?: SCTranslations; } /** * A thing with categories */ interface SCThingWithCategories extends SCThing, SCThingWithCategoriesWithoutReferences { /** * Translated fields of a thing with categories */ translations?: SCTranslations; } /** * Translatable properties of a thing with categories */ interface SCThingWithCategoriesTranslatableProperties extends SCThingTranslatableProperties { /** * translations of the categories of a thing with categories * @sortable ducet */ categories?: string[]; } /** * Category specific values of a thing with categories * * This interface contains properties that can be specific to a certain category. */ interface SCThingWithCategoriesSpecificValues { /** * Category specific alternate names of a thing * @keyword */ alternateNames?: string[]; /** * Category specific description of a thing * @text */ description?: string; /** * URL of a category specific image of a thing * @keyword */ image?: string; /** * Category specific name of a thing * @sortable ducet * @text */ name?: string; /** * Category specific URL of a thing * @keyword */ url?: string; } /** * Meta information about a thing without references that accepts payments * It intentionally does not extend the SCThingMeta implementation to be able to include generics. */ declare class SCThingWithCategoriesWithoutReferencesMeta implements SCMetaTranslations> { /** * Translations of fields */ fieldTranslations: { de: { categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } type SCBuildingCategories = 'cafe' | 'education' | 'library' | 'office' | 'canteen' | 'student canteen' | 'restaurant' | 'restroom'; interface SCBuildingWithoutReferences extends SCThingWithCategoriesWithoutReferences, SCPlaceWithoutReferences { /** * List of floor names of the place * @filterable * @keyword */ floors?: string[]; /** * Translated fields of a building */ translations?: SCTranslations; /** * Type of the building */ type: SCThingType.Building; } /** * A building * @validatable * @indexable */ interface SCBuilding extends SCBuildingWithoutReferences, SCPlace, SCThingWithCategories { /** * Translated fields of a building */ translations?: SCTranslations; /** * Type of the building */ type: SCThingType.Building; } interface SCBuildingTranslatableProperties extends SCPlaceWithoutReferencesTranslatableProperties, SCThingWithCategoriesTranslatableProperties { /** * @see SCBuilding.floors */ floors?: string[]; } /** * Meta information about a place */ declare class SCBuildingMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { floors: string; address: string; geo: string; openingHours: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categories: string; categorySpecificValues: string; }; en: { floors: string; address: string; geo: string; openingHours: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categories: string; categorySpecificValues: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { cafe: string; canteen: string; education: string; library: string; office: string; restaurant: string; restroom: string; 'student canteen': string; }; type: string; }; en: { type: SCThingType; }; }; } /** * A point of interest without references */ interface SCPointOfInterestWithoutReferences extends SCThingWithCategoriesWithoutReferences, SCPlaceWithoutReferences { /** * Translated properties of a point of interest */ translations?: SCTranslations; /** * Type of a point of interest */ type: SCThingType.PointOfInterest; } /** * A point of interest * @validatable * @indexable */ interface SCPointOfInterest extends SCPointOfInterestWithoutReferences, SCThingInPlace, SCPlace, SCThingWithCategories { /** * Translated properties of a point of interest */ translations?: SCTranslations; /** * Type of a point of interest */ type: SCThingType.PointOfInterest; } /** * Categories of a point of interest */ type SCPointOfInterestCategories = 'computer' | 'validator' | 'card charger' | 'printer' | 'disabled access'; /** * Meta information about points of interest */ declare class SCPointOfInterestMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; address: string; geo: string; openingHours: string; categories: string; categorySpecificValues: string; }; en: { inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; address: string; geo: string; openingHours: string; categories: string; categorySpecificValues: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { 'card charger': string; computer: string; 'disabled access': string; printer: string; validator: string; }; type: string; }; en: { type: SCThingType; }; }; } /** * Types of payment that are accepted at a place. */ type SCThingThatAcceptsPaymentsAcceptedPayments = 'cash' | 'credit' | 'cafeteria card'; /** * A thing without references that accepts payments */ interface SCThingThatAcceptsPaymentsWithoutReferences extends SCThingWithoutReferences { /** * Accepted payments of the place * @filterable */ paymentsAccepted?: SCThingThatAcceptsPaymentsAcceptedPayments[]; } /** * A thing that accepts payments */ interface SCThingThatAcceptsPayments extends SCThingThatAcceptsPaymentsWithoutReferences, SCThing { } /** * Meta information about a thing without references that accepts payments */ declare class SCThingThatAcceptsPaymentsWithoutReferencesMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { paymentsAccepted: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { paymentsAccepted: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { paymentsAccepted: { 'cafeteria card': string; cash: string; credit: string; }; type: string; }; en: { type: string; }; }; } /** * Categories of a room */ type SCRoomCategories = 'cafe' | 'canteen' | 'computer' | 'education' | 'laboratory' | 'learn' | 'library' | 'lounge' | 'office' | 'restaurant' | 'restroom' | 'student canteen' | 'student union'; /** * A room without references */ interface SCRoomWithoutReferences extends SCPlaceWithoutReferences, SCThingThatAcceptsPaymentsWithoutReferences, SCThingWithCategoriesWithoutReferences { /** * The name of the floor in which the room is in. * @filterable * @text */ floorName?: string; /** * The inventory of the place/room as a list of items and their quantity. */ inventory?: SCMap; /** * Translations of specific values of the object * * Take precedence over "main" value for selected languages. */ translations?: SCTranslations; /** * Type of the room */ type: SCThingType.Room; } /** * A room * @validatable * @indexable */ interface SCRoom extends SCRoomWithoutReferences, SCThingInPlace, SCThingThatAcceptsPayments, SCPlace, SCThingWithCategories { /** * Translations of specific values of the object * * Take precedence over "main" value for selected languages. */ translations?: SCTranslations; /** * Type of the room */ type: SCThingType.Room; } /** * Category specific values of a room */ interface SCRoomSpecificValues extends SCThingWithCategoriesSpecificValues { /** * Category specific opening hours of the room * @keyword */ openingHours?: string; /** * Category specific service hours of the room (e.g. cooked food serving hours) * @see http://wiki.openstreetmap.org/wiki/Key:opening_hours/specification * @keyword */ serviceHours?: string; } /** * Meta information about a place */ declare class SCRoomMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { floorName: string; inventory: string; serviceHours: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categories: string; categorySpecificValues: string; paymentsAccepted: string; address: string; geo: string; openingHours: string; }; en: { floorName: string; inventory: string; serviceHours: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categories: string; categorySpecificValues: string; paymentsAccepted: string; address: string; geo: string; openingHours: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { cafe: string; canteen: string; computer: string; education: string; laboratory: string; learn: string; library: string; lounge: string; office: string; restaurant: string; restroom: string; 'student canteen': string; 'student union': string; }; type: string; paymentsAccepted: { 'cafeteria card': string; cash: string; credit: string; }; }; en: { type: SCThingType; }; }; } /** * Positional information */ interface SCGeoInformation { /** * Center point of a place */ point: Point; /** * Shape of a place */ polygon?: Polygon; } /** * A postal address */ interface SCPostalAddress { /** * Country of the address * @filterable */ addressCountry: string; /** * City of the address * @filterable */ addressLocality: string; /** * State of the address * @filterable */ addressRegion?: string; /** * Zip code of the address * @filterable */ postalCode: string; /** * Optional post box number * @filterable */ postOfficeBoxNumber?: string; /** * Street of the address - with house number! * @filterable */ streetAddress: string; } /** * A place without references */ interface SCPlaceWithoutReferences extends SCThingWithoutReferences { /** * Address of the place */ address?: SCPostalAddress; /** * Positional information of the place * * !!! BEWARE !!! * Can not be a GeometryCollection because ElasticSearch does not allow distance filtering/sorting on other types */ geo: SCGeoInformation; /** * Opening hours of the place * @see http://wiki.openstreetmap.org/wiki/Key:opening_hours/specification * @keyword */ openingHours?: string; /** * Translated fields of a place */ translations?: SCTranslations; } /** * A place */ interface SCPlace extends SCPlaceWithoutReferences, SCThing { /** * Translated fields of a place */ translations?: SCTranslations; } /** * Translatable properties of a place without references */ interface SCPlaceWithoutReferencesTranslatableProperties extends SCThingTranslatableProperties { /** * Address of a place */ address?: SCPostalAddress; } /** * Meta information about creative works */ declare class SCPlaceWithoutReferencesMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { address: string; geo: string; openingHours: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { address: string; geo: string; openingHours: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * Something that is or happens in a place * * !Important! * This is not a SCThing. */ interface SCInPlace { /** * Place the thing is or happens in */ inPlace?: SCBuildingWithoutReferences | SCPointOfInterestWithoutReferences | SCRoomWithoutReferences; } /** * A thing that is or happens in a place */ interface SCThingInPlace extends SCThing, SCInPlace { } /** * Meta information about thing in a place */ declare class SCThingInPlaceMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * A contact point without references */ interface SCContactPointWithoutReferences extends SCThingWithoutReferences { /** * E-mail at the work location * @keyword */ email?: string; /** * Fax number at the work location * @keyword */ faxNumber?: string; /** * Office hours for contacting someone at the work location * @see http://wiki.openstreetmap.org/wiki/Key:opening_hours/specification * @keyword */ officeHours?: string; /** * Contact number at the work location * @keyword */ telephone?: string; /** * Type of a contact point */ type: SCThingType.ContactPoint; /** * URL at the work location * @keyword */ url?: string; } /** * A contact point * @see http://schema.org/ContactPoint * @validatable * @indexable */ interface SCContactPoint extends SCContactPointWithoutReferences, SCThing { /** * Exact place where work is performed */ areaServed?: SCRoomWithoutReferences; /** * Type of a contact point */ type: SCThingType.ContactPoint; } /** * Meta information about a contact point */ declare class SCContactPointMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { areaServed: string; email: string; faxNumber: string; officeHours: string; telephone: string; url: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { areaServed: string; email: string; faxNumber: string; officeHours: string; telephone: string; url: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * An organization without references */ interface SCOrganizationWithoutReferences extends SCThingWithoutReferences { /** * Type of an organization */ type: SCThingType.Organization; } /** * An organization * @validatable * @indexable */ interface SCOrganization extends SCOrganizationWithoutReferences, SCThingInPlace { /** * A list of contact points concerning the organization */ contactPoints?: SCContactPointWithoutReferences[]; /** * Type of an organization */ type: SCThingType.Organization; } /** * Meta information about an organization */ declare class SCOrganizationMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { contactPoints: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { contactPoints: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * A person without references */ interface SCPersonWithoutReferences extends SCThingWithoutReferences { /** * Additional first names of the person. * @filterable * @keyword */ additionalName?: string; /** * The birth date of the person. * @filterable */ birthDate?: SCISO8601Date; /** * The private email address of the person. * @TJS-format email * @filterable * @keyword */ email?: string; /** * The family name of the person. * @filterable * @keyword */ familyName?: string; /** * The private fax number of the person. * @filterable * @keyword */ faxNumber?: string; /** * The gender of the person. * @filterable */ gender?: SCPersonGender; /** * The first name of the person. * @filterable * @keyword */ givenName?: string; /** * Honorific prefix of the person. * @filterable * @keyword */ honorificPrefix?: string; /** * Honorific suffix of the person. * @filterable * @keyword */ honorificSuffix?: string; /** * Titles of jobs that the person has. * @filterable * @keyword */ jobTitles?: string[]; /** * The complete name of the person combining all the parts of the name into one. * @filterable * @text */ name: string; /** * The nationality of the person. */ nationality?: SCNationality; /** * The private telephone number of the person. * @keyword */ telephone?: string; /** * Type of a person */ type: SCThingType.Person; } /** * A person * @validatable * @indexable */ interface SCPerson extends SCPersonWithoutReferences, SCThing { /** * Organization the person works for */ affiliations?: SCOrganizationWithoutReferences[]; /** * A list of homes of the person */ homeLocations?: Array; /** * Type of a person */ type: SCThingType.Person; /** * Locations where the person performs her/his work */ workLocations?: SCContactPointWithoutReferences[]; } /** * Meta information about a person */ declare class SCPersonMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { additionalName: string; affiliations: string; birthDate: string; email: string; familyName: string; faxNumber: string; gender: string; givenName: string; homeLocations: string; honorificPrefix: string; honorificSuffix: string; jobTitles: string; nationality: string; telephone: string; workLocations: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { additionalName: string; affiliations: string; birthDate: string; contactDetails: string; email: string; familyName: string; faxNumber: string; gender: string; givenName: string; homeLocations: string; honorificPrefix: string; honorificSuffix: string; jobTitles: string; nationality: string; telephone: string; workLocations: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { gender: { female: string; inter: string; male: string; undefined: string; }; type: string; }; en: { type: SCThingType; }; }; } /** * Gender of a person */ type SCPersonGender = 'male' | 'female' | 'inter' | 'undefined'; /** * Types a thing can be */ declare enum SCThingType { Assessment = "assessment", AcademicEvent = "academic event", Article = "article", Book = "book", Periodical = "periodical", Building = "building", Catalog = "catalog", Certification = "certification", ContactPoint = "contact point", CourseOfStudy = "course of study", DateSeries = "date series", Diff = "diff", Dish = "dish", Favorite = "favorite", Floor = "floor", IdCard = "id card", Message = "message", Organization = "organization", Person = "person", PointOfInterest = "point of interest", PublicationEvent = "publication event", Room = "room", Semester = "semester", Setting = "setting", SportCourse = "sport course", StudyModule = "study module", Ticket = "ticket", ToDo = "todo", Tour = "tour", Video = "video", JobPosting = "job posting" } /** * A thing without references */ interface SCThingWithoutReferences { /** * Alternate names of the thing * @filterable * @keyword */ alternateNames?: string[]; /** * Description of the thing * @minLength 1 * @text */ description?: string; /** * The identifier property represents any kind of additional identifier for any kind of SCThing * * E.g. GTIN codes, UUIDs, Database IDs etc. */ identifiers?: SCMap; /** * URL of an image of the thing * @keyword */ image?: string; /** * Name of the thing * @filterable * @minLength 1 * @sortable ducet * @text */ name: string; /** * URL of a reference Web page that unambiguously indicates the item's identity * * E.g. the URL of the item's Wikipedia page, Wikidata entry, or official website. */ sameAs?: string; /** * Translations of specific values of the object * * Take precedence over "main" value for selected languages. */ translations?: SCTranslations; /** * Type of the thing * @sortable ducet * @filterable * @aggregatable global */ type: SCThingType; /** * Universally unique identifier of the thing */ uid: SCUuid; } /** * A thing */ interface SCThing extends SCThingWithoutReferences { /** * Origin of the thing */ origin: SCThingRemoteOrigin | SCThingUserOrigin; } /** * Possible types of an origin */ declare enum SCThingOriginType { Remote = "remote", User = "user" } /** * Origin of a thing */ interface SCThingOrigin { /** * Maintainer of the origin * * e.g. restaurant of a dish */ maintainer?: SCPersonWithoutReferences | SCOrganizationWithoutReferences; /** * When the thing was modified last in the origin */ modified?: SCISO8601Date; /** * Type of the origin */ type: SCThingOriginType; } /** * Remote origin of a thing */ interface SCThingRemoteOrigin extends SCThingOrigin { /** * When the thing was indexed last from the origin */ indexed: SCISO8601Date; /** * Name of the origin * @text */ name: string; /** * Original ID of the thing in the origin */ originalId?: string; /** * Entity that is responsible for the entity * * e.g. an organizer for an event */ responsibleEntity?: SCPersonWithoutReferences | SCOrganizationWithoutReferences; /** * Type of the origin */ type: SCThingOriginType.Remote; /** * Main URL of the origin */ url?: string; } /** * User origin of a thing (data created through user interaction) */ interface SCThingUserOrigin extends SCThingOrigin { /** * When the thing was created */ created: SCISO8601Date; /** * If it is deleted or not, defaults to false */ deleted?: boolean; /** * Type of the origin */ type: SCThingOriginType.User; /** * When the saved thing was last updated with the latest state (e.g. from the backend) */ updated?: SCISO8601Date; } /** * Translatable properties of things */ interface SCThingTranslatableProperties { /** * Translation of the description of the thing * @text */ description?: string; /** * Translation of the name of the thing * @sortable ducet * @text */ name?: string; /** * Origin of the thing */ origin?: SCThingTranslatablePropertyOrigin; } /** * Translatable property of an origin */ interface SCThingTranslatablePropertyOrigin { /** * Translation of the name of the origin * @text */ name: string; } /** * Meta information about things */ declare class SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * A generic error that can be returned by the backend if somethings fails during the processing of a request * @validatable */ interface SCErrorResponse extends Error { /** * Additional data that describes the error */ additionalData?: unknown; /** * HTTP status code to return this error with */ statusCode: number; } /** * An error that can be created by the backend during the processing of a request */ declare abstract class SCError implements SCErrorResponse { name: string; message: string; statusCode: number; /** * Call stack of the error */ stack?: string; /** * Instatiate an SCError * @param name Name of the error * @param message Message of the error * @param statusCode HTTP status code to return this error with * @param stack Set to true if a stack trace should be created */ constructor(name: string, message: string, statusCode: number, stack?: boolean); } /** * Types of data consumers */ type SCUserGroup = 'students' | 'employees' | 'guests'; /** * A setting without references */ interface SCSettingWithoutReferences extends SCThingWithCategoriesWithoutReferences { /** * The default value of a setting */ defaultValue: SCSettingValue | SCSettingValues; /** * The input type of this setting */ inputType: SCSettingInputType; /** * The order number this setting should show up in its category list * @integer */ order: number; /** * Translated fields of a setting */ translations?: SCTranslations; /** * The type of this model */ type: SCThingType.Setting; /** * The key of a value of a setting */ value?: SCSettingValue | SCSettingValues; /** * The possible values of a setting */ values?: SCSettingValues; } /** * A list of categories for settings */ type SCSettingCategories = 'profile' | 'privacy' | 'credentials' | 'others'; /** * The types of input/value a setting object can carry */ declare enum SCSettingInputType { SingleChoice = "single choice", MultipleChoice = "multiple choice", Number = "number", Text = "text", Password = "password" } /** * A setting with references * @validatable */ interface SCSetting extends SCSettingWithoutReferences, SCThing, SCThingWithCategories { /** * Translated fields of a setting */ translations?: SCTranslations; /** * The type of this model */ type: SCThingType.Setting; } /** * The type a value of a setting can have */ type SCSettingValue = string | number | boolean; /** * The type of multiple values a setting can have */ type SCSettingValues = SCSettingValue[]; /** * Translatable properties of a setting */ interface SCSettingValueTranslatableProperties extends SCThingWithCategoriesTranslatableProperties { /** * The translations of the possible values of a setting * @keyword */ values?: string[]; } /** * Meta information about settings */ declare class SCSettingMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { defaultValue: string; inputType: string; order: string; value: string; values: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { defaultValue: string; inputType: string; order: string; value: string; values: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { credentials: string; others: string; privacy: string; profile: string; }; inputType: { 'multiple choice': string; number: string; password: string; 'single choice': string; text: string; }; type: string; }; en: { type: SCThingType; }; }; } /** * A user group setting */ interface SCUserGroupSetting extends SCSetting { /** * Exact categories of the setting */ categories: ['profile']; /** * The default value of the setting */ defaultValue: SCUserGroup; /** * Specific name of the setting */ name: 'group'; /** * Chosen value of the setting */ value?: SCUserGroup; /** * The possible values of the setting */ values: SCUserGroup[]; } /** * A language setting */ interface SCLanguageSetting extends SCSetting { /** * Exact categories of the setting */ categories: ['profile']; /** * The default value of the setting */ defaultValue: SCLanguageCode; /** * Specific name of the setting */ name: 'language'; /** * Chosen value of the setting */ value?: SCLanguageCode; /** * The possible values of the setting */ values: SCLanguageCode[]; } /** * User configuration keys mapped to string type while including their requiredness */ type SCUserConfigurationMap = { [K in keyof SCUserConfigurationOptional]?: string; } & { [K in keyof SCUserConfigurationRequired]: string; }; /** * A user configuration */ type SCUserConfiguration = SCUserConfigurationRequired & SCUserConfigurationOptional; /** * A user configurations required properties */ interface SCUserConfigurationRequired { /** * ID given to the user */ id: string; /** * The complete name of the user combining all the parts of the name into one */ name: string; } /** * A user configurations optional properties */ interface SCUserConfigurationOptional { /** * User's e-mail */ email?: string; /** * User's family name */ familyName?: string; /** * User's given name */ givenName?: string; /** * Role assigned to the user */ role?: string; /** * Student ID given to the user */ studentId?: string; } /** * Supported authorization provider types * @see https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1 * @see https://github.com/gbv/paia */ type SCAuthorizationProviderType = 'default' | 'paia'; /** * An authorization provider complete configuration */ interface SCAuthorizationProvider { /** * An authorization provider client configuration */ client: SCAuthorizationProviderClient; /** * An authorization provider endpoints configuration */ endpoints: SCAuthorizationProviderEndpoints; } /** * An authorization provider client configuration */ interface SCAuthorizationProviderClient { /** * Client ID */ clientId: string; /** * Scopes to request */ scopes: string; /** * Main url to reach authorization provider */ url: string; } /** * An authorization provider endpoints configuration */ interface SCAuthorizationProviderEndpoints { /** * URL to start authentication flow */ authorization: string; /** * URL to end current session */ endSession?: string; /** * Mapping of how to create SCUser from userinfo endpoint response (using JSONPath syntax) * @see https://www.npmjs.com/package/jsonpath */ mapping: SCUserConfigurationMap; /** * URL to revoke a token */ revoke?: string; /** * URL to get access Token */ token: string; /** * URL to general user info endpoint */ userinfo: string; } interface SCFeatureConfiguration { /** * Map of extern services mapped by their name (statically) */ extern?: SCMap; /** * Map of plugins registered with the backend mapped by their name. */ plugins?: SCMap; } interface SCFeatureConfigurationPlugin { /** * URL path registered with the backend */ urlPath: string; } interface SCFeatureConfigurationExtern { /** * Key of authorization provider available in SCConfigFile */ authProvider?: SCAuthorizationProviderType; /** * URL of extern service */ url: string; } /** * An app configuration menu item */ interface SCAppConfigurationMenuItem { /** * Key of authorization provider available in SCConfigFile * Restricting and enabling the usage of this item */ authProvider?: SCAuthorizationProviderType; /** * Icon for the menu item */ icon: string; /** * Route inside the app */ route: string; /** * Title of the route */ title: string; /** * Translations for the menu item */ translations: SCTranslations; } /** * An app configuration menu category */ interface SCAppConfigurationMenuCategory { /** * Icon for the menu category */ icon: string; /** * A list of items that belong to the category */ items: SCAppConfigurationMenuItem[]; /** * Title of the category */ title: string; /** * Route inside the app */ route: string; /** * Translations for the menu category */ translations: SCTranslations; } /** * An app configuration */ interface SCAppConfiguration { /** * The about page * * Mapping route -> page config */ aboutPages: SCMap; /** * Polygon that encapsulates the main campus */ campusPolygon: Polygon; /** * Maps of enabled features (plugins and external services) */ features: SCFeatureConfiguration; /** * A URL where images are available */ imageUrl?: string; /** * A list of available menu categories in the app */ menus: SCAppConfigurationMenuCategory[]; /** * Name for the app */ name: string; /** * URL to a file containing the privacy policy */ privacyPolicyUrl: string; /** * A list of available settings in the app * !Important! Use provided specific settings, for other settings use general SCSetting */ settings: Array; /** * Map of store URLs */ storeUrl?: SCAppConfigurationStoreUrl; /** * URL where a web instance of the app is available */ url?: string; /** * Version history in sequence of their publishing date. * * The items are ordered in descending version index order, * where the first item is always the most recent release. */ versionHistory?: SCAppVersionInfo[]; } /** * Info about app version releases */ interface SCAppVersionInfo { /** * Version index that increments by one each version */ version: string; /** * Release notes of the version */ releaseNotes: string; /** * Translations */ translations: SCTranslations<{ releaseNotes: string; }>; } /** * URLs of published apps */ interface SCAppConfigurationStoreUrl { /** * Google Play Store URL */ android?: string; /** * Apple App Store URL */ ios?: string; /** * Microsoft Store URL */ uwp?: string; } /** * Translatable property of a menu item */ interface SCAppConfigurationMenuItemTranslationTitle { /** * Translation of the title of a menu item */ title: string; } /** * Translatable property of a menu category */ interface SCAppConfigurationMenuCategoryTranslationTitle { /** * Translation of the name of a menu category */ title: string; } declare enum SCAboutPageContentType { SECTION = "section", ROUTER_LINK = "router link", TABLE = "table", MARKDOWN = "markdown" } interface SCAboutPageTranslationTitle { /** * Translation of the title */ title: string; } interface SCAboutPageTranslationValue { /** * Translation of the value */ value: string; } /** * A (mostly) self-contained section, akin to markdown `# Title` */ interface SCAboutPageSection { /** * If the section should be contained in a card */ card?: true; /** * The content of the section */ content: SCAboutPageContent; /** * The title of the section */ title: string; /** * Translations */ translations: SCTranslations; /** * Type */ type: SCAboutPageContentType.SECTION; } /** * A router link that can lead to a new page * * For external links, prefer markdown `[destination](link)` */ interface SCAboutPageRouterLink { /** * Icon of the destination */ icon?: string; /** * Router link */ link: string; /** * Title of the destination */ title: string; /** * Translations */ translations: SCTranslations; /** * Type */ type: SCAboutPageContentType.ROUTER_LINK; } /** * A simple table element */ interface SCAboutPageTable { /** * Rows of the table */ rows: SCAboutPageContent[][]; /** * Type */ type: SCAboutPageContentType.TABLE; } /** * A markdown element */ interface SCAboutPageMarkdown { /** * Translations */ translations: SCTranslations; /** * Type */ type: SCAboutPageContentType.MARKDOWN; /** * Value (Markdown) */ value: string; } type SCAboutPageContent = SCAboutPageMarkdown | SCAboutPageTable | SCAboutPageSection | SCAboutPageRouterLink; /** * Root of the about page */ interface SCAboutPage { /** * Content of the page */ content: SCAboutPageContent[]; /** * Header (title) of the page */ title: string; /** * Translations */ translations: SCTranslations; } /** * An academic term without references */ interface SCAcademicTermWithoutReferences extends SCThingWithoutReferences { /** * Short name of the academic term, using the given pattern * @aggregatable * @filterable * @keyword */ acronym: string; /** * End date of the academic term * @filterable */ endDate: SCISO8601Date; /** * End date of lectures in the academic term * @filterable */ eventsEndDate?: SCISO8601Date; /** * Start date of lectures in the academic term * @filterable */ eventsStartDate?: SCISO8601Date; /** * Start date of the academic term * @filterable */ startDate: SCISO8601Date; } /** * An academic term */ interface SCAcademicTerm extends SCAcademicTermWithoutReferences, SCThing { } /** * Meta information about academic terms */ declare class SCAcademicTermWithoutReferencesMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { acronym: string; endDate: string; eventsEndDate: string; eventsStartDate: string; startDate: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { acronym: string; endDate: string; eventsEndDate: string; eventsStartDate: string; startDate: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * A catalog without references */ interface SCCatalogWithoutReferences extends SCThingWithCategoriesWithoutReferences { /** * Level of the catalog (0 for 'root catalog', 1 for its subcatalog, 2 for its subcatalog etc.) * * Needed for keeping order in catalog inheritance array. * @filterable * @integer */ level: number; /** * Type of a catalog */ type: SCThingType.Catalog; } /** * A catalog * @validatable * @indexable */ interface SCCatalog extends SCCatalogWithoutReferences, SCThing, SCThingWithCategories { /** * Academic term that a catalog belongs to (e.g. semester) */ academicTerm?: SCAcademicTermWithoutReferences; /** * The direct parent of a catalog */ superCatalog?: SCCatalogWithoutReferences; /** * An array of catalogs from the 'level 0' (root) catalog to the direct parent */ superCatalogs?: SCCatalogWithoutReferences[]; /** * Translated fields of a catalog */ translations?: SCTranslations; /** * Type of a catalog */ type: SCThingType.Catalog; } /** * Catalog meta data */ declare class SCCatalogMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { academicTerm: string; level: string; superCatalog: string; superCatalogs: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { academicTerm: string; level: string; superCatalog: string; superCatalogs: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { 'university events': string; }; type: string; }; en: { type: SCThingType; }; }; } /** * Categories of catalogs */ type SCCatalogCategories = 'university events'; /** * A semester without references */ interface SCSemesterWithoutReferences extends SCAcademicTermWithoutReferences { /** * The short name of the semester, using the given pattern. * @filterable * @pattern ^(WS|SS|WiSe|SoSe) [0-9]{4}(/[0-9]{2})?$ * @keyword */ acronym: string; /** * Type of the semester */ type: SCThingType.Semester; } /** * A semester * @validatable * @indexable */ interface SCSemester extends SCSemesterWithoutReferences, SCAcademicTerm { /** * Type of the semester */ type: SCThingType.Semester; } /** * Meta information about a semester */ declare class SCSemesterMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { acronym: string; endDate: string; eventsEndDate: string; eventsStartDate: string; startDate: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { acronym: string; endDate: string; eventsEndDate: string; eventsStartDate: string; startDate: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * An publication event without references */ interface SCPublicationEventWithoutReferences extends SCEventWithoutReferences { /** * All the locations related to the event (e.g. where a creative work was published) */ locations?: string[]; /** * An organization (or a person) that is publishing at the event */ publisher?: string; /** * Translated fields of an publication event */ translations?: SCTranslations; /** * Type of an publication event */ type: SCThingType.PublicationEvent; } /** * An publication event * @validatable * @indexable */ interface SCPublicationEvent extends SCEvent, SCPublicationEventWithoutReferences { /** * Translated fields of an publication event */ translations?: SCTranslations; /** * Type of an publication event */ type: SCThingType.PublicationEvent; } /** * Translatable properties of an publication event */ type SCPublicationEventTranslatableProperties = SCThingTranslatableProperties; /** * Meta information about publication events */ declare class SCPublicationEventMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { locations: string; publisher: string; academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { locations: string; publisher: string; academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * A creative work without references */ interface SCCreativeWorkWithoutReferences extends SCThingWithoutReferences { /** * Languages this creative work is available in */ availableLanguages?: SCLanguageCode[]; /** * Date the creative work was published */ datePublished?: SCISO8601Date; /** * Edition of a creative work (e.g. the book edition or edition of an article) * @keyword */ edition?: string; /** * Date (in text form) the creative work was published for the first time * @keyword */ firstPublished?: string; /** * Languages this creative work is written/recorded/... in * @filterable */ inLanguage?: SCLanguageCode; /** * Keywords of the creative work * @aggregatable * @filterable * @keyword */ keywords?: string[]; /** * Date (in text form) the creative work was most recently * @keyword */ lastPublished?: string; /** * Translated fields of the creative work */ translations?: SCTranslations; } /** * A creative work */ interface SCCreativeWork extends SCCreativeWorkWithoutReferences, SCThing { /** * Authors of the creative work */ authors?: SCPersonWithoutReferences[]; /** * A creative work to which the creative work belongs */ isPartOf?: SCCreativeWorkWithoutReferences; /** * List of events at which the creative work was published */ publications?: SCPublicationEventWithoutReferences[]; /** * List of publishers of the creative work */ publishers?: Array; /** * A text representing on organization on whose behalf the creator was working */ sourceOrganization?: string; /** * Translated fields of the creative work */ translations?: SCTranslations; } /** * Translatable properties of creative works */ interface SCCreativeWorkTranslatableProperties extends SCThingTranslatableProperties { /** * Translation of the keywords of the creative work * @keyword */ keywords?: string[]; } /** * Meta information about creative works */ declare class SCCreativeWorkMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { name: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; alternateNames: string; description: string; identifiers: string; image: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { name: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; alternateNames: string; description: string; identifiers: string; image: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * An event without references */ interface SCEventWithoutReferences extends SCThingWithoutReferences { /** * Maximum number of participants of the event * * A maximum number of people that can participate in the event. * @integer */ maximumParticipants?: number; /** * Remaining attendee capacity of the event * * This number represents the remaining open spots. * @integer */ remainingAttendeeCapacity?: number; } /** * An event */ interface SCEvent extends SCEventWithoutReferences, SCThing { /** * Academic terms that an event belongs to, e.g. semester(s). */ academicTerms?: SCSemesterWithoutReferences[]; /** * Catalogs to which an event belongs */ catalogs?: SCCatalogWithoutReferences[]; /** * A list of creative works that are associated with this event * * This can be recommended books, CDs that can be bought, etc. */ creativeWorks?: SCCreativeWorkWithoutReferences[]; /** * Organizers of the event */ organizers?: SCPersonWithoutReferences[]; /** * Performers of the event */ performers?: SCPersonWithoutReferences[]; } /** * Meta information about events */ declare class SCEventMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * An academic event without references */ interface SCAcademicEventWithoutReferences extends SCEventWithoutReferences, SCThingWithCategoriesWithoutReferences { /** * Majors of the academic event that this event belongs to * @aggregatable * @filterable * @keyword */ majors?: string[]; /** * Original unmapped category from the source of the academic event * @filterable * @keyword */ originalCategory?: string; /** * Translated fields of an academic event */ translations?: SCTranslations; /** * Type of an academic event */ type: SCThingType.AcademicEvent; } /** * An academic event * @validatable * @indexable */ interface SCAcademicEvent extends SCEvent, SCAcademicEventWithoutReferences, SCThingWithCategories { /** * Translated fields of an academic event */ translations?: SCTranslations; /** * Type of an academic event */ type: SCThingType.AcademicEvent; } /** * Categories of academic events */ type SCAcademicEventCategories = 'lecture' | 'seminar' | 'integrated course' | 'written exam' | 'oral exam' | 'tutorial' | 'project' | 'colloquium' | 'practicum' | 'introductory class' | 'course' | 'practicum introduction' | 'excursion' | 'exercise' | 'special'; /** * Translatable properties of an academic event */ interface SCAcademicEventTranslatableProperties extends SCThingWithCategoriesTranslatableProperties { /** * Translations of the majors of the academic event that this event belongs to * @keyword */ majors?: string[]; /** * Translation of the original unmapped category from the source of the academic event * @keyword */ originalCategory?: string; } /** * Meta information about academic events */ declare class SCAcademicEventMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { majors: string; originalCategory: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; }; en: { majors: string; originalCategory: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { colloquium: string; course: string; excursion: string; exercise: string; 'integrated course': string; 'introductory class': string; lecture: string; 'oral exam': string; practicum: string; 'practicum introduction': string; project: string; seminar: string; special: string; tutorial: string; 'written exam': string; }; type: string; }; en: { type: SCThingType; }; }; } /** * Date Range * * CAUTION: Changing the name requires changes in the core-tools premaps */ type SCISO8601DateRange = SCRange; /** * Checks if a value is inside a range * @param value the value to check * @param range the range */ declare function isInRange(value: T, range: SCRange): boolean; /** * Format a range * @example '0..4' * @example '1=..=3' * @example '0..=3' */ declare function formatRange(range: SCRange): string; /** * Generic range type */ type SCRange = { /** * Greater than value */ gt?: never; /** * Greater or equal to value */ gte?: T; /** * Greater than value */ lt?: never; /** * Greater or equal to value */ lte?: T; } | { gt?: T; gte?: never; lt?: T; lte?: never; } | { gt?: T; gte?: never; lt?: never; lte?: T; } | { gt?: never; gte?: T; lt?: T; lte?: never; }; /** * Default price without distinction */ interface SCPriceGroup { /** * Default price of the thing * @sortable price * @float */ default: number; } /** * Price distinctions for academic context */ interface SCAcademicPriceGroup extends SCPriceGroup { /** * Price for employees * @sortable price * @float */ employee?: number; /** * Price for guests * @sortable price * @float */ guest?: number; /** * Price for students * @sortable price * @float */ student?: number; } /** * A thing without references that can be offered */ interface SCThingThatCanBeOfferedWithoutReferences extends SCThingWithoutReferences { /** * Translations of a thing that can be offered */ translations?: SCTranslations; } /** * A thing that can be offered */ interface SCThingThatCanBeOffered extends SCThing, SCThingThatCanBeOfferedWithoutReferences { /** * List of offers for that thing */ offers?: Array>; /** * Translations of a thing that can be offered */ translations?: SCTranslations; } /** * Offer of a thing */ interface SCThingThatCanBeOfferedOffer extends SCInPlace { /** * Availability of an offer */ availability: SCThingThatCanBeOfferedAvailability; /** * The time when the thing is available. */ availabilityRange?: SCISO8601DateRange; /** * List of prices that are distinct for specific groups */ prices?: T; /** * Provider of an offer */ provider: SCThingThatCanBeOfferedProvider; } /** * Translatable properties of a thing that can be offered */ interface SCThingThatCanBeOfferedTranslatableProperties extends SCThingTranslatableProperties { /** * Availability of an offer * @keyword */ 'offers[].availability'?: string; } /** * Entity responsible for the offer */ type SCThingThatCanBeOfferedProvider = SCOrganizationWithoutReferences | SCPersonWithoutReferences; /** * Availability of an Offer */ type SCThingThatCanBeOfferedAvailability = 'in stock' | 'out of stock' | 'online only' | 'limited availability'; /** * Meta information about a thing without references that accepts payments */ declare class SCThingThatCanBeOfferedMeta implements SCMetaTranslations> { /** * Translations of fields */ fieldTranslations: { de: { offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * Categories of a periodical */ type SCPeriodicalCategories = 'eJournal' | 'electronic' | 'journal'; /** * A periodical without references */ interface SCPeriodicalWithoutReferences extends SCCreativeWorkWithoutReferences, SCThingThatCanBeOfferedWithoutReferences, SCThingWithCategoriesWithoutReferences { /** * Categories of a periodical */ categories: SCPeriodicalCategories[]; /** * A list of ISSNs of a periodical * @filterable * @keyword */ ISSNs?: string[]; /** * Translated properties of a periodical */ translations?: SCTranslations; /** * Type of a periodical */ type: SCThingType.Periodical; } /** * A publication published at regular intervals (e.g. a magazine or newspaper) * @validatable * @indexable */ interface SCPeriodical extends SCCreativeWork, SCThingThatCanBeOffered, SCPeriodicalWithoutReferences { /** * Translated properties of a periodical */ translations?: SCTranslations; /** * Type of a periodical */ type: SCThingType.Periodical; } /** * Translatable properties of a periodical */ interface SCPeriodicalTranslatableFields extends SCThingWithCategoriesTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties, SCCreativeWorkTranslatableProperties { } /** * Meta information about a periodical */ declare class SCPeriodicalMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { categories: string; ISSNs: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categorySpecificValues: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; en: { categories: string; ISSNs: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categorySpecificValues: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; categories: { eJournal: string; electronic: string; journal: string; }; }; en: { type: string; categories: { eJournal: string; electronic: string; journal: string; }; }; }; } /** * Categories of an article */ type SCArticleCategories = 'unipedia' | 'article' | 'eArticle'; /** * An article without references */ interface SCArticleWithoutReferences extends SCCreativeWorkWithoutReferences, SCThingThatCanBeOfferedWithoutReferences, SCThingWithCategoriesWithoutReferences { /** * Article itself as markdown * @text */ articleBody?: string; /** * Categories of an article */ categories: SCArticleCategories[]; /** * Translated fields of an article */ translations?: SCTranslations; /** * Type of an article */ type: SCThingType.Article; } /** * An article * @validatable * @indexable */ interface SCArticle extends SCCreativeWork, SCThingThatCanBeOffered, SCArticleWithoutReferences { /** * A periodical to which this article belongs */ isPartOf?: SCPeriodicalWithoutReferences; /** * Additional information about how to find the article inside of its "parent" (which is provided in 'isPartOf') * e.g. "40, 2011, S. 2-3" */ reference?: string; /** * Translated fields of an article */ translations?: SCTranslations; /** * Type of an article */ type: SCThingType.Article; } /** * Translatable properties of an article */ interface SCArticleTranslatableProperties extends SCThingWithCategoriesTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties, SCCreativeWorkTranslatableProperties { /** * Translation of the article itself as markdown * @text */ articleBody?: string[]; } /** * Meta information about an article */ declare class SCArticleMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { categories: string; reference: string; articleBody: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categorySpecificValues: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; en: { categories: string; reference: string; articleBody: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categorySpecificValues: string; authors: string; availableLanguages: string; datePublished: string; /** * Translations of values of fields */ edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { article: string; eArticle: string; unipedia: string; }; type: string; }; en: { type: SCThingType; categories: { article: string; eArticle: string; unipedia: string; }; }; }; } /** * An academic degree without references */ interface SCAcademicDegreeWithoutReferences extends SCThingWithoutReferences { /** * The achievable academic degree * @filterable * @sortable ducet */ academicDegree: string; /** * The achievable academic degree with academic field specification * (eg. Master of Science) * */ academicDegreewithField?: string; /** * The achievable academic degree with academic field specification * shorted (eg. M.Sc.). * */ academicDegreewithFieldShort?: string; } /** * An academic degree */ interface SCAcademicDegree extends SCAcademicDegreeWithoutReferences, SCThing { } /** * Meta information about academic degrees */ declare class SCAcademicDegreeMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { academicDegree: string; academicDegreewithField: string; academicDegreewithFieldShort: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { academicDegree: string; academicDegreewithField: string; academicDegreewithFieldShort: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: string; }; }; } /** * A sport course without references */ interface SCSportCourseWithoutReferences extends SCEventWithoutReferences { /** * Type of a sport course */ type: SCThingType.SportCourse; } /** * A sport course * @validatable * @indexable */ interface SCSportCourse extends SCEvent, SCSportCourseWithoutReferences { /** * Type of a sport course */ type: SCThingType.SportCourse; } /** * Meta information about a sport course */ declare class SCSportCourseMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { academicTerms: string; catalogs: string; creativeWorks: string; maximumParticipants: string; organizers: string; performers: string; remainingAttendeeCapacity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * Price groups for sport courses */ interface SCSportCoursePriceGroup extends SCAcademicPriceGroup { /** * Price for alumnis * @float */ alumni?: number; } /** * A date without references */ interface SCDateSeriesWithoutReferences extends SCThingThatCanBeOfferedWithoutReferences { /** * Dates of the date series that are initially planned to be held * @filterable */ dates: SCISO8601Date[]; /** * Duration of the date series */ duration: SCISO8601Duration; /** * Dates that where initially planned to be held but are cancelled */ exceptions?: SCISO8601Date[]; /** * Frequency of the date series * @filterable */ repeatFrequency?: SCISO8601Duration; /** * Translated properties */ translations?: SCTranslations; /** * Type of a date series */ type: SCThingType.DateSeries; } /** * A date series * @validatable * @indexable */ interface SCDateSeries extends SCDateSeriesWithoutReferences, SCThingInPlace, SCThingThatCanBeOffered { /** * Event to which the date series belongs */ event: SCAcademicEventWithoutReferences | SCSportCourseWithoutReferences; /** * Performers of the date series */ performers?: SCPersonWithoutReferences[]; /** * Translated properties */ translations?: SCTranslations; /** * Type of a date series */ type: SCThingType.DateSeries; } /** * Meta information about a date series */ declare class SCDateSeriesMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { dates: string; duration: string; event: string; exceptions: string; repeatFrequency: string; performers: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; inPlace: string; }; en: { dates: string; duration: string; event: string; exceptions: string; repeatFrequency: string; performers: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; inPlace: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * Translatable properties of date series' */ type SCDateSeriesTranslatableProperties = SCThingThatCanBeOfferedTranslatableProperties; /** * A course of study without references */ interface SCCourseOfStudyWithoutReferences extends SCAcademicDegreeWithoutReferences, SCThingThatCanBeOfferedWithoutReferences { /** * The main language in which the course of study * is beeing offered */ mainLanguage?: SCLanguage; /** * The modes the course of study is offered in * @filterable */ mode?: SCCourseOfStudyMode; /** * The time modes the course of study is offered in * @filterable */ timeMode?: SCCourseOfStudyTimeMode; /** * Translated fields of a dish */ translations?: SCTranslations; /** * Type of the course of study */ type: SCThingType.CourseOfStudy; } /** * A course of study * @validatable * @indexable */ interface SCCourseOfStudy extends SCCourseOfStudyWithoutReferences, SCThingThatCanBeOffered, SCAcademicDegree { /** * The department that manages the course of study */ department?: SCOrganizationWithoutReferences; /** * The secretary that administers requests and * questions concerning the course of study */ secretary?: SCOrganizationWithoutReferences; /** * Dates at which the course of study is planned to start */ startDates?: SCDateSeriesWithoutReferences[]; /** * Translated fields of a course of study */ translations?: SCTranslations; /** * Type of the course of study */ type: SCThingType.CourseOfStudy; } /** * Translatable properties of a course of study */ type SCCourseOfStudyTranslatableProperties = SCThingThatCanBeOfferedTranslatableProperties; /** * Meta information about a course of study */ declare class SCCourseOfStudyMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { department: string; mainLanguage: string; mode: string; secretary: string; startDates: string; timeMode: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; academicDegree: string; academicDegreewithField: string; academicDegreewithFieldShort: string; }; en: { department: string; mainLanguage: string; mode: string; secretary: string; startDates: string; timeMode: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; academicDegree: string; academicDegreewithField: string; academicDegreewithFieldShort: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { modes: { combination: string; 'double-degree': string; dual: string; standard: string; }; timeMode: { fulltime: string; parttime: string; }; type: string; }; en: { modes: { combination: string; 'double-degree': string; dual: string; standard: string; }; timeMode: { fulltime: string; parttime: string; }; type: SCThingType; }; }; } /** * Types of (german) course of study modes */ type SCCourseOfStudyMode = 'combination' | 'dual' | 'double-degree' | 'standard'; /** * Types of (german) course of study time modes */ type SCCourseOfStudyTimeMode = 'fulltime' | 'parttime'; /** * Categories of assessments */ type SCAssessmentCategories = 'university assessment'; /** * An assessment without references * */ interface SCAssessmentWithoutReferences extends SCThingWithCategoriesWithoutReferences { /** * Number of attempts * @integer */ attempt?: number; /** * Date assessment was taken or graded */ date?: SCISO8601Date; /** * ECTS (credit-points) * @float */ ects?: number; /** * Grade */ grade: string; /** * Current status */ status?: string; /** * Translated fields of an assessment */ translations?: SCTranslations; /** * Type of an assessment */ type: SCThingType.Assessment; } /** * An assessment * @validatable */ interface SCAssessment extends SCAssessmentWithoutReferences, SCThing, SCThingWithCategories { /** * Course of study the assessment was taken for */ courseOfStudy?: SCCourseOfStudyWithoutReferences; /** * An array of assessments from the 'level 0' (root) assessment to the direct parent */ superAssessments?: SCAssessmentWithoutReferences[]; /** * Translated fields of an assessment */ translations?: SCTranslations; /** * Type of an assessment */ type: SCThingType.Assessment; } interface SCAssessmentTranslatableProperties extends SCThingWithCategoriesTranslatableProperties { /** * @see SCAssessmentWithoutReferences.status */ status?: string; } /** * Study module meta data */ declare class SCAssessmentMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { attempt: string; courseOfStudy: string; date: string; ects: string; grade: string; status: string; superAssessments: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { attempt: string; courseOfStudy: string; date: string; ects: string; grade: string; status: string; superAssessments: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * Categories of a book */ type SCBookCategories = 'audio' | 'audiobook' | 'book' | 'cd' | 'dvd' | 'eAudiobook' | 'ebook' | 'ePhoto' | 'hierarchy' | 'kit' | 'manuscript' | 'map' | 'microfilm' | 'mixed_material' | 'musicalscore' | 'photo' | 'physicalobject' | 'retro' | 'sensorimage' | 'unknown' | 'video'; /** * A book without references */ interface SCBookWithoutReferences extends SCCreativeWorkWithoutReferences, SCThingThatCanBeOfferedWithoutReferences, SCThingWithCategoriesWithoutReferences { /** * Categories of a book */ categories: SCBookCategories[]; /** * ISBNs of a book * @filterable * @keyword */ ISBNs?: string[]; /** * Number of pages of a book * @integer */ numberOfPages?: number; /** * Translated properties of a book */ translations?: SCTranslations; /** * Type of a book */ type: SCThingType.Book; } /** * A book * @validatable * @indexable */ interface SCBook extends SCCreativeWork, SCThingThatCanBeOffered, SCBookWithoutReferences { /** * Translated properties of a book */ translations?: SCTranslations; /** * Type of a book */ type: SCThingType.Book; } /** * Translatable properties of a book */ interface SCBookTranslatableFields extends SCThingWithCategoriesTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties, SCCreativeWorkTranslatableProperties { } /** * Meta information about a book */ declare class SCBookMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { categories: string; ISBNs: string; numberOfPages: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categorySpecificValues: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; en: { categories: string; ISBNs: string; numberOfPages: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categorySpecificValues: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { audio: string; audiobook: string; book: string; cd: string; dvd: string; eAudiobook: string; ebook: string; ePhoto: string; hierarchy: string; kit: string; manuscript: string; map: string; microfilm: string; mixed_material: string; musicalscore: string; photo: string; physicalobject: string; retro: string; sensorimage: string; unknown: string; video: string; }; type: string; }; en: { type: SCThingType; categories: { audio: string; audiobook: string; book: string; cd: string; dvd: string; eAudiobook: string; ebook: string; ePhoto: string; hierarchy: string; kit: string; manuscript: string; map: string; microfilm: string; mixed_material: string; musicalscore: string; photo: string; physicalobject: string; retro: string; sensorimage: string; unknown: string; video: string; }; }; }; } interface SCCertificationWithoutReferences extends SCThingWithCategoriesWithoutReferences { /** * A compact version of the image, for example for showing in list views */ compactImage?: string; /** * Translations of a certification */ translations?: SCTranslations; /** * Type of certification */ type: SCThingType.Certification; } /** * @indexable * @validatable */ interface SCCertification extends SCCertificationWithoutReferences, SCThing, SCThingWithCategories { /** * The authority responsible for issuing this certification */ certificationAuthority?: SCOrganizationWithoutReferences; /** * Translations of a certification */ translations?: SCTranslations; /** * Type of certification */ type: SCThingType.Certification; } interface SCCertificationTranslatableProperties extends SCThingWithCategoriesTranslatableProperties { image?: string; compactImage?: string; } type SCCertificationCategories = 'water consumption' | 'animal welfare' | 'climate impact' | 'rainforest protection'; declare class SCCertificationMeta extends SCThingMeta implements SCMetaTranslations { fieldTranslations: { de: { compactImage: string; certificationAuthority: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { compactImage: string; certificationAuthority: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * A diff without references */ interface SCDiffWithoutReferences extends SCThingWithoutReferences { /** * Action of the diff */ action: 'changed' | 'removed'; /** * Diff patch. Only when action === 'changed' */ changes?: jsonpatch.OpPatch[]; /** * Creation date of the diff. */ dateCreated: SCISO8601Date; /** * Type of a diff */ type: SCThingType.Diff; } /** * A diff * @validatable */ interface SCDiff extends SCDiffWithoutReferences, SCThing { /** * Original object the diff was generated on */ object: SCIndexableThings; /** * Type of a diff */ type: SCThingType.Diff; } /** * Meta information about a diff */ declare class SCDiffMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { action: string; changes: string; dateCreated: string; object: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { action: string; changes: string; dateCreated: string; object: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { action: { changed: string; removed: string; }; type: string; }; en: { type: SCThingType; }; }; } /** * A dish without references */ interface SCDishWithoutReferences extends SCThingThatCanBeOfferedWithoutReferences, SCThingWithCategoriesWithoutReferences { /** * Additives of the dish * @filterable * @keyword */ additives?: string[]; /** * Characteristics of the dish */ characteristics?: SCDishCharacteristic[]; /** * Nutrition information (calories and nutrients with amounts) */ nutrition?: SCNutritionInformation; /** * Section of the restaurant menu to which the dish belongs */ menuSection?: SCMenuSection; /** * Translated fields of a dish */ translations?: SCTranslations; /** * Type of a dish */ type: SCThingType.Dish; } /** * A dish * @validatable * @indexable */ interface SCDish extends SCDishWithoutReferences, SCThingThatCanBeOffered, SCThingWithCategories { /** * Dishes ("Beilagen") that are served with the dish (if only certain supplement dishes can be taken with a dish) */ dishAddOns?: SCDishWithoutReferences[]; /** * Certifications this dish received */ certifications?: SCCertificationWithoutReferences[]; /** * Translated fields of a dish */ translations?: SCTranslations; /** * Type of a dish */ type: SCThingType.Dish; } interface SCDishTranslatableProperties extends SCThingWithCategoriesTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties { /** * Additives of the dish * @filterable * @keyword */ additives?: string[]; /** * Characteristics of the dish */ characteristics?: SCDishCharacteristic[]; } /** * Composition of properties of a food characteristic */ interface SCDishCharacteristic { /** * URL of an image of the characteristic * @keyword */ image?: string; /** * Name of the characteristic * @filterable * @text */ name: string; } /** * A list of categories for dishes */ type SCDishCategories = 'appetizer' | 'salad' | 'main dish' | 'dessert' | 'soup' | 'side dish'; /** * Type definition for SCNutritionInformation * @see https://schema.org/NutritionInformation */ interface SCNutritionInformation { /** * Number of calories contained (in kcal) * @float */ calories?: number; /** * Content of carbohydrates (in grams) * @float */ carbohydrateContent?: number; /** * Content of fat (in grams) * @float */ fatContent?: number; /** * Content of proteins (in grams) * @float */ proteinContent?: number; /** * Content of salt (in grams) * @float */ saltContent?: number; /** * Content of saturated fat (in grams) * @float */ saturatedFatContent?: number; /** * Content of sugar (in grams) * @float */ sugarContent?: number; } interface SCMenuSection { /** * Name of the menu section (mostly to be used as a section title) */ name: 'breakfast' | 'lunch' | 'dinner'; /** * The time span when the dishes from the sections are available. * @see http://wiki.openstreetmap.org/wiki/Key:opening_hours/specification */ servingHours?: string; } /** * Meta information about a dish */ declare class SCDishMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { additives: string; characteristics: string; certifications: string; dishAddOns: string; nutrition: string; menuSection: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categories: string; categorySpecificValues: string; }; en: { additives: string; characteristics: string; certifications: string; dishAddOns: string; nutrition: string; menuSection: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; categories: string; categorySpecificValues: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { categories: { appetizer: string; dessert: string; 'main dish': string; salad: string; 'side dish': string; soup: string; }; type: string; }; en: { type: SCThingType; }; }; } /** * An encapsulation of the data (e.g. a thing) that is saved, which provides additional information. */ type SCSaveableThingWithoutReferences = SCThingWithoutReferences; /** * An encapsulation of the data (e.g. a thing) that is saved, which provides additional information. */ interface SCSaveableThing extends SCSaveableThingWithoutReferences, SCThing { /** * The contained data */ data: SCIndexableThings; /** * Type of the origin */ origin: SCThingUserOrigin; } /** * A favorite without references */ interface SCFavoriteWithoutReferences extends SCSaveableThingWithoutReferences { /** * Type of a favorite */ type: SCThingType.Favorite; } /** * A favorite * @validatable */ interface SCFavorite extends SCSaveableThing { /** * Type of a favorite */ type: SCThingType.Favorite; } /** * Meta information about a favorite */ declare class SCFavoriteMeta extends SCThingMeta { } /** * A floor without references */ interface SCFloorWithoutReferences extends SCThingWithoutReferences { /** * Floor name in the place it is in e.g. "first floor", "ground floor". This doesn't reference the building name. * @text */ floorName: string; /** * Floor plan */ plan: SCFloorFeatureCollectionWithPlaces; /** * Translated fields of a floor */ translations?: SCTranslations; /** * Type of a floor */ type: SCThingType.Floor; } /** * A floor * @validatable * @indexable */ interface SCFloor extends SCFloorWithoutReferences, SCThingInPlace { /** * Translated fields of a floor */ translations?: SCTranslations; /** * Type of a floor */ type: SCThingType.Floor; } /** * A feature collection */ interface SCFloorFeatureCollectionWithPlaces extends FeatureCollection { /** * Features of the collection */ features: Array>; } /*** * A feature with a place */ interface SCFloorFeatureWithPlace extends Feature { /** * The place of the feature */ place?: SCRoomWithoutReferences | SCPointOfInterestWithoutReferences; } /** * Translatable properties of a floor */ interface SCFloorTranslatableProperties extends SCThingTranslatableProperties { /** * Translation of the floor name * @text */ floorName?: string; } /** * Meta information about floors */ declare class SCFloorMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { floorName: string; plan: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { floorName: string; plan: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * An ID-Card without references */ interface SCIdCardWithoutReferences extends SCThingWithoutReferences { /** * Validity range */ validity?: SCISO8601DateRange; /** * Type */ type: SCThingType.IdCard; } /** * A message * @validatable * @indexable */ interface SCIdCard extends SCIdCardWithoutReferences, SCThing { /** * Translated fields of a message */ translations?: SCTranslations; /** * Type */ type: SCThingType.IdCard; } /** * Translatable properties of a message */ interface SCIdCardTranslatableProperties extends SCThingTranslatableProperties { } /** * Meta information about messages */ declare class SCIdCardMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { validity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { validity: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * categories of a job posting */ type SCJobCategories = 'law' | 'business' | 'natural' | 'it' | 'education' | 'other' | 'arts' | 'social' | 'engineering' | 'communication' | 'medical'; interface SCJobPostingWithoutReferences extends SCThingWithCategoriesWithoutReferences, SCInPlace { /** * Type of a job posting */ type: SCThingType.JobPosting; } /** * A JobPosting * @validatable * @indexable */ interface SCJobPosting extends SCThingWithCategories, SCJobPostingWithoutReferences { /** * A description of the employer * @text */ employerOverview?: SCOrganizationWithoutReferences; /** * A JobPosting */ type: SCThingType.JobPosting; } declare class SCJobPostingMeta extends SCThingMeta { fieldTranslations: { de: { employerOverview: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { employerOverview: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; fieldValueTranslations: { de: { type: string; categories: { law: string; business: string; natural: string; it: string; education: string; other: string; arts: string; social: string; engineering: string; communication: string; medical: string; }; }; en: { type: SCThingType; categories: { law: string; business: string; natural: string; it: string; education: string; other: string; arts: string; social: string; engineering: string; communication: string; medical: string; }; }; }; } /** * Categories of a message */ type SCMessageCategories = 'news'; /** * A message without references */ interface SCMessageWithoutReferences extends SCCreativeWorkWithoutReferences, SCThingWithCategoriesWithoutReferences { /** * Organizational unit for which the message is intended */ audienceOrganizations?: SCOrganizationWithoutReferences[]; /** * Roles for which the message is intended * @filterable */ audiences: SCUserGroup[]; /** * Categories of a message */ categories: SCMessageCategories[]; /** * When the message was created * @filterable */ dateCreated?: SCISO8601Date; /** * Message itself * @text */ messageBody: string; /** * An index for applying a custom sorting of multiple messages */ sequenceIndex?: number; /** * Translated fields of a message */ translations?: SCTranslations; /** * Type of a message */ type: SCThingType.Message; } /** * A message * @validatable * @indexable */ interface SCMessage extends SCCreativeWork, SCMessageWithoutReferences { /** * Translated fields of a message */ translations?: SCTranslations; /** * Type of a message */ type: SCThingType.Message; } /** * Translatable properties of a message */ interface SCMessageTranslatableProperties extends SCCreativeWorkTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties { /** * Message itself * @text */ messageBody?: string; } /** * Meta information about messages */ declare class SCMessageMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { audienceOrganizations: string; audiences: string; dateCreated: string; messageBody: string; sequenceIndex: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; en: { audienceOrganizations: string; audiences: string; dateCreated: string; messageBody: string; sequenceIndex: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { audiences: { employees: string; guests: string; students: string; }; categories: { news: string; }; type: string; }; en: { type: SCThingType; }; }; } /** * A study module without references */ interface SCStudyModuleWithoutReferences extends SCThingThatCanBeOfferedWithoutReferences { /** * ECTS points (European Credit Transfer System) * @float */ ects: number; /** * The language in which the study module is offered */ language: SCLanguage; /** * Majors that this study module is meant for * @filterable * @keyword */ majors: string[]; /** * Represents the modules necessity for each given major (of the major property) */ necessity: SCMap; /** * Translated fields of a study module */ translations?: SCTranslations; /** * Type of the study module */ type: SCThingType.StudyModule; } /** * A study module * @validatable * @indexable */ interface SCStudyModule extends SCStudyModuleWithoutReferences, SCThingThatCanBeOffered { /** * Academic events that make up a study module */ academicEvents: SCAcademicEventWithoutReferences[]; /** * The faculty that manages and curates the study module */ faculty: SCOrganizationWithoutReferences; /** * Study modules needed for each others fulfillment */ partnerModules?: SCStudyModuleWithoutReferences[]; /** * Study modules required beforehand */ requiredModules?: SCStudyModuleWithoutReferences[]; /** * The secretary that administers requests and * questions concerning the study module by eg. students */ secretary: SCOrganizationWithoutReferences | SCPersonWithoutReferences; /** * Translated fields of a study module */ translations?: SCTranslations; /** * Type of the study module */ type: SCThingType.StudyModule; } interface SCStudyModuleTranslatableProperties extends SCThingThatCanBeOfferedTranslatableProperties { /** * Translations of the majors that this study module is meant for * @keyword */ majors?: string[]; /** * Translations of the modules necessity for each given major (of the major property) */ necessity: SCMap; } /** * 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. */ declare enum SCStudyModuleNecessity { Required = "required", Elective = "elective", Optional = "optional" } /** * Study module meta data */ declare class SCStudyModuleMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { academicEvents: string; ects: string; faculty: string; language: string; majors: string; necessity: string; partnerModules: string; requiredModules: string; secretary: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { academicEvents: string; ects: string; faculty: string; language: string; majors: string; necessity: string; partnerModules: string; requiredModules: string; secretary: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { necessity: { elective: string; optional: string; required: string; }; type: string; }; en: { type: SCThingType; }; }; } /** * A ticket without references */ interface SCTicketWithoutReferences extends SCThingWithoutReferences { /** * Approximate wait time */ approxWaitingTime: SCISO8601Duration; /** * Waiting number of the ticket * @keyword */ currentTicketNumber: string; /** * Service type of the ticket */ serviceType: string; /** * Type of a ticket */ type: SCThingType.Ticket; } /** * A ticket * @validatable * @indexable */ interface SCTicket extends SCTicketWithoutReferences, SCThingInPlace { /** * Type of a ticket */ type: SCThingType.Ticket; } /** * Meta information about a ticket */ declare class SCTicketMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { approxWaitingTime: string; currentTicketNumber: string; serviceType: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { approxWaitingTime: string; currentTicketNumber: string; serviceType: string; inPlace: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * A "to do" without references */ interface SCToDoWithoutReferences extends SCThingWithCategoriesWithoutReferences { /** * Whether or not the "to do" is already done */ done: boolean; /** * A date when the "to do" is due * @filterable */ dueDate?: SCISO8601Date; /** * Priority of the "to do" */ priority: SCToDoPriority; /** * Type of the "to do" */ type: SCThingType.ToDo; } /** * A "to do" * @validatable * @indexable */ interface SCToDo extends SCToDoWithoutReferences, SCThing, SCThingWithCategories { /** * Translated fields of a thing with categories */ translations?: SCTranslations; /** * Type of the "to do" */ type: SCThingType.ToDo; } /** * A priority of a "to do" */ declare enum SCToDoPriority { LOW = 0, NORMAL = 2, HIGH = 5 } /** * Meta information about todo */ declare class SCToDoMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { done: string; dueDate: string; priority: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { done: string; dueDate: string; priority: string; categories: string; categorySpecificValues: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * A tour without references */ interface SCTourWithoutReferences extends SCThingWithoutReferences { /** * Init script for the tour * @text */ init?: string; /** * Steps of a tour */ steps: SCTourStep[]; /** * Type of a tour * @keyword */ type: SCThingType.Tour; } /** * A tour * @validatable * @indexable */ interface SCTour extends SCTourWithoutReferences, SCThing { /** * Type of a tour */ type: SCThingType.Tour; } /** * Meta information about a tour */ declare class SCTourMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { init: string; steps: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; en: { init: string; steps: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * A step in a tour */ type SCTourStep = SCTourStepMenu | SCTourStepLocation | SCTourStepTooltip; /** * A location of a tour step */ interface SCTourStepLocation { /** * Location to go to * @keyword */ location: string; /** * Type of the step */ type: 'location'; } /** * A tooltip in a tour step */ interface SCTourStepTooltip { /** * Whether the tooltip may fail or not */ canFail?: boolean; /** * Element that the tooltip shall be pointing at or a list of elements to try in the specified order * @keyword */ element: string | string[]; /** * Position of the tooltip */ position?: 'bottom' | 'left' | 'right' | 'top'; /** * How the step shall be resolved */ resolved?: SCTourResolvedElement | SCTourResolvedEvent | SCTourResolvedLocation | SCTourResolvedMenu; /** * Text that the tooltip shall contain * @text */ text: string; /** * How often it shall be retried * @integer */ tries?: number; /** * Type of the step */ type: 'tooltip'; } /** * Menu interaction of a tour step */ interface SCTourStepMenu { /** * The action that needs to be completed on the menu */ action: 'close'; /** * The side of the menu that the step refers to */ side: 'right'; /** * The type of the step */ type: 'menu'; } /** * Tour step resolved by an element */ interface SCTourResolvedElement { /** * Element name * @keyword */ element: string; } /** * Tour step resolved by an event */ interface SCTourResolvedEvent { /** * Event name * @keyword */ event: string; } /** * Tour step resolved by a location */ interface SCTourResolvedLocation { /** * Matching location */ location: SCTourResolvedLocationTypeIs | SCTourResolvedLocationTypeMatch; } /** * Tour step resolved by a location for a specific location */ interface SCTourResolvedLocationTypeIs { /** * Specific location name * @keyword */ is: string; } /** * Tour step resolved by a location for a specific location */ interface SCTourResolvedLocationTypeMatch { /** * Regex location name * @keyword */ match: string; } /** * Tour step resolved by interacting with a menu */ interface SCTourResolvedMenu { /** * Menu location */ menu: 'open-left' | 'open-right'; } /** * A video without references */ interface SCVideoWithoutReferences extends SCCreativeWorkWithoutReferences, SCThingThatCanBeOfferedWithoutReferences { /** * The Duration of the Video */ duration?: SCISO8601Duration; /** * Downloadable/Streamable Files of the Video */ sources?: SCVideoSource[]; /** * URLs to a thumbnails for the Video * @keyword */ thumbnails?: string[]; /** * Track Files for the Video */ tracks?: SCVideoTrack; /** * A Transcript of the Video * @text */ transcript?: string; /** * Translated fields of a video */ translations?: SCTranslations; /** * Type of an Video */ type: SCThingType.Video; } interface SCVideoSource { /** * Pixel Height of the Video * @integer */ height?: number; /** * MIME-Type of the source File * @filterable */ mimeType: SCVideoMimeType; /** * Size of the Video File in bytes * @integer */ size?: number; /** * URL to the Video File * @keyword */ url: string; /** * Pixel Width of the Video * @integer */ width?: number; } interface SCVideoTrack { /** * Language of the Subtitle */ language: SCLanguage; /** * Content Type of the Track File * @filterable */ type: SCVideoTrackTypes; /** * URL to the Track File * @keyword */ url: string; } /** * A video * @validatable * @indexable */ interface SCVideo extends SCCreativeWork, SCThingThatCanBeOffered, SCVideoWithoutReferences { /** * Persons acting in the Video */ actors?: SCPersonWithoutReferences[]; /** * Translated fields of a video */ translations?: SCTranslations; /** * Type of a video */ type: SCThingType.Video; } /** * Translatable properties of a video */ interface SCVideoTranslatableFields extends SCCreativeWorkTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties { } /** * Meta information about a video */ declare class SCVideoMeta extends SCThingMeta implements SCMetaTranslations { /** * Translations of fields */ fieldTranslations: { de: { actors: string; duration: string; sources: string; thumbnails: string; tracks: string; transcript: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; en: { actors: string; duration: string; sources: string; thumbnails: string; tracks: string; transcript: string; offers: string; alternateNames: string; description: string; identifiers: string; image: string; name: string; origin: string; sameAs: string; translations: string; type: string; uid: string; authors: string; availableLanguages: string; datePublished: string; edition: string; firstPublished: string; inLanguage: string; isPartOf: string; keywords: string; lastPublished: string; publishers: string; publications: string; sourceOrganization: string; }; }; /** * Translations of values of fields */ fieldValueTranslations: { de: { type: string; }; en: { type: SCThingType; }; }; } /** * Video Encoding Formats */ type SCVideoMimeType = 'video/mp4' | 'video/ogg' | 'video/webm' | 'application/vnd.apple.mpegurl' | 'application/dash+xml'; /** * Video Track Types */ type SCVideoTrackTypes = 'closed captions' | 'chapters' | 'description' | 'metadata' | 'subtitles'; /** * A map of things, from type to meta data */ declare const SCClasses: { [K in SCThingType]: object; }; type SCIndexableThings = SCAssessment | SCAcademicEvent | SCArticle | SCBook | SCBuilding | SCCatalog | SCContactPoint | SCCourseOfStudy | SCCertification | SCDateSeries | SCDish | SCFloor | SCIdCard | SCMessage | SCOrganization | SCPeriodical | SCPerson | SCPointOfInterest | SCPublicationEvent | SCRoom | SCSemester | SCSportCourse | SCStudyModule | SCTicket | SCToDo | SCTour | SCVideo | SCJobPosting; /** * An object that exists in the StAppsCore */ type SCThings = SCIndexableThings | SCDiff | SCFavorite | SCSetting; /** * A field of a thing */ type SCThingsField = keyof SCThings | string; /** * Thing without references for a thing */ type SCAssociatedThingWithoutReferences = THING extends SCAssessment ? SCAssessmentWithoutReferences : THING extends SCAcademicEvent ? SCAcademicEventWithoutReferences : THING extends SCArticle ? SCArticleWithoutReferences : THING extends SCBook ? SCBookWithoutReferences : THING extends SCBuilding ? SCBuildingWithoutReferences : THING extends SCCatalog ? SCCatalogWithoutReferences : THING extends SCContactPoint ? SCContactPointWithoutReferences : THING extends SCCourseOfStudy ? SCCourseOfStudyWithoutReferences : THING extends SCCertification ? SCCertificationWithoutReferences : THING extends SCDateSeries ? SCDateSeriesWithoutReferences : THING extends SCDiff ? SCDiffWithoutReferences : THING extends SCDish ? SCDishWithoutReferences : THING extends SCFavorite ? SCFavoriteWithoutReferences : THING extends SCFloor ? SCFloorWithoutReferences : THING extends SCIdCard ? SCIdCardWithoutReferences : THING extends SCJobPosting ? SCJobPostingWithoutReferences : THING extends SCMessage ? SCMessageWithoutReferences : THING extends SCOrganization ? SCOrganizationWithoutReferences : THING extends SCPeriodical ? SCPeriodicalWithoutReferences : THING extends SCPerson ? SCPersonWithoutReferences : THING extends SCPointOfInterest ? SCPointOfInterestWithoutReferences : THING extends SCPublicationEvent ? SCPublicationEventWithoutReferences : THING extends SCRoom ? SCRoomWithoutReferences : THING extends SCSemester ? SCSemesterWithoutReferences : THING extends SCSetting ? SCSettingWithoutReferences : THING extends SCSportCourse ? SCSportCourseWithoutReferences : THING extends SCStudyModule ? SCStudyModuleWithoutReferences : THING extends SCTicket ? SCTicketWithoutReferences : THING extends SCToDo ? SCToDoWithoutReferences : THING extends SCTour ? SCTourWithoutReferences : THING extends SCVideo ? SCVideoWithoutReferences : never; /** * Thing for a thing without references */ type SCAssociatedThing = THING extends SCAssessmentWithoutReferences ? SCAssessment : THING extends SCAcademicEventWithoutReferences ? SCAcademicEvent : THING extends SCArticleWithoutReferences ? SCArticle : THING extends SCBookWithoutReferences ? SCBook : THING extends SCBuildingWithoutReferences ? SCBuilding : THING extends SCCatalogWithoutReferences ? SCCatalog : THING extends SCContactPointWithoutReferences ? SCContactPoint : THING extends SCCourseOfStudyWithoutReferences ? SCCourseOfStudy : THING extends SCCertificationWithoutReferences ? SCCertification : THING extends SCDateSeriesWithoutReferences ? SCDateSeries : THING extends SCDiffWithoutReferences ? SCDiff : THING extends SCDishWithoutReferences ? SCDish : THING extends SCJobPostingWithoutReferences ? SCJobPosting : THING extends SCFavoriteWithoutReferences ? SCFavorite : THING extends SCFloorWithoutReferences ? SCFloor : THING extends SCIdCardWithoutReferences ? SCIdCard : THING extends SCMessageWithoutReferences ? SCMessage : THING extends SCOrganizationWithoutReferences ? SCOrganization : THING extends SCPeriodicalWithoutReferences ? SCPeriodical : THING extends SCPersonWithoutReferences ? SCPerson : THING extends SCPointOfInterestWithoutReferences ? SCPointOfInterest : THING extends SCPublicationEventWithoutReferences ? SCPublicationEvent : THING extends SCRoomWithoutReferences ? SCRoom : THING extends SCSemesterWithoutReferences ? SCSemester : THING extends SCSettingWithoutReferences ? SCSetting : THING extends SCSportCourseWithoutReferences ? SCSportCourse : THING extends SCStudyModuleWithoutReferences ? SCStudyModule : THING extends SCTicketWithoutReferences ? SCTicket : THING extends SCToDoWithoutReferences ? SCToDo : THING extends SCTourWithoutReferences ? SCTour : THING extends SCVideoWithoutReferences ? SCVideo : never; /** * Sort instruction to sort by distance */ interface SCDistanceSort extends SCSearchAbstractSort { /** * @see SCSearchAbstractSort.type */ type: 'distance'; } /** * Additional arguments for sort instruction to sort by distance */ interface SCDistanceSortArguments extends SCSearchAbstractSortArguments { /** * Position to calculate distances to */ position: Position; } /** * Sort instruction for ducet sort */ interface SCDucetSort extends SCSearchAbstractSort { /** * @see SCSearchAbstractSort.type */ type: 'ducet'; } /** * Sort instruction for generic sort such as date */ interface SCGenericSort extends SCSearchAbstractSort { /** * @see SCSearchAbstractSort.type */ type: 'generic'; } /** * Sort instruction to sort by price */ interface SCPriceSort extends SCSearchAbstractSort { /** * @see SCSearchAbstractSort.type */ type: 'price'; } /** * Additional arguments for sort instruction to sort by price */ interface SCPriceSortArguments extends SCSearchAbstractSortArguments { /** * University role to sort price for */ universityRole: keyof SCSportCoursePriceGroup; } /** * Abstract sort instruction */ interface SCSearchAbstractSort { /** * Map of arguments for the sort instruction */ arguments: T; /** * Direction of the sort instruction: `asc`ending or `desc`ending. */ order: 'asc' | 'desc'; /** * Type of the sort instruction */ type: SCSearchSortType; } /** * Map of arguments for the sort instruction */ interface SCSearchAbstractSortArguments extends SCMap { /** * Field to sort by */ field: SCThingsField; } /** * Type of a sort instruction */ type SCSearchSortType = 'distance' | 'price' | 'ducet' | 'generic'; /** * A sort instruction */ type SCSearchSort = SCDistanceSort | SCPriceSort | SCDucetSort | SCGenericSort; /** * An abstract action that can be executed by a failed watcher * * This is extended by actual actions. */ interface SCMonitoringAction { /** * Message that is used by the action * * Mustache syntax is supported to evaluate the query. */ message: string; /** * The type of the action */ type: 'log' | 'mail'; } /** * A log action which can be executed from a failed watcher */ interface SCMonitoringLogAction extends SCMonitoringAction { /** * A prefix for the logged messages */ prefix: string; /** * The type of the action */ type: 'log'; } /** * A mail task which can be executed from a failed watcher */ interface SCMonitoringMailAction extends SCMonitoringAction { /** * A list of addresses to send the mails to */ recipients: string[]; /** * A subject line for all mails */ subject: string; /** * The type of the action */ type: 'mail'; } /** * A list of events to describe the execution interval of monitoring triggers */ type SCMonitoringExecutionCalendarEvents = 'hourly' | 'daily' | 'weekly' | 'monthly'; /** * A trigger which determines the execution time of a watcher */ interface SCMonitoringTrigger { /** * A cron like syntax to describe when this trigger should be executed */ executionTime: SCMonitoringExecutionCalendarEvents | string; /** * A name of the trigger that explains when it executes */ name: string; } /** * A condition which is met, when the result length is higher than the minimum length */ interface SCMonitoringMinimumLengthCondition { /** * The minimum length */ length: number; /** * Type of the condition */ type: 'MinimumLength'; } /** * A condition which is met, when the result length is smaller than the maximum length */ interface SCMonitoringMaximumLengthCondition { /** * The maximum length */ length: number; /** * Type of the condition */ type: 'MaximumLength'; } /** * A watcher that evaluates a query, when triggered */ interface SCMonitoringWatcher { /** * A list of actions that are executed, when the watcher fails */ actions: Array; /** * A list of conditions that have to match the result of the query * * If not all conditions are met, the watcher will fail and all actions are executed */ conditions: Array; /** * A name for the watcher */ name: string; /** * Query to execute against the database */ query: unknown; /** * A list of triggers */ triggers: SCMonitoringTrigger[]; } /** * A complete monitoring configuration for the backend */ interface SCMonitoringConfiguration { /** * A list of actions that are executed, when a watcher fails */ actions: Array; /** * A list of watches */ watchers: SCMonitoringWatcher[]; } /** * A backend configuration */ interface SCBackendConfiguration { /** * The maximum amount of time (milliseconds) an external program can take to provide a response to the backend * * This can be used for example for Plugins. */ externalRequestTimeout: number; /** * A list of hidden SC types * * If a type is hidden it won't show in any result unless the type is filtered for * */ hiddenTypes: SCThingType[]; /** * A list of tags that will be ignored by the mapping generator * * The ignored tags should mainly be tags that are irrelevant to the mapping. The tags should include the '@'. */ mappingIgnoredTags: string[]; /** * Maximum number of queries, that can be used in MultiSearchRoute */ maxMultiSearchRouteQueries: number; /** * Maximum body size for requests */ maxRequestBodySize: number; /** * Name of university */ name: string; /** * Namespace of the university for UID generation */ namespace: SCUuid; /** * Version string of the installed StAppsCore */ SCVersion: string; /** * A list of sortable fields of each type */ sortableFields: SCBackendConfigurationSortableField[]; } /** * Description which sort types are supported on which fields of which types */ interface SCBackendConfigurationSortableField { /** * Field name which the sorts should be available on */ fieldName: string; /** * A list of SC types on which this field exists * * If no type is given it is assumed it exists on every type */ onlyOnTypes?: SCThingType[]; /** * A list of supported sorts on this field */ sortTypes: SCSearchSortType[]; } /** * Possible context names to be used by the search request */ type SCSearchContext = 'default' | 'dining' | 'place'; /** * A boosting configuration for one context */ type SCBackendConfigurationSearchBoostingContext = SCRestrictedMap; /** * A boosting configuration for one SCType */ interface SCBackendConfigurationSearchBoostingType { /** * The factor of which the scores matching this type should be multiplied by */ factor: number; /** * Outer-Map: * Fields of this type that should be boosted if they match a given value * For nest fields you can use the `.` as a separator. For example `academicTerms.acronym` * * Inner-map: * Value of the field that should be boosted by the given number * For example `"SS 2019": 2` */ fields?: SCMap>; /** * Type of things the factor should be applied to */ type: SCThingType; } /** * Describes which field on which type should be aggregated */ interface SCBackendAggregationConfiguration { /** * Field name of field which values should be aggregated */ fieldName: string; /** * A list of SC types of which the field is on * * If the type is not given is is assumed the field exists on every type */ onlyOnTypes?: SCThingType[]; } /** * The internal backend configuration that is hidden from the app */ interface SCBackendInternalConfiguration { /** * A list of configurations for aggregations */ aggregations: SCBackendAggregationConfiguration[]; /** * A list of configurations for search boosting * * The resulting scores of matching objects can be boosted (multiplied by a number) to change the order in the * set of results */ boostings: SCBackendConfigurationSearchBoostingContext; /** * Configuration of the database */ database?: SCBackendConfigurationDatabaseConfiguration; /** * Configuration for monitoring */ monitoring?: SCMonitoringConfiguration; } /** * Configuration of the database */ interface SCBackendConfigurationDatabaseConfiguration extends SCMap { /** * Name of the database used by the backend */ name: string; } /** * Index request * @validatable */ interface SCIndexRequest { } /** * A response to an index request * @validatable */ interface SCIndexResponse { /** * @see SCAppConfiguration */ app: SCAppConfiguration; /** * @see SCAuthorizationProvider */ auth: { [key in SCAuthorizationProviderType]?: SCAuthorizationProvider; }; /** * @see SCBackendConfiguration */ backend: SCBackendConfiguration; } /** * Route to request meta information about the deployment */ declare class SCIndexRoute extends SCAbstractRoute { constructor(); } /** * Request to check the availability of books * @validatable */ type SCBookAvailabilityRequest = SCBookAvailabilityRequestByIsbn | SCBookAvailabilityRequestByUuid; /** * Availability request by ISBN */ interface SCBookAvailabilityRequestByIsbn { /** * ISBN of the book to check availability for */ isbn: string; } /** * Availability request by UUID */ interface SCBookAvailabilityRequestByUuid { /** * UID of the book to check availability for */ uid: SCUuid; } /** * List of availabilities of a book * @validatable */ type SCBookAvailabilityResponse = Array>; /** * Route for book availability * * This checks if a book is available in a library. * * **Example**: * * `POST https://example.com/bookAvailability` * * ```json * { * "isbn": "978-3-16-148410-0" * } * ``` */ declare class SCBookAvailabilityRoute extends SCAbstractRoute { constructor(); } /** * Request to add a thing to a bulk * @validatable */ type SCBulkAddRequest = SCThings; /** * Response to a request to add a thing to a bulk * @validatable */ interface SCBulkAddResponse { } /** * Route for indexing SC things in a bulk */ declare class SCBulkAddRoute extends SCAbstractRoute { constructor(); } /** * Request to change the bulk state to done (close the bulk process) * @validatable */ interface SCBulkDoneRequest { } /** * Response to a request to change the state of a bulk to done * @validatable */ interface SCBulkDoneResponse { } /** * Route for closing bulks */ declare class SCBulkDoneRoute extends SCAbstractRoute { constructor(); } /** * User feedback * @validatable */ interface SCFeedbackRequest extends SCMessage { /** * Meta data that helps to understand the feedback */ metaData?: SCFeedbackRequestMetaData; } /** * A response to a feedback request * @validatable */ interface SCFeedbackResponse { } /** * Route for feedback submission */ declare class SCFeedbackRoute extends SCAbstractRoute { constructor(); } /** * Request Meta Data */ interface SCFeedbackRequestMetaData { /** * Whether or not the user enabled the debug mode */ debug?: boolean; /** * Platform identifier */ platform: string; /** * Scope/app state at feedback invocation */ scope: unknown; /** * Whether or not the feedback is sendable */ sendable?: boolean; /** * App state that feedback was invoked from */ state: unknown; /** * User agent */ userAgent: string; /** * StApps version string */ version: string; } /** * An availability filter * * Filter for documents where it cannot be safely determined that they are not available */ interface SCSearchAvailabilityFilter extends SCSearchAbstractFilter { /** * @see SCSearchAbstractFilter.type */ type: 'availability'; } /** * Arguments for filter instruction by availability */ interface SCAvailabilityFilterArguments extends SCSearchAbstractFilterArguments { /** * Field which marks availability range */ field: SCThingsField; /** * If set, the provided time will apply to the full hour, day, week, etc. */ scope?: 's' | 'm' | 'H' | 'd' | 'w' | 'M' | 'y'; /** * Time to check. Defaults current time if not set */ time?: SCISO8601Date; } /** * A boolean filter * * This filter can be used to combine multiple filters with boolean operations. */ interface SCSearchBooleanFilter extends SCSearchAbstractFilter { /** * @see SCSearchAbstractFilter.type */ type: 'boolean'; } /** * Additional arguments for boolean filters */ interface SCBooleanFilterArguments extends SCSearchAbstractFilterArguments { /** * A list of filter to apply the boolean operation to */ filters: SCSearchFilter[]; /** * Boolean operation to apply to the filters */ operation: 'and' | 'not' | 'or'; } /** * A distance filter * * Filter for documents that are in the given distance of the given location */ interface SCSearchDistanceFilter extends SCSearchAbstractFilter { /** * @see SCSearchAbstractFilter.type */ type: 'distance'; } /** * Additional arguments for distance filters */ interface SCDistanceFilterArguments extends SCSearchAbstractFilterArguments { /** * Distance in meters to filter from given location */ distance: number; /** * Field which contains the location you want to filter */ field: SCThingsField; /** * Position to calculate the distance to */ position: Position; } /** * A geo filter * * Filter for documents that are in relation to some geo data */ interface SCGeoFilter extends SCSearchAbstractFilter { /** * @see SCSearchAbstractFilter.type */ type: 'geo'; } /** * A rectangular geo shape, representing the top-left and bottom-right corners * * This is an extension of the Geojson type * http://geojson.org/geojson-spec.html */ interface Envelope { /** * The top-left and bottom-right corners of the bounding box */ coordinates: [Position, Position]; /** * The type of the geometry */ type: 'envelope'; } /** * Arguments for filter instruction by geo data */ interface SCGeoFilterArguments extends SCSearchAbstractFilterArguments { /** * Field on which to filter */ field: SCThingsField; /** * Geo data to check up on */ shape: Polygon | Envelope; /** * Spatial relation between the provided shape and the shape of the field. * * intersects - both shapes intersect (default) * disjoint - both shapes don't intersect * within - the search shape contains the field shape * contains - the search shape is contained in the field shape */ spatialRelation?: 'intersects' | 'disjoint' | 'within' | 'contains'; } /** * A date range filter * * Filter for documents with a date field that satisfies the given constraints * @see https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-range-query.html#_date_format_in_range_queries */ interface SCSearchDateRangeFilter extends SCSearchAbstractFilter { /** * @see SCSearchAbstractFilter.type */ type: 'date range'; } /** * A distance filter * * Filter for documents with a numeric field that satisfies the given constraints * @see https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-range-query.html#query-dsl-range-query */ interface SCSearchNumericRangeFilter extends SCSearchAbstractFilter { /** * @see SCSearchAbstractFilter.type */ type: 'numeric range'; } /** * Additional arguments for date range filters * * Filter uses a plain string to allow for date math expressions * @see https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/date-math-expressions.html */ interface SCDateRangeFilterArguments extends SCRangeFilterArguments { /** * Optional date format specifier * @see https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-range-query.html#_date_format_in_range_queries */ format?: string; /** * Optional timezone specifier * @see https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-range-query.html#_time_zone_in_range_queries */ timeZone?: string; } /** * Additional arguments for numeric range filters */ type SCNumericRangeFilterArguments = SCRangeFilterArguments; /** * Additional arguments for range filters * @see https://www.elastic.co/guide/en/elasticsearch/reference/5.6/query-dsl-range-query.html#query-dsl-range-query */ interface SCRangeFilterArguments extends SCSearchAbstractFilterArguments { /** * Bounds of the range */ bounds: Bounds; /** * Field where the filter will be applied */ field: SCThingsField; /** * Relation when searching on other range fields * * Intersects (Default): Both search and field range intersect * Within: Search range is within the field range * Contains: Search range contains the field range */ relation?: 'intersects' | 'within' | 'contains'; } interface Bounds { /** * The lower bound */ lowerBound?: Bound; /** * The upper bound */ upperBound?: Bound; } interface Bound { /** * Limit of the bound */ limit: T; /** * Bound mode */ mode: 'inclusive' | 'exclusive'; } /** * Filters for documents that match the value on the given field */ interface SCSearchValueFilter extends SCSearchAbstractFilter { /** * @see SCSearchAbstractFilter.type */ type: 'value'; } interface SCValueFilterArguments extends SCSearchAbstractFilterArguments { /** * Field to filter for a value. */ field: SCThingsField; /** * Value to filter. One or more values has to match the field exactly. * * Leaving the value out will check if the field exists. */ value?: string | string[]; } /** * Filter instruction types */ type SCSearchFilterType = 'availability' | 'boolean' | 'distance' | 'value' | 'date range' | 'numeric range' | 'geo'; /** * Structure of a filter instruction */ interface SCSearchAbstractFilter { /** * Arguments of filter */ arguments: T; /** * Type of filter */ type: SCSearchFilterType; } /** * Arguments for the filter instruction */ type SCSearchAbstractFilterArguments = SCMap; /** * Available filter instructions */ type SCSearchFilter = SCSearchAvailabilityFilter | SCSearchBooleanFilter | SCSearchDistanceFilter | SCSearchValueFilter | SCSearchNumericRangeFilter | SCSearchDateRangeFilter | SCGeoFilter; /** * A search query */ interface SCSearchQuery { /** * The context name from where the search query was initiated */ context?: SCSearchContext; /** * A filter structure that combines any number of filters with boolean methods ('AND', 'OR', 'NOT') */ filter?: SCSearchFilter; /** * Number of things to skip in result set (paging) */ from?: number; /** * A term to search for */ query?: string; /** * Number of things to have in the result set (paging) */ size?: number; /** * A list of sorting parameters to order the result set by */ sort?: SCSearchSort[]; } /** * A search facet */ interface SCFacet { /** * Buckets for the aggregation */ buckets: SCFacetBucket[]; /** * Field of the aggregation */ field: SCThingsField; /** * Type of the aggregation */ onlyOnType?: SCThingType; } /** * A bucket of a facet */ interface SCFacetBucket { /** * Count of matching search results */ count: number; /** * Key of a bucket */ key: string; } /** * A search response */ interface SCSearchResult { /** * Data (any data object) */ data: SCThings[]; /** * Facets (aggregations over all matching data) */ facets: SCFacet[]; /** * Pagination information */ pagination: SCSearchResultPagination; /** * Stats of the search engine */ stats: SCSearchResultSearchEngineStats; } /** * Stores information about Pagination */ interface SCSearchResultPagination { /** * Count of given data. Same as data.length */ count: number; /** * Offset of data on all matching data. Given by [[SCSearchQuery.from]] */ offset: number; /** * Number of total matching data */ total: number; } /** * Statistics of search engine */ interface SCSearchResultSearchEngineStats { /** * Response time of the search engine in ms */ time: number; } /** * A search request * @validatable */ type SCSearchRequest = SCSearchQuery; /** * A search response * @validatable */ type SCSearchResponse = SCSearchResult; /** * Route for searching things */ declare class SCSearchRoute extends SCAbstractRoute { constructor(); } /** * A multi search request * * This is a map of [[SCSearchRequest]]s indexed by name. * * **CAUTION: This is limited to an amount of queries. Currently this limit is 5.** * @validatable */ type SCMultiSearchRequest = SCMap; /** * A multi search response * * This is a map of [[SCSearchResponse]]s indexed by name * @validatable */ type SCMultiSearchResponse = SCMap; /** * Route for submission of multiple search requests at once */ declare class SCMultiSearchRoute extends SCAbstractRoute { constructor(); } /** * Request to update an existing thing * @validatable */ type SCThingUpdateRequest = SCThings; /** * Response for an entity update request * @validatable */ interface SCThingUpdateResponse { } /** * Route for updating existing things */ declare class SCThingUpdateRoute extends SCAbstractRoute { constructor(); } /** * User rating from the app * Plugin needs to define its own rating request to hit the target rating system. * That request should extend this one and contain timestamp and other needed data. * @validatable */ interface SCRatingRequest { /** * Number of rating stars */ rating: 1 | 2 | 3 | 4 | 5; /** * User's group in the app */ userGroup: SCUserGroupSetting['value']; /** * UID of the thing that is rated */ uid: SCThing['uid']; } /** * A response to a rating request * @validatable */ interface SCRatingResponse { } /** * Route for rating submission */ declare class SCRatingRoute extends SCAbstractRoute { constructor(); } /** * Possible Verbs for HTTP requests */ declare enum SCRouteHttpVerbs { GET = "GET", POST = "POST", PUT = "PUT" } /** * The constructor of an error response */ type SCErrorResponseConstructor = new (...arguments_: any[]) => SCErrorResponse; /** * A description of a route */ interface SCRoute { /** * A map of names of possible errors that can be returned by the route with their appropriate status codes */ errorNames: SCErrorResponseConstructor[]; /** * HTTP verb to use to request the route */ method: SCRouteHttpVerbs; /** * Map of obligatory parameters and their type that have to be set via the requested path */ obligatoryParameters?: SCMap; /** * Name of the type of the request body */ requestBodyName: string; /** * Name of the type of the response body */ responseBodyName: string; /** * Status code for success */ statusCodeSuccess: number; /** * URL path of the route */ urlPath: string; } /** * An abstract route */ declare abstract class SCAbstractRoute implements SCRoute { /** * @see SCRoute.errorNames */ errorNames: SCErrorResponseConstructor[]; /** * @see SCRoute.method */ method: SCRouteHttpVerbs; /** * @see SCRoute.obligatoryParameters */ obligatoryParameters?: SCMap; /** * @see SCRoute.requestBodyName */ requestBodyName: string; /** * @see SCRoute.responseBodyName */ responseBodyName: string; /** * @see SCRoute.statusCodeSuccess */ statusCodeSuccess: number; /** * @see SCRoute.urlPath */ urlPath: string; /** * Get "compiled" URL path * @param parameters Parameters to compile URL path with */ getUrlPath(parameters?: SCMap): string; } /** * Possible requests */ type SCRequests = SCBookAvailabilityRequest | SCBulkRequest | SCBulkAddRequest | SCBulkDoneRequest | SCFeedbackRequest | SCRatingRequest | SCIndexRequest | SCMultiSearchRequest | SCSearchRequest | SCThingUpdateRequest; /** * Possible responses */ type SCResponses = SCBookAvailabilityResponse | SCBulkResponse | SCBulkAddResponse | SCBulkDoneResponse | SCFeedbackResponse | SCRatingResponse | SCIndexResponse | SCMultiSearchResponse | SCSearchResponse | SCThingUpdateResponse; /** * Associated response for a request */ type SCAssociatedResponse = REQUEST extends SCBookAvailabilityRequest ? SCBookAvailabilityResponse : REQUEST extends SCBulkRequest ? SCBulkResponse : REQUEST extends SCBulkAddRequest ? SCBulkAddResponse : REQUEST extends SCBulkDoneRequest ? SCBulkDoneResponse : REQUEST extends SCFeedbackRequest ? SCFeedbackResponse : REQUEST extends SCRatingRequest ? SCRatingResponse : REQUEST extends SCIndexRequest ? SCIndexResponse : REQUEST extends SCMultiSearchRequest ? SCMultiSearchResponse : REQUEST extends SCSearchRequest ? SCSearchResponse : REQUEST extends SCThingUpdateRequest ? SCThingUpdateResponse : never; /** * Associated request for a response */ type SCAssociatedRequest = RESPONSE extends SCBookAvailabilityResponse ? SCBookAvailabilityRequest : RESPONSE extends SCBulkResponse ? SCBulkRequest : RESPONSE extends SCBulkAddResponse ? SCBulkAddRequest : RESPONSE extends SCBulkDoneResponse ? SCBulkDoneRequest : RESPONSE extends SCFeedbackResponse ? SCFeedbackRequest : RESPONSE extends SCRatingResponse ? SCRatingRequest : RESPONSE extends SCIndexResponse ? SCIndexRequest : RESPONSE extends SCMultiSearchResponse ? SCMultiSearchRequest : RESPONSE extends SCSearchResponse ? SCSearchRequest : RESPONSE extends SCThingUpdateResponse ? SCThingUpdateRequest : never; /** * Associated request for a route */ type SCAssignedRequest = ROUTE extends SCBookAvailabilityRoute ? SCBookAvailabilityRequest : ROUTE extends SCBulkRoute ? SCBulkRequest : ROUTE extends SCBulkAddRoute ? SCBulkAddRequest : ROUTE extends SCBulkDoneRoute ? SCBulkDoneRequest : ROUTE extends SCFeedbackRoute ? SCFeedbackRequest : ROUTE extends SCRatingRoute ? SCRatingRequest : ROUTE extends SCIndexRoute ? SCIndexRequest : ROUTE extends SCMultiSearchRoute ? SCMultiSearchRequest : ROUTE extends SCSearchRoute ? SCSearchRequest : ROUTE extends SCThingUpdateRoute ? SCThingUpdateRequest : never; /** * Associated response for a route */ type SCAssignedResponse = ROUTE extends SCBookAvailabilityRoute ? SCBookAvailabilityResponse : ROUTE extends SCBulkRoute ? SCBulkResponse : ROUTE extends SCBulkAddRoute ? SCBulkAddResponse : ROUTE extends SCBulkDoneRoute ? SCBulkDoneResponse : ROUTE extends SCFeedbackRoute ? SCFeedbackResponse : ROUTE extends SCRatingRoute ? SCRatingResponse : ROUTE extends SCIndexRoute ? SCIndexResponse : ROUTE extends SCMultiSearchRoute ? SCMultiSearchResponse : ROUTE extends SCSearchRoute ? SCSearchResponse : ROUTE extends SCThingUpdateRoute ? SCThingUpdateResponse : never; /** * A bulk request * * Parameters to be sent to request a new bulk. * @validatable */ type SCBulkRequest = SCBulkParameters; /** * Parameters for a bulk */ interface SCBulkParameters { /** * Expiration of bulk * * If the date is hit and the bulk is not done, it will be deleted and all data removed. * Defaults to one hour. */ expiration?: SCISO8601Date; /** * Source of data for this bulk * * A short "description" of the source of the data to identify it inside the database. * A second bulk with the same source overrides the data of the first bulk once it is done. */ source: string; /** * Type of things that are indexed in this bulk. * */ type: SCThingType; } /** * Requested Bulk from backend * @validatable */ interface SCBulkResponse extends SCBulkParameters { /** * State of bulk * * The state is `in progress` while it accepts things to be added to the bulk. * The state is `done` once it is closed. */ state: 'in progress' | 'done'; /** * Universally unique identifier of the bulk */ uid: SCUuid; } /** * Route for bulk creation */ declare class SCBulkRoute extends SCAbstractRoute { constructor(); } /** * Type guard to check if something is a SCThing * @param something Something to check */ declare function isThing(something: unknown): something is SCThing; /** * Type guard to check if translations exist * @param thing Thing to check */ declare function isThingWithTranslations(thing: SCThingWithoutReferences): thing is SCThingWithoutReferences & { translations: SCTranslations; }; /** * Type guard to check if something is a bulk response * @param something Something to check */ declare function isBulkResponse(something: unknown): something is SCBulkResponse; /** * Type guard to check if something is a search response * @param something Something to check */ declare function isSearchResponse(something: unknown): something is SCSearchResponse; /** * Type guard to check if something is a multi search response * @param something Something to check */ declare function isMultiSearchResponse(something: unknown): something is SCMultiSearchResponse; /** * SCThingTranslator class */ declare class SCThingTranslator { /** * Getter for language property */ get language(): SCLanguageCode; /** * Setter for language property. Also flushes translation cache * @param language The language the translator instance will use from now on */ set language(language: SCLanguageCode); /** * Property representing the translators target language */ private _language; /** * LRU cache containing already translated SCThings */ private readonly cache; /** * Property providing a mapping from a SCThingType to its known own meta class */ private readonly metaClasses; /** * LRU cache containing SCThings translations have been provided for */ private readonly sourceCache; /** * @example * // returns translator instance for german * new SCThingTranslator('de'); */ constructor(language: SCLanguageCode, cacheCapacity?: number); /** * Get field value translation recursively * @param data The intermediate object / primitive returned by the Proxys get() method * @returns a T object allowing for access to translations or a translated value(s) */ private deeptranslate; /** * Applies only known field translations of the given SCThings meta class to an instance * @param thingType The type of thing that will be translated * @param language The language the thing property values are translated to * @returns The thing with all known meta values translated */ private getAllMetaFieldTranslations; /** * Returns meta class needed for translations given a SCThingType * @param thingType Type of the thing * @returns An instance of the metaclass */ private getMetaClassInstance; /** * Applies known field value translations of the given SCThings meta class to an instance * Translated values overwrite current values inplace (destructive) * @param instance The thing / object that will be translated * @param language The language the thing / object is translated to * @returns The thing with translated meta field values */ private replaceAvailableMetaFieldValueTranslations; /** * Recursively translates the given object in-place * Translated values overwrite current values (destructive) * @param instance The thing / object that will be translated * @returns The thing translated */ private translateThingInPlaceDestructively; /** * Recursively translates the given object in-place * Translated values overwrite current values (destructive) * @param thing The thing / object that will be translated * @returns The thing translated */ translate(thing: T): T; /** * Get field value translation recursively * @example * const dish: SCDish = {...}; * translator.translate(dish).offers[0].inPlace.categories[1]()); * // or * const dishTranslatedAccess = translator.translate(dish); * dishTranslatedAccess.offers[0].inPlace.categories[1](); * // undoing the TSOCType * const dishAsBefore: SCDish = dishTranslatedAccess()!; * @param thing Top level object that gets passed through the recursion * @returns an TSOCType object allowing for access to translations or a translated value(s) */ translatedAccess(thing: T): T; /** * Given a SCThingType this function returns an object with the same basic structure as the corresponding SCThing * All the values will be set to the known translations of the property/key name * @example * const translatedMetaDish = translator.translatedPropertyNames(SCThingType.CourseOfStudy); * @param type The type whose property names will be translated * @returns An object with the properties of the SCThingType where the values are the known property tranlations */ translatedPropertyNames(type: SCThingType): T | undefined; /** * Given a SCThingType and a corresponding property name it returns the known property value translation * Access pattern to the meta object containing the translation can be thought of as type.field[key] with key being optional * @example * const singleValueTranslation = translator.translatedPropertyValue(SCThingType.Dish, 'categories', 'main dish'); * @param type The type for whose property values a translation is required * @param field The property for which a translation is required * @param key If specified tries to access the field with this key * @returns Known translation for the property */ translatedPropertyValue(type: SCThingType, field: string, key?: string): string | undefined; } /** * The license plate of a university e.g. the UID of the university */ type SCLicensePlate = 'ac-kf' | 'ac-fk' | 'ac-fh' | 'ac-hm' | 'ac-th' | 'dn-fh' | 'aa-fh' | 'sig-f2' | 'su-ah' | 'rd-vf' | 'am-f2' | 'am-fh' | 'an-fh' | 'ik-fh' | 'ab-fh' | 'asl-vf' | 'a-hm' | 'a-u' | 'a-fh' | 'hef-fh' | 'hg-hs' | 'su-if' | 'cw-ih' | 'tbb-dh' | 'eu-vf' | 'los-pf' | 'esw-pf' | 'ba-u' | 'bt-kh' | 'bt-u' | 'gap-kh' | 'wr-vf' | 'pb-f2' | 'b-ah' | 'b-am' | 'b-fs' | 'b-ab' | 'b-pf' | 'b-tf' | 'b-mu' | 'b-dk' | 'b-p2' | 'b-bs' | 'b-eh' | 'b-hw' | 'b-es' | 'b-em' | 'b-ec' | 'b-ef' | 'b-vf' | 'b-gb' | 'b-hs' | 'b-pk' | 'b-mh' | 'b-ft' | 'b-p3' | 'b-fb' | 'b-wt' | 'b-u2' | 'b-u' | 'b-v2' | 'b-fw' | 'b-p4' | 'b-ih' | 'b-kf' | 'b-mf' | 'b-dh' | 'b-pu' | 'b-ph' | 'b-qh' | 'b-ot' | 'b-fh' | 'b-su' | 'b-tk' | 'b-tc' | 'b-hk' | 'b-wb' | 'b-fp' | 'b-v3' | 'b-fu' | 'b-h3' | 'b-hm' | 'b-kh' | 'b-h4' | 'b-f3' | 'b-f5' | 'b-f2' | 'b-tu' | 'ber-vf' | 'bbg-fh' | 'bbg-hs' | 'w-k2' | 'bi-kh' | 'bc-fh' | 'bi-du' | 'bi-fm' | 'pb-f4' | 'bi-u' | 'bi-fh' | 'bi-vf' | 'wm-hs' | 'mz-fh' | 'tr-f2' | 'bo-eb' | 'bo-fh' | 'bo-f1' | 'bo-fg' | 'bo-hm' | 'bo-f3' | 'bo-kf' | 'bo-u' | 'bn-sg' | 'bn-pf' | 'bn-vf' | 'bn-fh' | 'bn-u' | 'bot-fh' | 'brb-vf' | 'brb-fh' | 'bs-fh' | 'bs-hk' | 'bs-tu' | 'hb-ah' | 'hb-hi' | 'hb-fh' | 'hb-iu' | 'hb-hk' | 'hb-u' | 'hb-vf' | 'hb-h' | 'ka-pu' | 'bm-eu' | 'bm-fb' | 'std-hs' | 'std-fh' | 'cw-fh' | 'cw-hs' | 'ce-pf' | 'c-tu' | 'c-th' | 'gs-tu' | 'co-fh' | 'co-hs' | 'co-f2' | 'cb-fh' | 'cb-tu' | 'da-kf' | 'da-vf' | 'da-fh' | 'da-pf' | 'da-tu' | 'da-v2' | 'deg-fh' | 'de-fh' | 'dt-fl' | 'lip-h2' | 'lip-hm' | 'dt-hm' | 'da-v3' | 'dh-fh' | 'do-fh' | 'do-mh' | 'do-is' | 'do-pf' | 'do-u' | 'do-hm' | 'do-vf' | 'dd-ec' | 'dd-fh' | 'dd-hs' | 'dd-ak' | 'dd-ph' | 'dd-pf' | 'dd-pu' | 'dd-hl' | 'dd-ht' | 'dd-hk' | 'dd-ma' | 'dd-hm' | 'dd-p2' | 'dd-p3' | 'dd-tu' | 'dd-hv' | 'd-iu' | 'du-hm' | 'du-pf' | 'du-ug' | 'du-vf' | 'du-u' | 'd-am' | 'd-eb' | 'd-ff' | 'd-pf' | 'd-fh' | 'd-vf' | 'd-hk' | 'd-hm' | 'd-u' | 'bar-fh' | 'ew-fh' | 'eck-fh' | 'ld-vf' | 'ei-u' | 'pi-f2' | 'ol-f2' | 'hvl-hs' | 'hvl-fh' | 'emd-fh' | 'ed-pf' | 'ef-fh' | 'ef-mh' | 'ef-pf' | 'ef-kh' | 'ef-u' | 'ef-ph' | 'er-u' | 'e-fh' | 'e-p2' | 'e-pf' | 'e-uk' | 'e-u' | 'e-ug' | 'e-hm' | 'es-ft' | 'es-fs' | 'fl-fh' | 'fl-ph' | 'fl-u' | 'f-hb' | 'f-ms' | 'f-u' | 'f-v2' | 'f-fh' | 'f-hk' | 'f-hm' | 'f-kh' | 'f-pf' | 'f-vf' | 'ff-eu' | 'fg-u' | 'fr-fh' | 'fr-kf' | 'fr-u' | 'fr-hm' | 'fr-ph' | 'fb-fh' | 'hal-kh' | 'fn-dh' | 'fn-u' | 'fd-fh' | 'fd-kh' | 'ffb-vf' | 'vs-fh' | 'wi-f2' | 'ul-f2' | 'ge-f3' | 'ge-fh' | 'ge-f2' | 'ge-vf' | 'g-pf' | 'ger-u' | 'gi-ft' | 'gi-fh' | 'gi-vf' | 'gi-u' | 'gp-fh' | 'zi-hw' | 'gth-vf' | 'g-hs' | 'goe-fh' | 'goe-u' | 'goe-pf' | 'gw-u' | 'nb-u' | 'gw-u2' | 'gw-u1' | 'hgw-u' | 'gue-fh' | 'gue-vf' | 'pb-f3' | 'gt-pf' | 'ww-vf' | 'ha-ug' | 'ha-fh' | 'ha-f2' | 'ha-vf' | 'hbs-fh' | 'hbs-vf' | 'hal-eh' | 'hal-hk' | 'hal-ph' | 'hal-u' | 'hal-u2' | 'koet-ph' | 'hal-uw' | 'hh-am' | 'hh-bs' | 'hh-pf' | 'hh-bc' | 'hh-ef' | 'hh-fh' | 'hh-hu' | 'hh-ub' | 'hh-ff' | 'hh-vf' | 'hh-fi' | 'hh-ba' | 'hh-ib' | 'hh-mf' | 'hh-ms' | 'hh-hf' | 'hh-u' | 'hh-hs' | 'hh-uk' | 'hh-fs' | 'hh-hk' | 'hh-hm' | 'hh-tu' | 'hm-hs' | 'ham-f2' | 'ham-fh' | 'h-fg' | 'h-fh' | 'h-hm' | 'h-vf' | 'h-la' | 'h-u' | 'h-fb' | 'h-kf' | 'h-mh' | 'h-f3' | 'h-pf' | 'h-ti' | 'hei-fh' | 'hd-hm' | 'hd-ph' | 'hd-kh' | 'hd-u' | 'hd-fh' | 'hdh-dh' | 'hn-dh' | 'hn-bs' | 'hn-fh' | 'hn-f2' | 'su-f3' | 'su-k2' | 'he-hk' | 'sta-v2' | 'hi-fg' | 'hi-fs' | 'hi-fh' | 'hi-v2' | 'hi-vf' | 'hi-u' | 'hi-v3' | 'ho-fh' | 'ho-f2' | 'ho-vf' | 's-u2' | 'ww-fh' | 'hol-fh' | 'fds-dh' | 'hx-fh' | 'lip-h3' | 'hx-ug' | 'tr-f3' | 'mz-f5' | 'wi-f5' | 'wi-f4' | 'rued-pf' | 'ik-tu' | 'il-th' | 'in-fh' | 'in-u' | 'mk-ts' | 'mk-fh' | 'rv-pf' | 'j-fh' | 'j-u' | 'kl-fh' | 'kl-u' | 'wes-fh' | 'ka-dh' | 'ka-fh' | 'ka-pf' | 'ka-u' | 'ka-hk' | 'ka-hg' | 'ka-hm' | 'ka-ph' | 'ks-cv' | 'ks-pf' | 'ks-fh' | 'ks-ms' | 'ks-u3' | 'ks-ug' | 'ks-vf' | 'ks-u2' | 'og-vf' | 'ke-fh' | 'ki-u' | 'ki-fh' | 'ki-f2' | 'ki-f6' | 'ki-hk' | 'ki-f3' | 'ki-f4' | 'ki-f5' | 'ki-ph' | 'kle-fh' | 'ko-fh' | 'ko-u3' | 'ko-u' | 'ko-vf' | 'k-iu' | 'k-cb' | 'k-fm' | 'k-fp' | 'k-kf' | 'k-mf' | 'k-p2' | 'k-u' | 'k-fb' | 'k-u2' | 'k-fh' | 'k-vf' | 'k-hk' | 'k-hm' | 'k-pf' | 'k-v2' | 'k-f2' | 'kw-fh' | 'kn-fh' | 'kn-f2' | 'kn-u' | 'koet-fh' | 'koet-th' | 'koet-u' | 'kr-fh' | 'og-fw' | 'ld-u' | 'la-fh' | 'da-v4' | 'ler-fh' | 'l-fb' | 'l-f2' | 'l-kh' | 'l-h3' | 'l-hh' | 'l-hm' | 'l-h2' | 'l-ph' | 'l-hs' | 'l-ht' | 'l-th' | 'l-u' | 'mer-th' | 'lev-pf' | 'lev-fh' | 'fg-fh' | 'lip-f2' | 'lip-h1' | 'lip-fh' | 'so-f2' | 'loe-dh' | 'hl-fh' | 'hl-vf' | 'hl-f3' | 'hl-uk' | 'hl-u' | 'hl-f2' | 'hl-hm' | 'lb-v2' | 'lb-fh' | 'lb-ph' | 'lb-p2' | 'lb-vf' | 'lu-fh' | 'lu-kf' | 'lg-u' | 'lg-fh' | 'md-f2' | 'md-fh' | 'md-tu' | 'md-f3' | 'md-mh' | 'md-ph' | 'md-u' | 'mz-f4' | 'mz-u2' | 'mz-vf' | 'mz-f3' | 'mz-f2' | 'mz-u' | 'mz-kf' | 'ma-dh' | 'ma-fg' | 'ma-ft' | 'ma-ba' | 'ma-v3' | 'ma-v2' | 'ma-hm' | 'ma-fs' | 'ma-u' | 'mr-eh' | 'mr-fh' | 'mr-u' | 're-pf' | 'myk-vf' | 'mgn-vf' | 'mei-fh' | 'mei-fv' | 'mei-f2' | 'sk-hs' | 'hal-fh' | 'hsk-fh' | 'me-fh' | 'rt-hs' | 'mi-fh' | 'c-fh' | 'mw-ht' | 'hc-ih' | 'mtw-ht' | 'mg-fh' | 'z-fh' | 'mos-dh' | 'mh-fh' | 'm-am' | 'm-b2' | 'm-bw' | 'm-ea' | 'm-vf' | 'm-as' | 'm-mf' | 'm-hk' | 'm-hs' | 'm-fh' | 'm-kf' | 'm-hm' | 'm-kh' | 'm-hp' | 'm-fp' | 'm-tu' | 'm-u' | 'gap-ks' | 'm-u2' | 'm-t2' | 'ms-ph' | 'ms-kf' | 'ms-u' | 'ms-fh' | 'ms-vf' | 'ms-hk' | 'ms-hm' | 'ms-kh' | 'ms-v2' | 'nmb-kh' | 'nb-fh' | 'm-ah' | 'm-k3' | 'ne-eu' | 'ne-hs' | 'ne-pf' | 'nu-fh' | 'h-f2' | 'ndh-fh' | 'coe-vf' | 'n-kf' | 'n-hm' | 'n-hk' | 'n-k1' | 'n-k2' | 'n-k3' | 'n-fh' | 'n-u' | 'nt-fh' | 'nt-f3' | 'gp-f2' | 'gr-kh' | 'hg-kh' | 'wi-eb' | 'of-hk' | 'fr-f2' | 'ol-fh' | 'ol-pf' | 'ol-u' | 'os-f2' | 'os-fh' | 'os-f3' | 'os-u' | 'os-kf' | 'ver-fh' | 'pb-fh' | 'pb-kf' | 'pb-kh' | 'pb-ug' | 'pb-f1' | 'pb-u2' | 'pa-u' | 'pf-fg' | 'pf-fh' | 'ps-fh' | 'pl-fh' | 'p-bs' | 'p-f2' | 'p-sh' | 'p-pf' | 'p-u' | 'p-fh' | 'p-hf' | 'brb-f2' | 'dd-f2' | 'rv-fh' | 'rv-dh' | 'r-kh' | 'r-u' | 'r-fh' | 'rd-v2' | 'ko-f2' | 'rd-bf' | 'rd-fh' | 'rt-fh' | 'rt-ts' | 'rt-ft' | 'su-f2' | 'st-mh' | 'bc-f2' | 'rie-fh' | 'shg-vf' | 'ro-fh' | 'ros-hm' | 'ros-im' | 'hro-hu' | 'hro-u' | 'hro-hm' | 'rof-vf' | 'nol-fh' | 'tue-fh' | 'wi-f3' | 'sb-f2' | 'sb-hm' | 'sb-hs' | 'sb-vf' | 'sb-hk' | 'sb-fh' | 'sb-kf' | 'sb-u' | 'sz-fh' | 'sm-fh' | 'aa-fg' | 'aa-ph' | 'sha-ht' | 'sha-kh' | 'sad-pf' | 'ru-fh' | 'wue-f2' | 'lds-bc' | 'sn-hm' | 'hd-vf' | 'sfb-fh' | 'si-pf' | 'si-ug' | 'sig-fh' | 'so-fh' | 'so-vf' | 'so-ug' | 'sp-u' | 'su-fh' | 'su-kh' | 'sta-vf' | 'st-fh' | 'sdl-fh' | 'hst-fh' | 'hst-f2' | 'sr-fh' | 'og-fh' | 's-dp' | 's-dh' | 's-f2' | 's-im' | 's-kf' | 's-u' | 's-va' | 's-wh' | 's-hk' | 's-fh' | 's-fb' | 's-hm' | 's-mf' | 's-f3' | 's-th' | 'ue-fh' | 'k-v3' | 'k-f3' | 'tr-fh' | 'tr-kh' | 'tr-u' | 'an-f2' | 'tut-hm' | 'tue-u' | 'tut-f3' | 'ul-fh' | 'ul-f4' | 'ul-u' | 'myk-kh' | 'vec-fh' | 'vec-u' | 'vec-kf' | 'bo-f2' | 'vs-vf' | 'vs-dh' | 'vs-f2' | 'ros-hs' | 'ro-vf' | 'pi-fh' | 'fs-fh' | 'we-hm' | 'we-u' | 'we-vf' | 'we-th' | 'kn-ph' | 'rv-ph' | 'wsf-pf' | 'wr-fh' | 'wr-v2' | 'qlb-vf' | 'ldk-fh' | 'wi-bs' | 'wi-v1' | 'wi-fh' | 'wi-vf' | 'kw-th' | 'whv-fh' | 'hwi-fh' | 'wis-th' | 'wis-fh' | 'en-u' | 'wf-fh' | 'wob-fh' | 'wo-fh' | 'w-hm' | 'w-kh' | 'w-ug' | 'w-vf' | 'wue-hm' | 'wue-u' | 'wue-fh' | 'wue-f3' | 'zi-ht' | 'zi-ih' | 'zi-th' | 'zw-fh' | 'z-t3' | 'z-t2' | 'z-pf' | 'z-hs' | 'z-ph' | 'z-th' | 'z-tu' | 'z-ht' | 'rc-hs' | 'z-p2'; /** * Namespaces for universities for UUID generation */ declare const SCNamespaces: { [id in SCLicensePlate]?: string; }; /** * A configuration file that configures app and backend * @validatable */ interface SCConfigFile { /** * Configuration for the app that is visible to clients */ app: SCAppConfiguration; /** * Configuration for the supported authorization providers */ auth: { [key in SCAuthorizationProviderType]?: SCAuthorizationProvider; }; /** * Configuration for the backend that is visible to clients */ backend: SCBackendConfiguration; /** * Configuration that is not visible to clients */ internal: SCBackendInternalConfiguration; /** * UID of the university, e.g. the license plate */ uid: SCLicensePlate; } /** * An error that is returned, when an internal server error occurred * @validatable */ declare class SCInternalServerErrorResponse extends SCError { /** * Internal error that occurred. If the stack is disabled this error is not set for security reasons */ additionalData?: Error; /** * Create a SCInternalServerErrorResponse * @param error Internal server error * @param stack Set to true if a stack trace should be created * and the internal server error should be displayed to the client */ constructor(error?: Error, stack?: boolean); } /** * An error that is returned, when the used HTTP method is not allowed on the requested route * @validatable */ declare class SCMethodNotAllowedErrorResponse extends SCError { /** * Create a SCMethodNotAllowedErrorResponse * @param stack Set to true if a stack trace should be created */ constructor(stack?: boolean); } /** * An error that is returned when the requested route or resource was not found * @validatable */ declare class SCNotFoundErrorResponse extends SCError { /** * Create a SCNotFoundErrorResponse * @param stack Set to true if a stack trace should be created */ constructor(stack?: boolean); } /** * An error that is returned when the request is in the right format, but contains parameters that are invalid or not * acceptable. * @validatable */ declare class SCParametersNotAcceptable extends SCError { /** * Create a ParametersNotAcceptable * @param message contains more details to what you did wrong * @param stack Set to true if a stack trace should be created */ constructor(message: string, stack?: boolean); } /** * Plugin register request * @validatable */ type SCPluginRegisterRequest = SCPluginAdd | SCPluginRemove; /** * Plugin request for adding a plugin registration to the backend */ interface SCPluginAdd { /** * The desired action, so whether the plugin should be added or removed */ action: 'add'; /** * Plugin information needed for its registration */ plugin: SCPluginMetaData; } /** * Plugin request for removing a plugin registration from the backend */ interface SCPluginRemove { /** * The desired action, so whether the plugin should be added or removed */ action: 'remove'; /** * The route of the plugin you want to remove */ route: string; } /** * Plugin meta data - contains needed information for a plugin registration */ interface SCPluginMetaData { /** * The address of the plugin, to which the backend routes the requests */ address: string; /** * The name of the plugin (for debugging purposes, to more easily identify conflicts) */ name: string; /** * How the requests of the plugin looks like, a JSON schema for validation */ requestSchema: JSONSchema7; /** * How the responses of the plugin looks like, a JSON schema for validation */ responseSchema: JSONSchema7; /** * The desired route, for example /feedback. */ route: string; } /** * Plugin register response * @validatable */ interface SCPluginRegisterResponse { /** * Whether the desired action succeeded or failed (true for success, false if an error occurred) */ success: boolean; } /** * Route to register plugins */ declare class SCPluginRegisterRoute extends SCAbstractRoute { constructor(); } /** * An error that is returned when a plugin with the same name is already registered, to prevent two copies of a plugin * running at the same time. * This usually indicates that there is more than one instance a plugin running. * @validatable */ declare class SCPluginAlreadyRegisteredErrorResponse extends SCError { /** * Meta data of a registered plugin, which is in a conflict with the plugin we want to register. * If the stack is disabled this is not set for security reasons */ additionalData?: SCPluginMetaData; /** * Create a SCPluginAlreadyRegisteredError * @param message Provide further information why an already registered plugin matches the one we want to register * @param plugin Provides meta data of a registered plugin, which is in a conflict with the plugin we want to register * @param stack Set to true if a stack trace should be created */ constructor(message: string, plugin: SCPluginMetaData, stack?: boolean); } /** * An error that is returned whenever there is an unexpected error while creating a plugin * @validatable */ declare class SCPluginRegisteringFailedErrorResponse extends SCError { /** * Create a PluginRegisteringFailedError * @param message Describes what went wrong wile registering the plugin * @param stack Set to true if a stack trace should be created */ constructor(message: string, stack?: boolean); } /** * An error that is returned, when the request body is too large. * @validatable */ declare class SCRequestBodyTooLargeErrorResponse extends SCError { /** * Create a SCRequestBodyTooLargeErrorResponse * @param stack Set to true if a stack trace should be created */ constructor(stack?: boolean); } /** * An error that is returned whenever there is a syntax error * @validatable */ declare class SCSyntaxErrorResponse extends SCError { /** * Create a SyntaxError * @param message Describes the syntax error * @param stack Set to true if a stack trace should be created */ constructor(message: string, stack?: boolean); } /** * An error that is returned, when to many request are submitted at once * @validatable */ declare class SCTooManyRequestsErrorResponse extends SCError { /** * Create a SCTooManyRequestsErrorResponse * @param stack Set to true if a stack trace should be created */ constructor(stack?: boolean); } /** * An error that is returned when the content type of the request is not supported * @validatable */ declare class SCUnsupportedMediaTypeErrorResponse extends SCError { /** * Create a SCUnsupportedMediaTypeErrorResponse * @param stack Set to true if a stack trace should be created */ constructor(stack?: boolean); } /** * An error that is returned when the validation of a request fails * @validatable */ declare class SCValidationErrorResponse extends SCError { /** * List of validatation errors */ additionalData: ValidationError[]; /** * Create a SCValidationErrorResponse * @param errors List of validation errors * @param stack Set to true if a stack trace should be created */ constructor(errors: ValidationError[], stack?: boolean); } declare const CORE_VERSION: string; export { type Bound, type Bounds, CORE_VERSION, type Envelope, type SCAboutPage, type SCAboutPageContent, SCAboutPageContentType, type SCAboutPageMarkdown, type SCAboutPageRouterLink, type SCAboutPageSection, type SCAboutPageTable, type SCAboutPageTranslationTitle, type SCAboutPageTranslationValue, SCAbstractRoute, type SCAcademicDegree, SCAcademicDegreeMeta, type SCAcademicDegreeWithoutReferences, type SCAcademicEvent, type SCAcademicEventCategories, SCAcademicEventMeta, type SCAcademicEventTranslatableProperties, type SCAcademicEventWithoutReferences, type SCAcademicPriceGroup, type SCAcademicTerm, type SCAcademicTermWithoutReferences, SCAcademicTermWithoutReferencesMeta, type SCAppConfiguration, type SCAppConfigurationMenuCategory, type SCAppConfigurationMenuCategoryTranslationTitle, type SCAppConfigurationMenuItem, type SCAppConfigurationMenuItemTranslationTitle, type SCAppConfigurationStoreUrl, type SCAppVersionInfo, type SCArticle, type SCArticleCategories, SCArticleMeta, type SCArticleTranslatableProperties, type SCArticleWithoutReferences, type SCAssessment, type SCAssessmentCategories, SCAssessmentMeta, type SCAssessmentTranslatableProperties, type SCAssessmentWithoutReferences, type SCAssignedRequest, type SCAssignedResponse, type SCAssociatedRequest, type SCAssociatedResponse, type SCAssociatedThing, type SCAssociatedThingWithoutReferences, type SCAuthorizationProvider, type SCAuthorizationProviderClient, type SCAuthorizationProviderEndpoints, type SCAuthorizationProviderType, type SCAvailabilityFilterArguments, type SCBackendAggregationConfiguration, type SCBackendConfiguration, type SCBackendConfigurationDatabaseConfiguration, type SCBackendConfigurationSearchBoostingContext, type SCBackendConfigurationSearchBoostingType, type SCBackendConfigurationSortableField, type SCBackendInternalConfiguration, type SCBook, type SCBookAvailabilityRequest, type SCBookAvailabilityRequestByIsbn, type SCBookAvailabilityRequestByUuid, type SCBookAvailabilityResponse, SCBookAvailabilityRoute, type SCBookCategories, SCBookMeta, type SCBookTranslatableFields, type SCBookWithoutReferences, type SCBooleanFilterArguments, type SCBuilding, type SCBuildingCategories, SCBuildingMeta, type SCBuildingTranslatableProperties, type SCBuildingWithoutReferences, type SCBulkAddRequest, type SCBulkAddResponse, SCBulkAddRoute, type SCBulkDoneRequest, type SCBulkDoneResponse, SCBulkDoneRoute, type SCBulkParameters, type SCBulkRequest, type SCBulkResponse, SCBulkRoute, type SCCatalog, type SCCatalogCategories, SCCatalogMeta, type SCCatalogWithoutReferences, type SCCertification, type SCCertificationCategories, SCCertificationMeta, type SCCertificationTranslatableProperties, type SCCertificationWithoutReferences, SCClasses, type SCConfigFile, type SCContactPoint, SCContactPointMeta, type SCContactPointWithoutReferences, type SCCourseOfStudy, SCCourseOfStudyMeta, type SCCourseOfStudyMode, type SCCourseOfStudyTimeMode, type SCCourseOfStudyTranslatableProperties, type SCCourseOfStudyWithoutReferences, type SCCreativeWork, SCCreativeWorkMeta, type SCCreativeWorkTranslatableProperties, type SCCreativeWorkWithoutReferences, type SCDateRangeFilterArguments, type SCDateSeries, SCDateSeriesMeta, type SCDateSeriesTranslatableProperties, type SCDateSeriesWithoutReferences, type SCDiff, SCDiffMeta, type SCDiffWithoutReferences, type SCDish, type SCDishCategories, type SCDishCharacteristic, SCDishMeta, type SCDishTranslatableProperties, type SCDishWithoutReferences, type SCDistanceFilterArguments, type SCDistanceSort, type SCDistanceSortArguments, type SCDucetSort, SCError, type SCErrorResponse, type SCErrorResponseConstructor, type SCEvent, SCEventMeta, type SCEventWithoutReferences, type SCFacet, type SCFacetBucket, type SCFavorite, SCFavoriteMeta, type SCFavoriteWithoutReferences, type SCFeatureConfiguration, type SCFeatureConfigurationExtern, type SCFeatureConfigurationPlugin, type SCFeedbackRequest, type SCFeedbackRequestMetaData, type SCFeedbackResponse, SCFeedbackRoute, type SCFloor, type SCFloorFeatureCollectionWithPlaces, type SCFloorFeatureWithPlace, SCFloorMeta, type SCFloorTranslatableProperties, type SCFloorWithoutReferences, type SCGenericSort, type SCGeoFilter, type SCGeoFilterArguments, type SCGeoInformation, type SCISO8601Date, type SCISO8601DateRange, type SCISO8601Duration, type SCISO8601Time, type SCIdCard, SCIdCardMeta, type SCIdCardTranslatableProperties, type SCIdCardWithoutReferences, type SCInPlace, type SCIndexRequest, type SCIndexResponse, SCIndexRoute, type SCIndexableThings, SCInternalServerErrorResponse, type SCJobCategories, type SCJobPosting, SCJobPostingMeta, type SCJobPostingWithoutReferences, type SCLanguage, type SCLanguageCode, type SCLanguageName, type SCLanguageSetting, type SCLicensePlate, type SCMap, type SCMenuSection, type SCMessage, type SCMessageCategories, SCMessageMeta, type SCMessageTranslatableProperties, type SCMessageWithoutReferences, type SCMetaTranslations, SCMethodNotAllowedErrorResponse, type SCMonitoringAction, type SCMonitoringConfiguration, type SCMonitoringExecutionCalendarEvents, type SCMonitoringLogAction, type SCMonitoringMailAction, type SCMonitoringMaximumLengthCondition, type SCMonitoringMinimumLengthCondition, type SCMonitoringTrigger, type SCMonitoringWatcher, type SCMultiSearchRequest, type SCMultiSearchResponse, SCMultiSearchRoute, SCNamespaces, type SCNationality, SCNotFoundErrorResponse, type SCNumericRangeFilterArguments, type SCNutritionInformation, type SCOrganization, SCOrganizationMeta, type SCOrganizationWithoutReferences, SCParametersNotAcceptable, type SCPeriodical, type SCPeriodicalCategories, SCPeriodicalMeta, type SCPeriodicalTranslatableFields, type SCPeriodicalWithoutReferences, type SCPerson, type SCPersonGender, SCPersonMeta, type SCPersonWithoutReferences, type SCPlace, type SCPlaceWithoutReferences, SCPlaceWithoutReferencesMeta, type SCPlaceWithoutReferencesTranslatableProperties, type SCPluginAdd, SCPluginAlreadyRegisteredErrorResponse, type SCPluginMetaData, type SCPluginRegisterRequest, type SCPluginRegisterResponse, SCPluginRegisterRoute, SCPluginRegisteringFailedErrorResponse, type SCPluginRemove, type SCPointOfInterest, type SCPointOfInterestCategories, SCPointOfInterestMeta, type SCPointOfInterestWithoutReferences, type SCPostalAddress, type SCPriceGroup, type SCPriceSort, type SCPriceSortArguments, type SCPublicationEvent, SCPublicationEventMeta, type SCPublicationEventTranslatableProperties, type SCPublicationEventWithoutReferences, type SCRange, type SCRangeFilterArguments, type SCRatingRequest, type SCRatingResponse, SCRatingRoute, SCRequestBodyTooLargeErrorResponse, type SCRequests, type SCResponses, type SCRestrictedMap, type SCRoom, type SCRoomCategories, SCRoomMeta, type SCRoomSpecificValues, type SCRoomWithoutReferences, type SCRoute, SCRouteHttpVerbs, type SCSaveableThing, type SCSaveableThingWithoutReferences, type SCSearchAbstractFilter, type SCSearchAbstractFilterArguments, type SCSearchAbstractSort, type SCSearchAbstractSortArguments, type SCSearchAvailabilityFilter, type SCSearchBooleanFilter, type SCSearchContext, type SCSearchDateRangeFilter, type SCSearchDistanceFilter, type SCSearchFilter, type SCSearchFilterType, type SCSearchNumericRangeFilter, type SCSearchQuery, type SCSearchRequest, type SCSearchResponse, type SCSearchResult, type SCSearchResultPagination, type SCSearchResultSearchEngineStats, SCSearchRoute, type SCSearchSort, type SCSearchSortType, type SCSearchValueFilter, type SCSemester, SCSemesterMeta, type SCSemesterWithoutReferences, type SCSetting, type SCSettingCategories, SCSettingInputType, SCSettingMeta, type SCSettingValue, type SCSettingValueTranslatableProperties, type SCSettingValues, type SCSettingWithoutReferences, type SCSportCourse, SCSportCourseMeta, type SCSportCoursePriceGroup, type SCSportCourseWithoutReferences, type SCStudyModule, SCStudyModuleMeta, SCStudyModuleNecessity, type SCStudyModuleTranslatableProperties, type SCStudyModuleWithoutReferences, SCSyntaxErrorResponse, type SCThing, type SCThingInPlace, SCThingInPlaceMeta, SCThingMeta, type SCThingOrigin, SCThingOriginType, type SCThingRemoteOrigin, type SCThingThatAcceptsPayments, type SCThingThatAcceptsPaymentsAcceptedPayments, type SCThingThatAcceptsPaymentsWithoutReferences, SCThingThatAcceptsPaymentsWithoutReferencesMeta, type SCThingThatCanBeOffered, type SCThingThatCanBeOfferedAvailability, SCThingThatCanBeOfferedMeta, type SCThingThatCanBeOfferedOffer, type SCThingThatCanBeOfferedProvider, type SCThingThatCanBeOfferedTranslatableProperties, type SCThingThatCanBeOfferedWithoutReferences, type SCThingTranslatableProperties, type SCThingTranslatablePropertyOrigin, SCThingTranslator, SCThingType, type SCThingUpdateRequest, type SCThingUpdateResponse, SCThingUpdateRoute, type SCThingUserOrigin, type SCThingWithCategories, type SCThingWithCategoriesSpecificValues, type SCThingWithCategoriesTranslatableProperties, type SCThingWithCategoriesWithoutReferences, SCThingWithCategoriesWithoutReferencesMeta, type SCThingWithoutReferences, type SCThings, type SCThingsField, type SCTicket, SCTicketMeta, type SCTicketWithoutReferences, type SCToDo, SCToDoMeta, SCToDoPriority, type SCToDoWithoutReferences, SCTooManyRequestsErrorResponse, type SCTour, SCTourMeta, type SCTourResolvedElement, type SCTourResolvedEvent, type SCTourResolvedLocation, type SCTourResolvedLocationTypeIs, type SCTourResolvedLocationTypeMatch, type SCTourResolvedMenu, type SCTourStep, type SCTourStepLocation, type SCTourStepMenu, type SCTourStepTooltip, type SCTourWithoutReferences, type SCTranslations, SCUnsupportedMediaTypeErrorResponse, type SCUserConfiguration, type SCUserConfigurationMap, type SCUserGroup, type SCUserGroupSetting, type SCUuid, SCValidationErrorResponse, type SCValueFilterArguments, type SCVideo, SCVideoMeta, type SCVideoMimeType, type SCVideoSource, type SCVideoTrack, type SCVideoTrackTypes, type SCVideoTranslatableFields, type SCVideoWithoutReferences, formatRange, isBulkResponse, isInRange, isMultiSearchResponse, isSearchResponse, isThing, isThingWithTranslations };