-
Notifications
You must be signed in to change notification settings - Fork 1
Backend APIs
Hamsini Sivalenka edited this page Apr 21, 2025
·
1 revision
-
Endpoint:
POST /v1/auth/signup - Description: Register a new user
-
Request Body:
{ "email": "user@example.com", "password": "securepassword123" } -
Response:
{ "id": 1, "email": "user@example.com", "created_at": "2024-03-25T10:00:00Z" }
-
Endpoint:
POST /v1/auth/login - Description: Authenticate a user and get JWT token
-
Request Body:
{ "email": "user@example.com", "password": "securepassword123" } -
Response:
{ "token": "eyJhbGciOiJIUzI1NiIs..." }
-
Endpoint:
GET /v1/auth/google - Description: Initiate Google OAuth flow
- Response: Redirects to Google login page
-
Endpoint:
GET /v1/auth/google/callback - Description: Handle Google OAuth callback
- Response: Redirects to frontend with JWT token
-
Endpoint:
GET /v1/profile/{userID} - Description: Get user profile by ID
- Authentication: Required
-
Response:
{ "id": 1, "user_id": 1, "first_name": "John", "last_name": "Doe", "bio": "Sports enthusiast", "created_at": "2024-03-25T10:00:00Z", "updated_at": "2024-03-25T10:00:00Z" }
-
Endpoint:
POST /v1/profile - Description: Create a new user profile
- Authentication: Required
-
Request Body:
{ "first_name": "John", "last_name": "Doe", "bio": "Sports enthusiast" } -
Response:
{ "id": 1, "user_id": 1, "first_name": "John", "last_name": "Doe", "bio": "Sports enthusiast", "created_at": "2024-03-25T10:00:00Z", "updated_at": "2024-03-25T10:00:00Z" }
-
Endpoint:
PUT /v1/profile - Description: Update existing user profile
- Authentication: Required
-
Request Body:
{ "first_name": "John", "last_name": "Doe", "bio": "Sports enthusiast" } -
Response:
{ "id": 1, "user_id": 1, "first_name": "John", "last_name": "Doe", "bio": "Sports enthusiast", "created_at": "2024-03-25T10:00:00Z", "updated_at": "2024-03-25T10:00:00Z" }
-
Endpoint:
POST /v1/events - Description: Create a new sports event
- Authentication: Required
-
Request Body:
{ "sport": "Football", "event_datetime": "2024-03-25T15:00:00Z", "max_players": 20, "location_name": "Central Park, NY", "latitude": 40.785091, "longitude": -73.968285, "description": "Friendly football match", "title": "Lets football!" } -
Response:
{ "id": 1, "event_owner": 1, "sport": "Football", "event_datetime": "2024-03-25T15:00:00Z", "max_players": 20, "location_name": "Central Park, NY", "latitude": 40.785091, "longitude": -73.968285, "description": "Friendly football match", "title": "Lets football!", "created_at": "2024-03-25T10:00:00Z", "updated_at": "2024-03-25T10:00:00Z", "is_full": false, "registered_count": 0 }
-
Endpoint:
GET /v1/events - Description: Get all events with optional filters
- Authentication: Required
-
Query Parameters:
-
sport: Filter by sport type -
date: Filter by date -
location: Filter by location
-
-
Response:
{ "data": [ { "id": 1, "event_owner": 1, "sport": "Football", "event_datetime": "2024-03-25T15:00:00Z", "max_players": 20, "location_name": "Central Park, NY", "latitude": 40.785091, "longitude": -73.968285, "description": "Friendly football match", "title": "Lets football!", "created_at": "2024-03-25T10:00:00Z", "updated_at": "2024-03-25T10:00:00Z", "is_full": false, "registered_count": 0, "participants": [] } ] }
-
Endpoint:
GET /v1/events/{id} - Description: Get a specific event by ID
- Authentication: Required
-
Response:
{ "id": 1, "event_owner": 1, "sport": "Football", "event_datetime": "2024-03-25T15:00:00Z", "max_players": 20, "location_name": "Central Park, NY", "latitude": 40.785091, "longitude": -73.968285, "description": "Friendly football match", "title": "Lets football!", "created_at": "2024-03-25T10:00:00Z", "updated_at": "2024-03-25T10:00:00Z", "is_full": false, "registered_count": 0, "participants": [ { "user_id": 2, "joined_at": "2024-03-25T11:00:00Z" } ] }
-
Endpoint:
PUT /v1/events/{id} - Description: Update an existing event
- Authentication: Required (must be event owner)
-
Request Body:
{ "sport": "Football", "event_datetime": "2024-03-25T15:00:00Z", "max_players": 20, "location_name": "Central Park, NY", "latitude": 40.785091, "longitude": -73.968285, "description": "Friendly football match", "title": "Lets football!" } -
Response:
{ "id": 1, "event_owner": 1, "sport": "Football", "event_datetime": "2024-03-25T15:00:00Z", "max_players": 20, "location_name": "Central Park, NY", "latitude": 40.785091, "longitude": -73.968285, "description": "Friendly football match", "title": "Lets football!", "created_at": "2024-03-25T10:00:00Z", "updated_at": "2024-03-25T12:00:00Z", "is_full": false, "registered_count": 1 }
-
Endpoint:
DELETE /v1/events/{id} - Description: Delete an event
- Authentication: Required (must be event owner)
- Response: Status 204 No Content
-
Endpoint:
POST /v1/events/{id}/join - Description: Join an event as a participant
- Authentication: Required
-
Response:
{ "message": "Successfully joined the event", "event_id": 1, "user_id": 1 }
-
Endpoint:
DELETE /v1/events/{id}/leave - Description: Leave an event as a participant
- Authentication: Required
- Response: Status 204 No Content
-
Endpoint:
GET /v1/events/{id}/chat - Description: WebSocket connection for event chat
- Authentication: Required (via token query parameter)
-
Query Parameters:
-
token: JWT token
-
-
WebSocket Messages:
// Incoming message format { "type": "message", "content": "Hello everyone!" } // Outgoing message format { "type": "message", "content": "Hello everyone!", "sender": "John Doe", "timestamp": "2024-03-25T10:00:00Z" }
-
Endpoint:
GET /v1/health - Description: Check API health status
-
Response:
{ "status": "ok", "system_info": { "environment": "development", "version": "1.0.0" } }
-
Endpoint:
GET /v1/swagger/* - Description: Swagger/OpenAPI documentation
- Response: Swagger UI and API documentation