{
    "openapi": "3.0.0",
    "info": {
        "title": "MyAfya API",
        "description": "REST API for MyAfya Profile — appointments, pharmacy, health records, video visits, AI assistants, and mobile integrations. Base path: `/api/v1`. Authenticate with `POST /api/v1/login`, then send `Authorization: Bearer {token}` on protected routes.",
        "contact": {
            "email": "info@myafyaprofile.com"
        },
        "license": {
            "name": "Apache 2.0",
            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
        },
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "http://127.0.0.1:8000",
            "description": "MyAfya API server"
        }
    ],
    "paths": {
        "/api/v1/settings": {
            "get": {
                "tags": [
                    "App Settings"
                ],
                "summary": "Get all app settings",
                "operationId": "8bc9116026ac3a267a02ba229189d653",
                "responses": {
                    "200": {
                        "description": "Settings retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "App Settings"
                ],
                "summary": "Create or update settings (Admin only)",
                "operationId": "17e3172385ca5038b8c1a8e2831312f6",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "key",
                                    "value"
                                ],
                                "properties": {
                                    "key": {
                                        "type": "string",
                                        "example": "app_name"
                                    },
                                    "value": {
                                        "type": "string",
                                        "example": "My Afya"
                                    },
                                    "type": {
                                        "type": "string",
                                        "example": "string"
                                    },
                                    "description": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Setting created/updated successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/settings/{key}": {
            "get": {
                "tags": [
                    "App Settings"
                ],
                "summary": "Get a specific setting",
                "operationId": "422ac47042e0363bf1a264eb474bb095",
                "responses": {
                    "200": {
                        "description": "Setting retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "App Settings"
                ],
                "summary": "Update a specific setting (Admin only)",
                "operationId": "12680e7f9d7ee6f183671efd8c2490a8",
                "responses": {
                    "200": {
                        "description": "Setting updated successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-appointments": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Get paginated list of appointments",
                "description": "Fetches a paginated list of appointments with doctor and patient details.",
                "operationId": "getAppointments",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of appointments to retrieve per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "payment_status": {
                                                        "type": "string",
                                                        "example": "Paid"
                                                    },
                                                    "doctor_id": {
                                                        "type": "integer",
                                                        "example": 5
                                                    },
                                                    "start_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:00:00"
                                                    },
                                                    "end_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:30:00"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2024-09-10"
                                                    },
                                                    "day": {
                                                        "type": "string",
                                                        "example": "Monday"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "Routine check-up"
                                                    },
                                                    "order_id": {
                                                        "type": "integer",
                                                        "example": 2
                                                    },
                                                    "session_id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "user_id": {
                                                        "type": "integer",
                                                        "example": 7
                                                    },
                                                    "general_status": {
                                                        "type": "string",
                                                        "example": "Completed"
                                                    },
                                                    "completed": {
                                                        "type": "boolean",
                                                        "example": true
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "datetime",
                                                        "example": "2024-09-09 12:30:45"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string",
                                                        "example": "Dr. John Smith"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string",
                                                        "example": "doctor.john@example.com"
                                                    },
                                                    "patient_name": {
                                                        "type": "string",
                                                        "example": "Jane Doe"
                                                    },
                                                    "patient_email": {
                                                        "type": "string",
                                                        "example": "jane.doe@example.com"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 50
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-searched-appointments": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Search appointments by doctor or patient name",
                "description": "Fetch a paginated list of appointments filtered by doctor or patient name.",
                "operationId": "05f95d45e66a6655ef1376edc7933cc6",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search term to filter appointments by doctor or patient name",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "John Doe"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "payment_status": {
                                                        "type": "string",
                                                        "example": "paid"
                                                    },
                                                    "doctor_id": {
                                                        "type": "integer",
                                                        "example": 2
                                                    },
                                                    "start_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "09:00:00"
                                                    },
                                                    "end_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "09:30:00"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2024-09-20"
                                                    },
                                                    "day": {
                                                        "type": "string",
                                                        "example": "Monday"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "Routine check-up"
                                                    },
                                                    "order_id": {
                                                        "type": "integer",
                                                        "example": 123
                                                    },
                                                    "session_id": {
                                                        "type": "integer",
                                                        "example": 321
                                                    },
                                                    "user_id": {
                                                        "type": "integer",
                                                        "example": 5
                                                    },
                                                    "general_status": {
                                                        "type": "string",
                                                        "example": "confirmed"
                                                    },
                                                    "completed": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-09-01 08:00:00"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string",
                                                        "example": "Dr. John Doe"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string",
                                                        "example": "doctor@example.com"
                                                    },
                                                    "patient_name": {
                                                        "type": "string",
                                                        "example": "Jane Doe"
                                                    },
                                                    "patient_email": {
                                                        "type": "string",
                                                        "example": "patient@example.com"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 2
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Internal server error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-appointments-by-status": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Get appointments filtered by payment or general status",
                "description": "Fetches a paginated list of appointments filtered by payment status ('paid', 'unpaid') or general status ('scheduled', 'completed', 'canceled').",
                "operationId": "getAppointmentsByStatus",
                "parameters": [
                    {
                        "name": "paymentStatus",
                        "in": "query",
                        "description": "Filter appointments by payment status ('paid', 'unpaid') or general status ('scheduled', 'completed', 'canceled')",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "paid",
                                "unpaid",
                                "scheduled",
                                "completed",
                                "canceled"
                            ],
                            "example": "paid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched filtered appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "payment_status": {
                                                        "type": "string",
                                                        "example": "Paid"
                                                    },
                                                    "doctor_id": {
                                                        "type": "integer",
                                                        "example": 5
                                                    },
                                                    "start_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:00:00"
                                                    },
                                                    "end_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:30:00"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2024-09-10"
                                                    },
                                                    "day": {
                                                        "type": "string",
                                                        "example": "Monday"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "Routine check-up"
                                                    },
                                                    "order_id": {
                                                        "type": "integer",
                                                        "example": 2
                                                    },
                                                    "session_id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "user_id": {
                                                        "type": "integer",
                                                        "example": 7
                                                    },
                                                    "general_status": {
                                                        "type": "string",
                                                        "example": "Completed"
                                                    },
                                                    "completed": {
                                                        "type": "boolean",
                                                        "example": true
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "datetime",
                                                        "example": "2024-09-09 12:30:45"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string",
                                                        "example": "Dr. John Smith"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string",
                                                        "example": "doctor.john@example.com"
                                                    },
                                                    "patient_name": {
                                                        "type": "string",
                                                        "example": "Jane Doe"
                                                    },
                                                    "patient_email": {
                                                        "type": "string",
                                                        "example": "jane.doe@example.com"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 50
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching appointments by status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments by status"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/appointments/update": {
            "post": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Update an appointment",
                "description": "Updates the payment and general status of an appointment.",
                "operationId": "updateAppointment",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "appointmentId",
                                    "paymentStatus",
                                    "generalStatus"
                                ],
                                "properties": {
                                    "appointmentId": {
                                        "description": "ID of the appointment to update",
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "paymentStatus": {
                                        "description": "Payment status of the appointment, either 'paid' or 'unpaid'",
                                        "type": "string",
                                        "example": "paid"
                                    },
                                    "generalStatus": {
                                        "description": "General status of the appointment, can be 'completed', 'pending', or 'canceled'",
                                        "type": "string",
                                        "example": "completed"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Appointment updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Appointment updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Appointment not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating appointment"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while updating the appointment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating appointment"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/appointments/delete": {
            "post": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Delete an appointment",
                "description": "Deletes an appointment by its ID.",
                "operationId": "deleteAppointment",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "appointmentId"
                                ],
                                "properties": {
                                    "appointmentId": {
                                        "description": "ID of the appointment to delete",
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Appointment deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Appointment deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Appointment not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Appointment not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while deleting the appointment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the appointment"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-all-appointments": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Get all appointments",
                "description": "Fetches a list of all appointments from the database.",
                "operationId": "getAllAppointments",
                "responses": {
                    "200": {
                        "description": "Successfully fetched all appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "payment_status": {
                                                        "type": "string",
                                                        "example": "Paid"
                                                    },
                                                    "doctor_id": {
                                                        "type": "integer",
                                                        "example": 5
                                                    },
                                                    "start_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:00:00"
                                                    },
                                                    "end_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:30:00"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2024-09-10"
                                                    },
                                                    "day": {
                                                        "type": "string",
                                                        "example": "Monday"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "Routine check-up"
                                                    },
                                                    "order_id": {
                                                        "type": "integer",
                                                        "example": 2
                                                    },
                                                    "session_id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "user_id": {
                                                        "type": "integer",
                                                        "example": 7
                                                    },
                                                    "general_status": {
                                                        "type": "string",
                                                        "example": "Completed"
                                                    },
                                                    "completed": {
                                                        "type": "boolean",
                                                        "example": true
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "datetime",
                                                        "example": "2024-09-09 12:30:45"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string",
                                                        "example": "Dr. John Smith"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string",
                                                        "example": "doctor.john@example.com"
                                                    },
                                                    "patient_name": {
                                                        "type": "string",
                                                        "example": "Jane Doe"
                                                    },
                                                    "patient_email": {
                                                        "type": "string",
                                                        "example": "jane.doe@example.com"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/count-appointments": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Get counts of appointments by status",
                "description": "Fetches the total count of all appointments as well as counts of appointments by their statuses such as pending, completed, canceled, and scheduled.",
                "operationId": "countAppointments",
                "responses": {
                    "200": {
                        "description": "Successfully fetched appointment counts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allAppointments": {
                                            "type": "integer",
                                            "example": 100
                                        },
                                        "pendingAppointments": {
                                            "type": "integer",
                                            "example": 20
                                        },
                                        "completedAppointments": {
                                            "type": "integer",
                                            "example": 60
                                        },
                                        "canceledAppointments": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "scheduledAppointments": {
                                            "type": "integer",
                                            "example": 10
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching and counting appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching and counting appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/read-appointment-notifications": {
            "post": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Mark all unread notifications as read for the authenticated doctor",
                "operationId": "d3b789ac60b9b6077c341005b1bc1d80",
                "responses": {
                    "200": {
                        "description": "Notifications marked as read",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Notifications marked as read."
                                        },
                                        "updated": {
                                            "type": "integer",
                                            "example": 5
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No unread notifications found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "info"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "No unread notifications found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while updating notifications."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/appointments-events": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Get scheduled events for the authenticated doctor",
                "operationId": "43430fe0ffa35bef8be82384f116f56d",
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "events": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "start": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-09-20T09:00:00"
                                                    },
                                                    "end": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-09-20T10:00:00"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2024-09-20"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "start_time": {
                                            "type": "string",
                                            "format": "time",
                                            "example": "09:00:00"
                                        },
                                        "end_time": {
                                            "type": "string",
                                            "format": "time",
                                            "example": "17:00:00"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching events",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching events"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/doctor-appointments-for-charts": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Get appointment statistics for the authenticated doctor",
                "operationId": "b7b98197f0f0856638aa4f0c454e17bf",
                "responses": {
                    "200": {
                        "description": "Successful response with appointment statistics",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "appointments": {
                                            "type": "object"
                                        },
                                        "generalProfit": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 1500
                                        },
                                        "patientsByMonths": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/doctor-upcoming-appointments": {
            "get": {
                "tags": [
                    "Appointments"
                ],
                "summary": "Get upcoming appointments and top paying patients for the authenticated doctor",
                "operationId": "c874b589df300f28fdefaf71657c0c93",
                "responses": {
                    "200": {
                        "description": "Successful response with upcoming appointments and top paying patients",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "upcomingAppointments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2024-09-30"
                                                    },
                                                    "start_time": {
                                                        "type": "string",
                                                        "example": "09:00"
                                                    },
                                                    "end_time": {
                                                        "type": "string",
                                                        "example": "09:30"
                                                    },
                                                    "general_status": {
                                                        "type": "string",
                                                        "example": "scheduled"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "bestPayingPatients": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "userId": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "user": {
                                                        "properties": {
                                                            "name": {
                                                                "type": "string",
                                                                "example": "John Doe"
                                                            },
                                                            "email": {
                                                                "type": "string",
                                                                "example": "john@example.com"
                                                            }
                                                        },
                                                        "type": "object"
                                                    },
                                                    "totalPaying": {
                                                        "type": "string",
                                                        "example": "250.00"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching upcoming appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while fetching upcoming appointments."
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/admin-appointments-for-charts": {
            "get": {
                "tags": [
                    "Admin"
                ],
                "summary": "Get appointment and order statistics for admin charts",
                "operationId": "caf521f65d4663ac3f7bfd05db6805f6",
                "responses": {
                    "200": {
                        "description": "Successful response with appointment and order statistics",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "appointments": {
                                            "properties": {
                                                "January": {
                                                    "properties": {
                                                        "totalProfit": {
                                                            "type": "number",
                                                            "format": "float",
                                                            "example": 1000
                                                        },
                                                        "appointmentCount": {
                                                            "type": "integer",
                                                            "example": 10
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "February": {
                                                    "properties": {
                                                        "totalProfit": {
                                                            "type": "number",
                                                            "format": "float",
                                                            "example": 1200
                                                        },
                                                        "appointmentCount": {
                                                            "type": "integer",
                                                            "example": 12
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "appointmentsGeneralProfit": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 22000
                                        },
                                        "topPayingPatients": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "userId": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "user": {
                                                        "properties": {
                                                            "name": {
                                                                "type": "string",
                                                                "example": "Jane Doe"
                                                            },
                                                            "email": {
                                                                "type": "string",
                                                                "example": "jane@example.com"
                                                            }
                                                        },
                                                        "type": "object"
                                                    },
                                                    "totalPaying": {
                                                        "type": "string",
                                                        "example": "500.00"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "orders": {
                                            "properties": {
                                                "January": {
                                                    "properties": {
                                                        "orders": {
                                                            "type": "array",
                                                            "items": {
                                                                "properties": {
                                                                    "id": {
                                                                        "type": "integer",
                                                                        "example": 1
                                                                    },
                                                                    "total_price": {
                                                                        "type": "number",
                                                                        "format": "float",
                                                                        "example": 200
                                                                    }
                                                                },
                                                                "type": "object"
                                                            }
                                                        },
                                                        "totalProfit": {
                                                            "type": "number",
                                                            "format": "float",
                                                            "example": 2000
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "February": {
                                                    "properties": {
                                                        "orders": {
                                                            "type": "array",
                                                            "items": {
                                                                "properties": {
                                                                    "id": {
                                                                        "type": "integer",
                                                                        "example": 2
                                                                    },
                                                                    "total_price": {
                                                                        "type": "number",
                                                                        "format": "float",
                                                                        "example": 250
                                                                    }
                                                                },
                                                                "type": "object"
                                                            }
                                                        },
                                                        "totalProfit": {
                                                            "type": "number",
                                                            "format": "float",
                                                            "example": 2200
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "ordersGeneralProfit": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 25000
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching appointments and orders stats",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments and orders stats"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/departments": {
            "get": {
                "tags": [
                    "Appointments Reservasion"
                ],
                "summary": "Get all departments",
                "description": "Retrieve a list of all departments.",
                "operationId": "getDepartments",
                "responses": {
                    "200": {
                        "description": "Successful response with the list of departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Departments retrieved successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error retrieving departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Failed to retrieve departments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/appointments-fetch-doctors": {
            "post": {
                "tags": [
                    "Appointments Reservasion"
                ],
                "summary": "Get doctors by department",
                "description": "Retrieve a list of doctors based on the specified department ID.",
                "operationId": "1dd54c0075578bb032ae4e48bca2545b",
                "parameters": [
                    {
                        "name": "departmentId",
                        "in": "query",
                        "description": "ID of the department to filter doctors by",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response with the list of doctors",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Doctors retrieved successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error retrieving doctors",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Failed to retrieve doctors"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/appointments-search-availability": {
            "post": {
                "tags": [
                    "Appointments Reservasion"
                ],
                "summary": "Search doctor availability",
                "description": "Search for available doctor times based on the specified date and doctor ID.",
                "operationId": "searchAvailability",
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Date for which to check availability, must be today or in the future",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "doctor",
                        "in": "query",
                        "description": "ID of the doctor to check availability for",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response with available times",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Search success"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid date provided",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The date should be in the future!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Authentication required",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Authentication required"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No available doctor times for the specified day",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "No available doctor times for the specified day"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Validation error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error searching availability",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Failed to search availability"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/appointments-register-appointment": {
            "post": {
                "tags": [
                    "Appointments Reservasion"
                ],
                "summary": "Register a new appointment",
                "description": "Create a new appointment and initiate a payment through Stripe.",
                "operationId": "registerAppointment",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "day",
                                    "doctor",
                                    "startTime",
                                    "date"
                                ],
                                "properties": {
                                    "day": {
                                        "type": "string",
                                        "enum": [
                                            "Monday",
                                            "Tuesday",
                                            "Wednesday",
                                            "Thursday",
                                            "Friday",
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "example": "Monday"
                                    },
                                    "doctor": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "startTime": {
                                        "type": "string",
                                        "example": "09:00:00"
                                    },
                                    "date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2024-09-30"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Appointment registered successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Appointment registered successfully"
                                        },
                                        "checkout_url": {
                                            "type": "string",
                                            "example": "https://checkout.stripe.com/..."
                                        },
                                        "appointment_id": {
                                            "type": "integer",
                                            "example": 1
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Doctor time slot not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Doctor time slot not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error registering appointment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Failed to register appointment"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/appointment-success-payment": {
            "post": {
                "tags": [
                    "Appointments Reservasion"
                ],
                "summary": "Handle successful Stripe payment",
                "description": "Retrieve the Stripe session and update the appointment status upon successful payment.",
                "operationId": "paymentSuccess",
                "parameters": [
                    {
                        "name": "sessionId",
                        "in": "query",
                        "description": "The session ID returned by Stripe after checkout.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Payment successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Payment successful."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Order not found or session not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Order not found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error retrieving session",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Error retrieving session."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/articles": {
            "get": {
                "tags": [
                    "Articles"
                ],
                "summary": "Get all published articles",
                "operationId": "2bb6d18420d6929d1d4175ace6521d21",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "description": "Filter by category",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "Covid-19"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of articles retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "Articles"
                ],
                "summary": "Create a new article (Admin only)",
                "operationId": "0ea2309d3197efec2dbee20f8ba49ddc",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "title",
                                    "content"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "example": "Health Article Title"
                                    },
                                    "content": {
                                        "type": "string",
                                        "example": "Full article content..."
                                    },
                                    "excerpt": {
                                        "type": "string",
                                        "example": "Short excerpt"
                                    },
                                    "category": {
                                        "type": "string",
                                        "example": "Covid-19"
                                    },
                                    "author": {
                                        "type": "string",
                                        "example": "Dr. John Doe"
                                    },
                                    "read_time": {
                                        "type": "integer",
                                        "example": 5
                                    },
                                    "published": {
                                        "type": "boolean",
                                        "example": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Article created successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/articles/{id}": {
            "get": {
                "tags": [
                    "Articles"
                ],
                "summary": "Get a single article",
                "operationId": "bf9724a6309b55de3ed51502e1a15814",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Article retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "Articles"
                ],
                "summary": "Update an article (Admin only)",
                "operationId": "3a49eac70b13579643e7c9b4b8397a87",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "example": "Updated Title"
                                    },
                                    "content": {
                                        "type": "string",
                                        "example": "Updated content..."
                                    },
                                    "excerpt": {
                                        "type": "string",
                                        "example": "Updated excerpt"
                                    },
                                    "category": {
                                        "type": "string",
                                        "example": "Fitness"
                                    },
                                    "author": {
                                        "type": "string",
                                        "example": "Dr. Jane Doe"
                                    },
                                    "read_time": {
                                        "type": "integer",
                                        "example": 7
                                    },
                                    "published": {
                                        "type": "boolean",
                                        "example": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Article updated successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/articles/trending": {
            "get": {
                "tags": [
                    "Articles"
                ],
                "summary": "Get trending articles",
                "operationId": "4a5f9a7200d1fde0495f7ab07db0d5c5",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of articles to return",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 5
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Trending articles retrieved successfully"
                    }
                }
            }
        },
        "/api/v1/articles/popular": {
            "get": {
                "tags": [
                    "Articles"
                ],
                "summary": "Get popular articles",
                "operationId": "d0a06aa419c3868e85540dceb2c586e1",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of articles to return",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 5
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Popular articles retrieved successfully"
                    }
                }
            }
        },
        "/api/v1/articles/category/{category}": {
            "get": {
                "tags": [
                    "Articles"
                ],
                "summary": "Get articles by category",
                "operationId": "42e42e23e15f53d3b0c65422e277d657",
                "parameters": [
                    {
                        "name": "category",
                        "in": "path",
                        "description": "Article category",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "Covid-19"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Articles by category retrieved successfully"
                    }
                }
            }
        },
        "/api/v1/articles/{id}/delete": {
            "post": {
                "tags": [
                    "Articles"
                ],
                "summary": "Delete an article (Admin only)",
                "operationId": "966d34bcfa7fbe4124024c2b2eaaa7ce",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Article deleted successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/articles/{id}/image": {
            "post": {
                "tags": [
                    "Articles"
                ],
                "summary": "Upload article image (Admin only)",
                "operationId": "75a2707ade9efc9b771888f08ba753fe",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "image"
                                ],
                                "properties": {
                                    "image": {
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Image uploaded successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/login": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "summary": "Log in a user",
                "description": "This endpoint authenticates a user and returns an authentication token upon successful login.",
                "operationId": "loginUser",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "User's email address",
                                        "type": "string",
                                        "format": "email",
                                        "example": "johndoe@example.com"
                                    },
                                    "password": {
                                        "description": "User's password",
                                        "type": "string",
                                        "example": "password123"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Login successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "token": {
                                            "type": "string",
                                            "example": "eyJ0eXAiOiJKV1QiLCJh..."
                                        },
                                        "status": {
                                            "type": "string",
                                            "example": "Logged in successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "These credentials do not match our records."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while processing your request."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/logout": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "summary": "Log out the user",
                "description": "Logs out the authenticated user, invalidates the session, and regenerates the CSRF token.",
                "operationId": "logoutUser",
                "responses": {
                    "204": {
                        "description": "Logout successful, no content returned"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while processing your request."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/reset-password": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Reset User Password",
                "description": "Reset the password for a user using a token.",
                "operationId": "25db075e6507c493bc3204e50aafecd9",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "token",
                                    "email",
                                    "password",
                                    "password_confirmation"
                                ],
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "example": "your-reset-token"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "user@example.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "example": "newPassword123"
                                    },
                                    "password_confirmation": {
                                        "type": "string",
                                        "example": "newPassword123"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Password reset successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Password reset successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The given data was invalid."
                                        },
                                        "errors": {
                                            "properties": {
                                                "email": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string",
                                                        "example": "The provided password reset token is invalid."
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/forgot-password": {
            "post": {
                "tags": [
                    "Password"
                ],
                "summary": "Send password reset link",
                "operationId": "sendPasswordResetLink",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "john.doe@example.com"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Password reset link sent successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "Password reset link sent successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "errors": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/register": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "summary": "Register a new user",
                "description": "This endpoint registers a new user, logs them in, and returns an authentication token.",
                "operationId": "registerUser",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "email",
                                    "password",
                                    "password_confirmation"
                                ],
                                "properties": {
                                    "name": {
                                        "description": "User's full name",
                                        "type": "string",
                                        "example": "John Doe"
                                    },
                                    "email": {
                                        "description": "User's email address",
                                        "type": "string",
                                        "format": "email",
                                        "example": "johndoe@example.com"
                                    },
                                    "password": {
                                        "description": "User's password",
                                        "type": "string",
                                        "example": "password123"
                                    },
                                    "password_confirmation": {
                                        "description": "Password confirmation (must match password)",
                                        "type": "string",
                                        "example": "password123"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Registration successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "token": {
                                            "type": "string",
                                            "example": "eyJ0eXAiOiJKV1QiLCJh..."
                                        },
                                        "status": {
                                            "type": "string",
                                            "example": "Registered successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The given data was invalid."
                                        },
                                        "errors": {
                                            "type": "object",
                                            "example": {
                                                "email": [
                                                    "The email has already been taken."
                                                ],
                                                "password": [
                                                    "The password confirmation does not match."
                                                ]
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while processing your request."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/banners": {
            "get": {
                "tags": [
                    "Banners"
                ],
                "summary": "Get all banners",
                "operationId": "97a03cc4d3c6942e54a6c87857089b72",
                "responses": {
                    "200": {
                        "description": "Banners retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "Banners"
                ],
                "summary": "Create a banner (Admin only)",
                "operationId": "0bbf014e34a6e7b03be598dbb9cc3828",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "title",
                                    "image"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "example": "Special Offer"
                                    },
                                    "image": {
                                        "type": "string",
                                        "example": "banners/banner.jpg"
                                    },
                                    "link": {
                                        "type": "string",
                                        "example": "/offers",
                                        "nullable": true
                                    },
                                    "order": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "active": {
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "start_date": {
                                        "type": "string",
                                        "format": "date-time",
                                        "nullable": true
                                    },
                                    "end_date": {
                                        "type": "string",
                                        "format": "date-time",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Banner created successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/banners/active": {
            "get": {
                "tags": [
                    "Banners"
                ],
                "summary": "Get active banners",
                "operationId": "ecd562056b8706fb3c0231b4722c6b96",
                "responses": {
                    "200": {
                        "description": "Active banners retrieved successfully"
                    }
                }
            }
        },
        "/api/v1/banners/{id}": {
            "post": {
                "tags": [
                    "Banners"
                ],
                "summary": "Update a banner (Admin only)",
                "operationId": "a07f37db91b543e8b56c83b0c4fc2b34",
                "responses": {
                    "200": {
                        "description": "Banner updated successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/banners/{id}/delete": {
            "post": {
                "tags": [
                    "Banners"
                ],
                "summary": "Delete a banner (Admin only)",
                "operationId": "ac63be6cc692f61dc349ec82bbb887e0",
                "responses": {
                    "200": {
                        "description": "Banner deleted successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/add-bed-allotment": {
            "post": {
                "tags": [
                    "Bed Allotments"
                ],
                "summary": "Add a bed allotment record",
                "operationId": "5c7d91d101b7797f333453260c473d5b",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "bedNumber",
                                    "bedType",
                                    "allotmentDate",
                                    "patientEmail"
                                ],
                                "properties": {
                                    "bedNumber": {
                                        "type": "integer",
                                        "example": 101
                                    },
                                    "bedType": {
                                        "type": "string",
                                        "example": "Private"
                                    },
                                    "allotmentDate": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2024-09-21"
                                    },
                                    "dischargeDate": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2024-09-30"
                                    },
                                    "patientEmail": {
                                        "type": "string",
                                        "example": "patient@example.com"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Bed allotment added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Patient not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while adding the bed allotment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-bed-allotments": {
            "get": {
                "tags": [
                    "Bed Allotments"
                ],
                "summary": "Search for bed allotments",
                "operationId": "e13a8dc1b707cde954aeecfc95e06526",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Query to search for patient name or email",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Searched bed allotments retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching searched bed allotments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-bed-allotments": {
            "get": {
                "tags": [
                    "Bed Allotments"
                ],
                "summary": "Retrieve paginated bed allotments",
                "operationId": "9e2009f82373f64a8390605a1294a4ef",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated bed allotments retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching bed allotments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-bed-allotment": {
            "post": {
                "tags": [
                    "Bed Allotments"
                ],
                "summary": "Delete a bed allotment",
                "operationId": "cbe71f84aa7c18d1f9f6d5c10708d93a",
                "parameters": [
                    {
                        "name": "bedAllotmentId",
                        "in": "path",
                        "description": "ID of the bed allotment to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Bed allotment deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Bed allotment not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the bed allotment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-bed-allotment": {
            "post": {
                "tags": [
                    "Bed Allotments"
                ],
                "summary": "Update a bed allotment",
                "operationId": "e4eafd95f3be655468484467c46082ad",
                "parameters": [
                    {
                        "name": "bedAllotmentId",
                        "in": "path",
                        "description": "ID of the bed allotment to update",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "bedNumber",
                                    "bedType",
                                    "allotmentDate",
                                    "patientEmail"
                                ],
                                "properties": {
                                    "bedNumber": {
                                        "type": "integer"
                                    },
                                    "bedType": {
                                        "type": "string"
                                    },
                                    "allotmentDate": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "dischargeDate": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "patientEmail": {
                                        "type": "string",
                                        "format": "email"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully updated the bed allotment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Can't find the patient email in the patients table",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while updating the bed allotment",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/bed-allotments": {
            "get": {
                "tags": [
                    "Bed Allotments"
                ],
                "summary": "Get all bed allotments",
                "operationId": "e2c3ec4d98e6b7a240e51be6bed1ca90",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved all bed allotments"
                    },
                    "500": {
                        "description": "Error occurred while fetching bed allotments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-birth-report": {
            "post": {
                "tags": [
                    "Birth Reports"
                ],
                "summary": "Add a new birth report",
                "operationId": "b6d2bc579c3e82b3e06c83a1b0c3affb",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "birthDetails": {
                                        "type": "string"
                                    },
                                    "birthDate": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "patientEmail": {
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "doctorEmail": {
                                        "type": "string",
                                        "format": "email"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Birth report added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newBirthReport": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "details": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string"
                                                },
                                                "patient_name": {
                                                    "type": "string"
                                                },
                                                "doctor_name": {
                                                    "type": "string"
                                                },
                                                "patient_email": {
                                                    "type": "string"
                                                },
                                                "doctor_email": {
                                                    "type": "string"
                                                },
                                                "doctor_id": {
                                                    "type": "integer"
                                                },
                                                "patient_id": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Patient or doctor not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while adding birth report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-birth-reports": {
            "get": {
                "tags": [
                    "Birth Reports"
                ],
                "summary": "Search for birth reports by patient or doctor details",
                "operationId": "9ebe4bad5edf0723413b446df1b8fa0c",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Query string to search for birth reports",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of searched birth reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "details": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching searched birth reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-birth-reports": {
            "get": {
                "tags": [
                    "Birth Reports"
                ],
                "summary": "Retrieve paginated birth reports",
                "operationId": "72c4c627602538db383df665ca684142",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of birth reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "details": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching birth reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-birth-report": {
            "post": {
                "tags": [
                    "Birth Reports"
                ],
                "summary": "Delete a birth report by ID",
                "operationId": "b22780f5f05b809219a4bef56ba048ca",
                "parameters": [
                    {
                        "name": "birthReportId",
                        "in": "query",
                        "description": "ID of the birth report to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Birth report deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Birth report not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the birth report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-birth-report": {
            "post": {
                "tags": [
                    "Birth Reports"
                ],
                "summary": "Update an existing birth report",
                "operationId": "ef80d3971aa8f4ab90d39816a98fc613",
                "parameters": [
                    {
                        "name": "birthReportId",
                        "in": "path",
                        "description": "ID of the birth report to update",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "birthReportId",
                                    "birthDetails",
                                    "date",
                                    "patientEmail",
                                    "doctorEmail"
                                ],
                                "properties": {
                                    "birthReportId": {
                                        "type": "integer"
                                    },
                                    "birthDetails": {
                                        "type": "string"
                                    },
                                    "date": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "patientEmail": {
                                        "type": "string"
                                    },
                                    "doctorEmail": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully updated the birth report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "updatedBirthReport": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "details": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date"
                                                },
                                                "patient_name": {
                                                    "type": "string"
                                                },
                                                "patient_email": {
                                                    "type": "string"
                                                },
                                                "doctor_name": {
                                                    "type": "string"
                                                },
                                                "doctor_email": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Error finding patient or doctor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error updating birth report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-birth-reports": {
            "get": {
                "tags": [
                    "Birth Reports"
                ],
                "summary": "Retrieve all birth reports",
                "operationId": "3968cdc61a1b9745066a9df395a4dfdf",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved all birth reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "birthReports": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "details": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching birth reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-blood": {
            "post": {
                "tags": [
                    "Blood Bank"
                ],
                "summary": "Add blood to the blood bank",
                "description": "Creates a new record in the blood bank.",
                "operationId": "addBlood",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "bloodName",
                                    "bloodType",
                                    "quantity"
                                ],
                                "properties": {
                                    "bloodName": {
                                        "description": "Name of the blood",
                                        "type": "string",
                                        "example": "O+"
                                    },
                                    "bloodType": {
                                        "description": "Type of the blood",
                                        "type": "string",
                                        "example": "O+"
                                    },
                                    "quantity": {
                                        "description": "Quantity of blood to add",
                                        "type": "integer",
                                        "example": 10
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Blood added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newBlood": {
                                            "description": "Details of the newly added blood record",
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Blood added successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding blood",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding blood"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-searched-bloods": {
            "get": {
                "tags": [
                    "Blood Bank"
                ],
                "summary": "Search for blood records",
                "description": "Fetches a paginated list of blood records from the blood bank based on a search query.",
                "operationId": "getSearchedBloods",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "description": "Search term for blood name",
                            "type": "string",
                            "example": "A+"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved searched blood records",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "blood_name": {
                                                        "type": "string"
                                                    },
                                                    "blood_type": {
                                                        "type": "string"
                                                    },
                                                    "quantity": {
                                                        "type": "integer"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched blood records",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched bloods"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-bloods": {
            "get": {
                "tags": [
                    "Blood Bank"
                ],
                "summary": "Retrieve a list of blood records",
                "description": "Fetches a paginated list of blood records from the blood bank.",
                "operationId": "getBloods",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "description": "Number of records per page",
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved blood records",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "blood_name": {
                                                        "type": "string"
                                                    },
                                                    "blood_type": {
                                                        "type": "string"
                                                    },
                                                    "quantity": {
                                                        "type": "integer"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching blood records",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching bloods"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/delete-blood": {
            "post": {
                "tags": [
                    "Blood Bank"
                ],
                "summary": "Delete a blood record",
                "description": "Removes a specific blood record from the blood bank.",
                "operationId": "deleteBlood",
                "parameters": [
                    {
                        "name": "blood_id",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "description": "ID of the blood record to delete",
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted the blood record",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Blood deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Blood record not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Blood not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error deleting blood record",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the blood"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-blood": {
            "post": {
                "tags": [
                    "Blood Bank"
                ],
                "summary": "Update a blood record",
                "description": "Updates the details of a specific blood record.",
                "operationId": "updateBlood",
                "parameters": [
                    {
                        "name": "blood_id",
                        "in": "path",
                        "description": "ID of the blood record to update",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "quantity",
                                    "bloodName",
                                    "bloodType"
                                ],
                                "properties": {
                                    "quantity": {
                                        "type": "integer",
                                        "example": 10
                                    },
                                    "bloodName": {
                                        "type": "string",
                                        "example": "O+"
                                    },
                                    "bloodType": {
                                        "type": "string",
                                        "example": "O+"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully updated blood record",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Blood updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error updating blood record",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating blood"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-all-bloods": {
            "get": {
                "tags": [
                    "Blood Bank"
                ],
                "summary": "Get all blood records",
                "description": "Retrieves all blood records from the blood bank.",
                "operationId": "getAllBloods",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved all blood records"
                    },
                    "500": {
                        "description": "Error fetching blood records",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching bloods"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/add-blood-donor": {
            "post": {
                "tags": [
                    "Blood Donors"
                ],
                "summary": "Add a new blood donor",
                "description": "Creates a new record for a blood donor.",
                "operationId": "addBloodDonor",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "donorName",
                                    "donorAge",
                                    "donorSex",
                                    "quantity",
                                    "bloodName",
                                    "bloodType",
                                    "lastDonationDate",
                                    "identityCardId"
                                ],
                                "properties": {
                                    "donorName": {
                                        "type": "string",
                                        "example": "John Doe"
                                    },
                                    "donorAge": {
                                        "type": "integer",
                                        "example": 30
                                    },
                                    "donorSex": {
                                        "type": "string",
                                        "example": "Male"
                                    },
                                    "quantity": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "bloodName": {
                                        "type": "string",
                                        "example": "O+"
                                    },
                                    "bloodType": {
                                        "type": "string",
                                        "example": "O+"
                                    },
                                    "lastDonationDate": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2023-09-15"
                                    },
                                    "identityCardId": {
                                        "type": "string",
                                        "example": "123456789"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully added blood donor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newBloodDonor": {
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Blood donor added successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding blood donor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding blood donor"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-searched-blood-donors": {
            "get": {
                "tags": [
                    "Blood Donors"
                ],
                "summary": "Search for blood donors",
                "description": "Retrieves paginated records of blood donors based on search criteria.",
                "operationId": "getSearchedBloodDonors",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search term to filter blood donors",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved searched blood donors"
                    },
                    "500": {
                        "description": "Error fetching searched blood donors",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched blood donors"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-blood-donors": {
            "get": {
                "tags": [
                    "Blood Donors"
                ],
                "summary": "Get a list of blood donors",
                "description": "Retrieves paginated records of blood donors.",
                "operationId": "getBloodDonors",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved blood donors"
                    },
                    "500": {
                        "description": "Error fetching blood donors",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching blood donors"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/delete-blood-donor": {
            "post": {
                "tags": [
                    "Blood Donors"
                ],
                "summary": "Delete a blood donor",
                "description": "Deletes a specified blood donor record.",
                "operationId": "deleteBloodDonor",
                "parameters": [
                    {
                        "name": "bloodDonorId",
                        "in": "path",
                        "description": "ID of the blood donor to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted blood donor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Blood donor deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Blood donor not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Blood donor not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error deleting blood donor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the blood donor"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-blood-donor": {
            "post": {
                "tags": [
                    "Blood Donors"
                ],
                "summary": "Update a blood donor",
                "description": "Updates the details of an existing blood donor.",
                "operationId": "updateBloodDonor",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "bloodId",
                                    "donorName",
                                    "donorAge",
                                    "donorSex",
                                    "quantity",
                                    "bloodName",
                                    "bloodType",
                                    "lastDonationDate",
                                    "identityCardId"
                                ],
                                "properties": {
                                    "bloodId": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "donorName": {
                                        "type": "string",
                                        "example": "John Doe"
                                    },
                                    "donorAge": {
                                        "type": "integer",
                                        "example": 30
                                    },
                                    "donorSex": {
                                        "type": "string",
                                        "example": "Male"
                                    },
                                    "quantity": {
                                        "type": "integer",
                                        "example": 2
                                    },
                                    "bloodName": {
                                        "type": "string",
                                        "example": "O+"
                                    },
                                    "bloodType": {
                                        "type": "string",
                                        "example": "O Positive"
                                    },
                                    "lastDonationDate": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2024-09-20"
                                    },
                                    "identityCardId": {
                                        "type": "integer",
                                        "example": "123456789"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Blood donor updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Blood donor updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error updating blood donor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating blood donor"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-all-blood-donors": {
            "get": {
                "tags": [
                    "Blood Donors"
                ],
                "summary": "Get all blood donors",
                "description": "Retrieves a list of all blood donors.",
                "operationId": "getAllBloodDonors",
                "responses": {
                    "200": {
                        "description": "Successful retrieval of blood donors"
                    },
                    "500": {
                        "description": "Error fetching blood donors",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching blood donors"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/add-death-report": {
            "post": {
                "tags": [
                    "Death Reports"
                ],
                "summary": "Add a new death report",
                "operationId": "ffc6c1fca9b228ad328cb2695f80235e",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "deathDetails",
                                    "deathDate",
                                    "patientEmail",
                                    "doctorEmail"
                                ],
                                "properties": {
                                    "deathDetails": {
                                        "type": "string"
                                    },
                                    "deathDate": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "patientEmail": {
                                        "type": "string"
                                    },
                                    "doctorEmail": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully added the death report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "newDeathReport": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "details": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date"
                                                },
                                                "patient_name": {
                                                    "type": "string"
                                                },
                                                "patient_email": {
                                                    "type": "string"
                                                },
                                                "doctor_name": {
                                                    "type": "string"
                                                },
                                                "doctor_email": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Error finding patient or doctor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding death report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-death-reports": {
            "get": {
                "tags": [
                    "Death Reports"
                ],
                "summary": "Search for death reports",
                "operationId": "727b8e7d495954852fccf36c3d392ac3",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search term to filter death reports",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved searched death reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "details": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched death reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-death-reports": {
            "get": {
                "tags": [
                    "Death Reports"
                ],
                "summary": "Retrieve paginated death reports",
                "operationId": "8fff937d0b04479d65befade825f1e71",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of results per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved death reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "details": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching death reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-death-report": {
            "post": {
                "tags": [
                    "Death Reports"
                ],
                "summary": "Delete a death report",
                "operationId": "ebc61b8db25176fbc7e978a7909dd386",
                "parameters": [
                    {
                        "name": "deathReportId",
                        "in": "query",
                        "description": "ID of the death report to be deleted",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted the death report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Death report deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Death report not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Death report not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the death report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-death-report": {
            "post": {
                "tags": [
                    "Death Reports"
                ],
                "summary": "Update a death report",
                "operationId": "c4c61c69003be23611139d8d99a9d782",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "deathReportId",
                                    "deathDetails",
                                    "date",
                                    "patientEmail",
                                    "doctorEmail"
                                ],
                                "properties": {
                                    "deathReportId": {
                                        "description": "ID of the death report to update",
                                        "type": "integer"
                                    },
                                    "deathDetails": {
                                        "description": "Details of the death report",
                                        "type": "string"
                                    },
                                    "date": {
                                        "description": "Date of death",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "patientEmail": {
                                        "description": "Email of the patient",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "doctorEmail": {
                                        "description": "Email of the doctor",
                                        "type": "string",
                                        "format": "email"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Death report updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "updatedDeathReport": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "details": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date"
                                                },
                                                "patient_name": {
                                                    "type": "string"
                                                },
                                                "patient_email": {
                                                    "type": "string"
                                                },
                                                "doctor_name": {
                                                    "type": "string"
                                                },
                                                "doctor_email": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Error finding patient or doctor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while updating death report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-death-reports": {
            "get": {
                "tags": [
                    "Death Reports"
                ],
                "summary": "Retrieve all death reports",
                "operationId": "22808405a1f5cad89c0fef37b47a31db",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved all death reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "deathReports": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "details": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching death reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-department": {
            "post": {
                "tags": [
                    "Department"
                ],
                "summary": "Add a new department",
                "operationId": "318e45753e564a6dfe77dfded68dae4e",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "slug",
                                    "description"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "Cardiology"
                                    },
                                    "slug": {
                                        "type": "string",
                                        "example": "cardiology"
                                    },
                                    "description": {
                                        "type": "string",
                                        "example": "Department of Cardiology"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Department added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newDepartment": {
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while adding department",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-departments": {
            "get": {
                "tags": [
                    "Department"
                ],
                "summary": "Retrieve departments with pagination",
                "operationId": "22702077e4628b56268b499d358efa06",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items to display per page (default is 15)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Departments retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "slug": {
                                                        "type": "string"
                                                    },
                                                    "desc": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-departments": {
            "get": {
                "tags": [
                    "Department"
                ],
                "summary": "Search for departments",
                "operationId": "31c718725b6083addae97df4f920512f",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to filter departments by name, slug, or description",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Departments retrieved successfully based on search query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "departments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "slug": {
                                                        "type": "string"
                                                    },
                                                    "desc": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching searched departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-department": {
            "post": {
                "tags": [
                    "Department"
                ],
                "summary": "Delete a department",
                "operationId": "4325835282da7cddf416a50e41d12766",
                "parameters": [
                    {
                        "name": "department_id",
                        "in": "query",
                        "description": "ID of the department to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Department deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Department deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Department not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Department not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while deleting the department",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/edit-department": {
            "post": {
                "tags": [
                    "Department"
                ],
                "summary": "Edit a department",
                "operationId": "7de951e11fee6593d9a61508bb7d864d",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "department_id",
                                    "name",
                                    "slug",
                                    "desc"
                                ],
                                "properties": {
                                    "department_id": {
                                        "description": "ID of the department to edit",
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "name": {
                                        "description": "Name of the department",
                                        "type": "string",
                                        "example": "New Department Name"
                                    },
                                    "slug": {
                                        "description": "Unique slug for the department",
                                        "type": "string",
                                        "example": "new-department-slug"
                                    },
                                    "desc": {
                                        "description": "Description of the department",
                                        "type": "string",
                                        "example": "Description of the department"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Department updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Department updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Department not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating department"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while updating the department",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating department"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-departments": {
            "get": {
                "tags": [
                    "Department"
                ],
                "summary": "Get all departments",
                "operationId": "327c0a72d47d50f428a542c18024f921",
                "responses": {
                    "200": {
                        "description": "A list of departments retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "departments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "description": "ID of the department",
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "description": "Name of the department",
                                                        "type": "string",
                                                        "example": "Department Name"
                                                    },
                                                    "slug": {
                                                        "description": "Slug for the department",
                                                        "type": "string",
                                                        "example": "department-name"
                                                    },
                                                    "desc": {
                                                        "description": "Description of the department",
                                                        "type": "string",
                                                        "example": "Description of the department"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while fetching departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching departments"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-doctor-appointments": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Get a paginated list of appointments for the authenticated doctor",
                "operationId": "bccf9ef603314838d54e31fc4fe6a432",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of appointments to display per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 50
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-doctor-appointments": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Get a paginated list of doctor appointments based on a search query",
                "operationId": "5cab6804e921d62e5003675db423787f",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to filter appointments by doctor or patient names",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "John Doe"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of searched appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "total": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 2
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-doctor-appointments-by-status": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Get a paginated list of doctor appointments based on their payment or general status",
                "operationId": "78331d79392cfea9394e97d2626c814c",
                "parameters": [
                    {
                        "name": "paymentStatus",
                        "in": "query",
                        "description": "Filter appointments by payment or general status (paid, unpaid, scheduled, completed, canceled)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "paid",
                                "unpaid",
                                "scheduled",
                                "completed",
                                "canceled"
                            ],
                            "example": "paid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of appointments by status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "total": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 2
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments by status"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-doctor-appointment": {
            "post": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Update the status of a specific appointment for the authenticated doctor",
                "operationId": "29f7d16607efad143a85e0c4bb53b104",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "appointmentId": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "paymentStatus": {
                                        "type": "string",
                                        "enum": [
                                            "paid",
                                            "unpaid"
                                        ],
                                        "example": "paid"
                                    },
                                    "generalStatus": {
                                        "type": "string",
                                        "enum": [
                                            "completed",
                                            "pending",
                                            "canceled"
                                        ],
                                        "example": "completed"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Appointment updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Appointment updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Appointment not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating appointment"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Appointment not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating appointment"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-doctor-appointment": {
            "post": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Delete a specific appointment for the authenticated doctor",
                "operationId": "aaa7f584cff05a20ceae030353354c56",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "appointmentId": {
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Appointment deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Appointment deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Appointment not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Appointment not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the appointment"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-doctor-appointments": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Retrieve all appointments for the authenticated doctor",
                "operationId": "14c97b2924d2d9a85c180210737e54b7",
                "responses": {
                    "200": {
                        "description": "Successful retrieval of all appointments"
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/count-doctor-appointments": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Count appointments for the authenticated doctor",
                "operationId": "afaee07dcbffaa5aee56a24798b07c40",
                "responses": {
                    "200": {
                        "description": "Successful retrieval of appointment counts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allAppointments": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "pendingAppointments": {
                                            "type": "integer",
                                            "example": 3
                                        },
                                        "completedAppointments": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "canceledAppointments": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "scheduledAppointments": {
                                            "type": "integer",
                                            "example": 1
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching and counting appointments"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-doctor": {
            "post": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Add a new doctor",
                "description": "Creates a new doctor record after validating the input data.",
                "operationId": "addDoctor",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "example": "doctor@example.com"
                                    },
                                    "smallDescription": {
                                        "type": "string",
                                        "example": "Experienced cardiologist"
                                    },
                                    "qualification": {
                                        "type": "string",
                                        "example": "MD, Cardiology"
                                    },
                                    "appointmentPrice": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 100.5
                                    },
                                    "consultationPrice": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 50
                                    },
                                    "department": {
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Doctor created successfully.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newDoctor": {
                                            "type": "object",
                                            "example": {
                                                "id": 1,
                                                "name": "John Doe",
                                                "email": "doctor@example.com",
                                                "small_description": "Experienced cardiologist",
                                                "qualification": "MD, Cardiology",
                                                "appointment_price": 100.5,
                                                "consultation_price": 50,
                                                "department_id": 1,
                                                "department_name": "Cardiology"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Doctor created successfully!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Validation error or user role issue.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "First change the user role from the All Users section."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Email already used in another table.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "This email is already used in the Laboratorists table!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Email not found in users!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding doctor.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding doctor"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-searched-doctors": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Search for doctors",
                "description": "Fetches a list of doctors based on a search query for their name or email.",
                "operationId": "getSearchedDoctors",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "The search term to filter doctors by name or email.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of doctors matching the search criteria.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "doctors": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "example": {
                                                    "id": 1,
                                                    "name": "John Doe",
                                                    "email": "doctor@example.com",
                                                    "avatar": "url_to_avatar",
                                                    "appointment_price": 100.5,
                                                    "consultation_price": 50,
                                                    "department_id": 1,
                                                    "department_name": "Cardiology"
                                                }
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 3
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 30
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched doctors.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched doctors"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-doctors": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Get a list of doctors",
                "description": "Fetches a paginated list of doctors with their details, including user and department information.",
                "operationId": "getDoctors",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A paginated list of doctors.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 50
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching doctors.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching doctors"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-departments-in-doctors": {
            "get": {
                "tags": [
                    "Department"
                ],
                "summary": "Get all departments",
                "description": "Retrieves a list of all departments.",
                "operationId": "getAllDepartments",
                "responses": {
                    "200": {
                        "description": "Successful retrieval of departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "departments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching departments"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/delete-doctor": {
            "post": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Delete a doctor",
                "description": "Deletes a doctor record from the database.",
                "operationId": "deleteDoctor",
                "parameters": [
                    {
                        "name": "doctor_id",
                        "in": "query",
                        "description": "The ID of the doctor to be deleted.",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Doctor deleted successfully.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Doctor deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Doctor not found.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Doctor not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the doctor.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the doctor"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-all-doctors": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Get all doctors",
                "description": "Retrieves a list of all doctors from the database.",
                "operationId": "getAllDoctors",
                "responses": {
                    "200": {
                        "description": "List of doctors retrieved successfully."
                    },
                    "500": {
                        "description": "Error occurred while fetching doctors.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching doctors"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/faqs": {
            "get": {
                "tags": [
                    "FAQs"
                ],
                "summary": "Get all FAQs",
                "operationId": "5d91194d21cc31de7d867c1e96951f2c",
                "parameters": [
                    {
                        "name": "category",
                        "in": "query",
                        "description": "Filter by category",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "FAQs retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "FAQs"
                ],
                "summary": "Create a new FAQ (Admin only)",
                "operationId": "b956357874079d0298a16a13b95043ec",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "question",
                                    "answer"
                                ],
                                "properties": {
                                    "question": {
                                        "type": "string",
                                        "example": "What is My Afya?"
                                    },
                                    "answer": {
                                        "type": "string",
                                        "example": "My Afya is a healthcare app..."
                                    },
                                    "category": {
                                        "type": "string",
                                        "example": "General"
                                    },
                                    "order": {
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "FAQ created successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/faqs/category/{category}": {
            "get": {
                "tags": [
                    "FAQs"
                ],
                "summary": "Get FAQs by category",
                "operationId": "8394525752d410246109fda8a46f86e2",
                "responses": {
                    "200": {
                        "description": "FAQs by category retrieved successfully"
                    }
                }
            }
        },
        "/api/v1/faqs/{id}": {
            "post": {
                "tags": [
                    "FAQs"
                ],
                "summary": "Update an FAQ (Admin only)",
                "operationId": "03b4daff3574e6fb94f22b3dcacf0179",
                "responses": {
                    "200": {
                        "description": "FAQ updated successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/faqs/{id}/delete": {
            "post": {
                "tags": [
                    "FAQs"
                ],
                "summary": "Delete an FAQ (Admin only)",
                "operationId": "66ee713e252e202729b3983addd16468",
                "responses": {
                    "200": {
                        "description": "FAQ deleted successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/health-tips": {
            "get": {
                "tags": [
                    "Health Tips"
                ],
                "summary": "Get all active health tips",
                "operationId": "60ff8cd86b86859c1753c2c0e68e5892",
                "responses": {
                    "200": {
                        "description": "Health tips retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "Health Tips"
                ],
                "summary": "Create a new health tip (Admin only)",
                "operationId": "0d8824dbc9b54bbcc12d091361af5d7e",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "title",
                                    "content"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "example": "Daily Exercise"
                                    },
                                    "content": {
                                        "type": "string",
                                        "example": "Exercise for 30 minutes daily..."
                                    },
                                    "category": {
                                        "type": "string",
                                        "example": "Fitness"
                                    },
                                    "scheduled_date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2024-12-13"
                                    },
                                    "active": {
                                        "type": "boolean",
                                        "example": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Health tip created successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/health-tips/today": {
            "get": {
                "tags": [
                    "Health Tips"
                ],
                "summary": "Get today's health tip",
                "operationId": "276f2541352e7a07e8ac143510722ead",
                "responses": {
                    "200": {
                        "description": "Today's health tip retrieved successfully"
                    }
                }
            }
        },
        "/api/v1/health-tips/{id}": {
            "post": {
                "tags": [
                    "Health Tips"
                ],
                "summary": "Update a health tip (Admin only)",
                "operationId": "2c7d0da5dcfcfe5516e201d6bf875568",
                "responses": {
                    "200": {
                        "description": "Health tip updated successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/health-tips/{id}/delete": {
            "post": {
                "tags": [
                    "Health Tips"
                ],
                "summary": "Delete a health tip (Admin only)",
                "operationId": "7464620a4b2ae5a7675521a1482ec6f2",
                "responses": {
                    "200": {
                        "description": "Health tip deleted successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/add-laboratorist": {
            "post": {
                "tags": [
                    "Laboratorist"
                ],
                "summary": "Add a new laboratorist",
                "operationId": "e3ff5bd25a7bda46a3e42d91fb47e117",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "email": {
                                        "description": "Email of the user to be added as a laboratorist",
                                        "type": "string",
                                        "format": "email",
                                        "example": "laboratorist@example.com"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Laboratorist created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newLaboratorist": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "user_id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "example": "John Doe"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "example": "laboratorist@example.com"
                                                },
                                                "avatar": {
                                                    "type": "string",
                                                    "example": "url_to_avatar"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Laboratorist created successfully!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Email already exists in other tables",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "This email is already used in the Laboratorists table!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Email not found in users",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Email not found in users!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid role for the user",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "First change the user role from the All Users section."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding laboratorist",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding laboratorist"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-laboratorists": {
            "get": {
                "tags": [
                    "Laboratorist"
                ],
                "summary": "Search and retrieve laboratorists by name or email",
                "operationId": "95454139a13ada7d7da6ca538f9a1d13",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to filter laboratorists by name or email",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "John"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of paginated laboratorists matching the search query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "laboratorist@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "url_to_avatar"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 25
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched laboratorists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched laboratorists"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-laboratorists": {
            "get": {
                "tags": [
                    "Laboratorist"
                ],
                "summary": "Get a paginated list of laboratorists",
                "operationId": "c584f3085ac2c3f29df86a770fc0b37a",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of laboratorists to return per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of paginated laboratorists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "laboratorist@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "url_to_avatar"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 75
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching laboratorists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching laboratorists"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-laboratorist": {
            "post": {
                "tags": [
                    "Laboratorist"
                ],
                "summary": "Delete a laboratorist by ID",
                "operationId": "6dbb01d4ba49e1feb7b27ee1fe3ddf83",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "laboratorist_id": {
                                        "description": "ID of the laboratorist to delete",
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Laboratorist deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Laboratorist deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Laboratorist not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Laboratorist not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while deleting the laboratorist",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the laboratorist"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-laboratorists": {
            "get": {
                "tags": [
                    "Laboratorist"
                ],
                "summary": "Get all laboratorists",
                "operationId": "d1487f9eda00576d7a23a3e5909e3afd",
                "responses": {
                    "200": {
                        "description": "List of all laboratorists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "laboratorists": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john.doe@example.com"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching laboratorists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching laboratorists"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-medicine": {
            "post": {
                "tags": [
                    "Medicines"
                ],
                "summary": "Add a new medicine",
                "operationId": "8f1b41fc45e6f3b938be9d70938e3fc6",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "medicineName",
                                    "medicineCategory",
                                    "medicinePrice",
                                    "manufacturingCompany",
                                    "medicineStatus",
                                    "expirationDate",
                                    "quantity"
                                ],
                                "properties": {
                                    "medicineName": {
                                        "type": "string"
                                    },
                                    "medicineCategory": {
                                        "type": "string"
                                    },
                                    "medicineDescription": {
                                        "type": "string"
                                    },
                                    "medicinePrice": {
                                        "type": "number",
                                        "format": "float"
                                    },
                                    "manufacturingCompany": {
                                        "type": "string"
                                    },
                                    "medicineStatus": {
                                        "type": "string",
                                        "enum": [
                                            "instock",
                                            "outofstock"
                                        ]
                                    },
                                    "expirationDate": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "quantity": {
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully added the medicine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while adding medicine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-medicines": {
            "get": {
                "tags": [
                    "Medicines"
                ],
                "summary": "Search for medicines based on a query",
                "operationId": "6be468ae3e287409f734f1d589fdb654",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query for medicine name or description",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched the searched medicines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching searched medicines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-medicines": {
            "get": {
                "tags": [
                    "Medicines"
                ],
                "summary": "Get a paginated list of medicines",
                "operationId": "b11939947fe682766298e44955a4c64a",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of medicines per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched the medicines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching medicines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-medicine": {
            "post": {
                "tags": [
                    "Medicines"
                ],
                "summary": "Delete a medicine by ID",
                "operationId": "0232fffe554e0918a06e39c11683e37b",
                "parameters": [
                    {
                        "name": "medicineId",
                        "in": "query",
                        "description": "ID of the medicine to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted the medicine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Medicine deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Medicine not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Medicine not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the medicine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-medicine": {
            "post": {
                "tags": [
                    "Medicines"
                ],
                "summary": "Update a medicine",
                "operationId": "b06bbe4e07cff353b8ae658eec78e996",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "medicineId": {
                                        "type": "integer"
                                    },
                                    "medicineName": {
                                        "type": "string"
                                    },
                                    "medicineCategory": {
                                        "type": "string"
                                    },
                                    "medicineDescription": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "medicinePrice": {
                                        "type": "number",
                                        "format": "float"
                                    },
                                    "manufacturingCompany": {
                                        "type": "string"
                                    },
                                    "medicineStatus": {
                                        "type": "string",
                                        "enum": [
                                            "instock",
                                            "outofstock"
                                        ]
                                    },
                                    "expirationDate": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "quantity": {
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Medicine updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "updatedMedicine": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "medicine_category": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "price": {
                                                    "type": "number",
                                                    "format": "float"
                                                },
                                                "manufacturing_company": {
                                                    "type": "string"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "expiration_date": {
                                                    "type": "string",
                                                    "format": "date"
                                                },
                                                "quantity": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while updating medicine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-medicines": {
            "get": {
                "tags": [
                    "Medicines"
                ],
                "summary": "Get all medicines",
                "operationId": "e96b7e238ecc756de9092f52a49f91cb",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved all medicines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "medicines": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "medicine_category": {
                                                        "type": "string"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "nullable": true
                                                    },
                                                    "price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "manufacturing_company": {
                                                        "type": "string"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "expiration_date": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "quantity": {
                                                        "type": "integer"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching medicines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/notifications": {
            "get": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Get user notifications",
                "operationId": "f840a445048dd4bb44357e5a7918027e",
                "responses": {
                    "200": {
                        "description": "Notifications retrieved successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Create a notification (Admin only)",
                "operationId": "0fe82c602a9f6117eb13321b6a32a773",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "title",
                                    "message"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "example": "New Appointment"
                                    },
                                    "message": {
                                        "type": "string",
                                        "example": "You have a new appointment scheduled"
                                    },
                                    "type": {
                                        "type": "string",
                                        "example": "info"
                                    },
                                    "user_id": {
                                        "type": "integer",
                                        "example": 1,
                                        "nullable": true
                                    },
                                    "data": {
                                        "type": "object",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Notification created successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/notifications/unread-count": {
            "get": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Get unread notification count",
                "operationId": "16252f75a4643c2e584c36e11d03ef10",
                "responses": {
                    "200": {
                        "description": "Unread count retrieved successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/notifications/read-all": {
            "post": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Mark all notifications as read",
                "operationId": "d2a1062505b7e808501c3aadde847d4e",
                "responses": {
                    "200": {
                        "description": "All notifications marked as read"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/notifications/{id}/read": {
            "post": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Mark notification as read",
                "operationId": "40910210fd7f4bf32e5fe86e6e8ca652",
                "responses": {
                    "200": {
                        "description": "Notification marked as read"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/notifications/{id}": {
            "delete": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Delete a notification",
                "operationId": "fe20bb65f56af8afdc02f28f4513dd4b",
                "responses": {
                    "200": {
                        "description": "Notification deleted successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/add-nurse": {
            "post": {
                "tags": [
                    "Nurse"
                ],
                "summary": "Add a new nurse",
                "operationId": "1c7bd4a29078d27d982fb19b3440e27e",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Email of the nurse, must exist in the users table and have the role of nurse.",
                                        "type": "string",
                                        "example": "nurse@example.com"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Nurse created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newNurse": {
                                            "properties": {
                                                "user_id": {
                                                    "description": "User ID associated with the nurse",
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "name": {
                                                    "description": "Name of the nurse",
                                                    "type": "string",
                                                    "example": "Nurse Name"
                                                },
                                                "email": {
                                                    "description": "Email of the nurse",
                                                    "type": "string",
                                                    "example": "nurse@example.com"
                                                },
                                                "avatar": {
                                                    "description": "Avatar URL of the nurse",
                                                    "type": "string",
                                                    "example": "avatar.png"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Nurse created successfully!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request, invalid user role",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "First change the user role from the All Users section."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Email not found in users",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Email not found in users!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Email already used in another table",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "This email is already used in the Doctors table!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while adding the nurse",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding nurse"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-nurses": {
            "get": {
                "tags": [
                    "Nurse"
                ],
                "summary": "Search for nurses by name or email",
                "operationId": "cd059816d171b251c2c352e12f610d84",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "description": "Search term for nurse name or email",
                            "type": "string",
                            "example": "nurse"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of searched nurses",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "description": "ID of the nurse",
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "description": "Name of the nurse",
                                                        "type": "string",
                                                        "example": "Nurse Name"
                                                    },
                                                    "email": {
                                                        "description": "Email of the nurse",
                                                        "type": "string",
                                                        "example": "nurse@example.com"
                                                    },
                                                    "avatar": {
                                                        "description": "Avatar URL of the nurse",
                                                        "type": "string",
                                                        "example": "avatar.png"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "description": "Current page of the pagination",
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "description": "Last page of the pagination",
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "description": "Total number of nurses matching the search",
                                            "type": "integer",
                                            "example": 100
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while fetching searched nurses",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched nurses"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-nurses": {
            "get": {
                "tags": [
                    "Nurse"
                ],
                "summary": "Retrieve all nurses",
                "operationId": "6dec01f02daba7bc33cf69198c4c0d5d",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "description": "Number of nurses to return per page",
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of nurses",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "description": "ID of the nurse",
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "description": "Name of the nurse",
                                                        "type": "string",
                                                        "example": "Nurse Name"
                                                    },
                                                    "email": {
                                                        "description": "Email of the nurse",
                                                        "type": "string",
                                                        "example": "nurse@example.com"
                                                    },
                                                    "avatar": {
                                                        "description": "Avatar URL of the nurse",
                                                        "type": "string",
                                                        "example": "avatar.png"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "description": "Current page of the pagination",
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "description": "Last page of the pagination",
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "description": "Total number of nurses",
                                            "type": "integer",
                                            "example": 100
                                        },
                                        "per_page": {
                                            "description": "Number of items per page",
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while fetching nurses",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching nurses"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-nurse": {
            "post": {
                "tags": [
                    "Nurse"
                ],
                "summary": "Delete a nurse by ID",
                "operationId": "ef854627d6a8b77fbbced201c14d6b2b",
                "parameters": [
                    {
                        "name": "nurse_id",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "description": "ID of the nurse to be deleted",
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Nurse deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Nurse deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Nurse not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Nurse not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while deleting the nurse",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the nurse"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-nurses": {
            "get": {
                "tags": [
                    "Nurse"
                ],
                "summary": "Retrieve all nurses",
                "operationId": "f1ce01ee2dff349cea305bf9a4d751eb",
                "responses": {
                    "200": {
                        "description": "List of all nurses retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "nurses": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john.doe@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "url_to_avatar"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while fetching nurses",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching nurses"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/nurse/dashboard": {
            "get": {
                "tags": [
                    "Nurse"
                ],
                "summary": "Get all nurse dashboard data",
                "description": "Retrieve counts of various data related to nurses for the dashboard.",
                "operationId": "getAllNurseDashboardData",
                "responses": {
                    "200": {
                        "description": "Successful response with counts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "bloods": {
                                            "type": "integer",
                                            "example": 50
                                        },
                                        "bloodDonors": {
                                            "type": "integer",
                                            "example": 150
                                        },
                                        "operationReports": {
                                            "type": "integer",
                                            "example": 20
                                        },
                                        "birthReports": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "deathReports": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "bedAllotments": {
                                            "type": "integer",
                                            "example": 100
                                        },
                                        "medicines": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "vaccines": {
                                            "type": "integer",
                                            "example": 300
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching nurse dashboard data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching nurse dashboard data"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-offer": {
            "post": {
                "tags": [
                    "Offer"
                ],
                "summary": "Add a new offer",
                "operationId": "84b58df9d3485eb4bfe7a15113d61464",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "Special Discount Offer"
                                    },
                                    "selectedServices": {
                                        "type": "array",
                                        "items": {
                                            "type": "integer",
                                            "example": 1
                                        }
                                    },
                                    "offerDiscountValue": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 10
                                    },
                                    "offerTaxRate": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 5
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Offer added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Offer added successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid input data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding offer"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding offer"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-offer": {
            "post": {
                "tags": [
                    "Offer"
                ],
                "summary": "Update an existing offer",
                "operationId": "68448dfe722ae93f9fed387cb8459402",
                "parameters": [
                    {
                        "name": "offerId",
                        "in": "query",
                        "description": "ID of the offer to be updated",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "description": "Name of the offer",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "maxLength": 255
                        }
                    },
                    {
                        "name": "selectedServices",
                        "in": "query",
                        "description": "Array of selected service IDs",
                        "required": true,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    {
                        "name": "offerDiscountValue",
                        "in": "query",
                        "description": "Discount value for the offer",
                        "required": false,
                        "schema": {
                            "type": "number",
                            "format": "float",
                            "example": 0
                        }
                    },
                    {
                        "name": "offerTaxRate",
                        "in": "query",
                        "description": "Tax rate for the offer",
                        "required": false,
                        "schema": {
                            "type": "number",
                            "format": "float",
                            "example": 0
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Offer updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Offer updated successfully"
                                        },
                                        "updatedOffer": {
                                            "description": "Updated offer details",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating offer"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-offers": {
            "get": {
                "tags": [
                    "Offer"
                ],
                "summary": "Retrieve searched offers",
                "operationId": "5149630cb9d4ef399fcaf86fe16a3d31",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to filter offers by name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of searched offers",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "Special Discount Offer"
                                                    },
                                                    "total_before_discount": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 100
                                                    },
                                                    "discount_value": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 10
                                                    },
                                                    "total_after_discount": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 90
                                                    },
                                                    "tax_rate": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 5
                                                    },
                                                    "total_with_tax": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 94.5
                                                    },
                                                    "service_offer": {
                                                        "type": "array",
                                                        "items": {
                                                            "properties": {
                                                                "id": {
                                                                    "type": "integer",
                                                                    "example": 1
                                                                },
                                                                "title": {
                                                                    "type": "string",
                                                                    "example": "Consultation"
                                                                },
                                                                "price": {
                                                                    "type": "number",
                                                                    "format": "float",
                                                                    "example": 50
                                                                }
                                                            },
                                                            "type": "object"
                                                        }
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 100
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched offers"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-offers": {
            "get": {
                "tags": [
                    "Offer"
                ],
                "summary": "Retrieve paginated offers",
                "operationId": "3ed70964db3025799f54d49d7941479f",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of offers",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "Special Discount Offer"
                                                    },
                                                    "total_before_discount": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 100
                                                    },
                                                    "discount_value": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 10
                                                    },
                                                    "total_after_discount": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 90
                                                    },
                                                    "tax_rate": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 5
                                                    },
                                                    "total_with_tax": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 94.5
                                                    },
                                                    "service_offer": {
                                                        "type": "array",
                                                        "items": {
                                                            "properties": {
                                                                "id": {
                                                                    "type": "integer",
                                                                    "example": 1
                                                                },
                                                                "title": {
                                                                    "type": "string",
                                                                    "example": "Consultation"
                                                                },
                                                                "price": {
                                                                    "type": "number",
                                                                    "format": "float",
                                                                    "example": 50
                                                                }
                                                            },
                                                            "type": "object"
                                                        }
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 100
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching offers"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-offer": {
            "post": {
                "tags": [
                    "Offer"
                ],
                "summary": "Delete an offer",
                "operationId": "91d07a9b6bc23f06a68843d1e1e92b77",
                "parameters": [
                    {
                        "name": "offerId",
                        "in": "query",
                        "description": "ID of the offer to be deleted",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Offer deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Offer deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Offer not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Offer not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the offer"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-services-in-offers": {
            "get": {
                "tags": [
                    "Offer"
                ],
                "summary": "Retrieve all active services",
                "operationId": "83e1bc8abfe67bb5e5c5eb798b028763",
                "responses": {
                    "200": {
                        "description": "List of services retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "services": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "title": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching services"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-operation-report": {
            "post": {
                "tags": [
                    "Operation Reports"
                ],
                "summary": "Add an operation report",
                "description": "Creates a new operation report for a patient.",
                "operationId": "addOperationReport",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "operationDetails",
                                    "operationDate",
                                    "patientEmail",
                                    "doctorEmail",
                                    "departmentId"
                                ],
                                "properties": {
                                    "operationDetails": {
                                        "type": "string",
                                        "example": "Appendectomy"
                                    },
                                    "operationDate": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2024-09-20"
                                    },
                                    "patientEmail": {
                                        "type": "string",
                                        "example": "patient@example.com"
                                    },
                                    "doctorEmail": {
                                        "type": "string",
                                        "example": "doctor@example.com"
                                    },
                                    "departmentId": {
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Operation report added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newOperationReport": {
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Operation report added successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Patient or doctor not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Can't find the patient email in the patients table!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding operation report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding operation report"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-searched-operation-reports": {
            "get": {
                "tags": [
                    "Operation Reports"
                ],
                "summary": "Get searched operation reports",
                "operationId": "71f012851a718cbd37edd213436204f7",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query for patient or doctor names or emails",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of operation reports"
                    },
                    "500": {
                        "description": "Error fetching operation reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-operation-reports": {
            "get": {
                "tags": [
                    "Operation Reports"
                ],
                "summary": "Get paginated operation reports",
                "operationId": "859ef8ada768ba7ecd35cff6f34da612",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful retrieval of operation reports"
                    },
                    "500": {
                        "description": "Error fetching operation reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-operation-report": {
            "post": {
                "tags": [
                    "Operation Reports"
                ],
                "summary": "Delete an operation report",
                "operationId": "721a655c762a92d39bf9d143edb6f22a",
                "parameters": [
                    {
                        "name": "operationReportId",
                        "in": "query",
                        "description": "ID of the operation report to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful deletion of the operation report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Operation report not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the operation report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-operation-report": {
            "post": {
                "tags": [
                    "Operation Reports"
                ],
                "summary": "Update an existing operation report",
                "operationId": "8cac1ff9e800a9d659471a2277f14a0f",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "operationReportId",
                                    "date",
                                    "patient_email",
                                    "doctor_email",
                                    "department_name",
                                    "operation_details",
                                    "department_id"
                                ],
                                "properties": {
                                    "operationReportId": {
                                        "type": "integer"
                                    },
                                    "date": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "patient_email": {
                                        "type": "string"
                                    },
                                    "doctor_email": {
                                        "type": "string"
                                    },
                                    "department_name": {
                                        "type": "string"
                                    },
                                    "operation_details": {
                                        "type": "string"
                                    },
                                    "department_id": {
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Operation report updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "updatedOperationReport": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Error when patient or doctor email is not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while updating operation report",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-departments-in-operation-reports": {
            "get": {
                "tags": [
                    "Operation Reports"
                ],
                "summary": "Retrieve all departments",
                "operationId": "002183d77068dc753c9a1f10dc071f14",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "departments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching departments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-operation-reports": {
            "get": {
                "tags": [
                    "Operation Reports"
                ],
                "summary": "Retrieve all operation reports",
                "operationId": "17c658bb2b36c3a7a8031cc92c742778",
                "responses": {
                    "200": {
                        "description": "Successful retrieval of operation reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "operationReports": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching operation reports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-orders": {
            "get": {
                "tags": [
                    "Order"
                ],
                "summary": "Retrieve paginated orders",
                "operationId": "691690c78e448cece7eac8fca32f4375",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of results per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated list of orders retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "total_price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "session_id": {
                                                        "type": "string"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "order_id": {
                                                        "type": "string"
                                                    },
                                                    "full_name": {
                                                        "type": "string"
                                                    },
                                                    "gender": {
                                                        "type": "string"
                                                    },
                                                    "national_card_id": {
                                                        "type": "string"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching orders"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-orders": {
            "get": {
                "tags": [
                    "Order"
                ],
                "summary": "Retrieve searched orders based on search query",
                "operationId": "9ac9f9ef238e7ed0010c30132088f406",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to filter orders by national card ID or full name",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "John Doe"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Searched orders retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "orders": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "total_price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "session_id": {
                                                        "type": "string"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "order_id": {
                                                        "type": "string"
                                                    },
                                                    "full_name": {
                                                        "type": "string"
                                                    },
                                                    "gender": {
                                                        "type": "string"
                                                    },
                                                    "national_card_id": {
                                                        "type": "string"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "description": "Total number of orders",
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "description": "Number of orders per page",
                                            "type": "integer"
                                        },
                                        "current_page": {
                                            "description": "Current page",
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "description": "Last page number",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched orders"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-orders-by-status": {
            "get": {
                "tags": [
                    "Order"
                ],
                "summary": "Retrieve orders based on their status",
                "operationId": "2171d49d1f2bc080334de2c55c7d2c88",
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Status of the orders to filter by (paid/unpaid)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "paid",
                                "unpaid"
                            ],
                            "example": "paid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Orders retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "orders": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "total_price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "session_id": {
                                                        "type": "string"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "order_id": {
                                                        "type": "string"
                                                    },
                                                    "full_name": {
                                                        "type": "string"
                                                    },
                                                    "gender": {
                                                        "type": "string"
                                                    },
                                                    "national_card_id": {
                                                        "type": "string"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "description": "Total number of orders",
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "description": "Number of orders per page",
                                            "type": "integer"
                                        },
                                        "current_page": {
                                            "description": "Current page",
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "description": "Last page number",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid status provided",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid status provided"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching orders by status"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-order": {
            "post": {
                "tags": [
                    "Order"
                ],
                "summary": "Update an order's status",
                "operationId": "0ddea45bb9c98277fdfc09380f6f4059",
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "Bearer token for authentication",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "orderId": {
                                        "description": "The ID of the order to update",
                                        "type": "integer",
                                        "example": 123
                                    },
                                    "status": {
                                        "description": "The new status of the order",
                                        "type": "string",
                                        "example": "paid"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Order updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Order updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Order not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Order not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error updating order",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating order"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-order": {
            "post": {
                "tags": [
                    "Order"
                ],
                "summary": "Delete an order by ID",
                "operationId": "649b9dd4ed467963021a03dafd6836b1",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "orderId": {
                                        "description": "The ID of the order to delete",
                                        "type": "integer",
                                        "example": 123
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Order deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Order deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Order not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Order not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while deleting the order",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the order"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-orders": {
            "get": {
                "tags": [
                    "Order"
                ],
                "summary": "Retrieve all orders",
                "operationId": "fe43ebfb59fe627af582d826828d4510",
                "responses": {
                    "200": {
                        "description": "Orders retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "orders": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "total_price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "session_id": {
                                                        "type": "string"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "order_id": {
                                                        "type": "string"
                                                    },
                                                    "full_name": {
                                                        "type": "string"
                                                    },
                                                    "gender": {
                                                        "type": "string"
                                                    },
                                                    "national_card_id": {
                                                        "type": "string"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching orders"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/count-orders": {
            "get": {
                "tags": [
                    "Order"
                ],
                "summary": "Get the count of all, paid, and unpaid orders",
                "operationId": "edd46388cf7fb7e54544c5fc1cb924cc",
                "responses": {
                    "200": {
                        "description": "Order counts retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allOrders": {
                                            "type": "integer",
                                            "example": 150
                                        },
                                        "paidOrders": {
                                            "type": "integer",
                                            "example": 90
                                        },
                                        "unpaidOrders": {
                                            "type": "integer",
                                            "example": 60
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching and counting orders"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/read-order-notifications": {
            "get": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Mark all notifications as read for the authenticated user",
                "operationId": "2aac529b574ca2a2fcf2619f84913767",
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "Bearer token for authentication",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notifications marked as read or no unread notifications",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "properties": {
                                                "status": {
                                                    "type": "string",
                                                    "example": "success"
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "example": "Notifications marked as read."
                                                },
                                                "updated": {
                                                    "type": "integer",
                                                    "example": 5
                                                }
                                            },
                                            "type": "object"
                                        },
                                        {
                                            "properties": {
                                                "status": {
                                                    "type": "string",
                                                    "example": "info"
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "example": "No unread notifications found."
                                                }
                                            },
                                            "type": "object"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error marking notifications as read",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while updating notifications."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-our-offers": {
            "get": {
                "tags": [
                    "Offers"
                ],
                "summary": "Get available offers",
                "operationId": "3582582688dac1c0dc251ba94050d22b",
                "responses": {
                    "200": {
                        "description": "Successful response with offers",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "Special Offer"
                                                    },
                                                    "total_before_discount": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 100
                                                    },
                                                    "discount_value": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 10
                                                    },
                                                    "total_after_discount": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 90
                                                    },
                                                    "tax_rate": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 5
                                                    },
                                                    "total_with_tax": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 94.5
                                                    },
                                                    "service_offer": {
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer",
                                                                "example": 1
                                                            },
                                                            "title": {
                                                                "type": "string",
                                                                "example": "Service Title"
                                                            },
                                                            "price": {
                                                                "type": "number",
                                                                "format": "float",
                                                                "example": 90
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching offers",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching offers"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-patient": {
            "post": {
                "tags": [
                    "Patient"
                ],
                "summary": "Add a new patient",
                "description": "Creates a new patient record after validating email, gender, blood group, birth date, and other relevant fields. Ensures that the email is not already in use in various tables and that the user role is appropriate.",
                "operationId": "addPatient",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "example@domain.com"
                                    },
                                    "gender": {
                                        "type": "string",
                                        "enum": [
                                            "male",
                                            "female",
                                            "other"
                                        ],
                                        "example": "male"
                                    },
                                    "bloodGroup": {
                                        "type": "string",
                                        "enum": [
                                            "A+",
                                            "A-",
                                            "B+",
                                            "B-",
                                            "AB+",
                                            "AB-",
                                            "O+",
                                            "O-"
                                        ],
                                        "example": "A+"
                                    },
                                    "birthDate": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "1990-01-01"
                                    },
                                    "deathDate": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2023-01-01",
                                        "nullable": true
                                    },
                                    "additionalNotes": {
                                        "type": "string",
                                        "example": "Patient has a known allergy to penicillin.",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Patient created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Patient created successfully!"
                                        },
                                        "newPatient": {
                                            "properties": {
                                                "name": {
                                                    "type": "string",
                                                    "example": "John Doe"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "example": "example@domain.com"
                                                },
                                                "blood_group": {
                                                    "type": "string",
                                                    "example": "A+"
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "example": "male"
                                                },
                                                "date_of_birth": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "1990-01-01"
                                                },
                                                "date_of_death": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "2023-01-01",
                                                    "nullable": true
                                                },
                                                "notes": {
                                                    "type": "string",
                                                    "example": "Patient has a known allergy to penicillin.",
                                                    "nullable": true
                                                },
                                                "avatar": {
                                                    "type": "string",
                                                    "example": "path/to/avatar.jpg",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Email not found"
                    },
                    "409": {
                        "description": "Conflict with email or user role"
                    },
                    "500": {
                        "description": "Error adding patient"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-searched-patients": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Search for patients",
                "description": "Fetches a list of patients based on a search query. You can search by name or email.",
                "operationId": "getSearchedPatients",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "The search query for finding patients by name or email.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "John"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of patients matching the search query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "format": "email",
                                                        "example": "john@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "path/to/avatar.jpg",
                                                        "nullable": true
                                                    },
                                                    "gender": {
                                                        "type": "string",
                                                        "example": "male"
                                                    },
                                                    "bloodGroup": {
                                                        "type": "string",
                                                        "example": "A+"
                                                    },
                                                    "birthDate": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "1990-01-01"
                                                    },
                                                    "deathDate": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2023-01-01",
                                                        "nullable": true
                                                    },
                                                    "additionalNotes": {
                                                        "type": "string",
                                                        "example": "Patient is allergic to penicillin.",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 100
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched patients"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-patients": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Retrieve all patients",
                "description": "Fetches a list of all patients stored in the database.",
                "operationId": "getPatients",
                "responses": {
                    "200": {
                        "description": "List of patients retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "patients": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "format": "email",
                                                        "example": "example@domain.com"
                                                    },
                                                    "blood_group": {
                                                        "type": "string",
                                                        "example": "A+"
                                                    },
                                                    "gender": {
                                                        "type": "string",
                                                        "example": "male"
                                                    },
                                                    "date_of_birth": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "1990-01-01"
                                                    },
                                                    "date_of_death": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2023-01-01",
                                                        "nullable": true
                                                    },
                                                    "notes": {
                                                        "type": "string",
                                                        "example": "Patient has a known allergy to penicillin.",
                                                        "nullable": true
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "path/to/avatar.jpg",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching patients"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/delete-patient": {
            "post": {
                "tags": [
                    "Patient"
                ],
                "summary": "Delete a patient",
                "description": "Deletes a patient from the database by their patient ID.",
                "operationId": "deletePatient",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "patient_id"
                                ],
                                "properties": {
                                    "patient_id": {
                                        "description": "The ID of the patient to be deleted",
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Patient deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Patient deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Patient not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Patient not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the patient",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the patient"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-all-patients": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Get all patients",
                "description": "Retrieves a list of all patients from the database.",
                "operationId": "getAllPatients",
                "responses": {
                    "200": {
                        "description": "List of all patients",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "patients": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john.doe@example.com"
                                                    },
                                                    "blood_group": {
                                                        "type": "string",
                                                        "example": "O+"
                                                    },
                                                    "gender": {
                                                        "type": "string",
                                                        "example": "male"
                                                    },
                                                    "date_of_birth": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "1990-01-01"
                                                    },
                                                    "date_of_death": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": null,
                                                        "nullable": true
                                                    },
                                                    "notes": {
                                                        "type": "string",
                                                        "example": "No additional notes",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching patients",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching patients"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-patient-appointments-and-orders": {
            "post": {
                "tags": [
                    "Patient"
                ],
                "summary": "Get patient's appointments and orders",
                "description": "Fetches the appointments and orders associated with a specific patient based on their patient_id.",
                "operationId": "getPatientAppointmentsAndOrders",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "patient_id"
                                ],
                                "properties": {
                                    "patient_id": {
                                        "description": "ID of the patient",
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully retrieved patient's appointments and orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "payment_status": {
                                                        "type": "string",
                                                        "example": "Paid"
                                                    },
                                                    "doctor_id": {
                                                        "type": "integer",
                                                        "example": 5
                                                    },
                                                    "start_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:00:00"
                                                    },
                                                    "end_time": {
                                                        "type": "string",
                                                        "format": "time",
                                                        "example": "10:30:00"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2024-09-10"
                                                    },
                                                    "day": {
                                                        "type": "string",
                                                        "example": "Monday"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "Routine check-up"
                                                    },
                                                    "order_id": {
                                                        "type": "integer",
                                                        "example": 2
                                                    },
                                                    "session_id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "user_id": {
                                                        "type": "integer",
                                                        "example": 7
                                                    },
                                                    "general_status": {
                                                        "type": "string",
                                                        "example": "Completed"
                                                    },
                                                    "completed": {
                                                        "type": "boolean",
                                                        "example": true
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "datetime",
                                                        "example": "2024-09-09 12:30:45"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string",
                                                        "example": "Dr. John Smith"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string",
                                                        "example": "doctor.john@example.com"
                                                    },
                                                    "patient_name": {
                                                        "type": "string",
                                                        "example": "Jane Doe"
                                                    },
                                                    "patient_email": {
                                                        "type": "string",
                                                        "example": "jane.doe@example.com"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "orders": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "order_number": {
                                                        "type": "string",
                                                        "example": "ORD12345"
                                                    },
                                                    "total": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 100.5
                                                    },
                                                    "status": {
                                                        "type": "string",
                                                        "example": "Shipped"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching patient appointments and orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching patient appointments and orders"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/patient-dashboard-data": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Get patient dashboard data",
                "operationId": "451d333cc519bb5ad1a25dc38a4fdaf7",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved patient dashboard data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments": {
                                            "properties": {
                                                "January": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "February": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "March": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "April": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "May": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "June": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "July": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "August": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "September": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "October": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "November": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "December": {
                                                    "properties": {
                                                        "appointmentCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "totalAppointments": {
                                            "type": "integer"
                                        },
                                        "orders": {
                                            "properties": {
                                                "January": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "February": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "March": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "April": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "May": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "June": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "July": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "August": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "September": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "October": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "November": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "December": {
                                                    "properties": {
                                                        "orderCount": {
                                                            "type": "integer"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "totalOrders": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-patient-appointments": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Get patient appointments",
                "operationId": "5e32f71bccd9570cc5ab4d5438d94d79",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items to display per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved patient appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "payment_status": {
                                                        "type": "string"
                                                    },
                                                    "doctor_id": {
                                                        "type": "integer"
                                                    },
                                                    "start_time": {
                                                        "type": "string"
                                                    },
                                                    "end_time": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string"
                                                    },
                                                    "day": {
                                                        "type": "string"
                                                    },
                                                    "description": {
                                                        "type": "string"
                                                    },
                                                    "order_id": {
                                                        "type": "integer"
                                                    },
                                                    "session_id": {
                                                        "type": "integer"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "general_status": {
                                                        "type": "string"
                                                    },
                                                    "completed": {
                                                        "type": "boolean"
                                                    },
                                                    "created_at": {
                                                        "type": "string"
                                                    },
                                                    "doctor_name": {
                                                        "type": "string"
                                                    },
                                                    "doctor_email": {
                                                        "type": "string"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-patient-appointments": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Search for patient appointments by doctor or patient name",
                "operationId": "b962eb92cb77d0de53f96e238b8f4208",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query for doctor or patient names",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved searched patient appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments": {
                                            "type": "object"
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching searched appointments",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-patient-appointments-by-status": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Retrieve patient appointments by payment or general status",
                "operationId": "ccda1bc320203c837d054892a3d7c51b",
                "parameters": [
                    {
                        "name": "paymentStatus",
                        "in": "query",
                        "description": "The status of the appointments to filter by (paid, unpaid, scheduled, completed, canceled)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "paid",
                                "unpaid",
                                "scheduled",
                                "completed",
                                "canceled"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved appointments by status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching appointments by status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/count-patient-appointments": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Count patient appointments by status",
                "operationId": "a30efcc0e4cafb32daa8704390b8e51d",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved appointment counts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allAppointments": {
                                            "type": "integer"
                                        },
                                        "pendingAppointments": {
                                            "type": "integer"
                                        },
                                        "completedAppointments": {
                                            "type": "integer"
                                        },
                                        "canceledAppointments": {
                                            "type": "integer"
                                        },
                                        "scheduledAppointments": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching appointment counts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-patient-orders": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Retrieve patient orders",
                "operationId": "cd013aeb0a6647168ccadfb905327726",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items to display per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved paginated orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "total_price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "session_id": {
                                                        "type": "string"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "order_id": {
                                                        "type": "string"
                                                    },
                                                    "full_name": {
                                                        "type": "string"
                                                    },
                                                    "gender": {
                                                        "type": "string"
                                                    },
                                                    "national_card_id": {
                                                        "type": "string"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-patient-orders": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Search for patient orders",
                "operationId": "a5ad01b6f9024a5c7237147c1acd3590",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query for national card ID or full name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved searched orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "orders": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "total_price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "session_id": {
                                                        "type": "string"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "order_id": {
                                                        "type": "string"
                                                    },
                                                    "full_name": {
                                                        "type": "string"
                                                    },
                                                    "gender": {
                                                        "type": "string"
                                                    },
                                                    "national_card_id": {
                                                        "type": "string"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching searched orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-patient-orders-by-status": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Retrieve orders by payment status",
                "operationId": "4ffbacde6b1e06e73e6e28cc2d6138aa",
                "parameters": [
                    {
                        "name": "paymentStatus",
                        "in": "query",
                        "description": "The payment status of the orders to filter",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "paid",
                                "unpaid"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully retrieved orders by status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "orders": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "total_price": {
                                                        "type": "number",
                                                        "format": "float"
                                                    },
                                                    "session_id": {
                                                        "type": "string"
                                                    },
                                                    "user_id": {
                                                        "type": "integer"
                                                    },
                                                    "order_id": {
                                                        "type": "string"
                                                    },
                                                    "full_name": {
                                                        "type": "string"
                                                    },
                                                    "gender": {
                                                        "type": "string"
                                                    },
                                                    "national_card_id": {
                                                        "type": "string"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer"
                                        },
                                        "per_page": {
                                            "type": "integer"
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching orders by status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/count-patient-orders": {
            "get": {
                "tags": [
                    "Patient"
                ],
                "summary": "Count patient orders",
                "operationId": "bb8b65bdb4d5837989e97060cf41d78e",
                "responses": {
                    "200": {
                        "description": "Successfully counted orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allOrders": {
                                            "type": "integer"
                                        },
                                        "paidOrders": {
                                            "type": "integer"
                                        },
                                        "unpaidOrders": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while counting orders",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/order-checkout": {
            "post": {
                "tags": [
                    "Checkout"
                ],
                "summary": "Create a checkout session for an order",
                "operationId": "d6ace96d291c8a69252450415679b451",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "offerId",
                                    "quantity",
                                    "fullName",
                                    "gender",
                                    "nationalCardID"
                                ],
                                "properties": {
                                    "offerId": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "quantity": {
                                        "type": "integer",
                                        "example": 2
                                    },
                                    "fullName": {
                                        "type": "string",
                                        "example": "John Doe"
                                    },
                                    "gender": {
                                        "type": "string",
                                        "example": "Male"
                                    },
                                    "nationalCardID": {
                                        "type": "string",
                                        "example": "123456789"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful response with checkout session details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Checkout session created successfully."
                                        },
                                        "checkout_url": {
                                            "type": "string",
                                            "example": "https://checkout.stripe.com/sessions/xyz"
                                        },
                                        "order_id": {
                                            "type": "string",
                                            "example": "1234567890123456789"
                                        },
                                        "order": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "order_id": {
                                                    "type": "string",
                                                    "example": "1234567890123456789"
                                                },
                                                "status": {
                                                    "type": "string",
                                                    "example": "unpaid"
                                                },
                                                "total_price": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "example": 100
                                                },
                                                "session_id": {
                                                    "type": "string",
                                                    "example": "sess_123456"
                                                },
                                                "user_id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "offer_id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "full_name": {
                                                    "type": "string",
                                                    "example": "John Doe"
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "example": "Male"
                                                },
                                                "national_card_id": {
                                                    "type": "string",
                                                    "example": "123456789"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Offer not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Offer not found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error creating checkout session",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "There was an error creating the checkout session: ..."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/order-success-payment": {
            "post": {
                "tags": [
                    "Checkout"
                ],
                "summary": "Handle successful payment notification",
                "operationId": "be1ed2d037f7d253b34f48dfbe552092",
                "parameters": [
                    {
                        "name": "sessionId",
                        "in": "query",
                        "description": "Stripe Checkout session ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Payment was successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Payment successful."
                                        },
                                        "order": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "order_id": {
                                                    "type": "string",
                                                    "example": "1234567890123456789"
                                                },
                                                "status": {
                                                    "type": "string",
                                                    "example": "paid"
                                                },
                                                "total_price": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "example": 100
                                                },
                                                "session_id": {
                                                    "type": "string",
                                                    "example": "sess_123456"
                                                },
                                                "user_id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "offer_id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "full_name": {
                                                    "type": "string",
                                                    "example": "John Doe"
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "example": "Male"
                                                },
                                                "national_card_id": {
                                                    "type": "string",
                                                    "example": "123456789"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Session or order not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Session not found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error retrieving session",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Error retrieving session."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-pharmacist": {
            "post": {
                "tags": [
                    "Pharmacist"
                ],
                "summary": "Add a new pharmacist",
                "operationId": "3970c333071abe69c9f5bda825ef2e6b",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "pharmacist@example.com"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Pharmacist created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newPharmacist": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "user_id": {
                                                    "type": "integer",
                                                    "example": 5
                                                },
                                                "name": {
                                                    "type": "string",
                                                    "example": "John Doe"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "format": "email",
                                                    "example": "pharmacist@example.com"
                                                },
                                                "avatar": {
                                                    "type": "string",
                                                    "example": "avatar-url.jpg"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Pharmacist created successfully!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Email is already used in another role",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "This email is already used in the Pharmacists table!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Email not found in users",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Email not found in users!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "User role not set as pharmacist",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "First change the user role from the All Users section."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding pharmacist",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding pharmacist"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-pharmacists": {
            "get": {
                "tags": [
                    "Pharmacist"
                ],
                "summary": "Search pharmacists by name or email",
                "operationId": "cba0d1d9e8d83f197a9766d5dfe2f646",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to find pharmacists by name or email",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "John"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of pharmacists matching the search query with pagination details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "format": "email",
                                                        "example": "pharmacist@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "avatar-url.jpg"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 50
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched pharmacists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched pharmacists"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-pharmacists": {
            "get": {
                "tags": [
                    "Pharmacist"
                ],
                "summary": "Get a paginated list of pharmacists",
                "operationId": "0c2a7f8702f1121106f8edc267b29897",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of pharmacists to display per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of pharmacists with pagination details",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "format": "email",
                                                        "example": "pharmacist@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "avatar-url.jpg"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 50
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching pharmacists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching pharmacists"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-pharmacist": {
            "post": {
                "tags": [
                    "Pharmacist"
                ],
                "summary": "Delete a pharmacist by ID",
                "operationId": "1c67b12ef792447e48f0ecbf1e7d4f67",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "pharmacist_id": {
                                        "description": "The ID of the pharmacist to delete",
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Pharmacist deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Pharmacist deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Pharmacist not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Pharmacist not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "An error occurred while deleting the pharmacist",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the pharmacist"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-pharmacists": {
            "get": {
                "tags": [
                    "Pharmacist"
                ],
                "summary": "Get all pharmacists",
                "operationId": "95e3492bf5da49e6bfb761999d359a5b",
                "responses": {
                    "200": {
                        "description": "Successfully fetched all pharmacists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "pharmacists": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "johndoe@example.com"
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-09-21T12:34:56Z"
                                                    },
                                                    "updated_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-09-21T12:34:56Z"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching pharmacists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching pharmacists"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/pharmacist-dashboard-data": {
            "get": {
                "tags": [
                    "Pharmacist"
                ],
                "summary": "Get pharmacist dashboard data",
                "operationId": "b5b590148699fd687d3662d1b23f2bd1",
                "responses": {
                    "200": {
                        "description": "Successfully retrieved pharmacist dashboard data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "medicineTypes": {
                                            "properties": {
                                                "antibiotic": {
                                                    "type": "integer"
                                                },
                                                "analgesic": {
                                                    "type": "integer"
                                                },
                                                "antipyretic": {
                                                    "type": "integer"
                                                },
                                                "antiseptic": {
                                                    "type": "integer"
                                                },
                                                "antiviral": {
                                                    "type": "integer"
                                                },
                                                "antifungal": {
                                                    "type": "integer"
                                                },
                                                "antihistamine": {
                                                    "type": "integer"
                                                },
                                                "antidepressant": {
                                                    "type": "integer"
                                                },
                                                "antidiabetic": {
                                                    "type": "integer"
                                                },
                                                "antimalarial": {
                                                    "type": "integer"
                                                },
                                                "antitussive": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/doctor-schedules-set-times": {
            "post": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Set or update doctor's available times",
                "operationId": "cdd50c4c3bb073d83e54a7640d8dd447",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "startTime": {
                                        "type": "string",
                                        "format": "time",
                                        "example": "09:00"
                                    },
                                    "endTime": {
                                        "type": "string",
                                        "format": "time",
                                        "example": "17:00"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Doctor times updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Doctor times updated successfully"
                                        },
                                        "data": {
                                            "properties": {
                                                "doctor_id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "start_time": {
                                                    "type": "string",
                                                    "example": "09:00"
                                                },
                                                "end_time": {
                                                    "type": "string",
                                                    "example": "17:00"
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2024-09-22T12:00:00Z"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2024-09-22T12:00:00Z"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "201": {
                        "description": "Doctor times created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Doctor times created successfully"
                                        },
                                        "data": {
                                            "properties": {
                                                "doctor_id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "start_time": {
                                                    "type": "string",
                                                    "example": "09:00"
                                                },
                                                "end_time": {
                                                    "type": "string",
                                                    "example": "17:00"
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2024-09-22T12:00:00Z"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2024-09-22T12:00:00Z"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Doctor not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Doctor not found in doctors table!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/doctor-schedules-fetch-times": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Get doctor's available times",
                "operationId": "157b8173adfd65417e7f73b885af3b87",
                "responses": {
                    "200": {
                        "description": "Doctor's times retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "properties": {
                                                "start_time": {
                                                    "type": "string",
                                                    "format": "time",
                                                    "example": "09:00"
                                                },
                                                "end_time": {
                                                    "type": "string",
                                                    "format": "time",
                                                    "example": "17:00"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No time data found for this doctor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "No time data found for this doctor."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching times"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/doctor-schedules-fetch-availability": {
            "get": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Get doctor's availability times",
                "operationId": "ae26e49ba5f0a89943f2818d88ec3e71",
                "responses": {
                    "200": {
                        "description": "Available times retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "id": {
                                                "type": "integer",
                                                "example": 1
                                            },
                                            "doctor_id": {
                                                "type": "integer",
                                                "example": 1
                                            },
                                            "day": {
                                                "type": "string",
                                                "example": "Monday"
                                            },
                                            "start_time": {
                                                "type": "string",
                                                "format": "time",
                                                "example": "09:00"
                                            },
                                            "end_time": {
                                                "type": "string",
                                                "format": "time",
                                                "example": "09:15"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No availability data found for this doctor",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "No availability data found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching availability"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/doctor-schedules-toggle-availability": {
            "post": {
                "tags": [
                    "Doctor"
                ],
                "summary": "Toggle doctor's availability for a specific day and time",
                "operationId": "c1ff057d5608cba58eb399edfe6e5f97",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "day": {
                                        "type": "string",
                                        "enum": [
                                            "Monday",
                                            "Tuesday",
                                            "Wednesday",
                                            "Thursday",
                                            "Friday",
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "example": "Monday"
                                    },
                                    "start_time": {
                                        "type": "string",
                                        "format": "time",
                                        "example": "09:00"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Schedule updated or deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Schedule Updated Successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation errors",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Validation failed"
                                        },
                                        "errors": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error details here"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/add-service": {
            "post": {
                "tags": [
                    "Service"
                ],
                "summary": "Add a new service",
                "operationId": "65312396b69535d2111563d2d52da498",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "serviceTitle",
                                    "servicePrice",
                                    "serviceStatus"
                                ],
                                "properties": {
                                    "serviceTitle": {
                                        "type": "string",
                                        "example": "General Checkup"
                                    },
                                    "servicePrice": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 50
                                    },
                                    "serviceDescription": {
                                        "type": "string",
                                        "example": "A comprehensive general checkup."
                                    },
                                    "serviceStatus": {
                                        "type": "boolean",
                                        "example": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Service added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newService": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "title": {
                                                    "type": "string",
                                                    "example": "General Checkup"
                                                },
                                                "price": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "example": 50
                                                },
                                                "description": {
                                                    "type": "string",
                                                    "example": "A comprehensive general checkup."
                                                },
                                                "status": {
                                                    "type": "boolean",
                                                    "example": true
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2024-09-21T12:34:56Z"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "example": "2024-09-21T12:34:56Z"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Service added successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error adding service",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error adding service"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-services": {
            "get": {
                "tags": [
                    "Service"
                ],
                "summary": "Search for services by title",
                "operationId": "848bf564d62344617916bf5d5da4d3f2",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "The title to search for in services",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of services matching the search query retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "title": {
                                                        "type": "string",
                                                        "example": "General Checkup"
                                                    },
                                                    "price": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 50
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "A comprehensive general checkup."
                                                    },
                                                    "status": {
                                                        "type": "boolean",
                                                        "example": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 3
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 30
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching searched services",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched services"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-services": {
            "get": {
                "tags": [
                    "Service"
                ],
                "summary": "Retrieve a list of services",
                "operationId": "138bfd9870c38810437df32429409396",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of services retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "title": {
                                                        "type": "string",
                                                        "example": "General Checkup"
                                                    },
                                                    "price": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 50
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "A comprehensive general checkup."
                                                    },
                                                    "status": {
                                                        "type": "boolean",
                                                        "example": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 100
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error fetching services",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching services"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-service": {
            "post": {
                "tags": [
                    "Service"
                ],
                "summary": "Delete a service by ID",
                "operationId": "87f71ad448c1c8b58ff998198949a4a0",
                "parameters": [
                    {
                        "name": "serviceId",
                        "in": "query",
                        "description": "The ID of the service to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Service deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Service deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Service not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Service not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error deleting the service",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the service"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-service": {
            "post": {
                "tags": [
                    "Service"
                ],
                "summary": "Update a service",
                "operationId": "cbe72e2c95a1d6fb7288f80a77184c28",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "serviceId": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "serviceTitle": {
                                        "type": "string",
                                        "example": "New Service Title"
                                    },
                                    "servicePrice": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 99.99
                                    },
                                    "serviceDescription": {
                                        "type": "string",
                                        "example": "Updated service description."
                                    },
                                    "serviceStatus": {
                                        "type": "boolean",
                                        "example": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Service updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Service updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid input data",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating service"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Service not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating service"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error updating service"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-services": {
            "get": {
                "tags": [
                    "Service"
                ],
                "summary": "Retrieve all services",
                "operationId": "86849ab6c8faf3fefa7ccc8ea13b5b55",
                "responses": {
                    "200": {
                        "description": "A list of all services"
                    },
                    "500": {
                        "description": "Error fetching services",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching services"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Detailed error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/sse": {
            "get": {
                "tags": [
                    "Notifications"
                ],
                "summary": "Stream Real-Time Notifications",
                "operationId": "2999e6eff088e11c58d911d2b6b0c3f6",
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "description": "The access token for authentication",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notifications streamed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "notifications": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "appointmentsNotifications": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Invalid or expired token"
                    }
                }
            }
        },
        "/api/v1/testimonials": {
            "get": {
                "tags": [
                    "Testimonials"
                ],
                "summary": "Get all approved testimonials",
                "operationId": "4f4c5713934b1ac9e9a14fa4736e52d1",
                "responses": {
                    "200": {
                        "description": "Testimonials retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "Testimonials"
                ],
                "summary": "Create a testimonial",
                "operationId": "1bc2345d58ff77d9d1c8b04dbcbf095f",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "rating",
                                    "comment"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "John Doe"
                                    },
                                    "rating": {
                                        "type": "integer",
                                        "example": 5
                                    },
                                    "comment": {
                                        "type": "string",
                                        "example": "Great service!"
                                    },
                                    "image": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Testimonial created successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/testimonials/approved": {
            "get": {
                "tags": [
                    "Testimonials"
                ],
                "summary": "Get approved testimonials",
                "operationId": "a689ad7eac349f7190ed82834adac6cc",
                "responses": {
                    "200": {
                        "description": "Approved testimonials retrieved successfully"
                    }
                }
            }
        },
        "/api/v1/testimonials/{id}/approve": {
            "post": {
                "tags": [
                    "Testimonials"
                ],
                "summary": "Approve a testimonial (Admin only)",
                "operationId": "0a76a3680f00891201321571601a15ec",
                "responses": {
                    "200": {
                        "description": "Testimonial approved successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/testimonials/{id}": {
            "post": {
                "tags": [
                    "Testimonials"
                ],
                "summary": "Update a testimonial (Admin only)",
                "operationId": "a2b398094336a1829ee5f79d4651eea4",
                "responses": {
                    "200": {
                        "description": "Testimonial updated successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/testimonials/{id}/delete": {
            "post": {
                "tags": [
                    "Testimonials"
                ],
                "summary": "Delete a testimonial (Admin only)",
                "operationId": "3ea60d495d99c6239eff29f45e912eec",
                "responses": {
                    "200": {
                        "description": "Testimonial deleted successfully"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-password": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update user password",
                "description": "Allows an authenticated user to update their password.",
                "operationId": "updatePassword",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "currentPassword",
                                    "newPassword",
                                    "confirmPassword"
                                ],
                                "properties": {
                                    "currentPassword": {
                                        "description": "The current password of the user.",
                                        "type": "string"
                                    },
                                    "newPassword": {
                                        "description": "The new password of the user.",
                                        "type": "string"
                                    },
                                    "confirmPassword": {
                                        "description": "Confirmation of the new password.",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Password updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Password updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request, validation errors or password mismatch",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Current password is incorrect"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-name": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update user name",
                "description": "Allows an authenticated user to update their name.",
                "operationId": "updateName",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name"
                                ],
                                "properties": {
                                    "name": {
                                        "description": "The new name of the user",
                                        "type": "string",
                                        "maxLength": 255
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Name updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Name updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request, validation errors or failed update",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Failed to update name"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-email": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update user email",
                "description": "Allows an authenticated user to update their email address.",
                "operationId": "updateEmail",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "The new email address of the user",
                                        "type": "string",
                                        "format": "email",
                                        "example": "user@example.com"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Email updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Email updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request, validation errors or failed update",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Failed to update email"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-social-links": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update user's social links",
                "description": "Allows an authenticated user to update their social media links (website, Facebook, Twitter, Instagram).",
                "operationId": "updateSocialLinks",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "website": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "https://example.com",
                                        "nullable": true
                                    },
                                    "facebook": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "https://facebook.com/user",
                                        "nullable": true
                                    },
                                    "twitter": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "https://twitter.com/user",
                                        "nullable": true
                                    },
                                    "instagram": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "https://instagram.com/user",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Social links updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Social links updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request, validation errors or failed update",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Failed to update social links"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-image": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update user's profile image",
                "description": "Allows an authenticated user to update their profile image.",
                "operationId": "updateImage",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "image"
                                ],
                                "properties": {
                                    "image": {
                                        "description": "Profile image file",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Image uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "string",
                                            "example": "Image uploaded successfully"
                                        },
                                        "path": {
                                            "type": "string",
                                            "example": "/storage/images/avatar.jpg"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request or validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid image format"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/update-personal-info": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update user's personal information",
                "description": "Allows an authenticated user to update their personal information (phone, bio, address, city, state, zip, country).",
                "operationId": "updatePersonalInfo",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "phone": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "+255123456789",
                                        "nullable": true
                                    },
                                    "bio": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "I am a health enthusiast",
                                        "nullable": true
                                    },
                                    "address": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "123 Main Street",
                                        "nullable": true
                                    },
                                    "city": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "Dar es Salaam",
                                        "nullable": true
                                    },
                                    "state": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "Dar es Salaam",
                                        "nullable": true
                                    },
                                    "zip": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "11101",
                                        "nullable": true
                                    },
                                    "country": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "Tanzania",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Personal information updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Personal information updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request, validation errors or failed update",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Failed to update personal information"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "api/v1/check-user-auth": {
            "get": {
                "tags": [
                    "Authentication"
                ],
                "summary": "Check User Authentication",
                "operationId": "7d19563aa7e8482755f6dcd15a006853",
                "responses": {
                    "200": {
                        "description": "User is authenticated"
                    },
                    "401": {
                        "description": "User is not authenticated"
                    }
                }
            }
        },
        "/api/v1/get-user-data": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Retrieve Authenticated User Data",
                "operationId": "5b14cd16829dc67500f2e1c926334040",
                "responses": {
                    "200": {
                        "description": "User data retrieved successfully"
                    },
                    "401": {
                        "description": "User is not authenticated"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/v1/get-user-photo": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Get authenticated user's profile photo",
                "description": "Retrieves the authenticated user's profile photo URL.",
                "operationId": "getUserProfilePhoto",
                "responses": {
                    "200": {
                        "description": "Profile photo retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "string",
                                            "example": "Profile photo retrieved successfully"
                                        },
                                        "photo_url": {
                                            "type": "string",
                                            "example": "/storage/images/avatar.jpg"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "User not authenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not authenticated"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Profile photo not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Profile photo not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/is-user-admin": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Check if the authenticated user is an admin",
                "description": "Checks if the authenticated user has admin privileges by retrieving the status from cache or database.",
                "operationId": "isUserAdmin",
                "responses": {
                    "200": {
                        "description": "Admin status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "isAdmin": {
                                            "type": "boolean",
                                            "example": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not authenticated"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/change-user-role": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Change user role",
                "description": "Update the role of a specified user.",
                "operationId": "changeUserRole",
                "parameters": [
                    {
                        "name": "role",
                        "in": "query",
                        "description": "The new role to assign to the user.",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "admin",
                                "doctor",
                                "nurse",
                                "pharmacist",
                                "laboratorist",
                                "patient"
                            ]
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "query",
                        "description": "The ID of the user to update.",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User role updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User role updated successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while updating the user role"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message details"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/delete-user": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Delete user",
                "description": "Remove a user from the system.",
                "operationId": "deleteUser",
                "parameters": [
                    {
                        "name": "user_id",
                        "in": "query",
                        "description": "The ID of the user to delete.",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "success"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "example": "error"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "An error occurred while deleting the user"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message details"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-user-role": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Get the authenticated user's role",
                "description": "Fetches the role of the authenticated user (admin, doctor, nurse, laboratorist, pharmacist, or patient) based on their attributes.",
                "operationId": "getUserRole",
                "responses": {
                    "200": {
                        "description": "User role retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "properties": {
                                                "role": {
                                                    "type": "string",
                                                    "example": "admin"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "An error occurred while fetching the user role."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/user": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Get authenticated user information",
                "description": "Retrieves the authenticated user's information.",
                "operationId": "getUserInfo",
                "responses": {
                    "200": {
                        "description": "User information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "id": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "name": {
                                            "type": "string",
                                            "example": "John Doe"
                                        },
                                        "email": {
                                            "type": "string",
                                            "example": "john@example.com"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-users": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Get paginated list of users",
                "description": "Fetches a paginated list of users with optional search filtering. Users can be filtered by name or email.",
                "operationId": "getUsers",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of users per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    },
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to filter users by name or email",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "john"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of users retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john.doe@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "/storage/images/avatar.jpg"
                                                    },
                                                    "is_admin": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_doctor": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_nurse": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_pharmacist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_laboratorist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-01T00:00:00.000Z"
                                                    },
                                                    "email_verified_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-02T00:00:00.000Z"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 100
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching users"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message details"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-searched-users": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Search and paginate users",
                "description": "Fetch a paginated list of users based on a search query. Users can be searched by name or email.",
                "operationId": "getSearchedUsers",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Search query to filter users by name or email",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "john"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of searched users retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "users": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john.doe@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "/storage/images/avatar.jpg"
                                                    },
                                                    "is_admin": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_doctor": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_nurse": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_pharmacist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_laboratorist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-01T00:00:00.000Z"
                                                    },
                                                    "email_verified_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-02T00:00:00.000Z"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 1
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching searched users"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message details"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-users-by-role": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Get users by role",
                "description": "Fetch a paginated list of users based on their role. Possible roles are admin, doctor, nurse, pharmacist, laboratorist, patient, or all.",
                "operationId": "getUsersByRoles",
                "parameters": [
                    {
                        "name": "role",
                        "in": "query",
                        "description": "Role of the user to filter by (e.g., admin, doctor, nurse, pharmacist, laboratorist, patient, all)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "doctor"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Users retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "users": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john.doe@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "/storage/images/avatar.jpg"
                                                    },
                                                    "is_admin": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_doctor": {
                                                        "type": "boolean",
                                                        "example": true
                                                    },
                                                    "is_nurse": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_pharmacist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_laboratorist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-01T00:00:00.000Z"
                                                    },
                                                    "email_verified_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-02T00:00:00.000Z"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "total": {
                                            "type": "integer",
                                            "example": 100
                                        },
                                        "per_page": {
                                            "type": "integer",
                                            "example": 15
                                        },
                                        "current_page": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "last_page": {
                                            "type": "integer",
                                            "example": 7
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching by role users"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message details"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/fetch-all-users": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Get all users",
                "description": "Fetch all registered users.",
                "operationId": "getAllUsers",
                "responses": {
                    "200": {
                        "description": "Users retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "users": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john.doe@example.com"
                                                    },
                                                    "avatar": {
                                                        "type": "string",
                                                        "example": "/storage/images/avatar.jpg"
                                                    },
                                                    "is_admin": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_doctor": {
                                                        "type": "boolean",
                                                        "example": true
                                                    },
                                                    "is_nurse": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_pharmacist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "is_laboratorist": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-01T00:00:00.000Z"
                                                    },
                                                    "email_verified_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2024-01-02T00:00:00.000Z"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching users"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message details"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/count-users": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Count users",
                "description": "Get counts of all users and their roles.",
                "operationId": "countUsers",
                "responses": {
                    "200": {
                        "description": "User counts retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allUsers": {
                                            "type": "integer",
                                            "example": 100
                                        },
                                        "allAdmins": {
                                            "type": "integer",
                                            "example": 10
                                        },
                                        "allDoctors": {
                                            "type": "integer",
                                            "example": 30
                                        },
                                        "allNurses": {
                                            "type": "integer",
                                            "example": 20
                                        },
                                        "allPharmacists": {
                                            "type": "integer",
                                            "example": 15
                                        },
                                        "allLaboratorists": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "allPatients": {
                                            "type": "integer",
                                            "example": 20
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Error fetching and counting users"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message details"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/v1/add-vaccines": {
            "post": {
                "tags": [
                    "Vaccines"
                ],
                "summary": "Add a vaccine record",
                "operationId": "6de359a5672918a56c42bb13fd804f26",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "patientEmail",
                                    "nurseEmail",
                                    "vaccineName",
                                    "doseNumber",
                                    "dateGiven"
                                ],
                                "properties": {
                                    "patientEmail": {
                                        "description": "Email of the patient",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "nurseEmail": {
                                        "description": "Email of the nurse",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "vaccineName": {
                                        "description": "Name of the vaccine",
                                        "type": "string"
                                    },
                                    "serialNumber": {
                                        "description": "Serial number of the vaccine",
                                        "type": "string"
                                    },
                                    "doseNumber": {
                                        "description": "Dose number",
                                        "type": "string"
                                    },
                                    "dateGiven": {
                                        "description": "Date when the vaccine was given",
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "note": {
                                        "description": "Additional notes",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Vaccine added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "newVaccine": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "patient_id": {
                                                    "type": "integer"
                                                },
                                                "given_by": {
                                                    "type": "integer"
                                                },
                                                "patient_name": {
                                                    "type": "string"
                                                },
                                                "nurse_name": {
                                                    "type": "string"
                                                },
                                                "vaccine_name": {
                                                    "type": "string"
                                                },
                                                "serial_number": {
                                                    "type": "string"
                                                },
                                                "dose_number": {
                                                    "type": "string"
                                                },
                                                "date_given": {
                                                    "type": "string",
                                                    "format": "date"
                                                },
                                                "note": {
                                                    "type": "string"
                                                },
                                                "patient_email": {
                                                    "type": "string"
                                                },
                                                "nurse_email": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Error finding patient or nurse",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while adding vaccine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-searched-vaccines": {
            "get": {
                "tags": [
                    "Vaccines"
                ],
                "summary": "Search for vaccines",
                "operationId": "a9a4e59ad8fc04803f411f6c2a8bdd0c",
                "parameters": [
                    {
                        "name": "search_query",
                        "in": "query",
                        "description": "Query string to search for vaccines",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Vaccines retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "patient_id": {
                                                        "type": "integer"
                                                    },
                                                    "given_by": {
                                                        "type": "integer"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "nurse_name": {
                                                        "type": "string"
                                                    },
                                                    "vaccine_name": {
                                                        "type": "string"
                                                    },
                                                    "serial_number": {
                                                        "type": "string"
                                                    },
                                                    "dose_number": {
                                                        "type": "string"
                                                    },
                                                    "date_given": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "note": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string",
                                                        "format": "email"
                                                    },
                                                    "nurse_email": {
                                                        "type": "string",
                                                        "format": "email"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching searched vaccines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-vaccines": {
            "get": {
                "tags": [
                    "Vaccines"
                ],
                "summary": "Get paginated list of vaccines",
                "operationId": "2f3cbc6a2cc1a968ea71719e31c34aeb",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of items per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Vaccines retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "vaccine_name": {
                                                        "type": "string"
                                                    },
                                                    "serial_number": {
                                                        "type": "string"
                                                    },
                                                    "dose_number": {
                                                        "type": "string"
                                                    },
                                                    "date_given": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "note": {
                                                        "type": "string"
                                                    },
                                                    "nurse_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_name": {
                                                        "type": "string"
                                                    },
                                                    "patient_email": {
                                                        "type": "string",
                                                        "format": "email"
                                                    },
                                                    "nurse_email": {
                                                        "type": "string",
                                                        "format": "email"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "current_page": {
                                            "type": "integer"
                                        },
                                        "last_page": {
                                            "type": "integer"
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching vaccines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/delete-vaccine": {
            "post": {
                "tags": [
                    "Vaccines"
                ],
                "summary": "Delete a vaccine record",
                "operationId": "37edac930dc584198fe5d15f54a701ce",
                "parameters": [
                    {
                        "name": "vaccineId",
                        "in": "query",
                        "description": "ID of the vaccine to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Vaccine deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Vaccine not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while deleting the vaccine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/update-vaccine": {
            "post": {
                "tags": [
                    "Vaccines"
                ],
                "summary": "Update a vaccine record",
                "operationId": "ba2e61ae875c79f556fbc8294ed01fa3",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "vaccineId",
                                    "patientEmail",
                                    "nurseEmail",
                                    "vaccineName",
                                    "doseNumber",
                                    "dateGiven"
                                ],
                                "properties": {
                                    "vaccineId": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "patientEmail": {
                                        "type": "string",
                                        "example": "patient@example.com"
                                    },
                                    "nurseEmail": {
                                        "type": "string",
                                        "example": "nurse@example.com"
                                    },
                                    "vaccineName": {
                                        "type": "string",
                                        "example": "COVID-19 Vaccine"
                                    },
                                    "serialNumber": {
                                        "type": "string",
                                        "example": "12345"
                                    },
                                    "doseNumber": {
                                        "type": "string",
                                        "example": "1"
                                    },
                                    "dateGiven": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2024-09-21"
                                    },
                                    "note": {
                                        "type": "string",
                                        "example": "No adverse reactions observed"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Vaccine updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "406": {
                        "description": "Patient or nurse not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while updating the vaccine",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/fetch-all-vaccines": {
            "get": {
                "tags": [
                    "Vaccines"
                ],
                "summary": "Retrieve all vaccines",
                "operationId": "b5dd6fe0debaa080f45286eb87b9835d",
                "responses": {
                    "200": {
                        "description": "Successful retrieval of all vaccines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error occurred while fetching vaccines",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "error": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/doctors": {
            "get": {
                "tags": [
                    "Mobile Doctors"
                ],
                "summary": "Browse doctors (paginated)",
                "description": "Public doctor directory for the mobile app. Supports search, department filter, and pagination.",
                "operationId": "getPublicDoctors",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "department_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated doctor list"
                    }
                }
            }
        },
        "/api/v1/doctors/{id}": {
            "get": {
                "tags": [
                    "Mobile Doctors"
                ],
                "summary": "Doctor profile",
                "operationId": "getDoctorById",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Doctor details"
                    },
                    "404": {
                        "description": "Doctor not found"
                    }
                }
            }
        },
        "/api/v1/doctors/{id}/schedule": {
            "get": {
                "tags": [
                    "Mobile Doctors"
                ],
                "summary": "Weekly availability for a doctor",
                "operationId": "getDoctorSchedule",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Weekly schedule slots"
                    }
                }
            }
        },
        "/api/v1/doctors/map": {
            "get": {
                "tags": [
                    "Mobile Doctors"
                ],
                "summary": "Doctors with map coordinates",
                "operationId": "getDoctorsForMap",
                "responses": {
                    "200": {
                        "description": "Doctors for map view"
                    }
                }
            }
        },
        "/api/v1/medicines": {
            "get": {
                "tags": [
                    "Mobile Pharmacy"
                ],
                "summary": "Pharmacy catalog (paginated)",
                "operationId": "getPublicMedicines",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated medicine list"
                    }
                }
            }
        },
        "/api/v1/medicines/{id}": {
            "get": {
                "tags": [
                    "Mobile Pharmacy"
                ],
                "summary": "Medicine detail",
                "operationId": "getMedicineById",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Medicine details"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/api/v1/pharmacies/featured": {
            "get": {
                "tags": [
                    "Mobile Pharmacy"
                ],
                "summary": "Featured pharmacies",
                "operationId": "getFeaturedPharmacies",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 6,
                            "maximum": 20
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Featured pharmacy list"
                    }
                }
            }
        },
        "/api/v1/pharmacies/nearby": {
            "get": {
                "tags": [
                    "Mobile Pharmacy"
                ],
                "summary": "Pharmacies sorted by distance",
                "operationId": "getNearbyPharmacies",
                "parameters": [
                    {
                        "name": "latitude",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "number",
                            "format": "float"
                        }
                    },
                    {
                        "name": "longitude",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "number",
                            "format": "float"
                        }
                    },
                    {
                        "name": "radius",
                        "in": "query",
                        "description": "Radius in km",
                        "required": false,
                        "schema": {
                            "type": "number",
                            "default": 50
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 20
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Nearby pharmacies with optional distance"
                    }
                }
            }
        },
        "/api/v1/cart": {
            "get": {
                "tags": [
                    "Cart"
                ],
                "summary": "View cart and totals",
                "operationId": "getCart",
                "responses": {
                    "200": {
                        "description": "Cart items and summary"
                    },
                    "401": {
                        "description": "Unauthenticated"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Cart"
                ],
                "summary": "Add medicine to cart",
                "operationId": "addToCart",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "medicine_id",
                                    "quantity"
                                ],
                                "properties": {
                                    "medicine_id": {
                                        "type": "integer",
                                        "example": 12
                                    },
                                    "quantity": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "example": 2
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Item added"
                    },
                    "400": {
                        "description": "Out of stock"
                    },
                    "422": {
                        "description": "Validation error"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Cart"
                ],
                "summary": "Clear entire cart",
                "operationId": "clearCart",
                "responses": {
                    "200": {
                        "description": "Cart cleared"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/cart/{id}": {
            "put": {
                "tags": [
                    "Cart"
                ],
                "summary": "Update cart item quantity",
                "operationId": "updateCartItem",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "quantity"
                                ],
                                "properties": {
                                    "quantity": {
                                        "type": "integer",
                                        "minimum": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Cart item updated"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Cart"
                ],
                "summary": "Remove item from cart",
                "operationId": "removeCartItem",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Item removed"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/records/summary": {
            "get": {
                "tags": [
                    "Patient Records"
                ],
                "summary": "Health records overview counts",
                "operationId": "patientRecordsSummary",
                "responses": {
                    "200": {
                        "description": "Summary counts",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "appointments_total": {
                                            "type": "integer"
                                        },
                                        "labs_total": {
                                            "type": "integer"
                                        },
                                        "labs_pending": {
                                            "type": "integer"
                                        },
                                        "prescriptions_total": {
                                            "type": "integer"
                                        },
                                        "prescriptions_active": {
                                            "type": "integer"
                                        },
                                        "latest_lab_status": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/records/visits": {
            "get": {
                "tags": [
                    "Patient Records"
                ],
                "summary": "Past appointments / visits",
                "operationId": "patientRecordsVisits",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated visit history"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/records/labs": {
            "get": {
                "tags": [
                    "Patient Records"
                ],
                "summary": "Lab results",
                "operationId": "patientRecordsLabs",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated lab results"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/records/prescriptions": {
            "get": {
                "tags": [
                    "Patient Records"
                ],
                "summary": "Prescriptions",
                "operationId": "patientRecordsPrescriptions",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated prescriptions"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/video-call/{appointmentId}": {
            "get": {
                "tags": [
                    "Patient Video"
                ],
                "summary": "Video consultation session details",
                "operationId": "patientVideoCallShow",
                "parameters": [
                    {
                        "name": "appointmentId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Jitsi room and join URL"
                    },
                    "422": {
                        "description": "Not video or outside join window"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/video-call/{appointmentId}/start": {
            "post": {
                "tags": [
                    "Patient Video"
                ],
                "summary": "Mark video consultation as started",
                "operationId": "patientVideoCallStart",
                "parameters": [
                    {
                        "name": "appointmentId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Session started; returns join details"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/video-call/{appointmentId}/end": {
            "post": {
                "tags": [
                    "Patient Video"
                ],
                "summary": "End video consultation",
                "operationId": "patientVideoCallEnd",
                "parameters": [
                    {
                        "name": "appointmentId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Consultation ended with duration"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/ai/symptom-triage": {
            "post": {
                "tags": [
                    "AI Assistant"
                ],
                "summary": "AI symptom guidance (not a diagnosis)",
                "description": "Informational triage for patients. Requires AI_ENABLED and AI_API_KEY. Patient account only.",
                "operationId": "aiSymptomTriage",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "symptoms"
                                ],
                                "properties": {
                                    "symptoms": {
                                        "type": "string",
                                        "maxLength": 8000
                                    },
                                    "age_note": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "locale": {
                                        "type": "string",
                                        "default": "both",
                                        "enum": [
                                            "en",
                                            "sw",
                                            "both"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Structured triage JSON in data field"
                    },
                    "403": {
                        "description": "Patient account required"
                    },
                    "503": {
                        "description": "AI not configured"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/ai/summarize-health-records": {
            "post": {
                "tags": [
                    "AI Assistant"
                ],
                "summary": "Plain-language health records summary",
                "operationId": "aiSummarizeHealthRecords",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "locale": {
                                        "type": "string",
                                        "enum": [
                                            "en",
                                            "sw",
                                            "both"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Summary JSON"
                    },
                    "422": {
                        "description": "No records to summarize"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/ai/draft-clinical-note": {
            "post": {
                "tags": [
                    "AI Assistant"
                ],
                "summary": "Draft SOAP / referral / discharge note (doctor only)",
                "operationId": "aiDraftClinicalNote",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "bullets"
                                ],
                                "properties": {
                                    "bullets": {
                                        "type": "string"
                                    },
                                    "note_style": {
                                        "type": "string",
                                        "enum": [
                                            "soap",
                                            "referral_letter",
                                            "discharge_summary"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Draft note JSON"
                    },
                    "403": {
                        "description": "Doctor account required"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/ai/patient/medication-guidance": {
            "post": {
                "tags": [
                    "AI Assistant"
                ],
                "summary": "Medication education for patients",
                "operationId": "aiMedicationGuidance",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "medication_name"
                                ],
                                "properties": {
                                    "medication_name": {
                                        "type": "string"
                                    },
                                    "other_medications": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "locale": {
                                        "type": "string",
                                        "enum": [
                                            "en",
                                            "sw",
                                            "both"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Guidance JSON"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/ai/patient/appointment-assistant": {
            "post": {
                "tags": [
                    "AI Assistant"
                ],
                "summary": "Help patient choose department or doctor",
                "operationId": "aiAppointmentAssistant",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "message"
                                ],
                                "properties": {
                                    "message": {
                                        "type": "string"
                                    },
                                    "locale": {
                                        "type": "string",
                                        "enum": [
                                            "en",
                                            "sw",
                                            "both"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Assistant reply JSON"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/v1/patient/pharmacy/orders": {
            "post": {
                "tags": [
                    "Mobile Pharmacy"
                ],
                "summary": "Place pharmacy order from cart",
                "operationId": "patientPharmacyOrder",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "payment_method": {
                                        "type": "string",
                                        "example": "cashpay"
                                    },
                                    "delivery_address": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Order created"
                    },
                    "422": {
                        "description": "Empty cart or validation error"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        }
    },
    "components": {
        "securitySchemes": {
            "sanctum": {
                "type": "http",
                "description": "Laravel Sanctum bearer token from POST /api/v1/login",
                "scheme": "bearer",
                "bearerFormat": "Sanctum"
            }
        }
    },
    "tags": [
        {
            "name": "Authentication",
            "description": "Login, register, password reset, and session tokens"
        },
        {
            "name": "Mobile Doctors",
            "description": "Public doctor directory and schedules for the mobile app"
        },
        {
            "name": "Mobile Pharmacy",
            "description": "Medicine catalog, pharmacies, and featured listings"
        },
        {
            "name": "Cart",
            "description": "Authenticated shopping cart for pharmacy checkout"
        },
        {
            "name": "Appointments",
            "description": "Booking, availability search, and appointment management"
        },
        {
            "name": "Patient Records",
            "description": "Patient health records summary, visits, labs, and prescriptions"
        },
        {
            "name": "Patient Video",
            "description": "Video consultation join, start, and end"
        },
        {
            "name": "AI Assistant",
            "description": "AI-powered triage, summaries, and clinical drafting (informational only — not a substitute for licensed care)"
        },
        {
            "name": "App Settings",
            "description": "App Settings"
        },
        {
            "name": "Doctor",
            "description": "Doctor"
        },
        {
            "name": "Admin",
            "description": "Admin"
        },
        {
            "name": "Appointments Reservasion",
            "description": "Appointments Reservasion"
        },
        {
            "name": "Articles",
            "description": "Articles"
        },
        {
            "name": "Auth",
            "description": "Auth"
        },
        {
            "name": "Password",
            "description": "Password"
        },
        {
            "name": "Banners",
            "description": "Banners"
        },
        {
            "name": "Bed Allotments",
            "description": "Bed Allotments"
        },
        {
            "name": "Birth Reports",
            "description": "Birth Reports"
        },
        {
            "name": "Blood Bank",
            "description": "Blood Bank"
        },
        {
            "name": "Blood Donors",
            "description": "Blood Donors"
        },
        {
            "name": "Death Reports",
            "description": "Death Reports"
        },
        {
            "name": "Department",
            "description": "Department"
        },
        {
            "name": "FAQs",
            "description": "FAQs"
        },
        {
            "name": "Health Tips",
            "description": "Health Tips"
        },
        {
            "name": "Laboratorist",
            "description": "Laboratorist"
        },
        {
            "name": "Medicines",
            "description": "Medicines"
        },
        {
            "name": "Notifications",
            "description": "Notifications"
        },
        {
            "name": "Nurse",
            "description": "Nurse"
        },
        {
            "name": "Offer",
            "description": "Offer"
        },
        {
            "name": "Operation Reports",
            "description": "Operation Reports"
        },
        {
            "name": "Order",
            "description": "Order"
        },
        {
            "name": "Offers",
            "description": "Offers"
        },
        {
            "name": "Patient",
            "description": "Patient"
        },
        {
            "name": "Checkout",
            "description": "Checkout"
        },
        {
            "name": "Pharmacist",
            "description": "Pharmacist"
        },
        {
            "name": "Service",
            "description": "Service"
        },
        {
            "name": "Testimonials",
            "description": "Testimonials"
        },
        {
            "name": "User",
            "description": "User"
        },
        {
            "name": "Vaccines",
            "description": "Vaccines"
        }
    ]
}