NAV

Preparation

The use of the go~mus public API does not require authentication and no API key.

See detailed documentation on Reseller API on how to create orders and sell end customer stuff like tickets, events and tours.

Museums

Provides information about the online bookable museums

List of museums

GET https://demo.gomus.de/api/v4/museums

curl "https://demo.gomus.de/api/v4/museums"

The above command returns JSON structured like this:

{
    "museums": [
        {
        "id": 1,
        "title": "Intro Museum",
        "sub_title": "Moderne Kunst des 21. Jahrhunderts",
        "picture": {
            "title": null,
            "description": null,
            "copyright_info": null,
            "teaser": "../teaser/hintergrund_grau.jpg",
            "preview": "../preview/hintergrund_grau.jpg",
            "article": "../article/hintergrund_grau.jpg",
            "detail": "../detail/hintergrund_grau.jpg"
            }
        },
        {
            ...
        }
    ],
    "meta": {
        "total_count": 1,
        "page": 1,
        "per_page": 25
    }

}

Available filters:

Available parameters:

Response

The JSON response contains a list of museums as an array and a meta block.

Details of a single museum

GET https://demo.gomus.de/api/v4/museums/:id

curl "https://demo.gomus.de/api/v4/museums/1"

The above command returns JSON structured like this:

{
    "museum": {
        "id": 1,
        "title": "Alte Nationalgalerie",
        "sub_title": "Kunst des 19. Jahrhunderts ",
        "description": null,
        "picture": {
            "title": null,
            "description": null,
            "copyright_info": null,
            "teaser": "../teaser/hintergrund_grau.jpg",
            "preview": "../preview/hintergrund_grau.jpg",
            "article": "../article/hintergrund_grau.jpg",
            "detail": "../detail/hintergrund_grau.jpg"
        },
        "content": {
            ...
        },
        "location": {
            "name": "Alte Nationalgalerie",
            "city": "Berlin",
            "country": "Deutschland",
            "street": "Bodestrasse",
            "zip": "10178",
            "latitude": 52.5197,
            "longitude": 13.3985
        }
    }
}

Response

The JSON response contains a museum block with information for that museum. The information is the same as that of the museums list response, but with the addition of a location block.

"content": {
    "cms_title": "Museum",
    "cms_description": "Das Museum!",
    "shop_title": "Museum",
    "shop_description": "Das Museum lädt ein.",
    "picture_title": "",
    "picture_description": "",
    "picture_copyright_info": ""
}

Opening hours of a single museum

GET https://demo.gomus.de/api/v4/museums/:id/opening_hours

curl "https://demo.gomus.de/api/v4/museums/1/opening_hours?date=2016-12-31"

The above command returns JSON structured like this:

{
    "opening_hours": {
        "begin": "2016-12-31T10:00:00+01:00",
        "end": "2016-12-31T18:30:00+01:00",
    }
}

Available parameters:

Response

The JSON response contains the begin and end of the opening hours as datetimes.

Exhibitions

Provides information about the online bookable exhibitions

List of exhibitions

GET https://demo.gomus.de/api/v4/exhibitions

curl "https://demo.gomus.de/api/v4/exhibitions"

The above command returns JSON structured like this:

{
    "exhibitions": [
        {
            "id": 33,
            "museum_id": 20,
            "title": "Dauerausstellung | Gemäldegalerie",
            "sub_title": "Malerei vom 13. bis zum 18. Jahrhundert ",
            "slider_description": "Malerei vom 13. bis zum 18. Jahrhundert",
            "featured": true,
            "picture": {
                "title": null,
                "description": null,
                "copyright_info": null,
                "teaser": "...",
                "preview": "../preview/hintergrund_grau.jpg",
                "article": "../article/hintergrund_grau.jpg",
                "detail": "../detail/hintergrund_grau.jpg"
            },
            "time_frames": [
                {
                "start_at": "2016-11-28T09:00:00+01:00",
                "end_at": "2016-12-04T20:45:00+01:00"
                }
            ]
        },
        {
            ...
        }
    ],
    "meta": {
        "total_count": 1,
        "page": 1,
        "per_page": 25
    }

}

Available filters:

Available parameters:

Response

The JSON response contains a list of exhibitions as an array and a meta block.

Details of a single exhibition

GET https://demo.gomus.de/api/v4/exhibitions/:id

curl "https://demo.gomus.de/api/v4/exhibitions/1"

The above command returns JSON structured like this:

{
    "exhibition": {
        "id": 33,
        "museum_id": 20,
        "title": "Dauerausstellung | Gemäldegalerie",
        "sub_title": "Malerei vom 13. bis zum 18. Jahrhundert ",
        "slider_description": "Malerei vom 13. bis zum 18. Jahrhundert",
        "description": "...",
        "featured": true,
        "picture": {
            "title": null,
            "description": null,
            "copyright_info": null,
            "teaser": "../teaser/hintergrund_grau.jpg",
            "preview": "../preview/hintergrund_grau.jpg",
            "article": "../article/hintergrund_grau.jpg",
            "detail": "../detail/hintergrund_grau.jpg"
        },
        "time_frames": [
            {
            "start_at": "2016-11-28T09:00:00+01:00",
            "end_at": "2016-12-04T20:45:00+01:00"
            }
        ],
        "content": {
            ...
        },
        "location": {
            "name": "Gemäldegalerie",
            "city": "Berlin",
            "country": "Deutschland",
            "street": "Matthäikirchplatz",
            "zip": "10785",
            "latitude": 52.5082,
            "longitude": 13.3673
        }
    }
}

Response

