112 lines
3.2 KiB
Markdown
112 lines
3.2 KiB
Markdown
|
|
# Fake API
|
||
|
|
|
||
|
|
A tiny script + CSV to fake the API of House Group Holiday Rentals.
|
||
|
|
|
||
|
|
## How to run
|
||
|
|
|
||
|
|
- Create a dedicated `venv` and install the packages listed in `requirements.txt`.
|
||
|
|
- Move your terminal to this directory and run `python3 fake_api.py`.
|
||
|
|
- This will start the API and serve it on port `5000` until you stop it with Ctrl+C.
|
||
|
|
|
||
|
|
## How to request
|
||
|
|
|
||
|
|
The API has a single endpoint `/api/bookings`. This endpoint implements pagination, sorting and some basic filtering. You can find below a few `curl` calls and their responses to get an idea of how the API works. You can start a new terminal after you got the API running and use them to test that the API is running fine.
|
||
|
|
|
||
|
|
- Bookings for a certain check-in date:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl "http://localhost:5000/api/bookings?check_in_date=2024-10-01"
|
||
|
|
|
||
|
|
{
|
||
|
|
"page": 1,
|
||
|
|
"per_page": 2,
|
||
|
|
"results": [
|
||
|
|
{
|
||
|
|
"booking_id": "b3c810d6-8ab9-41f5-9810-ed809d1d1c64",
|
||
|
|
"check_in_date": "2024-06-20 22:12:04",
|
||
|
|
"check_out_date": "2024-06-24 22:12:04",
|
||
|
|
"owner_company": "Garcia, Hamilton and Carr",
|
||
|
|
"owner_company_country": "USA"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"booking_id": "e019d228-3fff-46dd-b54e-a98364a5399a",
|
||
|
|
"check_in_date": "2024-12-02 01:16:23",
|
||
|
|
"check_out_date": "2024-12-05 01:16:23",
|
||
|
|
"owner_company": "Campos PLC",
|
||
|
|
"owner_company_country": "France"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"total": 1000
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
- Bookings for a country, with pagination being used:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl "http://localhost:5000/api/bookings?owner_company_country=France&page=1&per_page=3"
|
||
|
|
|
||
|
|
{
|
||
|
|
"page": 1,
|
||
|
|
"per_page": 3,
|
||
|
|
"results": [
|
||
|
|
{
|
||
|
|
"booking_id": "e019d228-3fff-46dd-b54e-a98364a5399a",
|
||
|
|
"check_in_date": "2024-12-02 01:16:23",
|
||
|
|
"check_out_date": "2024-12-05 01:16:23",
|
||
|
|
"owner_company": "Campos PLC",
|
||
|
|
"owner_company_country": "France"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"booking_id": "b0cd14f7-5bdd-4cc1-900c-4f193b26c0ae",
|
||
|
|
"check_in_date": "2024-04-11 03:57:51",
|
||
|
|
"check_out_date": "2024-04-21 03:57:51",
|
||
|
|
"owner_company": "Campos PLC",
|
||
|
|
"owner_company_country": "France"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"booking_id": "ca678537-d032-4f4e-9135-9fbba287b00d",
|
||
|
|
"check_in_date": "2024-11-08 15:24:11",
|
||
|
|
"check_out_date": "2024-11-11 15:24:11",
|
||
|
|
"owner_company": "Campos PLC",
|
||
|
|
"owner_company_country": "France"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"total": 97
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
- Sorted and paginated:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
curl "http://localhost:5000/api/bookings?sort_by=check_out_date&sort_order=desc&page=1&per_page=3"
|
||
|
|
|
||
|
|
{
|
||
|
|
"page": 1,
|
||
|
|
"per_page": 3,
|
||
|
|
"results": [
|
||
|
|
{
|
||
|
|
"booking_id": "007d0909-1dc2-4a0d-bb3f-a925321bd09b",
|
||
|
|
"check_in_date": "2024-12-29 22:39:18",
|
||
|
|
"check_out_date": "2024-12-31 22:39:18",
|
||
|
|
"owner_company": "Campos PLC",
|
||
|
|
"owner_company_country": "France"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"booking_id": "bffccb7b-f3a8-40bc-9142-4f6964a3e44a",
|
||
|
|
"check_in_date": "2024-12-29 21:11:07",
|
||
|
|
"check_out_date": "2024-12-31 21:11:07",
|
||
|
|
"owner_company": "Faulkner-Howard",
|
||
|
|
"owner_company_country": "UK"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"booking_id": "f71fefb6-38ef-4b9a-b5a6-08014417b91f",
|
||
|
|
"check_in_date": "2024-12-28 20:12:36",
|
||
|
|
"check_out_date": "2024-12-31 20:12:36",
|
||
|
|
"owner_company": "Jones, Jefferson and Rivera",
|
||
|
|
"owner_company_country": "USA"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"total": 1000
|
||
|
|
}
|
||
|
|
```
|