API
API Routes for different parts of the app.
Responses are in JSON format but are portrayed in this documentation as the Python dictionaries used to generate the JSON contained within the source code.
Authentication
Authentication encompasses logging in and signing up.
Logging in
Route: /login
Request type: POST and DELETE.
Sending a DELETE request will delete the user.
POST
Parameters:
- email, string, required
- password, string, required
Response:
{
"process": "Sign In",
"result": True,
"user_id": user.get("user_id"),
"email": user.get("email"),
"first_name": user.get("first_name") or user.get("name"),
"last_name": user.get("last_name") or user.get("lastname"),
"name": user.get("first_name") or user.get("name"),
"lastname": user.get("last_name") or user.get("lastname"),
"access_token": token,
"token_type": "Bearer",
"expires_in": JWT_EXPIRES_MINUTES * 60,
}, 200
DELETE
Parameters: Same as POST.
Response (on success):
{
"process": "Delete User",
"name": user["name"],
"result": True
}, 200
Response (on failure):
{"process": "Delete User", "error": "An error occurred while deleting the user"}, 500
Signing up
Creates a new user
POST
Route: /signup
Parameters:
- name, string, required
- lastname, string, required
- email, string, required
- password, string, required
Response (on success):
{
"process": "Sign Up",
"result": True,
"user_id": created_user.get("user_id"),
"first_name": name,
"last_name": lastname,
"name": name,
"lastname": lastname,
"email": email,
}, 201
Response (on failure):
{
"process": "Sign Up",
"result": False,
"error": "An error occurred during sign up",
}, 500
Car parks (listing and creating)
Methods for listing and creating new car parks.
Route: /car-park
GET
Returns a list of all car parks.
Parameters: None.
Response:
{
"data": CarParkSchema().dump(car_park_data)
}, 200
POST
Parameters:
- name, string, required
- spaces, int, required
- location, float, required
Response:
{
"data": CarParkSchema().dump(response.data[0])
}, 201
Reviews
Creating and deleting reviews.
Route: /review
GET
Parameters:
- carpark_id, int, required
Response (on success):
{"data": [ReviewSchema().dump(rev) for rev in response.data]}, 200
Response (on failure):
{"error": "Car park does not exist"}
POST
Parameters:
- carpark_id, int, required
- review, int, required, 0-5
- title, string, required
Response (on success): None
Response (on failure):
{"error": e}, 500
DELETE
Parameters:
- review_id, int, required
Response (on success): None.
Response (on failure):
{"error": e}, 500
Searching
Searching only supports GET requests.
Route: /search
GET
Parameters:
- query, string, required, e.g. the name of a car park or a particular location
- minDistance, float, required
- maxDistance, float, required
- longitude, float, required
- latitude, float, required
Response (on success):
CarParkSchema(many=True).dump(filtered_results)
Response (on failure):
{"error": "Failed to fetch car parks"}
Parking sessions
Route: /parking-session
GET
Get the parking sessions for a user.
Parameters:
- user_id, string, required
Response (on success):
{
"data": [
ParkingSessionSchema().dump(session)
for session in response.data
]
}
Where ParkingSessionSchema is:
{
"user_id": str,
"carpark_id": int,
"user_rating": int,
"start_time": int,
"end_time": int,
"expiry_time": int,
}
- Response (on failure): ::
{“error”: e}
POST
Create a new car parking session.
Parameters:
- user_id, int, required
- vehicle_id, int, required
- carpark_id, int, required
- duration, int, required
Response (on success): None.
Response (on failure):
{"error": e}
PUT
Modify a car parking session, either extending or cancelling it.
Parameters:
- user_id, int, required
- session_id, int, required
- action, string, required, extend, cancel
- action_data, string
Response (on success): None.
Response (on failure):
{"error": e}
Users
Getting and modifying users.
Route: /users/<string:email>, the email parameter is required for both methods.
GET
Gets the data for a users profile.
Response (on success):
{
"process": "Get User",
"user_id": user.get("user_id"),
"name": user.get("first_name") or user.get("name"),
"lastname": user.get("last_name") or user.get("lastname"),
"email": user.get("email"),
"vehicles": vehicles,
"payment_methods": payment_methods,
"result": True,
}
Response (on failure):
{
"process": "Get User",
"user_id": None,
"name": None,
"lastname": None,
"email": email,
"vehicles": [],
"payment_methods": [],
"error": "User not found",
"result": False
}
PUT
Updates the data for a users profile, with the addition of updating vehicle information
Response (on success):
{
"process": "Update User",
"user_id": user_id,
"name": name,
"lastname": lastname,
"email": updated_email or email,
"result": True,
}
Response (on failure):
{
"process": "Update User",
"result": False
}