The JSON response contains an exhibition block with information for that exhibition. The information is the same as that of the exhibitions list response, but with the addition of a location block.

"content": {
    "cms_title": "Museum Besuchertage",
    "cms_sub_title": "",
    "cms_description": "Das Museum lädt ein.",
    "shop_title": "Museum Besuchertage",
    "shop_sub_title": "",
    "shop_description": "Das Museum lädt ein.",
    "picture_title": "",
    "picture_description": "",
    "picture_copyright_info": ""
}

Tickets

Provides information about the online bookable tickets

List of tickets

GET https://demo.gomus.de/api/v4/tickets

curl "https://demo.gomus.de/api/v4/tickets"

The above command returns JSON structured like this:

{
  "tickets": [
    {
      "id": 247,
      "title": "El Siglo de Oro mit Gemäldegalerie regulär",
      "ticket_type": "time_slot",
      "bookable": true,
      "museum_ids": [20],
      "exhibition_ids": [2057, 33],
      "price_cents": 1400,
      "discount": 0,
      "vat_pct": 0,
      "tax_included": true,
      "entry_duration": 30,
      "min_persons": 0,
      "max_persons": 100,
      "quota_ids": [19],
      "first_entry": 660,
      "last_entry": 990,
      "personalizeable": false,
      "attendees": "required",
      "identification": false
    }
  ],
  "meta": {
    "total_count": 1,
    "page": 1,
    "per_page": 25
  }
}

Available filters:

Available parameters:

Response

The JSON response contains a list of tickets as an array and a meta block.

Details of single ticket

GET https://demo.gomus.de/api/v4/tickets/:id

curl "https://demo.gomus.de/api/v4/tickets/1"

The above command returns JSON structured like this:

{
  "ticket": {
    "id": 247,
    "title": "El Siglo de Oro mit Gemäldegalerie regulär",
    "sub_title": null,
    "description": "...",
    "ticket_type": "time_slot",
    "bookable": true,
    "museum_ids": [20],
    "exhibition_ids": [2057, 33],
    "quota_ids": [19],
    "price_cents": 1400,
    "vat_pct": 0,
    "discount": 0,
    "tax_included": true,
    "first_entry": 660,
    "last_entry": 990,
    "entry_duration": 30,
    "min_persons": 0,
    "max_persons": 100,
    "after_sale_information": null,
    "content": {
      "shop_title": "Best ticket in the world",
      "shop_sub_title": "",
      "shop_description": ""
    },
    "personalizeable": false,
    "attendees": "required",
    "identification": false,
    "location": {
      "name": "Gemäldegalerie",
      "city": "Berlin",
      "country": "Deutschland",
      "street": "Matthäikirchplatz",
      "zip": "10785",
      "latitude": 52.5082,
      "longitude": 13.3673
    }
  }
}

Available parameters:

Response

The JSON response contains a ticket block with information for that the information is the same as that of the tickets list response, but with the addition of a couple of keys.

NOTE: for information on combined/sub-tickets, please see the Pergamon + Panorama example

Capacities of a ticket

A ticket has one or more capacities. Each capacity is the maximum bookable quantity of the ticket for a specific range of time.

GET https://demo.gomus.de/api/v4/tickets/:id/capacity

curl "https://demo.gomus.de/api/v4/tickets/1/capacity"

The above command returns JSON structured like this:

{
  "data": {
    "2016-07-06T11:00:00+02:00": 15,
    "2016-07-06T11:30:00+02:00": 21,
    "2016-07-06T12:00:00+02:00": 16,
    "2016-07-06T12:30:00+02:00": 21,
    "2016-07-06T13:00:00+02:00": 21,
    "2016-07-06T13:30:00+02:00": 21,
    "2016-07-06T14:00:00+02:00": 20,
    "2016-07-06T14:30:00+02:00": 21,
    "2016-07-06T15:00:00+02:00": 21,
    "2016-07-06T15:30:00+02:00": 21,
    "2016-07-06T16:00:00+02:00": 21
  }
}

Using the JSON response on the right as an example, between 11.00 and 11.30 on the 6th July 2016, the maximum bookable quantity is 15. If only one available time slot is returned, as is the case for day tickets, the time range is up untill the end of the day.

Available parameters:

Response

The JSON response contains a data block of available time slots and capacities as a hash (key/value pairs). For day tickets, the first possible entry will be returned.

The capacity check takes all quotas that the ticket belongs to into account. Zero values are not returned.

Reservations

Provide an array of reservation tokens to be considered in calculation

Calendar - for tickets

The ticket calender contains information about the generic bookablility of tickets - a very fast and easy way to detect if there is anything bookable in a larger timeframe.

GET https://demo.gomus.de/api/v4/tickets/calendar

curl "https://demo.gomus.de/api/v4/tickets/calendar"

The above command returns JSON structured like this (with depth=any, the default):

{
  "data": {
    "2016-05-27": false,
    "2016-05-28": false,
    "2016-05-29": false,
    "2016-05-30": true,
    "2016-05-31": true
  }
}

Example output with depth=all:

{
  "data": {
    "2016-07-06": [
      {
        "quota": {
          "id": 3,
          "tickets": [261, 262, 263, 264, 265, 266],
          "capacities": [
            {
              "2016-07-06 11:00:00 +0200": 100
            }
          ]
        }
      }
    ]
  }
}

Available filters:

Available parameters:

Response

The depth parameter defines the depth of search and the amount of detail in the result. On any the search will quit the loop for each day as soon as a bookable ticket is found and will provide a boolean (true or false) for the bookability as the result. This is a lot faster than the all mode, where the result is an array of quota objects and the relevant capacity information.

