Hire Space is the UK’s leading venue marketplace, revolutionising the way people find and book venues. We help people create memorable events by putting the perfect venues at their fingertips.
We're a growing team of ambitious,talented and passionate individuals who enjoy working in an exciting and collaborative environment that encourages innovation and contribution from everyone.
We take on a single placement student every year and are currently looking for one to start in June 2016. We are looking for someone with experience in some of these areas:
- .Net / ASP.Net / C#
- Meteor JS
- Full Stack Development
- Angular JS
If you think you've got what it takes to work at one of London's top start-ups then send your CV to will@hirespace.com.
We are presenting a prize to a team for the best use of our API
- Console Log Recognition: Have all your names printed on 1,000,000 consoles.
- Amazon Giftcards: £50 per team member
- Invite to a free event: Tickets for each member of your team to attend one of our legendary venue showcases. Champagne at Tower of London? Cocktails at Shoreditches latest most trendy venue?
- Lots of Stickers for everyone!
- TShirts
We want you to create awesome stuff with our data as fast as possible, so we've made it super easy for you to access our API. All it requires is a Basic Authentication header with each request:
Authorization: Basic aGFja2tpbmdzOlRuMllXaWRTejNLTWlTTjJN
We've added a little JS framework to use our API to get you started! Just drop https://github.com/hirespace/HackKings/blob/master/app.js into your project, reference it and start accessing our API straight away!
How do you use it?
There will be a global HireSpace object which has 7 methods for you to use:
HireSpace.Search(searchObject, callback)
HireSpace.GetUsage(usageId, callback)
HireSpace.GetSpace(spaceId, callback)
HireSpace.GetVenue(venueId, callback)
HireSpace.GetAllUsages(callback)
HireSpace.GetAllSpaces(callback)
HireSpace.GetAllVenues(callback)
Each callback returns a single data parameter which consists of the return object which are all below
We have several possible end points for you all to use. All of the endpoints except for Search have a GetAll endpoint and a singular endpoint which all take an id. We have a lot of data and so querying all usages for example isn't recommended, but we use a special query filtering tool called OData which you can read more about down below. Also remember to add the above authentication header in with each request, otherwise you'll get back a 401 Unauthorised status code.
You can query all our 4000+ venues or query just one by using the venue id which you may possibly get from search, spaces or usages.
HTTP GET
https://hackkings.hirespace.com/Api/Venues/
https://hackkings.hirespace.com/Api/Venues/{id}
We have over 8000 spaces, all have a parent venue and most have children usages.
HTTP GET
https://hackkings.hirespace.com/Api/Spaces/
https://hackkings.hirespace.com/Api/Spaces/{id}
Lastly we have just a little over 17,000 usages, so I'd recommend not getting all the usages and parsing every single one individually. You can get a set of usages from a space.
HTTP GET
https://hackkings.hirespace.com/Api/Usages/
https://hackkings.hirespace.com/Api/Usages/{id}
Search is a very special endpoint. We use a form of elastic search on the server called Lucene.Net which is the .Net port of the Java version and we index all our venues on a daily basis to get the most up-to-date searches.
HTTP POST
Content-Type: application/json
https://hackkings.hirespace.com/Api/Search/
This endpoint takes a JSON body like so:
{
"city": "1",
"maxPrice": 2000
}
Search has a LOT of available filters with none required. All can be used like the example above, just a JSON object with a key and value. The key being the filter from the table below.
| Filter | Type | Description |
|---|---|---|
| CityId | int | The city id to search in (See below for possible values) |
| SearchTerm | string | Type of venue to search for (See below for possible values) |
| Capacity | int | The maximum amount of people the venue can hold |
| CapacityTypeId | string | The id of the capacity (See below for possible values) |
| Longitude | decimal | The centre point for the search |
| Latitude | decimal | The centre point for the search |
| Radius | int | The distance around the centre point in miles to search in |
| MinimumPrice | int | The minimum price that a venue can be hired for |
| MaximumPrice | int | The maximum price that a venue can be hired for |
| ExternalCatering | bool | Whether you can use your own caterer |
| ExternalAlcohol | bool | Whether you can bring your own alcohol |
| HasVenueCatering | bool | Whether the venue has their own caterers which you can use |
| HasKitchenette | bool | Whether there is a small kitchen you can use |
| HasKitchen | bool | Whether there is a larger kitchen you can use |
| HasCateringEquipment | bool | Whether there is catering equipment you can use |
| HasSpaceForEquipment | bool | Whether there is space to bring your own equipment |
| CanProvideHalal | bool | Whether the venue can provide Halal food |
| CanProvideKosher | bool | Whether the venue can provide Kosher food |
| Accommodation | bool | Whether the venue can accommodate guests |
| ParkingSpaces | bool | Whether the venue has parking available |
| HasSisabledAccess | bool | Whether the venue has disabled access |
| HasOutsideSpace | bool | Whether the venue has outside space |
| HasStorageSpace | bool | Whether the venue has storage space |
| HasWifi | bool | Whether the venue has WiFi available |
| HasWeddingLicence | bool | Whether the venue has a wedding licence |
| HasAlcoholLicence | bool | Whether the venue has an alcohol licence |
| HasTENsLicense | bool | Whether the venue has a TENs licence |
| FloorSpace | decimal | The venues floor space |
| Height | decimal | The venues height |
| FloorSpaceInSqMetres | bool | Whether the floor space is in metres |
| HeightInMetres | bool | Whether the height is in metres |
| IsPrime | bool | Whether the venue is prime |
| IsPartner | bool | Whether the venue is partner |
| IsNew | bool | Whether this is a new venue |
On the Api/Venues, Api/Spaces and Api/Usages endpoints, you can add OData queries to further filter the infomation by any field, sort the data, skip, top and do much more. You can view a detailed document of how to do this here: https://msdn.microsoft.com/en-gb/library/gg309461.aspx
But here are a couple examples to get you started:
This will skip the first 10 venues and get the next 10 venues:
HTTP GET
https://hackkings.hirespace.com/Api/Venues?$skip=10&$top=10This request would get all the venues that are located in Soho
HTTP GET
https://hackkings.hirespace.com/Api/Venues?$filter=Locality eq 'Soho'You can $filter by any field you see in the data structures below, as well as $orderby and $select them. These OData queries will not work on the endpoints that have an id attached to the end of them. You can see how this too becomes a powerful search tool, but it can also be quite costly in terms of time depending on the endpoint.
Here is a list of the data structures that will be returned from each endpoint. Each property will have the data type, a short description of the property and whether or not it may be null. Properties that are also objects will also have an extra properties field which contains the child properties along with their type and whatnot.
This is the schema of the Venues data structure. This is what the single venues endpoint will return. The multiple venues endpoint will return an array of this object.
This is the schema of the Spaces data structure. This is what the single spaces endpoint will return. The multiple spaces endpoint will return an array of this object.
This is the schema of the Usages data structure. This is what the single usages endpoint will return. The multiple usages endpoint will return an array of this object.
This is the schema of Search data structure. This is what the seatch endpoint will return. It has a maximum of 300 search results along with the initial query and any search assumptions.
This is a list of the current live cities which contain venues. You would most likely be using the City Id to referrence a city in queries.
| City Name | City ID | Latitude | Longitude |
|---|---|---|---|
| London | 1 | -0.1015987 | 51.5286416 |
| Manchester | 2 | -2.241561 | 53.483527 |
| Liverpool | 3 | -2.9705843 | 53.4066048 |
| Birmingham | 4 | -1.8636315 | 52.4774376 |
| All UK | 14 | -0.9281521 | 52.7439863 |
A Venue, Space and Usage all have a Status property which refers to one of these values.
| Publish Status | Name | Description |
|---|---|---|
| 1 | Unpublished | This is a new profile which hasn't been submitted for approval yet |
| 2 | Unapproved | This is a profile that is waiting for approval by a member of the Hire Space team |
| 3 | Published | This is a live profile on the website |
| 4 | Dormant | This profile is a profile from a venue that we are no longer working with and won't be any time soon |
| 5 | Deleted | This profile will never be seen again |
A venue can buy either of our promotional packages, Prime or Partner. This is how we store whether they have them.
| Promo Status | Name | Description |
|---|---|---|
| 0 | None | No active promotion |
| 1 | Applied | There is a scheduled promotion |
| 2 | Active | There is currently an active promotion |
When using the search end point, we have a pre-defined list of search terms that get applied to venues for easier search. The list below is the current search term list, you can use them in the searchTerm field when calling the search endpoint to get more accurate results back.
A venue can state how flexible their pricing is using the values below.
| Price Strictness | Name |
|---|---|
| 1 | Rough Guide |
| 2 | Negotiatiable |
| 3 | Fixed Price |
Each image is resized multiple times using these ratios. Not all images have every ratio available and so you should check the SuitabilityForSizes property in the Usages data struture.
| Name | Label | Minimum Ratio Width to Height | Maximum Ratio Width to Height |
|---|---|---|---|
| Square | sq | 1 | 1 |
| Landscape | ls | 1.5 | 1.5 |
| Portrait | pt | 0.66 | 0.66 |
| Original Constrained | oc | 0.5 | 2 |
| Banner | ba | 2.4 | 2.4 |
Each image is also resized multiple times using these different sizes. Again, not all images have every size available and so you should check the SuitabilityForSizes property in the Usages data struture.
| Name | Label | Destination Width (in px) |
|---|---|---|
| Extra Small | xs | 75 |
| Small Medium | sm | 150 |
| Large | l | 320 |
| Extra Large | xl | 400 |
| Extra Extra Extra Large | xxxl | 900 |
| Retina Extra Large | rxl | 1200 |
| Retina Extra Extra Large | rxxl | 1600 |
A price will apply to certain recurrence days. We store these as flags and they can be combined by adding the flags together as you can see in the table below. These are the pre-defiend ones which we allow the user to select.
| Days | Name |
|---|---|
| 0 | None |
| 1 | Monday |
| 2 | Tuesday |
| 4 | Wednesday |
| 8 | Thursday |
| 16 | Friday |
| 32 | Saturday |
| 64 | Sunday |
| 31 | Weekdays |
| 96 | Weekends |
| 79 | Sunday - Thursday |
| 48 | Friday & Saturday |
| 127 | Everyday |
This is how flexible a single price is, comapred to the PriceStrictness which defines the strictness for the whole venue.
| Price Classification | Name |
|---|---|
| 0 | Fixed Price |
| 1 | Price is From |
| 2 | Price Range |
This defines whether a price is for a time period or per delegate. This is usually almost always Time except for when the PricingStructure is a delegate package or a party package,
| Delegate Type | Name |
|---|---|
| 1 | Time |
| 2 | Delegate |
A price can be for purely just the venue hire, a minimum spend or maybe a combination.
| Structure Type | Name |
|---|---|
| 1 | Venue Fee |
| 2 | Minimum Spend |
| 3 | Venue Fee & Minimum Spend |
| 4 | Delegate Package |
| 5 | Party Package |
This defines what general period a price applies too.
| Time Type | Name |
|---|---|
| 2 | Hour |
| 3 | Day |
| 4 | Week |
| 5 | Month |
| 6 | Morning |
| 7 | Afternoon |
| 8 | Evening |
This defines different types of capacities
| Capacity Id | Name |
|---|---|
| 1 | Boardroom |
| 2 | Buffet |
| 3 | Cabaret |
| 4 | Classroom |
| 5 | Dining |
| 6 | Dinner Dance |
| 7 | Reception |
| 8 | Standing |
| 9 | Theatre |
| 10 | U-Shaped |
| 11 | Wedding |
All of our images from our CDN are all available to use, an image is linked to a Usage as shown in the Usages data structure above. All you need to get an image is the UsageId, FileName, ImageSize and the ImageRatio, all of which can be found above. In the usages data structure, there is a list of the suitable image ratio and size combinations, this states whether a certain combination is available to use.
Our image CDN url is: https://az413805.vo.msecnd.net/spaces
The actual image url is in this format:
<CDN Url>/<ImageRatio>-<ImageSize>/<UsageId>/<FileName>
For example:
https://az413805.vo.msecnd.net/spaces/oc-rxl/11271/ih34ukdsn42.jpg
https://az413805.vo.msecnd.net/spaces - This is the CDN Url
oc-rxl - This is the Image Ratio and the Image Size
11271 - This is the Usage Id
ih34ukdsn42.jpg - This is the File Name (This can be found in the Usages data structure UsageImages > Name)
Will and Tom will be walking around Hack Kings in Hire Space t-shirts, come find us anytime, we'll always be availble for technical support, working at Hire Space and general chit chat.
Or you can find us in the Hack Kings slack team in the #hirespace channel, or dm us @tom-hirespace
Or by email at: