Neuland API Documentation
Neuland API uses GraphQL to provide a flexible and powerful API for neuland.app and Neuland Next. This documentation provides a detailed overview of the API and its capabilities.
Contact
Neuland Ingolstadt e.V.
Terms of Service
API Endpoints
https://api.neuland.app/graphql
Queries
announcements
Description
Get the current announcements
Response
Returns [Announcement!]!
Example
Query
query announcements {
announcements {
id
title {
...MultiLanguageStringFragment
}
description {
...MultiLanguageStringFragment
}
startDateTime
endDateTime
priority
url
}
}
Response
{
"data": {
"announcements": [
{
"id": 4,
"title": MultiLanguageString,
"description": MultiLanguageString,
"startDateTime": "xyz789",
"endDateTime": "xyz789",
"priority": 987,
"url": "xyz789"
}
]
}
}
bus
Description
Get the current bus departures at a specific station
charging
Description
Get the current electric vehicle charging stations in Ingolstadt
Response
Returns [ChargingStation!]!
Example
Query
query charging {
charging {
id
name
address
city
latitude
longitude
available
total
freeParking
operator
}
}
Response
{
"data": {
"charging": [
{
"id": 123,
"name": "abc123",
"address": "abc123",
"city": "xyz789",
"latitude": 987.65,
"longitude": 987.65,
"available": 123,
"total": 123,
"freeParking": false,
"operator": "xyz789"
}
]
}
}
clEvents
Description
Get the campus life events
Response
Returns [ClEvent!]!
Example
Query
query clEvents {
clEvents {
id
organizer
title
begin
end
location
description
}
}
Response
{
"data": {
"clEvents": [
{
"id": "4",
"organizer": "abc123",
"title": "abc123",
"begin": "xyz789",
"end": "abc123",
"location": "xyz789",
"description": "xyz789"
}
]
}
}
food
Description
Get the meal plan for a specific restaurant
Response
Returns a FoodResponse!
Arguments
Name | Description |
---|---|
locations - [String!]
|
Example
Query
query food($locations: [String!]) {
food(locations: $locations) {
foodData {
...FoodFragment
}
errors {
...FoodErrorFragment
}
}
}
Variables
{"locations": ["abc123"]}
Response
{
"data": {
"food": {
"foodData": [Food],
"errors": [FoodError]
}
}
}
parking
Description
Get the current parking data in Ingolstadt
Response
Returns a ParkingData!
Example
Query
query parking {
parking {
updated
lots {
...ParkingLotFragment
}
}
}
Response
{
"data": {
"parking": {
"updated": "xyz789",
"lots": [ParkingLot]
}
}
}
train
Description
Get the current train departures at a specific station
Example
Query
query train($station: String!) {
train(station: $station) {
name
destination
plannedTime
actualTime
canceled
track
url
}
}
Variables
{"station": "xyz789"}
Response
{
"data": {
"train": [
{
"name": "xyz789",
"destination": "abc123",
"plannedTime": "abc123",
"actualTime": "xyz789",
"canceled": false,
"track": "abc123",
"url": "xyz789"
}
]
}
}
Types
Announcement
Description
Announcement data to display on top of the apps dashboard
Fields
Field Name | Description |
---|---|
id - ID!
|
Unique identifier of the announcement |
title - MultiLanguageString!
|
Title of the announcement in different languages |
description - MultiLanguageString!
|
Description of the announcement in different languages |
startDateTime - String!
|
Start date and time when the announcement is displayed |
endDateTime - String!
|
End date and time when the announcement is displayed |
priority - Int!
|
Priority of the announcement, higher are more important |
url - String
|
URL to the announcement |
Example
{
"id": "4",
"title": MultiLanguageString,
"description": MultiLanguageString,
"startDateTime": "xyz789",
"endDateTime": "abc123",
"priority": 987,
"url": "abc123"
}
Boolean
Description
The Boolean
scalar type represents true
or false
.
Bus
ChargingStation
Description
Charging station data
Fields
Field Name | Description |
---|---|
id - Int!
|
Unique identifier of the charging station |
name - String!
|
Name of the charging station |
address - String!
|
Address of the charging station |
city - String!
|
City of the charging station |
latitude - Float!
|
Latitude of the charging station |
longitude - Float!
|
Longitude of the charging station |
available - Int!
|
Number of available charging points |
total - Int!
|
Number of total charging points |
freeParking - Boolean
|
True if the charging is labeled as free parking |
operator - String
|
Operator of the charging station |
Example
{
"id": 987,
"name": "xyz789",
"address": "xyz789",
"city": "abc123",
"latitude": 123.45,
"longitude": 123.45,
"available": 123,
"total": 123,
"freeParking": false,
"operator": "xyz789"
}
ClEvent
Description
Campus Life Event
Fields
Field Name | Description |
---|---|
id - ID!
|
Unique identifier of the event |
organizer - String!
|
Organizer of the event |
title - String!
|
Title of the event in German |
begin - String
|
Begin of the event |
end - String
|
End of the event |
location - String
|
Location of the event (only available if it's eligible for external sharing) |
description - String
|
Description of the event (only available if it's eligible for external sharing) |
Example
{
"id": 4,
"organizer": "abc123",
"title": "abc123",
"begin": "abc123",
"end": "xyz789",
"location": "abc123",
"description": "abc123"
}
Float
Description
The Float
scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
Food
FoodError
FoodResponse
Fields
Field Name | Description |
---|---|
foodData - [Food!]
|
List of meal days |
errors - [FoodError!]
|
Error message for the food query |
Example
{
"foodData": [Food],
"errors": [FoodError]
}
ID
Description
The ID
scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4"
) or integer (such as 4
) input value will be accepted as an ID.
Example
"4"
Int
Description
The Int
scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
123
Meal
Description
Meal data
Fields
Field Name | Description |
---|---|
name - MultiLanguageString!
|
Name of the meal in different languages |
id - ID!
|
Unique identifier of the meal |
category - String!
|
Category of the meal (main, soup or salad) |
prices - Prices!
|
Prices for different types of customers (student, employee, guest) |
allergens - [String]
|
List of allergens (e.g. gluten, lactose, etc.) |
flags - [String]
|
List of flags (e.g. vegan, vegetarian, etc.) |
nutrition - Nutrition
|
Nutritional values for the meal |
variants - [Variation!]
|
Variants or toppings of the meal, like bread, sauce, etc. |
originalLanguage - OriginalLanguage!
|
Original language of the meal name |
static - Boolean!
|
Static meals are always available, non-static meals are only available on specific days |
restaurant - String!
|
Restaurant where the meal is available (IngolstadtMensa, NeuburgMensa, Reimanns, Canisius) |
Example
{
"name": MultiLanguageString,
"id": 4,
"category": "xyz789",
"prices": Prices,
"allergens": ["abc123"],
"flags": ["xyz789"],
"nutrition": Nutrition,
"variants": [Variation],
"originalLanguage": "de",
"static": false,
"restaurant": "xyz789"
}
MultiLanguageString
Nutrition
Description
Nutritional values for a meal. Currently only available at Mensa. Values are per average portion.
Fields
Field Name | Description |
---|---|
kj - Float!
|
Energy in kilojoules |
kcal - Float!
|
Energy in kilocalories |
fat - Float!
|
Fat in grams |
fatSaturated - Float!
|
Saturated fat in grams |
carbs - Float!
|
Carbohydrates in grams |
sugar - Float!
|
Sugar in grams |
fiber - Float!
|
Fiber in grams |
protein - Float!
|
Protein in grams |
salt - Float!
|
Salt in grams |
Example
{
"kj": 123.45,
"kcal": 987.65,
"fat": 987.65,
"fatSaturated": 123.45,
"carbs": 987.65,
"sugar": 987.65,
"fiber": 987.65,
"protein": 123.45,
"salt": 123.45
}
OriginalLanguage
Description
Original language of the meal name
Values
Enum Value | Description |
---|---|
|
German language code |
|
English language code |
Example
"de"
Parent
Description
Parent meal for a variant meal
Fields
Field Name | Description |
---|---|
id - ID!
|
Unique identifier of the parent meal |
category - String!
|
Category of the parent meal (main, soup or salad) |
name - MultiLanguageString!
|
Name of the parent meal in different languages |
Example
{
"id": "4",
"category": "xyz789",
"name": MultiLanguageString
}
ParkingData
Description
Parking data
Fields
Field Name | Description |
---|---|
updated - String!
|
Timestamp of the last update from the source |
lots - [ParkingLot!]!
|
List of parking lots |
Example
{
"updated": "abc123",
"lots": [ParkingLot]
}
ParkingLot
Description
Parking lot data
Fields
Field Name | Description |
---|---|
name - String!
|
Name of the parking lot |
category - String!
|
Category of the parking lot (parking garage, parking lot, etc.) |
available - Int!
|
Number of available parking spaces |
total - Int!
|
Total number of parking spaces |
tendency - Int
|
tendency of the parking lot (-1 : decreasing, 0 : stable, 1 : increasing) or null if not available |
priceLevel - Int
|
Static price level of the parking lot between 0 (free) and 3 (expensive) or null if not available |
Example
{
"name": "xyz789",
"category": "abc123",
"available": 987,
"total": 123,
"tendency": 123,
"priceLevel": 123
}
Prices
String
Description
The String
scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"abc123"
Train
Description
Train data
Fields
Field Name | Description |
---|---|
name - String!
|
Name of the train |
destination - String!
|
Destination of the train |
plannedTime - String
|
Planned departure time |
actualTime - String
|
Actual departure time |
canceled - Boolean!
|
True if the train is canceled |
track - String
|
Track of the train |
url - String
|
URL to the train information |
Example
{
"name": "xyz789",
"destination": "xyz789",
"plannedTime": "xyz789",
"actualTime": "abc123",
"canceled": true,
"track": "xyz789",
"url": "xyz789"
}
Variation
Description
Variants of a meal
Fields
Field Name | Description |
---|---|
name - MultiLanguageString!
|
Name of the variant in different languages |
additional - Boolean!
|
True if the variant is an additional topping and not a variant of the meal |
prices - Prices!
|
Prices for different types of customers (student, employee, guest) |
id - ID!
|
Unique identifier of the variant |
allergens - [String]
|
List of allergens (e.g. gluten, lactose, etc.) |
flags - [String]
|
List of flags (e.g. vegan, vegetarian, etc.) |
nutrition - Nutrition
|
Nutritional values for the variant |
originalLanguage - OriginalLanguage!
|
Original language of the variant name |
static - Boolean!
|
Static variants are always available, non-static variants are only available on specific days |
restaurant - String
|
Restaurant where the variant is available (IngolstadtMensa, NeuburgMensa, Reimanns, Canisius) |
parent - Parent
|
Parent meal for a variant meal |
Example
{
"name": MultiLanguageString,
"additional": true,
"prices": Prices,
"id": "4",
"allergens": ["xyz789"],
"flags": ["abc123"],
"nutrition": Nutrition,
"originalLanguage": "de",
"static": true,
"restaurant": "xyz789",
"parent": Parent
}