The maximum time frame is 31 days.

Reservations

Provide an array of reservation tokens to be considered in calculation

Capacities for a set of tickets

A ticket has one or more capacities. Each capacity is the maximum bookable quantity of the ticket for a specific range of time.

GET https://demo.gomus.de/api/v4/tickets/capacities

curl "https://demo.gomus.de/api/v4/tickets/capacities"

The above command returns JSON structured like this:

{
  "data": {
    "19": {
      "tickets": [247, 248],
      "capacities": {
        "2016-07-06T16:15:00+02:00": 30,
        "2016-07-06T16:20:00+02:00": 30,
        "2016-07-06T16:25:00+02:00": 30,
        "2016-07-06T16:30:00+02:00": 0
      }
    },
    "20": {
      "tickets": [248],
      "capacities": {
        "2016-07-06T16:15:00+02:00": 15,
        "2016-07-06T16:20:00+02:00": 15,
        "2016-07-06T16:25:00+02:00": 15,
        "2016-07-06T16:30:00+02:00": 0
      }
    }
  }
}

Tickets are assigned to (one or multiple) quotas and reduce each others capacity when ordered. As a result, capacity calculation becomes a little more complicated.

For a single ticket the capacities are calculated for you, see the capacities of a ticket section above. For multiple tickets however, to avoid requesting new capacities for each quantity update, we provide the quota ids so that the new ticket capacities can be calculated in the browser.

For example, if two tickets reside in the same quota which has a capacity of 10 for a specific time, if 2 of one ticket is selected only 8 are available for the other.

Note that for a set of tickets with each different entry durations the greatest common divisor of all entry durations is used as step size for the capacity time slots. If this is the case, you need to ensure you set the time for the ticket to a valid value (first_entry + n * entry_duration). For day tickets you need to set first_entry as time of booking.

Distinguishing unavailable and sold out tickets.

An array of total capacities is returned that reflect the total configured capacity for a timeslot ignoring any sales. This information can be used to determine whether a ticket was available but is sold out or whether a ticket did not have any capacity in the first place.

{
  "data": {
    "19": {
      "tickets": [247, 248],
      "capacities": {
        "2016-07-06T16:15:00+02:00": 0,
        "2016-07-06T16:20:00+02:00": 0,
        "2016-07-06T16:25:00+02:00": 0,
        "2016-07-06T16:30:00+02:00": 0
      },
      "total_capacities": {
        "2016-07-06T16:15:00+02:00": 30,
        "2016-07-06T16:20:00+02:00": 30,
        "2016-07-06T16:25:00+02:00": 30,
        "2016-07-06T16:30:00+02:00": 30
      }
    }
  }
}

In general tickets that do not have a defined total capacity can be excluded from display.

Necessary parameters:

Available parameters:

Response

The response is a data block, which contains a hash with quota ids as keys, a list of ticket ids affected by the quota (as a subset of the query) and a list of (still available) capacities as well as the total capacities.

Note that the ticket response block may not contain all of your requested ticket ids. It only contains tickets bookable for your current user.

Reservations

Provide an array of reservation tokens to be considered in calculation

Contents for a set of tickets

This call returns dynamic content for a set of tickets. Use this to optimise content fetching.

GET https://demo.gomus.de/api/v4/tickets/content

curl "https://demo.gomus.de/api/v4/tickets/content?ticket_ids[]=14&ticket_ids[]=11"

The above command returns JSON structured like this:

{
  "data": [
    {
      "id": 11,
      "content": {
        "shop_title": "My Ticket Title"
      }
    },
    {
      "id": 14,
      "content": {
        "shop_title": "Another Ticket Title",
        "shop_description": "<p>Description DE</p>"
      }
    }
  ],
  "meta": {
    "total_count": 2,
    "page": 1,
    "per_page": 25
  }
}

Available filters:

Necessary parameters:

Available parameters:

Response

The JSON response contains a list of contents for a set of tickets as an array and a meta block.

Events

Provides information about the online bookable events and dates.

Event categories

GET https://demo.gomus.de/api/v4/events/categories

curl "https://demo.gomus.de/api/v4/events/categories"

The above command returns JSON structured like this:

{
  "categories": [
    {
      "id": 3,
      "name": "öffentliche Führung"
    },
    {
      "id": 4,
      "name": "Kurs / Workshop"
    },
    {
      "id": 5,
      "name": "Kinder / Familien"
    }
  ]
}

Response

The JSON response contains a list of all event categories to build up filters. Note: this only contains valid elements, some events might have no name set. Some categories have duplicate names.

Event languages

GET https://demo.gomus.de/api/v4/events/languages

curl "https://demo.gomus.de/api/v4/events/languages"

The above command returns JSON structured like this:

{
    "languages": [
        {
        "id": 1,
        "name": "Deutsch"
        },
        {
         "id": 2,
         "name": "Englisch"
        }
    ]
}

Response

The JSON response contains a list of all languages used by online bookable event products to build up filters.

Event tags

Events can be tagged with the following tag types:

Age groups

GET https://demo.gomus.de/api/v4/events/age_groups

curl "https://demo.gomus.de/api/v4/events/age_groups"

The above command returns JSON structured like this:

{
    "age_groups": [
        {
            "id": 1,
            "name": "Kinder bis 10 Jahre"
        },
        {
            "id": 2,
            "name": "Kinder ab 10 Jahre"
        }
    ]
}

Audiences

GET https://demo.gomus.de/api/v4/events/audiences

curl "https://demo.gomus.de/api/v4/events/audiences"

