# endpoints_documentation = { # "root": { # "path": "/", # "method": "GET", # "description": "API root endpoint", # "parameters": None, # "request_body": None, # "response": {"message": "Clinic Reservation API - Use /docs for documentation"} # }, # "get_reservations": { # "path": "/reservations", # "method": "GET", # "description": "Get all reservations", # "parameters": None, # "request_body": None, # "response": { # "description": "List of all reservations", # "model": "List[Reservation]", # "filters": "Only returns reservations with status 'scheduled'" # } # }, # "get_reservations_by_filters": { # "path": "/reservations/", # "method": "GET", # "description": "Get reservations filtered by patient ID and/or doctor name (only scheduled)", # "parameters": { # "patient_id": { # "type": "str", # "required": False, # "description": "Filter by patient ID" # }, # "doctor_name": { # "type": "str", # "required": False, # "description": "Filter by doctor name (case-insensitive partial match)" # } # }, # "request_body": None, # "response": { # "description": "List of matching scheduled reservations", # "model": "List[Reservation]", # "error": "404 if no scheduled reservations match criteria" # } # }, # "create_reservation": { # "path": "/create-reservation", # "method": "POST", # "description": "Create a new reservation", # "parameters": None, # "request_body": { # "model": "CreateReservation", # "required_fields": { # "patient_id": "str", # "doctor_name": "str", # "date_time": "datetime like this 2023-10-16T19:00:00" # }, # "optional_fields": { # "reason": "str (optional)" # } # }, # "response": { # "description": "Created reservation with status 'scheduled'", # "model": "Reservation", # "error": "404 if doctor not found" # } # }, # "reschedule_reservation": { # "path": "/reservations/reschedule", # "method": "PUT", # "description": "Reschedule an existing reservation", # "parameters": { # "doctor_name": { # "type": "str", # "required": True, # "description": "ID of the reservation to reschedule" # }, # "new_date_time": { # "type": "str", # "required": True, # "description": "New date/time to reschedule to" # } # }, # "response": { # "description": "Updated reservation with new date/time", # "model": "Reservation", # "error": "404 if reservation not found" # } # }, # "cancel_reservation": { # "path": "/reservations/cancel", # "method": "PUT", # "description": "Cancel a reservation", # "parameters": { # "doctor_name": { # "type": "str", # "required": True, # "description": "ID of the reservation to cancel" # } # }, # "request_body": None, # "response": { # "description": "Canceled reservation (status changed to 'canceled')", # "model": "Reservation", # "error": "404 if reservation not found" # } # }, # "get_doctors": { # "path": "/doctors", # "method": "GET", # "description": "Get list of all available doctors", # "parameters": None, # "request_body": None, # "response": { # "description": "List of doctors with their specialties", # "model": "List[dict]", # "example": [ # {"id": 1, "name": "Dr. Smith", "specialty": "General Medicine"} # ] # } # }, # "get_doctor_availability": { # "path": "/doctors/{doctor_id}/availability", # "method": "GET", # "description": "Get doctor's fake availability slots (30-min intervals from 9am-5pm)", # "parameters": { # "doctor_id": { # "type": "int", # "required": True, # "description": "ID of the doctor" # }, # "date": { # "type": "str (YYYY-MM-DD)", # "required": False, # "description": "Date to check availability (default: today)" # } # }, # "request_body": None, # "response": { # "description": "Doctor's availability slots with random availability", # "model": "dict", # "example": { # "doctor_id": 1, # "date": "2023-10-15", # "slots": [ # { # "start": "2023-10-15T09:00:00", # "end": "2023-10-15T09:30:00", # "available": True # } # ] # }, # "error": "404 if doctor not found" # } # }, # "get_patients": { # "path": "/patients", # "method": "GET", # "description": "Get list of all patients", # "parameters": None, # "request_body": None, # "response": { # "description": "List of patients with contact information", # "model": "List[Patient]", # "example": [ # {"id": "uuid-123", "name": "John Doe", "phone": "555-0101", "email": "john@example.com"} # ] # } # }, # "get_patient_reservations": { # "path": "/patients/reservations", # "method": "GET", # "description": "Get my all reservations", # "parameters": { # "patient_id": { # "type": "str", # "required": True, # "description": "ID of the patient" # } # }, # "request_body": None, # "response": { # "description": "List of patient's reservations (all statuses)", # "model": "List[Reservation]", # "note": "Returns empty list if no reservations found (no 404 error)" # } # }, # "get_hospitals": { # "path": "/hospitals", # "method": "GET", # "description": "Get list of all hospitals and thier working hours (start time and end time) and location", # "parameters": None, # } # } endpoints_documentation = { "get_my_reservations": { "path": "/patients/reservations", "method": "GET", "description": "Get my personal reservations/appointments (all statuses)", "parameters": { "patient_id": { "type": "str", "required": True, "description": "ID of the patient" } }, "response": { "description": "List of patient's reservations", "model": "List[Reservation]" }, "use_case": "When user asks: Tell me my reservations, Show my appointments, قولي حجوزاتي" }, "get_all_reservations": { "path": "/reservations", "method": "GET", "description": "Get all reservations in the system (admin view)", "parameters": None, "response": { "description": "List of all scheduled reservations", "model": "List[Reservation]" }, "use_case": "When admin asks: Show all reservations, Get all appointments" }, "filter_reservations": { "path": "/reservations/", "method": "GET", "description": "Filter reservations by patient ID or doctor name", "parameters": { "patient_id": { "type": "str", "required": False, "description": "Filter by patient ID" }, "doctor_name": { "type": "str", "required": False, "description": "Filter by doctor name" } }, "response": { "description": "List of matching scheduled reservations", "model": "List[Reservation]" }, "use_case": "When user asks: Show reservations with Dr. Smith, Find my reservations with specific doctor" }, "create_reservation": { "path": "/create-reservation", "method": "POST", "description": "Book a new appointment/reservation", "request_body": { "required_fields": { "patient_id": "str", "doctor_name": "str", "date_time": "datetime (2023-10-16T19:00:00)" }, "optional_fields": { "reason": "str" } }, "response": { "description": "Created reservation", "model": "Reservation" }, "use_case": "When user asks: Book appointment, Schedule meeting, احجز موعد, I want to book with Dr. Smith" }, "reschedule_reservation": { "path": "/reservations/reschedule", "method": "PUT", "description": "Change appointment date/time", "parameters": { "doctor_name": { "type": "str", "required": True, "description": "Doctor name for the reservation" }, "patient_id": { "type": "str", "required": True, "description": "ID of the patient who wants to reschedule" } }, "body": { "new_date_time": { "type": "str", "required": True, "description": "New date/time to reschedule to (format: YYYY-MM-DDTHH:MM:SS)" } }, "response": { "description": "Updated reservation", "model": "Reservation" }, "use_case": "When user asks: Reschedule appointment, Change my appointment time, غير موعدي" }, "cancel_reservation": { "path": "/reservations/cancel", "method": "PUT", "description": "Cancel an existing appointment", "parameters": { "doctor_name": { "type": "str", "required": True, "description": "Doctor name for the reservation to cancel" }, "patient_id": { "type": "str", "required": True, "description": "ID of the patient who wants to cancel" } }, "response": { "description": "Canceled reservation", "model": "Reservation" }, "use_case": "When user asks: Cancel appointment, Cancel my booking, الغي موعدي" }, "get_doctors": { "path": "/doctors", "method": "GET", "description": "Get list of available doctors and their specialties and Get doctors by department", "parameters": None, "response": { "description": "List of doctors", "model": "List[Doctor]" }, "use_case": "When user asks: Show doctors, List available doctors, اظهر الاطباء" }, "get_doctor_details": { "path": "/doctor-details", "method": "GET", "description": "Get detailed information about a specific doctor and their availability and start and end working times", "parameters": { "doctor_name": { "type": "str", "required": True, "description": "Name of the doctor to get details for" } }, }, "get_patients": { "path": "/patients", "method": "GET", "description": "Get list of all patients (admin only)", "parameters": None, "response": { "description": "List of patients", "model": "List[Patient]" }, "use_case": "When admin asks: Show all patients, List patients" }, "get_hospitals": { "path": "/hospitals", "method": "GET", "description": "Get list of hospitals with locations and working hours", "parameters": None, "response": { "description": "List of hospitals", "model": "List[Hospital]" }, "use_case": "When user asks: Show hospitals, Where are the clinics, اظهر المستشفيات" } }