Repository: justeat/JustEat.RecruitmentTest
Branch: main
Commit: c9b01eba2e52
Files: 16
Total size: 134.7 KB
Directory structure:
gitextract_9undk0tk/
├── LICENSE
├── Product-Research/
│ ├── Test.UI.Engineer.ProductResearch.md
│ └── restaurant-search-results.md
├── README.md
├── Tech.Associate.Engineer.md
├── Test.Automation.Engineer.md
├── Test.DevOps.Engineer.md
├── Test.SOC.Engineer.md
├── Test.WebUI.Engineering.md
└── data-and-ai/
└── data-engineer/
├── .gitignore
├── README.md
├── python/
│ ├── file-splitter.sh
│ └── file_splitter/
│ └── __main__.py
└── scala/
├── build.sbt
├── project/
│ └── build.properties
└── src/
└── main/
└── scala/
└── Main.scala
================================================
FILE CONTENTS
================================================
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
https://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2017 Just Eat
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Product-Research/Test.UI.Engineer.ProductResearch.md
================================================
UI Engineer (Product Research) Tech Test
========================================
Thank you for taking the time to do our technical test. It consists of two parts:
* [A coding test](#coding-test)
* [A few questions](#technical-questions)
In order to avoid bounced emails we would like you to submit your results by uploading the relevant zip file to a shared **Google Drive** folder. In order to obtain the URL for this folder, please supply your **Gmail** or **Google-based email address** to either your agent or the Just Eat member of staff who assigned you the test.
Please make this a **single** zip file named `{yourname}-{role-applied-for}.zip` containing:
1. one folder containing the coding test
2. a single markdown file with the answers to the questions
## Coding Test
The test is simple, just:
* Create an HTML file (and any additional CSS/JavaScript files you need) that does something with the JSON in [this sample of restaurant search results](restaurant-search-results.md).
The test is open-ended, but please don't feel you need to spend more than an hour on it. We're looking for code that is readable and that shows off your abilities, but most of all we want to see something interesting.
## Questions
* What would you add to your test if you had more time?
* What's the best thing added to JavaScript in the last few years?
* What's a feature you wish existed when you're ordering takeaway online?
* What JSON would describe you?
Thanks for your time, we look forward to hearing from you!
================================================
FILE: Product-Research/restaurant-search-results.md
================================================
```json
{
"OpenRestaurants": [
{
"Id": 11245,
"Name": "Barbican Express Pizza",
"Address": {
"FirstLine": "131 Whitecross Street",
"City": "London",
"Postcode": "EC1Y 8JL",
"Latitude": 51.5233,
"Longitude": -0.093295
},
"DefaultDisplayRank": 0,
"SeoName": "barbicanexpresspizza",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/11245.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 512,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 42856,
"Name": "O' My Sushi",
"Address": {
"FirstLine": "21 Clerkenwell Road",
"City": "London",
"Postcode": "EC1M 5RD",
"Latitude": 51.52251,
"Longitude": -0.101674
},
"DefaultDisplayRank": 1,
"SeoName": "omysushi-ec1m",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/42856.gif",
"IsCollection": false,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 0.8,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 14,
"IsNew": false,
"RatingDetails": {
"Count": 103,
"StarRating": 5
},
"OfferPercent": 20
},
{
"Id": 52759,
"Name": "Wok Away @ Noodle Express",
"Address": {
"FirstLine": "6-7 Albemarle Way",
"City": "London",
"Postcode": "EC1V 4JB",
"Latitude": 51.522824,
"Longitude": -0.102785
},
"DefaultDisplayRank": 2,
"SeoName": "wok-away--noodle-express-finsbury",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/52759.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
},
{
"Name": "Oriental",
"SeoName": "oriental"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.4,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": true,
"RatingDetails": {
"Count": 3,
"StarRating": 6
},
"OfferPercent": 0
},
{
"Id": 52391,
"Name": "Hello Sushi @ N1 Grill",
"Address": {
"FirstLine": "6 Chapel Market",
"City": "London",
"Postcode": "N1 9EZ",
"Latitude": 51.533552,
"Longitude": -0.109981
},
"DefaultDisplayRank": 3,
"SeoName": "hello-sushi-n1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/52391.gif",
"IsCollection": false,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": true,
"RatingDetails": {
"Count": 31,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 52229,
"Name": "Oriental House",
"Address": {
"FirstLine": "196 Hackney Road",
"City": "London",
"Postcode": "E2 7QL",
"Latitude": 51.530519,
"Longitude": -0.07278
},
"DefaultDisplayRank": 4,
"SeoName": "oriental-house-bethnal-green",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/52229.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
},
{
"Name": "Thai",
"SeoName": "thai"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": true,
"RatingDetails": {
"Count": 139,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 52512,
"Name": "Magic Wok Original @ N1 Grill",
"Address": {
"FirstLine": "6 Chapel Market",
"City": "London City",
"Postcode": "N1 9EZ",
"Latitude": 51.533552,
"Longitude": -0.109981
},
"DefaultDisplayRank": 5,
"SeoName": "magic-wok-original-new-islington",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/52512.gif",
"IsCollection": false,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
},
{
"Name": "Oriental",
"SeoName": "oriental"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 13,
"IsNew": true,
"RatingDetails": {
"Count": 16,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 52683,
"Name": "Cafe La Maison",
"Address": {
"FirstLine": "26-28 Brick Lane",
"City": "London",
"Postcode": "E1 6RF",
"Latitude": 51.518025,
"Longitude": -0.070987
},
"DefaultDisplayRank": 6,
"SeoName": "cafe-la-maison-aldgate",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/52683.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Desserts",
"SeoName": "desserts"
},
{
"Name": "Sandwiches",
"SeoName": "sandwiches"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 20,
"IsNew": true,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 25162,
"Name": "Kenza Restaurant & Lounge",
"Address": {
"FirstLine": "10 Devonshire Square",
"City": "London",
"Postcode": "EC2M 4YP",
"Latitude": 51.516582,
"Longitude": -0.078355
},
"DefaultDisplayRank": 7,
"SeoName": "kenza-ec2m",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/25162.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Lebanese",
"SeoName": "lebanese"
},
{
"Name": "Moroccan",
"SeoName": "Moroccan"
}
],
"OpeningTime": "2015-07-13T17:00:00Z",
"DriveDistance": 1.2,
"DriveInfoCalculated": true,
"DeliveryCost": 2,
"MinimumDeliveryValue": 20,
"IsNew": false,
"RatingDetails": {
"Count": 49,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 47857,
"Name": "Pronto",
"Address": {
"FirstLine": "Unit M 100 Greenfield Road",
"City": "London",
"Postcode": "E1 1EJ",
"Latitude": 51.516066,
"Longitude": -0.065607
},
"DefaultDisplayRank": 8,
"SeoName": "pronto-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/47857.gif",
"IsCollection": false,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Healthy",
"SeoName": "healthy"
},
{
"Name": "Italian",
"SeoName": "italian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 184,
"StarRating": 5.5
},
"OfferPercent": 20
},
{
"Id": 20603,
"Name": "Chamisse Lebanese Restaurant & Grill",
"Address": {
"FirstLine": "55 Grays Inn Road",
"City": "London",
"Postcode": "WC1X 8PP",
"Latitude": 51.522053,
"Longitude": -0.114061
},
"DefaultDisplayRank": 9,
"SeoName": "chamisse-wc1x",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/20603.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Lebanese",
"SeoName": "lebanese"
},
{
"Name": "Middle Eastern",
"SeoName": "middle-eastern"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 386,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 32192,
"Name": "Royal Kitchen",
"Address": {
"FirstLine": "54 Aldgate High Street",
"City": "London",
"Postcode": "EC3N 1AL",
"Latitude": 51.514089,
"Longitude": -0.074413
},
"DefaultDisplayRank": 10,
"SeoName": "royalkitchen-ec3n",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/32192.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
},
{
"Name": "Peri Peri",
"SeoName": "peri-peri"
}
],
"OpeningTime": "2015-07-13T17:30:00Z",
"DriveDistance": 1.3,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 22,
"StarRating": 5.5
},
"OfferPercent": 0
},
{
"Id": 51123,
"Name": "Oishi Sushi",
"Address": {
"FirstLine": "106 Hoxton Street",
"City": "London",
"Postcode": "N1 6SG",
"Latitude": 51.531024,
"Longitude": -0.079999
},
"DefaultDisplayRank": 11,
"SeoName": "oishi-sushi-islington",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/51123.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 431,
"StarRating": 5.5
},
"OfferPercent": 25
},
{
"Id": 34992,
"Name": "Kitchen Dhaanya",
"Address": {
"FirstLine": "106 Hoxton Street",
"City": "London",
"Postcode": "N1 6SG",
"Latitude": 51.531024,
"Longitude": -0.079999
},
"DefaultDisplayRank": 12,
"SeoName": "kitchendhanya-n1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/34992.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
},
{
"Name": "Bangladeshi",
"SeoName": "bangladeshi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 489,
"StarRating": 5
},
"OfferPercent": 30
},
{
"Id": 776,
"Name": "Best American Pizza",
"Address": {
"FirstLine": "16A Pitfield Street",
"City": "Hackney",
"Postcode": "N1 6EY",
"Latitude": 51.527134,
"Longitude": -0.083536
},
"DefaultDisplayRank": 13,
"SeoName": "bestamerican",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/776.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 898,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 12171,
"Name": "Fusion Grill",
"Address": {
"FirstLine": "233 Waterloo Road",
"City": "London",
"Postcode": "SE1 8XH",
"Latitude": 51.499694,
"Longitude": -0.106587
},
"DefaultDisplayRank": 14,
"SeoName": "perfect-fried-chiken-se1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/12171.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Kebab",
"SeoName": "kebabs"
},
{
"Name": "Grill",
"SeoName": "grill"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 12,
"IsNew": false,
"RatingDetails": {
"Count": 121,
"StarRating": 4.5
},
"OfferPercent": 20
},
{
"Id": 39247,
"Name": "Kennington Tandoori",
"Address": {
"FirstLine": "313 Kennington Road",
"City": "London",
"Postcode": "SE11 4QE",
"Latitude": 51.487615,
"Longitude": -0.110904
},
"DefaultDisplayRank": 15,
"SeoName": "kenningtontandoori-se11",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/39247.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
},
{
"Name": "Grill",
"SeoName": "grill"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.4,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 281,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 19789,
"Name": "After Taste",
"Address": {
"FirstLine": "97 Newington Butts",
"City": "Elephant & Castle",
"Postcode": "SE1 6SF",
"Latitude": 51.492601,
"Longitude": -0.100612
},
"DefaultDisplayRank": 16,
"SeoName": "aftertastesw6",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/19789.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 12,
"IsNew": false,
"RatingDetails": {
"Count": 246,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 13047,
"Name": "Takari",
"Address": {
"FirstLine": "22 Drury Lane, Covent Garden",
"City": "London",
"Postcode": "WC2B 5RH",
"Latitude": 51.515006,
"Longitude": -0.123218
},
"DefaultDisplayRank": 17,
"SeoName": "takariwc2b",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/13047.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
},
{
"Name": "Curry",
"SeoName": "curry"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 1.1,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 395,
"StarRating": 5
},
"OfferPercent": 25
},
{
"Id": 19798,
"Name": "The Sushi Chef",
"Address": {
"FirstLine": "1 Kennington Lane",
"City": "London",
"Postcode": "SE11 4RG",
"Latitude": 51.491138,
"Longitude": -0.103527
},
"DefaultDisplayRank": 18,
"SeoName": "thesushichefse11",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/19798.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.4,
"DriveInfoCalculated": true,
"DeliveryCost": 2.5,
"MinimumDeliveryValue": 25,
"IsNew": false,
"RatingDetails": {
"Count": 204,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 41413,
"Name": "Naha Sushi",
"Address": {
"FirstLine": "62 Cleveland Way",
"City": "London",
"Postcode": "E1 4UF",
"Latitude": 51.522144,
"Longitude": -0.053056
},
"DefaultDisplayRank": 19,
"SeoName": "nahasushi-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/41413.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Sushi",
"SeoName": "sushi"
},
{
"Name": "Japanese",
"SeoName": "japanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 14,
"IsNew": false,
"RatingDetails": {
"Count": 619,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 18130,
"Name": "You Me Sushi",
"Address": {
"FirstLine": "180 Grays Inn Road",
"City": "London",
"Postcode": "WC1X 8EW",
"Latitude": 51.522945,
"Longitude": -0.114142
},
"DefaultDisplayRank": 20,
"SeoName": "YouMeSushiwc1x",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/18130.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 166,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 5569,
"Name": "Hiba Lebanese Restaurant",
"Address": {
"FirstLine": "113 High Holborn",
"City": "London",
"Postcode": "WC1V 6JQ",
"Latitude": 51.517856,
"Longitude": -0.119829
},
"DefaultDisplayRank": 21,
"SeoName": "hiba-lebanese-southwark",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/5569.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Lebanese",
"SeoName": "lebanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 222,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 5377,
"Name": "Forno Pizza",
"Address": {
"FirstLine": "145-147 Lambeth Walk",
"City": "Lambeth",
"Postcode": "SE11 6EE",
"Latitude": 51.492695,
"Longitude": -0.116457
},
"DefaultDisplayRank": 22,
"SeoName": "forno-pizza-lambeth",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/5377.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.4,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 8,
"IsNew": false,
"RatingDetails": {
"Count": 623,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 777,
"Name": "Kebab Land Fried Chicken",
"Address": {
"FirstLine": "16A Pitfield Street",
"City": "London",
"Postcode": "N1 6EY",
"Latitude": 51.527134,
"Longitude": -0.083536
},
"DefaultDisplayRank": 23,
"SeoName": "kebabland-n1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/777.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chicken",
"SeoName": "chicken"
},
{
"Name": "Kebab",
"SeoName": "kebabs"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 598,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 27687,
"Name": "Papa Johns",
"Address": {
"FirstLine": "65 Farringdon Road",
"City": "London",
"Postcode": "EC1M 3JB",
"Latitude": 51.520418,
"Longitude": -0.106319
},
"DefaultDisplayRank": 24,
"SeoName": "papajohns-ec1m",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/27687.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 0.8,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 76,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 8598,
"Name": "Adiva",
"Address": {
"FirstLine": "43a Commercial Street",
"City": "London",
"Postcode": "E1 6BD",
"Latitude": 51.517654,
"Longitude": -0.074116
},
"DefaultDisplayRank": 25,
"SeoName": "adiva",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/8598.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Turkish",
"SeoName": "turkish"
},
{
"Name": "Lebanese",
"SeoName": "lebanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 560,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 1257,
"Name": "Neds Noodle Bar SE1",
"Address": {
"FirstLine": "3E Belvedere Road",
"City": "London",
"Postcode": "SE1 7GQ",
"Latitude": 51.502246,
"Longitude": -0.117605
},
"DefaultDisplayRank": 26,
"SeoName": "nedsnoodlebarse1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/1257.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
},
{
"Name": "Japanese",
"SeoName": "japanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 1,
"MinimumDeliveryValue": 11,
"IsNew": false,
"RatingDetails": {
"Count": 128,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 22548,
"Name": "Tops Pizza",
"Address": {
"FirstLine": "86 Borough Road",
"City": "London",
"Postcode": "SE1 1DN",
"Latitude": 51.499,
"Longitude": -0.098692
},
"DefaultDisplayRank": 27,
"SeoName": "topspizza-se1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/22548.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 9.99,
"IsNew": false,
"RatingDetails": {
"Count": 65,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 51392,
"Name": "Yummy Sushi",
"Address": {
"FirstLine": "48 Brick Lane",
"City": "London",
"Postcode": "E1 6RF",
"Latitude": 51.518025,
"Longitude": -0.070987
},
"DefaultDisplayRank": 28,
"SeoName": "yummy-sushi-aldgate",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/51392.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Sushi",
"SeoName": "sushi"
},
{
"Name": "Japanese",
"SeoName": "japanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 14,
"IsNew": false,
"RatingDetails": {
"Count": 106,
"StarRating": 5
},
"OfferPercent": 20
},
{
"Id": 525,
"Name": "Pizza 2 Go",
"Address": {
"FirstLine": "15 Tabard Street",
"City": "London",
"Postcode": "SE1 4LA",
"Latitude": 51.500717,
"Longitude": -0.091445
},
"DefaultDisplayRank": 29,
"SeoName": "pizza2go",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/525.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 6,
"IsNew": false,
"RatingDetails": {
"Count": 551,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 50185,
"Name": "Shanghai Express @ ABACUS",
"Address": {
"FirstLine": "186 Hackney Road",
"City": "London",
"Postcode": "E2 7PA",
"Latitude": 51.527796,
"Longitude": -0.076184
},
"DefaultDisplayRank": 30,
"SeoName": "shanghai-express--abacus-bethnal-green",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/50185.gif",
"IsCollection": false,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
},
{
"Name": "Thai",
"SeoName": "thai"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 319,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 51352,
"Name": "Jus Jerk",
"Address": {
"FirstLine": "66 Leather Lane",
"City": "London",
"Postcode": "EC1N 7TR",
"Latitude": 51.520446,
"Longitude": -0.109748
},
"DefaultDisplayRank": 31,
"SeoName": "jus-jerk-london",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/51352.gif",
"IsCollection": false,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chicken",
"SeoName": "chicken"
},
{
"Name": "Caribbean",
"SeoName": "caribbean"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 0.7,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 38,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 45540,
"Name": "Masago Sushi",
"Address": {
"FirstLine": "78 Wentworth Street",
"City": "London",
"Postcode": "E1 7SA",
"Latitude": 51.516996,
"Longitude": -0.07184
},
"DefaultDisplayRank": 32,
"SeoName": "masagosushi-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/45540.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 58,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 15223,
"Name": "Azka Turkish Meze",
"Address": {
"FirstLine": "269 Stepney Way",
"City": "London",
"Postcode": "E1 3DH",
"Latitude": 51.516962,
"Longitude": -0.046385
},
"DefaultDisplayRank": 33,
"SeoName": "Azkaturkishmeze",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/15223.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Turkish",
"SeoName": "turkish"
},
{
"Name": "Grill",
"SeoName": "grill"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 464,
"StarRating": 5
},
"OfferPercent": 20
},
{
"Id": 33291,
"Name": "Leo's Lebanese Grill",
"Address": {
"FirstLine": "57 Baylis Road",
"City": "London",
"Postcode": "SE1 7AU",
"Latitude": 51.500479,
"Longitude": -0.110675
},
"DefaultDisplayRank": 34,
"SeoName": "lebanesegrill-se1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/33291.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Lebanese",
"SeoName": "lebanese"
},
{
"Name": "Kebab",
"SeoName": "kebabs"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 296,
"StarRating": 4.5
},
"OfferPercent": 20
},
{
"Id": 21969,
"Name": "US Way Pizza",
"Address": {
"FirstLine": "196 Hackney Road",
"City": "London",
"Postcode": "E2 7QL",
"Latitude": 51.530509,
"Longitude": -0.072754
},
"DefaultDisplayRank": 35,
"SeoName": "uswaypizza-e2",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/21969.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
},
{
"Name": "Burgers",
"SeoName": "burgers"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 12,
"IsNew": false,
"RatingDetails": {
"Count": 986,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 21278,
"Name": "Oriental Garden",
"Address": {
"FirstLine": "113a Kennington Road",
"City": "London",
"Postcode": "SE11 6SF",
"Latitude": 51.4942,
"Longitude": -0.110488
},
"DefaultDisplayRank": 36,
"SeoName": "orientalgarden-se11",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/21278.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.4,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 386,
"StarRating": 4.5
},
"OfferPercent": 20
},
{
"Id": 25400,
"Name": "Pepe's Piri Piri",
"Address": {
"FirstLine": "82-84 Brick Lane",
"City": "London",
"Postcode": "E1 6RL",
"Latitude": 51.51952,
"Longitude": -0.071647
},
"DefaultDisplayRank": 37,
"SeoName": "pepsperiperi-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/25400.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Chicken",
"SeoName": "chicken"
},
{
"Name": "American",
"SeoName": "american"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 12,
"IsNew": false,
"RatingDetails": {
"Count": 299,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 47815,
"Name": "Yakitori-Ya",
"Address": {
"FirstLine": "120 Whitechapel Road",
"City": "London",
"Postcode": "E1 1JE",
"Latitude": 51.517951,
"Longitude": -0.063742
},
"DefaultDisplayRank": 38,
"SeoName": "yakitori-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/47815.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Sushi",
"SeoName": "sushi"
},
{
"Name": "Grill",
"SeoName": "grill"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 49,
"StarRating": 4.5
},
"OfferPercent": 20
},
{
"Id": 23573,
"Name": "Handmade Sushi (est 1982)",
"Address": {
"FirstLine": "339 Euston Road",
"City": "Regents Park",
"Postcode": "NW1 3AD",
"Latitude": 51.52435,
"Longitude": -0.139657
},
"DefaultDisplayRank": 39,
"SeoName": "handmadesushi-nw1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/23573.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Sushi",
"SeoName": "sushi"
},
{
"Name": "Japanese",
"SeoName": "japanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.7,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 38,
"IsNew": false,
"RatingDetails": {
"Count": 840,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 41731,
"Name": "Cafe Don Quixote",
"Address": {
"FirstLine": "101 Kingsway",
"City": "London",
"Postcode": "WC2B 6QU",
"Latitude": 51.516386,
"Longitude": -0.120106
},
"DefaultDisplayRank": 40,
"SeoName": "cafedonquixote-wc2b",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/41731.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.1,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 1,
"StarRating": 6
},
"OfferPercent": 0
},
{
"Id": 20670,
"Name": "Flying Fish Sushi",
"Address": {
"FirstLine": "85 Scoresby Street",
"City": "London",
"Postcode": "SE1 0XN",
"Latitude": 51.504278,
"Longitude": -0.103645
},
"DefaultDisplayRank": 41,
"SeoName": "flying-fish-sushi-se1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/20670.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Sushi",
"SeoName": "sushi"
},
{
"Name": "Japanese",
"SeoName": "japanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 58,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 20694,
"Name": "Poppy Hana",
"Address": {
"FirstLine": "168 Jamaica Road",
"City": "London",
"Postcode": "SE16 4RT",
"Latitude": 51.498216,
"Longitude": -0.062331
},
"DefaultDisplayRank": 42,
"SeoName": "poppyhana-se16",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/20694.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "2015-07-13T15:45:00Z",
"DriveDistance": 3.4,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 878,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 41764,
"Name": "Ninja Sushi",
"Address": {
"FirstLine": "17 Morland Richmond Road",
"City": "London",
"Postcode": "E8 3EY",
"Latitude": 51.542776,
"Longitude": -0.062429
},
"DefaultDisplayRank": 43,
"SeoName": "ninjasushi-e8",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/41764.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Sushi",
"SeoName": "sushi"
},
{
"Name": "Japanese",
"SeoName": "japanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 3.5,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 14,
"IsNew": false,
"RatingDetails": {
"Count": 316,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 31691,
"Name": "Limetree",
"Address": {
"FirstLine": "550 Kingsland Road",
"City": "London",
"Postcode": "E8 4AH",
"Latitude": 51.545212,
"Longitude": -0.075522
},
"DefaultDisplayRank": 44,
"SeoName": "limetree-e8",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/31691.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
},
{
"Name": "Bangladeshi",
"SeoName": "bangladeshi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 3.5,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 9,
"IsNew": false,
"RatingDetails": {
"Count": 931,
"StarRating": 5
},
"OfferPercent": 20
},
{
"Id": 1254,
"Name": "Papa John's Hoxton & City N1",
"Address": {
"FirstLine": "202 Hoxton Street, Hoxton and City",
"City": "London",
"Postcode": "N1 5LH",
"Latitude": 51.533396,
"Longitude": -0.079913
},
"DefaultDisplayRank": 45,
"SeoName": "papajohnshoxton",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/1254.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "American",
"SeoName": "american"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 168,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 37471,
"Name": "Hoi An",
"Address": {
"FirstLine": "48 Hanbury Street",
"City": "London",
"Postcode": "E1 5JL",
"Latitude": 51.520184,
"Longitude": -0.070999
},
"DefaultDisplayRank": 46,
"SeoName": "hoian-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/37471.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Vietnamese",
"SeoName": "vietnamese"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 87,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 14419,
"Name": "Mayva Oriental Cuisine",
"Address": {
"FirstLine": "149 Holloway Road",
"City": "London",
"Postcode": "N7 8LX",
"Latitude": 51.531711,
"Longitude": -0.111848
},
"DefaultDisplayRank": 47,
"SeoName": "mayvaorientalcuisine",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/14419.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 3.3,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 90,
"StarRating": 3.5
},
"OfferPercent": 20
},
{
"Id": 38540,
"Name": "Elite Peri Peri",
"Address": {
"FirstLine": "170 Jamaica Road",
"City": "London",
"Postcode": "SE16 4RT",
"Latitude": 51.498216,
"Longitude": -0.062331
},
"DefaultDisplayRank": 48,
"SeoName": "eliteperiperi-se16",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/38540.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Peri Peri",
"SeoName": "peri-peri"
},
{
"Name": "Chicken",
"SeoName": "chicken"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 3.4,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 12,
"IsNew": false,
"RatingDetails": {
"Count": 213,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 2067,
"Name": "Shikara",
"Address": {
"FirstLine": "65 Great Titchfield Street",
"City": "London",
"Postcode": "W1W 7PS",
"Latitude": 51.518876,
"Longitude": -0.140947
},
"DefaultDisplayRank": 49,
"SeoName": "shikara-w1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/2067.gif",
"IsCollection": false,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.5,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 12,
"IsNew": false,
"RatingDetails": {
"Count": 435,
"StarRating": 4.5
},
"OfferPercent": 20
},
{
"Id": 28143,
"Name": "Wrap It Up",
"Address": {
"FirstLine": "233 Strand",
"City": "London",
"Postcode": "WC2R 1DA",
"Latitude": 51.51345,
"Longitude": -0.112012
},
"DefaultDisplayRank": 50,
"SeoName": "wrap-it-up-wc2r",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/28143.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Mexican",
"SeoName": "mexican"
}
],
"OpeningTime": "2015-07-13T17:00:00Z",
"DriveDistance": 0.9,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 16,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 48080,
"Name": "Jasmine Garden SE1",
"Address": {
"FirstLine": "33 Bartholomew Street",
"City": "South East London",
"Postcode": "SE1 4AL",
"Latitude": 51.495328,
"Longitude": -0.088011
},
"DefaultDisplayRank": 51,
"SeoName": "jasmine-garden-se1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/48080.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Chinese",
"SeoName": "chinese"
},
{
"Name": "Thai",
"SeoName": "thai"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 113,
"StarRating": 3.5
},
"OfferPercent": 0
},
{
"Id": 206,
"Name": "City Pizza",
"Address": {
"FirstLine": "149 Holloway Road",
"City": "London",
"Postcode": "N7 8LX",
"Latitude": 51.549583,
"Longitude": -0.108682
},
"DefaultDisplayRank": 52,
"SeoName": "citypizza",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/206.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
},
{
"Name": "Burgers",
"SeoName": "burgers"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 3.3,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 327,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 17015,
"Name": "Curry Capital",
"Address": {
"FirstLine": "204 Brick Lane",
"City": "London",
"Postcode": "E1 6SA",
"Latitude": 51.524155,
"Longitude": -0.071364
},
"DefaultDisplayRank": 53,
"SeoName": "currycapitale1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/17015.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 5,
"StarRating": 4
},
"OfferPercent": 20
},
{
"Id": 44831,
"Name": "Noura Restaurant",
"Address": {
"FirstLine": "16 Hobart Place",
"City": "London",
"Postcode": "SW1W 0HH",
"Latitude": 51.498263,
"Longitude": -0.148183
},
"DefaultDisplayRank": 54,
"SeoName": "noura-sw1w",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/44831.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Lebanese",
"SeoName": "lebanese"
},
{
"Name": "Middle Eastern",
"SeoName": "middle-eastern"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 3.1,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 70,
"IsNew": false,
"RatingDetails": {
"Count": 20,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 42727,
"Name": "Go Chisou",
"Address": {
"FirstLine": "3 Princes Street",
"City": "London",
"Postcode": "W1B 2LE",
"Latitude": 51.514686,
"Longitude": -0.142688
},
"DefaultDisplayRank": 55,
"SeoName": "gochisou-w1b",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/42727.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.3,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 15,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 38298,
"Name": "Swift Pizza & Kebab House",
"Address": {
"FirstLine": "479 Cambridge Heath Road",
"City": "London",
"Postcode": "E2 9BU",
"Latitude": 51.533414,
"Longitude": -0.05752
},
"DefaultDisplayRank": 56,
"SeoName": "swiftkebabhouse-e2",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/38298.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Kebab",
"SeoName": "kebabs"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 166,
"StarRating": 4
},
"OfferPercent": 20
},
{
"Id": 36885,
"Name": "Handmade Sushi (Covent Garden)",
"Address": {
"FirstLine": "43 Endell Street, Covent Garden, Westminster",
"City": "London",
"Postcode": "WC2H 9BA",
"Latitude": 51.514521,
"Longitude": -0.124922
},
"DefaultDisplayRank": 57,
"SeoName": "home-made-sushi-wc2h",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/36885.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Sushi",
"SeoName": "sushi"
},
{
"Name": "Japanese",
"SeoName": "japanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 35,
"IsNew": false,
"RatingDetails": {
"Count": 31,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 103,
"Name": "Pizza Pizza",
"Address": {
"FirstLine": "479 Cambridge Heath Road",
"City": "Tower Hamlets",
"Postcode": "E2 9BU",
"Latitude": 51.533414,
"Longitude": -0.05752
},
"DefaultDisplayRank": 58,
"SeoName": "pizzapizza",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/103.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "2015-07-13T16:00:00Z",
"DriveDistance": 2.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 8,
"IsNew": false,
"RatingDetails": {
"Count": 594,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 530,
"Name": "Pizza Go Go SE16",
"Address": {
"FirstLine": "69 Southwark Park Road",
"City": "London",
"Postcode": "SE16 3TY",
"Latitude": 51.492908,
"Longitude": -0.070378
},
"DefaultDisplayRank": 59,
"SeoName": "pizzagogose16",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/530.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 3.4,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 7,
"IsNew": false,
"RatingDetails": {
"Count": 601,
"StarRating": 4.5
},
"OfferPercent": 20
},
{
"Id": 37744,
"Name": "Aldwych Cafe",
"Address": {
"FirstLine": "47 Aldwych",
"City": "London",
"Postcode": "WC2B 4DR",
"Latitude": 51.512642,
"Longitude": -0.119367
},
"DefaultDisplayRank": 60,
"SeoName": "aldwychcafe-wc2b",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/37744.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Sandwiches",
"SeoName": "sandwiches"
},
{
"Name": "Cakes",
"SeoName": "cakes"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.1,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 1,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 35730,
"Name": "Bon Appetit",
"Address": {
"FirstLine": "133 Leaman Street",
"City": "London",
"Postcode": "E1 8EY",
"Latitude": 51.511712,
"Longitude": -0.068763
},
"DefaultDisplayRank": 61,
"SeoName": "Bonappetit-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/35730.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Lebanese",
"SeoName": "lebanese"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 14.5,
"IsNew": false,
"RatingDetails": {
"Count": 22,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 48081,
"Name": "Red Planet Pizza SE1",
"Address": {
"FirstLine": "33 Bartholomew Street",
"City": "South East London",
"Postcode": "SE1 4AL",
"Latitude": 51.495328,
"Longitude": -0.088011
},
"DefaultDisplayRank": 62,
"SeoName": "red-planet-pizza-se1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/48081.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
},
{
"Name": "Italian",
"SeoName": "italian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 8,
"StarRating": 3.5
},
"OfferPercent": 0
},
{
"Id": 42316,
"Name": "H Chicken & Grill",
"Address": {
"FirstLine": "89 Long Lane",
"City": "London",
"Postcode": "SE1 4PH",
"Latitude": 51.500757,
"Longitude": -0.088936
},
"DefaultDisplayRank": 63,
"SeoName": "h-chickenandgrill-se1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/42316.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Kebab",
"SeoName": "kebabs"
},
{
"Name": "Chicken",
"SeoName": "chicken"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 22,
"StarRating": 3.5
},
"OfferPercent": 0
},
{
"Id": 5943,
"Name": "Sizzling Bombay",
"Address": {
"FirstLine": "132 Drummond Street",
"City": "Regents Park",
"Postcode": "NW1 2PA",
"Latitude": 51.526769,
"Longitude": -0.137944
},
"DefaultDisplayRank": 64,
"SeoName": "sizzling-bombay",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/5943.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
}
],
"OpeningTime": "2015-07-13T17:00:00Z",
"DriveDistance": 2.7,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 15,
"IsNew": false,
"RatingDetails": {
"Count": 54,
"StarRating": 4.5
},
"OfferPercent": 0
},
{
"Id": 51424,
"Name": "Mas Q Menos City",
"Address": {
"FirstLine": "70 Mark Lane",
"City": "London",
"Postcode": "EC3R 7LQ",
"Latitude": 51.511443,
"Longitude": -0.079799
},
"DefaultDisplayRank": 65,
"SeoName": "mas-q-menos-city-london",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/51424.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Spanish",
"SeoName": "spanish"
},
{
"Name": "Tapas",
"SeoName": "tapas"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 3861,
"Name": "Pizza Hotline",
"Address": {
"FirstLine": "157 Dulwich Road Herne Hill",
"City": "Dulwich",
"Postcode": "SE24 0NG",
"Latitude": 51.452776,
"Longitude": -0.103002
},
"DefaultDisplayRank": 66,
"SeoName": "pizza-hotline",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/3861.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
},
{
"Name": "Italian",
"SeoName": "italian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 5.2,
"DriveInfoCalculated": true,
"DeliveryCost": 5,
"MinimumDeliveryValue": 20,
"IsNew": false,
"RatingDetails": {
"Count": 263,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 44674,
"Name": "Nanis",
"Address": {
"FirstLine": "134 Great Portland Street",
"City": "London",
"Postcode": "W1W 6PX",
"Latitude": 51.520052,
"Longitude": -0.142499
},
"DefaultDisplayRank": 67,
"SeoName": "nanis-w1w",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/44674.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Breakfast",
"SeoName": "breakfast"
},
{
"Name": "Sandwiches",
"SeoName": "sandwiches"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.5,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 20,
"IsNew": false,
"RatingDetails": {
"Count": 32,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 11054,
"Name": "Barbican Express Indian",
"Address": {
"FirstLine": "131 Whitecross Street",
"City": "London",
"Postcode": "EC1Y 8JL",
"Latitude": 51.523291,
"Longitude": -0.093269
},
"DefaultDisplayRank": 68,
"SeoName": "barbicanexpress",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/11054.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Indian",
"SeoName": "indian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 71,
"StarRating": 4
},
"OfferPercent": 0
},
{
"Id": 42742,
"Name": "My Lunch Box - Collection Only",
"Address": {
"FirstLine": "6 Minories",
"City": "London",
"Postcode": "EC3N 1BJ",
"Latitude": 51.513597,
"Longitude": -0.075658
},
"DefaultDisplayRank": 69,
"SeoName": "mylunchbox-ec3n",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/42742.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Healthy",
"SeoName": "healthy"
},
{
"Name": "Sandwiches",
"SeoName": "sandwiches"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.3,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 51042,
"Name": "Runners Pizza",
"Address": {
"FirstLine": "161 New Kent Road",
"City": "LONDON",
"Postcode": "SE1 4AG",
"Latitude": 51.494325,
"Longitude": -0.09213
},
"DefaultDisplayRank": 70,
"SeoName": "runners-pizza-southwark",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/51042.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
},
{
"Name": "Chicken",
"SeoName": "chicken"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 38512,
"Name": "Cafe Mode - Collection Only",
"Address": {
"FirstLine": "57 - 59 Endell Street",
"City": "London",
"Postcode": "WC2H 9AL",
"Latitude": null,
"Longitude": null
},
"DefaultDisplayRank": 71,
"SeoName": "cafemode-wc2h",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/38512.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Mediterranean",
"SeoName": "mediterranean"
},
{
"Name": "Italian",
"SeoName": "italian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 1.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 41785,
"Name": "Taro Sushi Noodle Bar",
"Address": {
"FirstLine": "61 Brewer Street",
"City": "London",
"Postcode": "W1F 9UN",
"Latitude": 51.511416,
"Longitude": -0.1355
},
"DefaultDisplayRank": 72,
"SeoName": "tarosushi-w1f",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/41785.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Japanese",
"SeoName": "japanese"
},
{
"Name": "Sushi",
"SeoName": "sushi"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.3,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 1,
"StarRating": 5
},
"OfferPercent": 0
},
{
"Id": 47398,
"Name": "Motown - Collection Only",
"Address": {
"FirstLine": "58 Fieldate Street",
"City": "London",
"Postcode": "E1 1JN",
"Latitude": 51.516617,
"Longitude": -0.064635
},
"DefaultDisplayRank": 73,
"SeoName": "motown-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/47398.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Desserts",
"SeoName": "desserts"
},
{
"Name": "Cakes",
"SeoName": "cakes"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 45252,
"Name": "Sajjad Grills & Restaurant",
"Address": {
"FirstLine": "83 New Road",
"City": "London",
"Postcode": "E1 1HH",
"Latitude": 51.516692,
"Longitude": -0.062657
},
"DefaultDisplayRank": 74,
"SeoName": "sajjadgrills-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/45252.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Pakistani",
"SeoName": "pakistani"
},
{
"Name": "Curry",
"SeoName": "curry"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 45544,
"Name": "Piadina Pronta",
"Address": {
"FirstLine": "Upmarket-Trumans Brewery, Brick Lane",
"City": "London",
"Postcode": "E1 6QR",
"Latitude": 51.520227,
"Longitude": -0.073087
},
"DefaultDisplayRank": 75,
"SeoName": "piadinapronto-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/45544.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 46888,
"Name": "Damascu Bite - Collection Only",
"Address": {
"FirstLine": "119-121 Brick Lane",
"City": "London",
"Postcode": "E1 6SE",
"Latitude": 51.522345,
"Longitude": -0.071743
},
"DefaultDisplayRank": 76,
"SeoName": "damascubite-e1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/46888.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Lebanese",
"SeoName": "lebanese"
},
{
"Name": "Syrian",
"SeoName": "syrian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 47108,
"Name": "Govinda's - Collection Only",
"Address": {
"FirstLine": "9-10 Soho Street",
"City": "London",
"Postcode": "W1D 3DL",
"Latitude": 51.515869,
"Longitude": -0.132782
},
"DefaultDisplayRank": 77,
"SeoName": "govindas-w1d",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/47108.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
},
{
"Name": "Vegetarian",
"SeoName": "vegetarian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 44293,
"Name": "La Polenteria - Collection Only",
"Address": {
"FirstLine": "64 Old Compton Street",
"City": "London",
"Postcode": "W1D 4UQ",
"Latitude": 51.512784,
"Longitude": -0.13275
},
"DefaultDisplayRank": 78,
"SeoName": "lapolenteria-w1d",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/44293.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Italian",
"SeoName": "italian"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 27765,
"Name": "Hoxton Chicken N Pizza",
"Address": {
"FirstLine": "94 Hoxton Street",
"City": "London",
"Postcode": "N1 6LP",
"Latitude": 51.530297,
"Longitude": -0.080116
},
"DefaultDisplayRank": 79,
"SeoName": "hoxtonpizzanchicken-n1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/27765.gif",
"IsCollection": true,
"IsDelivery": true,
"Cuisines": [
{
"Name": "Pizza",
"SeoName": "pizza"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 10,
"IsNew": false,
"RatingDetails": {
"Count": 5,
"StarRating": 2
},
"OfferPercent": 30
},
{
"Id": 42679,
"Name": "The Bell House Pub & Restaurant",
"Address": {
"FirstLine": "91 Bell Street",
"City": "London",
"Postcode": "NW1 6TL",
"Latitude": 51.522189,
"Longitude": -0.165692
},
"DefaultDisplayRank": 80,
"SeoName": "thebellhouse-nw1",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/42679.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Breakfast",
"SeoName": "breakfast"
},
{
"Name": "Fish & Chips",
"SeoName": "fish-and-chips"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.7,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
},
{
"Id": 47400,
"Name": "Motown",
"Address": {
"FirstLine": "157 Bethnalgreen Road",
"City": "London",
"Postcode": "E2 7DG",
"Latitude": 51.525392,
"Longitude": -0.07111
},
"DefaultDisplayRank": 81,
"SeoName": "motown-e2",
"LogoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/47400.gif",
"IsCollection": true,
"IsDelivery": false,
"Cuisines": [
{
"Name": "Desserts",
"SeoName": "desserts"
},
{
"Name": "Cakes",
"SeoName": "cakes"
}
],
"OpeningTime": "0001-01-01T00:00:00Z",
"DriveDistance": 2.6,
"DriveInfoCalculated": true,
"DeliveryCost": 0,
"MinimumDeliveryValue": 0,
"IsNew": false,
"RatingDetails": {
"Count": 0,
"StarRating": 0
},
"OfferPercent": 0
}
]
}
```
================================================
FILE: README.md
================================================
> [!IMPORTANT]
> We no longer use this repository for our recruitment processes.
Just Eat Engineer Recruitment Test
==================================
Thank you for taking the time to do our technical test. It consists of two parts:
* [A coding test](#coding-test)
* [A few technical questions](#technical-questions)
In order to avoid bounced emails we would like you to submit your results by uploading the relevant ZIP file to a shared Google Drive folder. In order to obtain the URL for this folder, please supply your Gmail or Google-based email address to either your agent or the Just Eat member of staff who assigned you the test.
Please make this a **single** zip file named `{yourname}-{role-applied-for}.zip` containing:
1. a single markdown file with the answers to the technical questions
2. one folder containing the technical test
## Coding Test
Just Eat has a public API available at [https://uk.api.just-eat.io/](https://uk.api.just-eat.io/) that you will use to get restaurant information, including restaurant details and delivery information. We'd specifically like you to use the `SearchByPostcode` endpoint that is documented at [https://uk.api.just-eat.io/docs#operation/restaurantsBypostcodePostcodeGet](https://uk.api.just-eat.io/docs#operation/restaurantsBypostcodePostcodeGet).
As an example, [https://uk.api.just-eat.io/restaurants/bypostcode/ec4m](https://uk.api.just-eat.io/restaurants/bypostcode/ec4m) returns a list of restaurants that deliver to the outcode EC4M, including some basic restaurant information.
The task is to create an application that accepts an outcode as a parameter. The application should then display the following information about each restaurant that delivers to that outcode by querying our API:
- Name
- Rating
- Types of food for the restaurant
### Platform Choice
You can create the application as either a command line application, web application or mobile application in any of the following platforms
- .NET, Python or JavaScript/TypeScript (can use Angular/React/Vue.js) for web applications. **Please note, due to CORS, calls directly from the browser will fail.**
- .NET or Python for command line applications
- iOS, Android or Windows Mobile for mobile applications
Think about the type of work you would like to do at Just Eat and **choose an appropriate application type and platform**.
### Task requirements
Feel free to spend as much or as little time on the exercise as you like as long as the following requirements have been met. However, we understand people have busy lives and would guide you to spend no more than 2-3 hours on a submission. We also take into consideration the [Answers to technical questions.md](#technical-questions) file and what you would like to have added if you had more time. You should look at this as the complete solution, it's much quicker to explain what you would like to have done than code it.
- Please complete the user story below.
- Your code should compile and run in one step.
- Feel free to use whatever frameworks / libraries / packages you like.
- You **must** include tests
- Please avoid including artifacts from your local build (such as NuGet packages or the bin folder(s)) in your final ZIP file
### User Story
Given I am a **user running the application**
When I **submit an outcode (e.g. SE19)**
Then I want to see a **list of restaurants**
And I only want to see **restaurants that are currently open**
If you have chosen a native mobile application platform please also include the following:
Given I am a **user running the application**
When I **submit an outcode (e.g. SE19)**
Then I want to see a **list of restaurants**
And I only want to see **restaurants that are currently open**
And I want to see **the restaurant logo alongside the restaurant information**
Given I am a **user running the application**
When I click "auto detect outcode" it should **use GPS to find my current postcode to retrieve restaurant results**
Then I want to see a **list of restaurants**
And I only want to see **restaurants that are currently open**
And I want to see **the restaurant logo alongside the restaurant information**
#### Acceptance criteria
- For the known outcode `ec4m`, results are returned
- The Name, Cuisine Types and Rating of the restaurant are displayed
# Technical questions
Please answer the following questions in a markdown file called `Answers to technical questions.md`.
1. How long did you spend on the coding test? What would you add to your solution if you had more time? If you didn't spend much time on the coding test then use this as an opportunity to explain what you would add.
2. What was the most useful feature that was added to the latest version of your chosen language? Please include a snippet of code that shows how you've used it.
3. How would you track down a performance issue in production? Have you ever had to do this?
4. How would you improve the Just Eat APIs that you just used?
#### Thanks for your time, we look forward to hearing from you!
- The [Just Eat Tech team](https://careers.justeattakeaway.com/global/en/c/tech-product-jobs)
================================================
FILE: Tech.Associate.Engineer.md
================================================
# Just Eat Associate Engineer Recruitment Test
Thank you for taking the time to do our technical test. It consists of two parts:
1. [Technical test](#technical-test)
2. [Technical questions](#technical-questions)
Please don't publish your solution as a public repository, but submit your results by uploading the relevant zip file to a shared Google Drive folder instead.
In order to obtain the URL for this folder, please supply your Gmail or Google-based email address to either your recruitment contact or the Just Eat member of staff who assigned you the test.
Please make this a **single** zip file named `{yourname}-{role-applied-for}.zip` containing:
1. A single Markdown file with the answers to the technical questions
1. A folder containing the technical test (please try not to include files like library dependencies)
### Technical Test
Just Eat has a public API available at https://uk.api.just-eat.io/ that you will use to get restaurant information.
As an example, https://uk.api.just-eat.io/restaurants/bypostcode/ar511aa returns a list of restaurants that deliver to AR51 1AA, including some basic restaurant information.
The task is to write some code that accepts a postcode as a parameter and then returns a list of restaurants for that postcode. The application should then display the following information about each restaurant returned in the results:
- Name
- Rating
The input and display can be on a web page or a terminal/console.
### The API Call
- URL: `https://uk.api.just-eat.io`
- Endpoint: `/restaurants/bypostcode/{postcode}`
- Method: `GET`
#### Tasks
1. As a customer, when I input my postcode, then I am shown a list of restaurants for that postcode
2. As a customer, when I input no postcode, I am shown no results
3. As a customer, when I input an invalid postcode, I am shown no results
#### Platform Choice
Feel free to use any programming language, libraries and frameworks you are experienced with.
#### Expectations
- Please do not spend too much time on UI design. We would happily receive a test which simply outputs a text-based list or restaurant names and ratings in a browser.
- We do not require extensive user input and error handling. Just ensure your solution doesn't fall over if a customer were to type in an empty postcode.
- A JavaScript and HTML file which we can run in your preferred web browser is an acceptable solution.
## Technical Questions
Please answer the following questions and include them in the Markdown file uploaded with your technical test
1. How long did you spend on the technical test?
2. What would you add to your solution if you had more time?
3. What do you think you could research or learn more about to help you build a better solution, given more time?
4. How would you go about researching or learning the above?
================================================
FILE: Test.Automation.Engineer.md
================================================
# Just Eat Test Automation Engineer Recruitment Test
Thank you for taking the time to do our technical test. It consists of two parts:
1. [Technical test](#technical-test)
- [UI Automated Test](#ui-automated-test)
- [API Automated Test](#api-automated-test)
2. [Technical questions](#technical-questions)
Please don't publish your solution as a public repository, but submit your results by uploading the relevant zip file to a shared Google Drive folder instead.
In order to obtain the URL for this folder, please supply your Gmail or Google-based email address to either your recruitment contact or the Just Eat member of staff who assigned you the test.
Please make this a **single** zip file named `{yourname}-{role-applied-for}.zip` containing:
1. A single markdown file with the answers to the technical questions
1. A folder containing the technical test (please try not to include files like library dependencies)
## Technical Test
### UI Automated Test
Just Eat's consumer-facing website in the UK is available at [www.just-eat.co.uk](https://www.just-eat.co.uk/), which you can use to find takeaway restaurants in a postcode area.
#### Tasks
The UI Automated Test consists of two tasks:
1. Write the step definitions for the scenario below.
1. Add two more scenarios, with corresponding step definitions, which you feel would enhance the test coverage of the site.
**NOTE:** Please refrain from stress testing or accidentally performing a DDoS attack as you are likely to get blocked by our security rules.
#### Platform Choice
Feel free to use any programming language, libraries and frameworks you are experienced with. If you choose Python then please contact the team as you will require a different endpoint to run your test against.
#### Task requirements
- Clear test setup and execution instructions are provided in the README.md file
- All code changes are documented and structured as well-described Git commits
#### Scenario to Automate
```gherkin
Feature: Use the website to find restaurants
So that I can order food
As a hungry customer
I want to be able to find restaurants in my area
Scenario: Search for restaurants in an area
Given I want food in "AR51 1AA"
When I search for restaurants
Then I should see some restaurants in "AR51 1AA"
```
----
### API Automated Test
Just Eat has a public API available at that you will use to get restaurant information.
#### Prerequisites
- URL:
- Endpoint: `/restaurants/bypostcode/{postcode}`
- Method: `GET`
#### Example
`GET` returns complex restaurants-related data for postcode `AR51 1AA`
#### Platform Choice
Feel free to use any programming language, libraries and frameworks you are experienced with.
**NOTE:** If you choose Python then please contact the team as you will require a different endpoint to run your test against.
#### Tasks
1. Verify `Restaurants[n].Address` sub-object of each restaurant object in response. It should reflect the following schema:
``` json
{
"properties": {
"City": {
"type": "string",
"description": "City name"
},
"FirstLine": {
"type": "string",
"description": "First line of address"
},
"Postcode": {
"type": "string"
},
"Latitude": {
"type": "number",
"format": "decimal"
},
"Longitude": {
"type": "number",
"format": "decimal"
}
}
}
```
2. Verify the following functional requirements making 1 call to the [restaurants endpoint](https://github.com/justeat/JustEat.RecruitmentTest/blob/master/Test.Automation.Engineer.md#prerequisites):
- `Check all the restaurants with more than 1 rating should have a star rating greater than 0`
- `Check all the restaurants with no ratings should have a star rating of 0`
- `Check 1 restaurant should have a valid URL by checking for a returned HTTP status code of 200 OK`
3. Design 3 more requirements which you think are missing most and implement verification tests.
**NOTE:** If you call the restaurants endpoint repeatedly within a short period of time you will encounter DDoS protection and your IP address will be blocked. Please manage your API calls responsibly.
#### Task requirements
- A RESTful API test automation library/framework is implemented using any programming language from scratch
- Clear test setup and execution instructions are provided in the README.md file
- All code changes are documented and structured as well-described Git commits
----
## Technical questions
Please answer the following questions in a markdown file called `Answers to technical questions.md`.
1. How long did you spend on the technical test?
1. What would you add to your solution if you had more time?
1. If you didn't spend much time on the technical test then use this as an opportunity to explain what you would add.
1. What do you think is the most interesting trend in test automation?
1. How would you implement test automation in a legacy application? Have you ever had to do this?
1. How would you improve the customer experience of the Just Eat website?
----
Thanks for your time, we look forward to hearing from you!
The [Just Eat Tech](https://careers.just-eat.com/departments/technology) team
================================================
FILE: Test.DevOps.Engineer.md
================================================
Just Eat Test DevOps Engineer Recruitment Test
==================================
Thank you for taking the time to do our technical test. It consists of two parts:
* [A technical test](#technical-test)
* [A few technical questions](#technical-questions)
In order to avoid bounced emails we would like you to submit your results by uploading the relevant zip file to a shared Google Drive folder. In order to obtain the URL for this folder, please supply your Gmail or Google-based email address to either your agent or the Just Eat member of staff who assigned you the test.
Please make this a **single** zip file named `{yourname}-{role-applied-for}.zip` containing:
1. A single markdown file with the answers to the technical questions
2. One folder containing the technical test
## Technical Test
* Your task is to provision a highly available [Jenkins](https://jenkins.io/) cluster on [Kubernetes](https://kubernetes.io/).
* With this test, we want to see your ability to create an entire infrastructure from scratch as well as your skills as a system administrator.
### Requirements
* In your solution please emphasize on readability, maintainability and DevOps methodologies. We expect a clear way to recreate your setup.
* Since you have to have an HA config using 443 please use a self signed cert.
* Use any configuration management tool.
* The infrastructure provider can be either Google Cloud or AWS.
* You can create the solution in any language or framework of your choice.
* A clean bare minimum working infrastructure is preferred than a full blown solution pieced together with scissors, rope and duct tape. Do not skip security considerations.
* You should provide clear instructions on how to use the code you have provided. The clarity and precision of these instructions - and the ease with which the interviewers can execute them - will be a key part of the assessment. Please create a README file detailing said instructions. Please also use this file for listing any additional comments or observations you might want to share about your submission.
### Bonus Points
* If you can provision Jenkins agents to be created on demand.
* If you can document all aspects of your code, in the README and within the code itself.
* If you can generate the self signed cert/key.
* If you can make this run all in one playbook.
# Technical questions
Please answer the following questions in a markdown file called `Answers to technical questions.md`.
1. How long did you spend on the coding test? What would you add to your solution if you had more time? If you didn't spend much time on the coding test then use this as an opportunity to explain what you would add.
2. Why did you choose the language you used for the coding test?
3. What was the most useful feature that was added to the latest version of your chosen language?
4. Please describe yourself using JSON.
#### Thanks for your time, we look forward to hearing from you!
- The [Just Eat Tech team](https://careers.just-eat.com/departments/technology)
================================================
FILE: Test.SOC.Engineer.md
================================================
Just Eat Service Operations Engineer Recruitment Test
==================================
Thank you for taking the time to do our technical test. It consists of two parts:
* [A coding test](#coding-test)
* [A few technical questions](#technical-questions)
In order to avoid bounced emails we would like you to submit your results by uploading the relevant zip file to a shared Google Drive folder. In order to obtain the URL for this folder, please supply your Gmail or Google-based email address to either your agent or the Just Eat member of staff who assigned you the test.
Please make this a **single** zip file named `{yourname}-{role-applied-for}.zip` containing:
1. a single markdown file with the answers to the technical questions
2. one folder containing the technical test
## Coding Test
As a SOC Engineer you'll be working with APIs (Such as AWS's EC2 API). This test is designed to give you the opportunity to show your ability to query an API using languages that are commonly used during operations at Just Eat.
Just Eat has a public API available at [https://public.je-apis.com/](https://public.je-apis.com/) that you can use to get restaurant information, including restaurant details and delivery information.
As an example, [https://public.je-apis.com/restaurants?q=se19](https://public.je-apis.com/restaurants?q=se19) returns a list of restaurants that deliver to the outcode SE19, including some basic restaurant information.
The API requires you specify a set of valid HTTP request headers, as shown below. An API key will be provided to you by a member of our recruitment team.
```
Accept-Tenant: uk
Accept-Language: en-GB
Authorization: [EMAIL YOUR RECRUITER]
Host: public.je-apis.com
```
The task is to create an application or script that accepts an outcode as a parameter. The application should then display the following information about each restaurant that delivers to that outcode.
- Name
- Rating
- Types of food for the restaurant
### Platform / Language Choice
You can create the application as either a command line application or web application in any of the following languages:
- PowerShell
- Bash
- Python
- Ruby
- .NET / C#
### Task requirements
Feel free to spend as much or as little time on the exercise as you like as long as the following requirements have been met.
- Please complete the user story below.
- Your code should compile and run in one step.
- Feel free to use whatever frameworks / libraries / packages you like.
### User Story
As a **user running the application**
I can **view a list of restaurants in a user submitted outcode (ex. SE19)**
So that **I know which restaurants are currently available**
#### Acceptance criteria
- For the known outcode se19, results are returned
- The Name, Cuisine Types and Rating of the restaurant are displayed
# Technical questions
Please answer the following questions in a markdown file called `Answers to technical questions.md`.
1. How long did you spend on the coding test? What would you add to your solution if you had more time? If you didn't spend much time on the coding test then use this as an opportunity to explain what you would add.
2. Why did you choose the language you used for the coding test?
3. What was the most useful feature that was added to the latest version of your chosen language? Please include a snippet of code that shows how you've used it.
4. How would you track down a performance issue in production? Have you ever had to do this?
5. How would you improve the Just Eat APIs that you just used?
6. Please describe yourself using JSON.
#### Thanks for your time, we look forward to hearing from you!
- The [Just Eat Tech team](https://careers.just-eat.com/departments/technology)
================================================
FILE: Test.WebUI.Engineering.md
================================================
Web UI Tech Test
============
Thank you for taking the time to do our technical test. It consists of two parts:
* [A coding test](#coding-test)
* [A few technical questions](#technical-questions)
In order to avoid bounced emails we would like you to submit your results by uploading the relevant zip file to a shared **Google Drive** folder. In order to obtain the URL for this folder, please supply your **Gmail** or **Google-based email address** to either your agent or the Just Eat member of staff who assigned you the test.
Please make this a **single** zip file named `{yourname}-{role-applied-for}.zip` containing:
1. one folder containing the coding test
2. a single markdown file with the answers to the technical questions
## Coding Test
* Create an HTML file that has a login form with a username and password. Use semantic, accessible and valid mark-up.
* Style the form so that labels are to the left of the fields and inputs are to the right of the fields.
* Write script that defines a `FormValidator` constructor with methods on the prototype to validate and display error messages for invalid username/password. It only has to check whether the fields are blank or not.
* Use external scripts and CSS files.
* Don't pollute the global object (Only one should be required for the namespace you choose)
* Test drive the code via unit tests (Jasmine or an equivalent)
* Should work in IE11+ as well as more modern browsers.
## Technical Questions
* Did you have time to complete the coding test? What would you add to your solution if you had more time?
* What's your favourite programming language? Why?
* List a few of your preferred JavaScript frameworks (also let us know in which situations you would choose to use/not use them)
* Please describe yourself using either XML or JSON.
Thanks for your time, we look forward to hearing from you!
================================================
FILE: data-and-ai/data-engineer/.gitignore
================================================
#### joe made this: http://goel.io/joe
#### scala ####
*.class
*.log
.DS_Store
#### playframework ####
# Ignore Play! working directory #
bin/
/db
.eclipse
/lib/
/logs/
/modules
/project/target/
/target
tmp/
test-result
server.pid
*.eml
/dist/
.cache
#### java ####
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
#### sbt ####
# Simple Build Tool
# http://www.scala-sbt.org/release/docs/Getting-Started/Directories.html#configuring-version-control
dist/*
target/
lib_managed/
src_managed/
project/boot/
project/plugins/project/
.history
.cache
.lib/
#### jetbrains ####
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
# Gradle:
.idea/**/gradle.xml
.idea/**/libraries
# CMake
cmake-build-debug/
# Mongo Explorer plugin:
.idea/**/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
.idea/
*.sc
# Helm stuff
repo/
# Terraform
.terraform
### PYTHON ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
================================================
FILE: data-and-ai/data-engineer/README.md
================================================
# Just Eat Data Engineer Recruitment Test
Thank you for taking the time to apply to Just Eat as a Data Engineer!
## Process
The next stage of the interview process involves some live code pairing.
To prepare for this, you have 2 options, pick which ever option you are most comfortable with:
### 1. Prepare only
- Read and understand the [Problem Statement](#problem-statement)
- Set up your favourite IDE with the sample [scala](./scala) or [python](./python) code.
- Make sure you know how the code works, it compiles and you know how to run it with different arguments
- Think about how you plan on implementing a solution to the problem
In the code pairing session, we will start coding the solution
### 2. Spend an hour or two implementing a solution
- Complete all the above steps in '1. Prepare only'
- Start coding your solution
In the code pairing session, we will continue coding or add a new feature
## Problem Statement
Your task is to write a command line application that splits a single large csv file into many smaller files.
If your program was invoked as follows, it should read the input file `path/to/file`,
and split it into many output files in the directory `path/to/dir`.
None of the files in the output directory should be greater than 500 bytes in size or 100 lines long.
```bash
./file-splitter --input-file path/to/file --output-dir path/to/dir --max-bytes 500 --max-lines 100
```
The output file names should have a part number appended to it.
For example, with an input file `large-data.csv` the output directory would contain:
```
output-dir/large-data-part0.csv
output-dir/large-data-part1.csv
output-dir/large-data-part2.csv
...
```
## Top tips
At Just Eat we value code that is functional, simple to read and review, and demonstrates best practice.
You should complete this assignment in Scala or Python, unless instructed otherwise.
Sample projects with the arguments parsed are provided.
If you would like to use a different method for argument parsing this is fine.
Think about the libraries and frameworks you intend to use. Are they suitable for the scale of this problem?
We judge based on the following things:
* Code readability
* Code well architected / separated
* Testing of key parts
* Code maintainability, can it be extended
* Code performance
================================================
FILE: data-and-ai/data-engineer/python/file-splitter.sh
================================================
#!/usr/bin/env bash
python3 -m file_splitter $@
================================================
FILE: data-and-ai/data-engineer/python/file_splitter/__main__.py
================================================
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--input-file', type=str, required=True)
parser.add_argument('--output-dir', type=str, required=True)
parser.add_argument('--max-bytes', type=int, required=True)
parser.add_argument('--max-lines', type=int, required=True)
args = parser.parse_args()
print(args.input_file)
print(args.output_dir)
print(args.max_bytes)
print(args.max_lines)
if __name__ == '__main__':
main()
================================================
FILE: data-and-ai/data-engineer/scala/build.sbt
================================================
name := "scala"
version := "0.1"
scalaVersion := "2.12.8"
libraryDependencies += "com.github.scopt" %% "scopt" % "3.7.1"
================================================
FILE: data-and-ai/data-engineer/scala/project/build.properties
================================================
sbt.version = 1.2.8
================================================
FILE: data-and-ai/data-engineer/scala/src/main/scala/Main.scala
================================================
case class Config(
inputFile: String = "",
outputDir: String = "",
maxLines: Int = -1,
maxBytes: Int = -1)
object Main extends App {
val parser = new scopt.OptionParser[Config]("scopt") {
head("scopt", "3.x")
opt[String]("input-file").action((x, c) =>
c.copy(inputFile = x))
opt[String]("output-dir").required()
.action((x, c) => c.copy(outputDir = x))
opt[Int]("max-lines").required()
.action((x, c) => c.copy(maxLines = x))
opt[Int]("max-bytes").required()
.action((x, c) => c.copy(maxLines = x))
}
val parsed = parser.parse(args, Config()) match {
case Some(config) =>
println(config)
???
case None =>
}
}