The above command returns JSON structured like this:

{
    "audiences": [
        {
            "id": 1,
            "name": "Jugendliche"
        },
        {
            "id": 2,
            "name": "Erwachsene"
        }
    ]
}

Catch words

GET https://demo.gomus.de/api/v4/events/catch_words

curl "https://demo.gomus.de/api/v4/events/catch_words"

The above command returns JSON structured like this:

{
    "catch_words": [
        {
            "id": 1,
            "name": "Ägypten"
        },
        {
            "id": 2,
            "name": "Mythologie"
        }
    ]
}

Proposal categories

GET https://demo.gomus.de/api/v4/events/proposal_categories

curl "https://demo.gomus.de/api/v4/events/proposal_categories"

The above command returns JSON structured like this:

{
    "proposal_categories": [
        {
            "id": 1,
            "name": "Schulklasse"
        },
        {
            "id": 2,
            "name": "Gruppe ohne Guide"
        }
    ]
}

Grades

GET https://demo.gomus.de/api/v4/events/grades

curl "https://demo.gomus.de/api/v4/events/grades"

The above command returns JSON structured like this:

{
    "grades": [
        {
            "id": 1,
            "name": "Grundschule Klasse 1"
        },
        {
            "id": 2,
            "name": "Grundschule Klasse 2"
        },
        {
            "id": 3,
            "name": "Sekundarstufe II"
        }
    ]
}

Tag responses

The JSON response contains a list of used event tags by category to build up filters.

List of events

GET https://demo.gomus.de/api/v4/events

curl "https://demo.gomus.de/api/v4/events"

The above command returns JSON structured like this:

{
    "events": [
        {
            "id": 101174,
            "exhibition_id": 2057,
            "museum_id": 20,
            "title": "El Siglo de Oro | Öffentliche Führung",
            "sub_title": "60 Minuten | 4 EUR zzg. Eintritt<br>Di – Fr / 16:00 Uhr, Sa und So / 14:30 und 16:00 Uhr<br>",
            "featured": false,
            "bookable": true,
            "registerable": true,
            "category": {
                "id": 3,
                "name": "öffentliche Führung"
            },
            "picture": {
                "title": null,
                "description": null,
                "copyright_info": null,
                "teaser": "../teaser/hintergrund_grau.jpg",
                "preview": "../preview/hintergrund_grau.jpg",
                "article": "../article/hintergrund_grau.jpg",
                "detail": "../detail/hintergrund_grau.jpg"
            },
            "location": {
                "name": "Gemäldegalerie",
                "city": "Berlin",
                "country": "Deutschland",
                "street": "Matthäikirchplatz",
                "zip": "10785",
                "latitude": 52.5082,
                "longitude": 13.3673
            },
            "age_groups": [],
            "audiences": [],
            "catch_words": [],
            "disablements": [],
            "grades": [],
            "proposal_categories": [],
            "languages": [
                {
                    "id": 1,
                    "name": "Deutsch"
                }
            ]
        }
    ],
    "meta": {
        "total_count": 1,
        "page": 1,
        "per_page": 25
    }

}

Available filters:

Available parameters:

Response

The JSON response contains a list of events as an array and a meta block.

plus blocks of attributes for category, picture, location and audiences.

Details of single event

GET https://demo.gomus.de/api/v4/events/:id

curl "https://demo.gomus.de/api/v4/events/1"

The information is the same as that of the events list response, but with the addition of the description key and dynamic contents. If event is registerable and an authenticatable user has the permission, this attribute contains a link to the public registration form.

Calendar for a single event

GET https://demo.gomus.de/api/v4/events/:id/calendar

curl "https://demo.gomus.de/api/v4/events/1/calendar"

Note: This route is obsolete. Please use api/v4/calendar?by_event_ids[]=:id

Dates for a single event

GET https://demo.gomus.de/api/v4/events/:id/dates

curl "https://demo.gomus.de/api/v4/events/1/dates"

The above command returns JSON structured like this:

{
    "dates": [
        {
            "id": 1065,
            "event_id": 10,
            "exhibition_id": null,
            "museum_id": 1,
            "category": {
              "id": 7,
              "name": "Öffentliche Führung",
              "filtername": ""
            },
            "bookable": true,
            "registerable": false,
            "title": "Termin #241",
            "sub_title": null,
            "start_time": "2017-12-03T13:00:00+01:00",
            "duration": 90,
            "seats": {
                "min": 1,
                "max": 30,
                "booked": 0,
                "available": 30,
                "max_per_registration": null
            },
            "language": {
              "id": 1,
              "name": "Deutsch"
            }
        }
    ],
    "meta": {
        "total_count": 1,
        "page": 1,
        "per_page": 25
    }
}

Queries the available dates for a specific event. The default shows only dates for today, or specified by the date parameter. A range of up to 31 days can be queried by using the start_at and end_at parameter.

Available filters:

Available parameters:

Response

The JSON response contains a list of dates as an array and a meta block.

Details for a single date

GET https://demo.gomus.de/api/v4/events/:event_id/dates/:id

curl "https://demo.gomus.de/api/v4/events/1/dates/1"

The above command returns JSON structured like this:

