Folders

Folders are the fundamental organising principle of the Monad system. Genres, Venues, Spaces, Shows and Performances are all instances of Folders tagged with extra data.

APIDescription
GET api/Folders

Get children of the root folder

GET api/Folders/{id}

Get a folder

GET api/Folders?page={page}&pageSize={pageSize}

Get paged children of the root folder

GET api/Folders?parentId={parentId}

Get children of the parent folder

GET api/Folders?parentId={parentId}&page={page}&pageSize={pageSize}

Get paged children of the parent folder

Shows

Some folders can be tagged as "Shows". Folders which are shows usually are also tagged as Performance for 1-off events, or have child folders tagged as Performance for multi-date shows.

APIDescription
GET api/Shows/{id}

Get a specific show by Id

GET api/Shows?folderId={folderId}&genreId={genreId}&spaceId={spaceId}&venueId={venueId}&fromDate={fromDate}&toDate={toDate}&page={page}&pageSize={pageSize}&searchText={searchText}

Get shows optionally paged and filtered by folder, genre, space, venue and dates.

Performances

Some folders can be tagged as "Performances". Performances always have a start and end date and time, and are usually associated with a "Show" folder but do not have to be.

APIDescription
GET api/Performances/{id}

Get a specific performance by Id

GET api/Performances?folderId={folderId}&showId={showId}&genreId={genreId}&spaceId={spaceId}&venueId={venueId}&fromDate={fromDate}&toDate={toDate}&page={page}&pageSize={pageSize}

Get performances optionally paged and filtered by folder, show, genre, space, venue and dates

Venues

Some folders can be tagged as "Venues". A folder can also inherit venue data from a different Venue folder, so you can tell which Space a Performance is in.

APIDescription
GET api/Venues/{id}

Get a specific venue by Id

GET api/Venues?folderId={folderId}

Get venues optionally filtered by folder

Spaces

Some folders can be tagged as "Spaces". A folder can also inherit space data from a different Space folder, so you can tell which Space a Performance is in.

APIDescription
GET api/Spaces/{id}

Get a specific space by Id

GET api/Spaces?folderId={folderId}&venueId={venueId}

Get spaces optionally filtered by folder and venue

Genres

Some folders can be tagged as "Genre". A folder can also inherit space data from a different Genre folder, so you can tell which Genre a Show is in.

APIDescription
GET api/Genres/{id}

Get a specific genre by Id

GET api/Genres?folderId={folderId}

Get genres. If the folderId parameter is supply, return all Genre folders that are a descendant of that folder.

Basket

Baskets represent the items that a session is about to buy. This API only allows one basket per session.

APIDescription
GET api/Basket

Get the basket for the logged in user

PUT api/Basket

Makes a request to add items to the basket.

Cache

Data returned by the API is cached; call "Get" on the Cache endpoint to clear the cache and fetch data fresh from the database.

APIDescription
GET api/Cache

Clear the cache

CustomForms

Folder Show, Performance, Venue, Space and Genre data objects have a custom form attached

APIDescription
GET api/CustomForms?formDataId={formDataId}

Get a custom form by custom form id

GET api/Genres/{genreId}/CustomForm

Get the custom form for a specific genre Id

GET api/Performances/{performanceId}/CustomForm

Get the custom form for a specific performance Id

GET api/Shows/{showId}/CustomForm

Get the custom form for a specific show Id

GET api/Spaces/{spaceId}/CustomForm

Get the custom form for a specific space Id

GET api/Venues/{venueId}/CustomForm

Get the custom form for a specific venue Id

EcwidToken

This endpoint returns an ecwid SSO token for a given session id, signed using a pre-shared secret

APIDescription
GET api/EcwidToken

Packages

APIDescription
GET api/Packages/{id}

Get a specific package by Id

Prices

Returns the price for a given product.

APIDescription
GET api/Prices?productId={productId}

Get prices for a product. The return object is has prices, fees and donations, each of which is a dictionary of dictionaries. The first key is the PriceBandId, the second key is the DiscountId (Concession Type).

Products

Products are the things you are selling, whether they are tickets, memberships, donations or merchandise. Products may be associated with a Performance, Show etc. but may not be. For example, a donation product may not be associated with any other folder. Products may be but do not have to be ticket. Tickets are simply products with (optional) seating plans, extra stock control functionality and are associated with a performance.

APIDescription
GET api/Products/{id}

Get a specific product by Id

GET api/Products?folderId={folderId}&performanceId={performanceId}&showId={showId}&genreId={genreId}&spaceId={spaceId}&venueId={venueId}&fromDate={fromDate}&toDate={toDate}&page={page}&pageSize={pageSize}

Get products optionally paged and filtered by folder, performnace, show, genre, space, venue and dates

Quantities

Product Quantities are required to display the appropriate call to action and status on products - "Sold Out", "Limited Availability", etc.

APIDescription
GET api/Quantities?productId={productId}

Get quantities for a product

Seatplan

The Seat Plan returns information about the layout and seats for a given product.

APIDescription
GET api/Seatplan?productId={productId}

Get seating plan for a product

Session

All API operations involving baskets require a session Id. Getting data about performances, shows, etc should not require a session Id and return information as if you were a member of the public without a session id. If you do authenticate, e.g. by logging in as an account which has a membership, folders which are on sale to members only will be visible, and any prices returned will be the member prices.

APIDescription
PUT api/Session

If called without a sessionRequest object this will create a new placeholder session which is not logged in. Items can be added to the basket for this session, and then the user can log in later. If called with a sessionRequest and a SessionId in the headers, it will log in an existing session.

DELETE api/Session

Ends the current session

User

The user should be the customer interacting with the site.

APIDescription
PUT api/User

Creates a new user

GET api/User?userId={userId}

Get the User details for the currently logged in session. If the UserId does not match the request session id, throws an error.

UserStatuses

Get the user statuses for the currently logged in session. If the UserId does not match the request session id, throws an error.

APIDescription
GET api/UserStatuses?userId={userId}

No documentation available.