http://localhost:8080/api
The API uses basic authentication for most endpoints. User registration and login endpoints are publicly accessible.
POST /api/users/register
Content-Type: application/json
{
"username": "john_doe",
"email": "john@example.com",
"password": "password123",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "9876543210",
"gender": "MALE",
"idProofType": "AADHAR",
"idProofNumber": "123456789012"
}
POST /api/users/login?username=john_doe&password=password123
GET /api/users
Authorization: Basic <credentials>
GET /api/users/{id}
Authorization: Basic <credentials>
GET /api/users/username/{username}
Authorization: Basic <credentials>
GET /api/users/email/{email}
Authorization: Basic <credentials>
GET /api/users/search/name?name=john
Authorization: Basic <credentials>
PUT /api/users/{id}
Authorization: Basic <credentials>
Content-Type: application/json
{
"firstName": "John",
"lastName": "Smith",
"phoneNumber": "9876543211",
"gender": "MALE"
}
PUT /api/users/{id}/role?role=ADMIN
Authorization: Basic <credentials>
PUT /api/users/{id}/verify
Authorization: Basic <credentials>
PUT /api/users/{id}/activate
PUT /api/users/{id}/deactivate
Authorization: Basic <credentials>
DELETE /api/users/{id}
Authorization: Basic <credentials>
POST /api/trains
Authorization: Basic <credentials>
Content-Type: application/json
{
"trainNumber": "12345",
"trainName": "Rajdhani Express",
"sourceStation": {
"id": 1
},
"destinationStation": {
"id": 2
},
"departureTime": "16:00:00",
"arrivalTime": "08:30:00",
"trainType": "RAJDHANI",
"totalDistance": 1500.0
}
GET /api/trains
Authorization: Basic <credentials>
GET /api/trains/active
Authorization: Basic <credentials>
GET /api/trains/{id}
Authorization: Basic <credentials>
GET /api/trains/number/{trainNumber}
Authorization: Basic <credentials>
GET /api/trains/search?searchTerm=rajdhani
Authorization: Basic <credentials>
GET /api/trains/type/{trainType}
Authorization: Basic <credentials>
GET /api/trains/route?sourceStationCode=NDLS&destStationCode=BCT
Authorization: Basic <credentials>
GET /api/trains/route/city?sourceCity=Delhi&destCity=Mumbai
Authorization: Basic <credentials>
GET /api/trains/route/state?sourceState=Delhi&destState=Maharashtra
Authorization: Basic <credentials>
PUT /api/trains/{id}
Authorization: Basic <credentials>
Content-Type: application/json
{
"trainName": "Updated Train Name",
"departureTime": "17:00:00",
"arrivalTime": "09:30:00"
}
PUT /api/trains/{id}/status?status=ACTIVE
Authorization: Basic <credentials>
PUT /api/trains/{id}/running?isRunning=true
Authorization: Basic <credentials>
DELETE /api/trains/{id}
Authorization: Basic <credentials>
POST /api/bookings
Authorization: Basic <credentials>
Content-Type: application/json
{
"user": {
"id": 1
},
"train": {
"id": 1
},
"passenger": {
"id": 1
},
"coach": {
"id": 1
},
"seat": {
"id": 1
},
"journeyDate": "2024-01-15",
"isTatkal": false,
"quotaType": "GENERAL"
}
GET /api/bookings
Authorization: Basic <credentials>
GET /api/bookings/{id}
Authorization: Basic <credentials>
GET /api/bookings/pnr/{pnrNumber}
Authorization: Basic <credentials>
GET /api/bookings/user/{userId}
Authorization: Basic <credentials>
GET /api/bookings/user/{userId}/upcoming
Authorization: Basic <credentials>
GET /api/bookings/user/{userId}/past
Authorization: Basic <credentials>
GET /api/bookings/user/{userId}/confirmed
Authorization: Basic <credentials>
GET /api/bookings/date/{journeyDate}
Authorization: Basic <credentials>
GET /api/bookings/status/{status}
Authorization: Basic <credentials>
GET /api/bookings/search/pnr?pnr=1234567890
Authorization: Basic <credentials>
PUT /api/bookings/{id}/status?status=CONFIRMED
Authorization: Basic <credentials>
PUT /api/bookings/{id}/payment-status?paymentStatus=COMPLETED
Authorization: Basic <credentials>
PUT /api/bookings/{id}/cancel
Authorization: Basic <credentials>
The system comes with pre-loaded sample data:
- Admin: username:
admin, password:admin123 - John Doe: username:
john_doe, password:password123 - Jane Smith: username:
jane_smith, password:password123
- NDLS - New Delhi
- BCT - Mumbai Central
- SBC - Bangalore City
- MAS - Chennai Central
- HWH - Howrah Junction
- 12345 - Rajdhani Express (New Delhi → Mumbai)
- 12019 - Shatabdi Express (New Delhi → Bangalore)
- 12213 - Duronto Express (Mumbai → Chennai)
- AC First Class (A1) - 20 seats
- AC 2 Tier (B1) - 50 seats
- Sleeper Class (S1) - 72 seats
{
"id": 1,
"username": "john_doe",
"email": "john@example.com",
"firstName": "John",
"lastName": "Doe",
"isActive": true,
"createdAt": "2024-01-01T10:00:00"
}{
"error": "User not found"
}200- Success201- Created400- Bad Request401- Unauthorized404- Not Found500- Internal Server Error
curl -X POST http://localhost:8080/api/users/register \
-H "Content-Type: application/json" \
-d '{
"username": "testuser",
"email": "test@example.com",
"password": "password123",
"firstName": "Test",
"lastName": "User",
"phoneNumber": "9876543213"
}'curl -X POST "http://localhost:8080/api/users/login?username=testuser&password=password123"curl -X GET http://localhost:8080/api/trains \
-H "Authorization: Basic YWRtaW46YWRtaW4xMjM="- Import the collection
- Set the base URL to
http://localhost:8080/api - Use the provided sample data for testing
- Set Authorization header for protected endpoints
- All timestamps are in ISO 8601 format
- All monetary values are in Indian Rupees (INR)
- PNR numbers are 10-digit unique identifiers
- Train numbers follow Indian Railways format
- Station codes are 3-4 letter codes