{
    "date": {
        "id": 22974,
        "event_id": 101174,
        "exhibition_id": 2057,
        "museum_id": 20,
        "category": {
            "id": 23,
            "name": "öffentliche Führung"
        },
        "bookable": true,
        "registerable": false,
        "title": "El Siglo de Oro",
        "sub_title": null,
        "description": null,
        "start_time": "2016-07-10T14:30:00+02:00",
        "vat_pct": 0,
        "discount": 0,
        "tax_included": true,
        "seats": {
            "min": 1,
            "max": 20,
            "booked": 0,
            "available": 20,
            "max_per_registration": null
        },
        "seatings": [
            {
                "blocked_seats": [1,2],
                "categories": [
                    {
                        "id": 1,
                        "title": "A",
                        "description": "",
                        "color_code": "#bdbdbd"
                    }
                ],
                "rows": [
                    {
                        "id": 1,
                        "title": "1"
                    }
                ],
                "seats": [
                    {
                        "id": 1,
                        "row_id": 1,
                        "category_id": 1,
                        "type_id": null,
                        "title": "A",
                        "description": null
                    },
                    {
                        "id": 2,
                        "row_id": 1,
                        "category_id": 1,
                        "type_id": 1,
                        "title": "A",
                        "description": null
                    }
                ],
                "types": [
                    {
                        "id": 1,
                        "title": "Rollstuhlplatz"
                    }
                ],
                "visual_url": "api/v4/seatings/1.svg"
            }
        ],
        "location": {
            "name": "Gemäldegalerie",
            "city": "Berlin",
            "country": "Deutschland",
            "street": "Matthäikirchplatz",
            "zip": "10785",
            "latitude": 52.5082,
            "longitude": 13.3673
        },
        "language": {
            "id": 1,
            "name": "Deutsch"
        },
        "prices": [
            {
                "group": false,
                "optional": false,
                "price_cents": 400
            }
        ]
    }
}

The detailed view for a single date provides all information needed to create for example an event date booking via the reseller API. If date is registerable and an authenticatable user has the permission, this attribute contains a link to the public registration form.

Response

The JSON response contains more attributes than in the overview:

plus a block of attributes for available seats (see below) languages, location and prices.

Seats

The seats block contains four attributes:

Location

The location block provides information about the event starting/meeting point and address.

Seatings

Events can contain additional data for seating plans. If the seatings array contains data, specific seats must be referenced in the order item when ordering (see prices).

A visual seating plan is provided in the seatings data as well as all the information needed (categories, rows, types, seats, blocked seats and reservations) for providing your own visual representation, or seat selection widget. The visual seating plan is a standardized SVG graphic for display and manipulation via Javascript.

Prices

The prices block contains one ore more price objects in an array. There are two types of price objects for event date bookings:

default prices with three attributes:

or scale prices with following attributes:

Usually, there will be one default price or at least one scale price.

Global dates list

GET https://demo.gomus.de/api/v4/dates

curl "https://demo.gomus.de/api/v4/dates"

The above command returns JSON structured like the events date list.

Available filters:

Available parameters:

Response

The JSON response contains a list of dates for all events as an array and a meta block.

Date languages

The available languages for dates within the selection (same filters as in global dates list apply here)

GET https://demo.gomus.de/api/v4/dates/languages

curl "https://demo.gomus.de/api/v4/dates/languages"

The above command returns JSON structured like this:

{
    "languages": [
        {
        "id": 1,
        "name": "Deutsch"
        },
        {
         "id": 2,
         "name": "Englisch"
        }
    ]
}

Response

The JSON response contains a list of all languages used by online bookable date to build up filters.

Global events calendar

GET https://demo.gomus.de/api/v4/calendar

curl "https://demo.gomus.de/api/v4/calendar"

The above command returns JSON structured like the single events calendar, but for all events.

The global calender provides a nice way to check whether dates are available for a day in range or not. With the default mode, the return value for each day in the specified range is a simple boolean.

Available filters:

Available parameters:

Tours

Provides information about the online bookable tours.

Tour categories

GET https://demo.gomus.de/api/v4/tours/categories

curl "https://demo.gomus.de/api/v4/tours/categories"

The above command returns JSON structured like this:

{
    "categories": [
        {
        "id": 1,
        "name": "Projekt"
        },
        {
         "id": 2,
         "name": "Führung"
        }
    ]
}

Response

The JSON response contains a list of all tour categories to build up filters.

Note: this only contains valid elements, some events might have no name set. Some categories have duplicate names.

Tour languages

GET https://demo.gomus.de/api/v4/tours/languages

curl "https://demo.gomus.de/api/v4/tours/languages"

The above command returns JSON structured like this:

{
    "languages": [
        {
        "id": 1,
        "name": "Deutsch"
        },
        {
         "id": 2,
         "name": "Englisch"
        }
    ]
}

Response

The JSON response contains a list of all languages used by online bookable tour products to build up filters.

Tour tags

Tours can be tagged with the following tag types:

Age groups

GET https://demo.gomus.de/api/v4/tours/age_groups

curl "https://demo.gomus.de/api/v4/tours/age_groups"

The above command returns JSON structured like this:

{
    "age_groups": [
        {
            "id": 1,
            "name": "Kinder bis 10 Jahre"
        },
        {
            "id": 2,
            "name": "Kinder ab 10 Jahre"
        }
    ]
}

Audiences

GET https://demo.gomus.de/api/v4/tours/audiences

curl "https://demo.gomus.de/api/v4/tours/audiences"

The above command returns JSON structured like this:

{
    "audiences": [
        {
            "id": 1,
            "name": "Jugendliche"
        },
        {
            "id": 2,
            "name": "Erwachsene"
        }
    ]
}

Catch words

GET https://demo.gomus.de/api/v4/tours/catch_words

curl "https://demo.gomus.de/api/v4/tours/catch_words"

The above command returns JSON structured like this:

{
    "catch_words": [
        {
            "id": 1,
            "name": "Ägypten"
        },
        {
            "id": 2,
            "name": "Mythologie"
        }
    ]
}

Proposal categories

GET https://demo.gomus.de/api/v4/tours/proposal_categories

curl "https://demo.gomus.de/api/v4/tours/proposal_categories"

The above command returns JSON structured like this:

{
    "proposal_categories": [
        {
            "id": 1,
            "name": "Schulklasse"
        },
        {
            "id": 2,
            "name": "Gruppe ohne Guide"
        }
    ]
}

Grades

GET https://demo.gomus.de/api/v4/tours/grades

curl "https://demo.gomus.de/api/v4/tours/grades"

The above command returns JSON structured like this:

{
    "grades": [
        {
            "id": 1,
            "name": "Grundschule Klasse 1"
        },
        {
            "id": 2,
            "name": "Grundschule Klasse 2"
        },
        {
            "id": 3,
            "name": "Sekundarstufe II"
        }
    ]
}

Tag responses

The JSON response contains a list of used tour tags by category to build up filters.

List of tours

GET https://demo.gomus.de/api/v4/tours

curl "https://demo.gomus.de/api/v4/tours"

The above command returns JSON structured like this:

{
    "tours": [
        {
            "id": 101173,
            "exhibition_id": 2057,
            "museum_id": 20,
            "title": "El Siglo de Oro | Gruppenführung",
            "sub_title": "60 Minuten | 90 EUR zzgl. Eintritt <br>Buchung 14 Tage im Voraus<br>(Gruppen bis 25 Personen)",
            "bookable": true,
            "registerable": false,
            "featured": false,
            "category": {
                "id": 2,
                "name": "Führung"
            },
            "equipment": false,
            "picture": {
                "title": null,
                "description": null,
                "copyright_info": null,
                "original": "../original/hintergrund_grau.jpg",
                "teaser": "../teaser/hintergrund_grau.jpg",
                "preview": "../preview/hintergrund_grau.jpg",
                "article": "../article/hintergrund_grau.jpg",
                "detail": "../detail/hintergrund_grau.jpg"
            },
            "location": {
                "name": "Gemäldegalerie",
                "city": "Berlin",
                "country": "Deutschland",
                "street": "Matthäikirchplatz",
                "zip": "10785",
                "latitude": 52.5082,
                "longitude": 13.3673
            },
            "age_groups": [],
            "audiences": [],
            "catch_words": [],
            "disablements": [],
            "grades": [],
            "proposal_categories": [],
            "languages": [
                {
                    "id": 1,
                    "name": "Deutsch"
                }
            ]
        }
    ],
    "meta": {
        "total_count": 1,
        "page": 1,
        "per_page": 25
    }

}

Available filters:

Available parameters:

Response

The JSON response contains a list of tours as an array and a meta block.

plus blocks of attributes for category, picture, location and audiences.

Details of single tour

GET https://demo.gomus.de/api/v4/tours/:id

curl "https://demo.gomus.de/api/v4/tours/1"

The information is the same as that of the tours list response, but with the addition of the description key and some other attributes like the dynamic content attributes If tour is registerable and an authenticatable user has the permission, this attribute contains a link to the public registration form.

Limitations

The detail response contains a limitations block like this:

  "limitations": {
    "language": false
  },

Currently, the only additional limitation is the language. This means, that availability of a tour depends on selected language.

Equipment for a tour

The detail response contains a equipment block as array with available equipment for booking.

Equipment overview for a tour can be accessed like this:

GET https://demo.gomus.de/api/v4/tours/:id/equipments?date=2017-06-11

curl "https://demo.gomus.de/api/v4/tours/1/equipments?date=2017-06-11"

The above command returns JSON structured like this:

{
    "data": {
        "1": {
            "2016-07-06T11:00:00+02:00": 15,
            "2016-07-06T11:30:00+02:00": 21,
            "2016-07-06T12:00:00+02:00": 16,
            "2016-07-06T12:30:00+02:00": 21,
            "2016-07-06T13:00:00+02:00": 21,
            "2016-07-06T13:30:00+02:00": 21,
            "2016-07-06T14:00:00+02:00": 20,
            "2016-07-06T14:30:00+02:00": 21,
            "2016-07-06T15:00:00+02:00": 21,
            "2016-07-06T15:30:00+02:00": 21,
            "2016-07-06T16:00:00+02:00": 21
      }
    }
}

Response

The Response contains maximal available count by date for each equipment category for this tour

Equipment details for a tour

Equipment details for a tour can be accessed like this:

GET https://demo.gomus.de/api/v4/tours/:id/equipments/1/?date=2017-06-11

curl "https://demo.gomus.de/api/v4/tours/1/equipments/1/?date=2017-06-11"

The above command returns JSON structured like this:

{
    "data": {
        "2016-07-06T11:00:00+02:00": 15,
        "2016-07-06T11:30:00+02:00": 21,
        "2016-07-06T12:00:00+02:00": 16,
        "2016-07-06T12:30:00+02:00": 21,
        "2016-07-06T13:00:00+02:00": 21,
        "2016-07-06T13:30:00+02:00": 21,
        "2016-07-06T14:00:00+02:00": 20,
        "2016-07-06T14:30:00+02:00": 21,
        "2016-07-06T15:00:00+02:00": 21,
        "2016-07-06T15:30:00+02:00": 21,
        "2016-07-06T16:00:00+02:00": 21
    }
}

Response

The Response contains maximal available count by date for the specific equipment category for this tour

Equipment timestamp details for a tour

Equipment details for a tour based on a specific timestamp can be accessed like this:

GET https://demo.gomus.de/api/v4/tours/:id/equipments/1/:timestamp

curl "https://demo.gomus.de/api/v4/tours/1/equipments/1/2017-06-11T11:00:00+02:00"

The above command returns JSON structured like this:

{
    "data": {
        "2016-07-06T11:00:00+02:00": 15
    }
}

Response

The Response contains maximal available count by date for the specific equipment category for this tour at a specific timestamp.

Prices for a tour

GET https://demo.gomus.de/api/v4/tours/:id/prices

curl "https://demo.gomus.de/api/v4/tours/1/prices"

The above command returns JSON structured like this:

{
    "prices": [
        {
            "title": "Entgelt",
            "description": "Gruppenpreis",
            "group": true,
            "optional": false,
            "price_cents": 9000,
            "vat_pct": 0.00
        },
        {
            "price_surcharge_id": 1,
            "title": "Zuschlag",
            "description": "für Sonn- und Feiertage",
            "group": true,
            "optional": true,
            "price_cents": 300,
            "vat_pct": 0.00
        }
    ],
    "vat_pct": 0.0,
    "discount": 0,
    "tax_included": true

}

There are three different ways of how the base price for a tour is calculated:

plus additional surcharges, e.g. sunday extra, foreign language extra and so on. All prices depend on the date and time of the tour, participants and the customer type and the language.

Available parameters:

Response

The JSON response contains the following attributes:

and an array of “prices”, see below.

Prices

The prices block contains one or more price object in an array. There are four types of prices for tour bookings:

default prices with four attributes:

or scale prices with seven attributes:

or customer type related prices with six attributes:

Usualy, only one of the three above occurs per tour. The tour might also be configured with one or more surcharges (Each surcharge will also display a relevant vat_pct amount (float) i.e. the pricing tax rate):

Start times

While events always have a fixed start time, a tour is more flexible and up to the customer to decide e.g. when he wants to start. Usualy, start times between 8 in the morning and 8 in the evening are possible. Still, the start times (in 15-minutes steps) need to follow certain limitations (e.g. number of tours a day, number of participants in the museum at the same time). The server can calculate start times for tours on the fly.

GET https://demo.gomus.de/api/v4/tours/:id/start_times

curl "https://demo.gomus.de/api/v4/tours/1/start_times"

The above command returns JSON structured like this (with depth=any, the default):

{
    "data": {
        "2016-07-24": false,
        "2016-07-25": false,
        "2016-07-26": true
    }
}

Example output with depth=all:

{
    "data": {
        "2016-07-24": [],
        "2016-07-25": [],
        "2016-07-26": [
            "2016-07-26T10:30:00+02:00",
            "2016-07-26T11:00:00+02:00",
            "2016-07-26T11:30:00+02:00",
            "2016-07-26T12:00:00+02:00",
            "2016-07-26T12:30:00+02:00",
            "2016-07-26T13:00:00+02:00",
            "2016-07-26T13:30:00+02:00",
            "2016-07-26T14:00:00+02:00",
            "2016-07-26T14:30:00+02:00",
            "2016-07-26T15:00:00+02:00",
            "2016-07-26T15:30:00+02:00",
            "2016-07-26T16:30:00+02:00"
        ]
    }
}

The start times calender for a tour provides a fast way to check when the tour has possible start times or not within a specified time range. With the default mode (depth=any), the return value for each day in the range specified is a simple boolean.

Note: An unauthenticated (public) API request of this type will only return a result if the corresponding product has the sales channel “Shop und Reseller” activated.

Available parameters:

Start times for a day

GET https://demo.gomus.de/api/v4/tours/:id/start_times/:date

curl "https://demo.gomus.de/api/v4/tours/1/start_times/2016-07-26"

The above command returns JSON structured like this:

{
    "data": [
        {
            "start_time": "2016-07-26T10:30:00+02:00",
            "participants": {
                "min": 0,
                "max": 25,
                "bookable": 25
            }
        },
        {
            "start_time": "2016-07-26T11:00:00+02:00",
            "participants": {
                "min": 0,
                "max": 25,
                "bookable": 25
            }
        }
    ]
}

Note: An unauthenticated (public) API request of this type will only return a result if the corresponding product has the sales channel “Shop und Reseller” activated.

Available parameters:

Response

The start times for a specific day contains the start time and a participants block:

Coupons

Provides information about the online bookable coupons

List of coupons

GET https://demo.gomus.de/api/v4/coupons

curl "https://demo.gomus.de/api/v4/coupons"

The above command returns JSON structured like this:

{
  "coupons": [
    {
      "id": 4,
      "title": "Gutschein für ALLES",
      "price_cents": 2000,
      "value_cents": 2000,
      "vat_pct": "0.0",
      "created_at": "2019-07-04T16:20:15+02:00",
      "updated_at": "2022-06-14T12:03:17+02:00",
      "shipped_with_merchandise_id": null
    },
    {
      "id": 8,
      "title": "Gutschein € 50,00",
      "price_cents": 5000,
      "value_cents": 5000,
      "vat_pct": "0.0",
      "created_at": "2021-04-28T11:46:34+02:00",
      "updated_at": "2021-09-09T09:44:45+02:00",
      "shipped_with_merchandise_id": null
    }
  ],
  "meta": {
    "total_count": 2,
    "page": 1,
    "per_page": 25
  }
}

Available parameters:

Response

The JSON response contains a list of coupons as an array and a meta block.

Details of single coupon

GET https://demo.gomus.de/api/v4/coupons/:id

curl "https://demo.gomus.de/api/v4/coupons/1"

The above command returns JSON structured like this:

{
  "coupon": {
    "id": 4,
    "title": "Gutschein für ALLES",
    "price_cents": 2000,
    "value_cents": 2000,
    "vat_pct": "0.0",
    "created_at": "2019-07-04T16:20:15+02:00",
    "updated_at": "2022-06-14T12:03:17+02:00",
    "shipped_with_merchandise_id": null,
    "description": "...",
    "content": {
      "shop_title": "Best ticket in the world",
      "shop_sub_title": "",
      "shop_description": ""
    }
  }
}

Available parameters:

none

Response

The JSON response contains a coupon block with information for that the information is the same as that of the coupons list response, but with the addition of a couple of keys.

Newsletter Subscriber Groups

Provides information about the available newsletter subscriber groups.

List of newsletter subscriber groups

GET https://demo.gomus.de/api/v4/newsletter_subscriber_groups

curl "https://demo.gomus.de/api/v4/newsletter_subscriber_groups"

The above command returns JSON structured like this:

{
  "newsletter_subscriber_groups": [
    {
      "id": 1,
      "name": "Newsletter"
    },
    {
      "id": 8,
      "name": "Test Newsletter"
    },
    {
      "id": 9,
      "name": "Toller Newsletter"
    },
    {
      "id": 11,
      "name": "Weihnachts Newsletter"
    },
    {
      "id": 12,
      "name": "Grupppenangebot Newsletter"
    }
  ],
  "meta": {
    "total_count": 5
  }
}

Available filters and parameters:

This endpoint doesn’t accept any filters nor parameters. It doesn’t respond to the q= text search filter.

Response

The JSON response contains a list of tickets as an array and a meta block.

Search

Use the q parameter to perform a string based search in most of the list actions (e.g. museums, exhibitions, tickets..)

Locales

Use the locale parameter to query content in different languages for any request. The first language will always be used as the main (fallback and default) language.

Get List of Available Locales

GET https://demo.gomus.de/api/v4/locales

curl "https://demo.gomus.de/api/v4/locales"

The above command returns JSON structured like this:

{
    "locales": [
        "de",
        "en"
        ]
}

Multi-Locale support

go~mus supports multiple locales for authenticated requests. Using the locale parameter as an array will return every translatable attribute as a hash with the requested locales as keys and the translations as values.

Note that only available locales (see above) are valid for multi locale requests.

Mulit-Locale example

The following example will require the ticket details in german and english at once.

GET https://demo.gomus.de/api/v4/ticket/1?locale[]=de&locale[]=en

curl "https://demo.gomus.de/api/v4/ticket/1?locale[]=de&locale[]=en`

The above example command returns JSON structured like this:

{
    "ticket": {
        "id": 1,
        "title": {
          "en": "regular ticket",
          "de": "Ticket regulär"
        },
        "sub_title": {
          "en": "for visitors",
          "de": "für Besucher"
        },
        "description": {
          "en": "description",
          "de": "Beschreibung"
        },

        ...
    }
}

Other Data

Provides information about other various entities

Countries

GET https://demo.gomus.de/api/v4/countries

curl "https://demo.gomus.de/api/v4/countries"

The above command returns JSON structured like this:

{
  "countries": [
    {
      "name": "Deutschland",
      "id": 60,
      "code": "DE"
    },
    {
      "name": "Vereinigtes Königreich",
      "id": 80,
      "code": "GB"
    },
    {
      "name": "Frankreich",
      "id": 76,
      "code": "FR"
    },

    ...
  ],
  "meta": {
    "total_count": 249,
    "page": 1,
    "per_page": 25
  }
}

Available parameters:

Response

The JSON response contains a list of countries as an array and a meta block.

States

GET https://demo.gomus.de/api/v4/states

curl "https://demo.gomus.de/api/v4/states"

The above command returns JSON structured like this:

{
  "states": [
    {
      "name": "Baden-Württemberg",
      "id": 1,
      "country_id": 60
    },
    {
      "name": "Bayern",
      "id": 2,
      "country_id": 60
    },
    {
      "name": "Berlin",
      "id": 3,
      "country_id": 60
    },
    {
      "name": "Brandenburg",
      "id": 4,
      "country_id": 60
    },
    {
      "name": "Bremen",
      "id": 5,
      "country_id": 60
    },

    ...
  ],
  "meta": {
    "total_count": 16,
    "page": 1,
    "per_page": 25
  }
}

Available parameters:

Response

The JSON response contains a list of states as an array and a meta block.

Dispatch Modes

GET https://demo.gomus.de/api/v4/dispatch_modes

curl "https://demo.gomus.de/api/v4/dispatch_modes"

The above command returns JSON structured like this:

{
  "dispatch_modes": [
    {
      "name": "E-Mail",
      "id": 1
    },
    {
      "name": "Post",
      "id": 2
    },
    {
      "name": "Abholung im Museum",
      "id": 3
    }
  ],
  "meta": {
    "total_count": 3,
    "page": 1,
    "per_page": 25
  }
}

Available parameters:

Response

The JSON response contains a list of dispatch modes as an array and a meta block.

Errors

The go~mus API uses the following error codes:

Error Code Meaning
401 Unauthorized – Your API key is wrong
403 Forbidden – The API endpoint requested is for administrators only
404 Not Found – The specified record could not be found
405 Method Not Allowed – You tried to access an API endpoint with an invalid method
422 Unprocessable Entity – The data you have passed cannot be processed
429 Too Many Requests – You’re requesting too much! Slow down!
500 Internal Server Error – We had a problem with our server. Try again later.
503 Service Unavailable – We’re temporarially offline for maintanance. Please try again later.