{
    "openapi": "3.0.0",
    "info": {
        "title": "Promises To Meet",
        "version": "1.0"
    },
    "servers": [
        {
            "url": "/api"
        },
        {
            "url": "/promises-to-meet/public/api"
        }
    ],
    "paths": {
        "/event": {
            "get": {
                "tags": [
                    "Event"
                ],
                "operationId": "1db7372f262e469a249302ecb84569ac",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search event by title",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Filter events by specific date (Y-m-d)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Event list",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/detail/{event}": {
            "get": {
                "tags": [
                    "Event"
                ],
                "operationId": "5891db5d579b51744e01c1195fdd7919",
                "parameters": [
                    {
                        "name": "event",
                        "in": "path",
                        "description": "Event ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Event list",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/bookmark": {
            "get": {
                "tags": [
                    "Event"
                ],
                "operationId": "3afd0e5bef2ab15a00ad6f822707c21d",
                "responses": {
                    "200": {
                        "description": "Event list",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Event"
                ],
                "summary": "Toggle bookmark for an event",
                "operationId": "3d018a1c7ea485e9f69d0e58e2759d1f",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "event_id": {
                                        "description": "ID of the event to bookmark",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Bookmark toggled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "bookmarked": {
                                            "type": "boolean"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/categories": {
            "get": {
                "tags": [
                    "Event"
                ],
                "operationId": "2831744e095934b85f72f756d47a8326",
                "responses": {
                    "200": {
                        "description": "Event categories list",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/purchase/{event}": {
            "post": {
                "tags": [
                    "Event"
                ],
                "summary": "Purchase Event",
                "operationId": "6fd7a6658a108f6c7b4ebebed4a90f07",
                "parameters": [
                    {
                        "name": "event",
                        "in": "path",
                        "description": "Event ID to purchase",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "amount",
                                    "stripe_token"
                                ],
                                "properties": {
                                    "stripe_token": {
                                        "description": "Stripe Payment Intent Token",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Event ticket purchased",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Event ticket purchased successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/create": {
            "post": {
                "tags": [
                    "Event"
                ],
                "operationId": "a665eba06e2268cae90c2c91fb5c369a",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "title",
                                    "date",
                                    "start_time",
                                    "end_time",
                                    "description",
                                    "price",
                                    "longitude",
                                    "latitude",
                                    "emails"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string",
                                        "example": "My Event"
                                    },
                                    "emails[]": {
                                        "description": "List of participant emails",
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "email",
                                            "example": "user@mailinator.com"
                                        }
                                    },
                                    "date": {
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-04-29"
                                    },
                                    "start_time": {
                                        "type": "string",
                                        "example": "14:00"
                                    },
                                    "end_time": {
                                        "type": "string",
                                        "example": "16:00"
                                    },
                                    "longitude": {
                                        "type": "string",
                                        "example": "67.06806738987844"
                                    },
                                    "latitude": {
                                        "type": "string",
                                        "example": "24.87790350930327"
                                    },
                                    "description": {
                                        "type": "string",
                                        "example": "Event description here"
                                    },
                                    "price": {
                                        "type": "string",
                                        "example": "100"
                                    },
                                    "event_image": {
                                        "description": "Event image file",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Event Creation",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/by-user/{user}": {
            "get": {
                "tags": [
                    "Event"
                ],
                "operationId": "a3560cd8f50e94651f36d352ab9c3a1e",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "description": "User ID to filter events",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Filtered event list by user ID",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/event-invitations/respond": {
            "post": {
                "tags": [
                    "Event"
                ],
                "summary": "Accept or reject an event invitation",
                "description": "Update the event invitation status (approved or rejected) for the authenticated user.",
                "operationId": "ee20865e68e000488040f8664234cea3",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "event_id",
                                    "status"
                                ],
                                "properties": {
                                    "event_id": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "approved",
                                            "rejected"
                                        ],
                                        "example": "approved"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Success response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Event invitation approved successfully!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Something went wrong!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/event-invitations": {
            "get": {
                "tags": [
                    "Event"
                ],
                "summary": "Fetch event invitations",
                "description": "Retrieve all event invitations for the authenticated user.",
                "operationId": "80aef21e547f1f76e1118286869c21a1",
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "invitations": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "title": {
                                                        "type": "string",
                                                        "example": "Team Meeting"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "example": "2025-02-01"
                                                    },
                                                    "status": {
                                                        "type": "string",
                                                        "example": "pending"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/checkin": {
            "post": {
                "tags": [
                    "Event"
                ],
                "summary": "Update user status and process event payment",
                "description": "Updates the user's status for an event and schedules payment processing if conditions are met.",
                "operationId": "9086bea19c178cfffc8933350f6b7047",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "event_id",
                                    "start_time",
                                    "end_time",
                                    "creator_payment_id",
                                    "participant_payment_id"
                                ],
                                "properties": {
                                    "event_id": {
                                        "type": "integer",
                                        "example": 10
                                    },
                                    "start_time": {
                                        "type": "string",
                                        "format": "time",
                                        "example": "14:00"
                                    },
                                    "end_time": {
                                        "type": "string",
                                        "format": "time",
                                        "example": "16:00"
                                    },
                                    "creator_payment_id": {
                                        "type": "string",
                                        "example": "Stripe Account ID"
                                    },
                                    "participant_payment_id": {
                                        "type": "string",
                                        "example": "Stripe Account ID"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User status updated successfully.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User status updated successfully."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid input or event time mismatch.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The provided event times do not match the actual event times."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Event not found.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Event not found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "Payment already transferred.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Payment Already Transfer to User."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/events-status": {
            "get": {
                "tags": [
                    "Event"
                ],
                "summary": "Get pending events for the authenticated user",
                "description": "Returns a list of pending events for the logged-in user. Also triggers a push notification if device_token exists.",
                "operationId": "267b2d5f25f6b9a089e5d05924f8d529",
                "responses": {
                    "200": {
                        "description": "Events retrieved successfully or no events found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User events status."
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "title": {
                                                        "type": "string",
                                                        "example": "Team Meeting"
                                                    },
                                                    "status": {
                                                        "type": "string",
                                                        "example": "pending"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2025-09-11T10:00:00Z"
                                                    },
                                                    "image": {
                                                        "type": "string",
                                                        "example": "https://example.com/images/event.png"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthorized user."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server Error - Unexpected exception",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "SQLSTATE[42S02]: Base table or view not found: 1146 Table 'events' doesn't exist"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/user-checked-in": {
            "post": {
                "tags": [
                    "Event"
                ],
                "summary": "Mark event creator or participant as checked in",
                "description": "Allows an event participant or creator to check in. If the user is already checked in, it returns a message indicating that.",
                "operationId": "f4122ede0f098d2075a6ccb1248330da",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "event_id"
                                ],
                                "properties": {
                                    "event_id": {
                                        "description": "ID of the event",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful response with different cases",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "role": {
                                            "type": "string",
                                            "example": "event_participant"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User has been checked in successfully | User already checked in | User is neither a participant nor the event creator."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Validation error or missing event ID",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The event_id field is required."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/approve": {
            "post": {
                "tags": [
                    "Event"
                ],
                "summary": "Approve an event",
                "description": "Allows an authenticated user to approve an event, update participant status, and set the creator's payment ID.",
                "operationId": "c2a0e96cbbcee5b0fd25c83ae16f6400",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "event_id",
                                    "creator_payment_id"
                                ],
                                "properties": {
                                    "event_id": {
                                        "description": "ID of the event to be approved",
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "creator_payment_id": {
                                        "description": "Payment ID of the event creator",
                                        "type": "string",
                                        "example": "pay_123456789"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Event successfully approved",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Event detail"
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "description": "Event ID",
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "status": {
                                                    "description": "Updated event status",
                                                    "type": "string",
                                                    "example": "approved"
                                                },
                                                "creator_payment_id": {
                                                    "description": "Payment ID of the event creator",
                                                    "type": "string",
                                                    "example": "pay_123456789"
                                                },
                                                "image": {
                                                    "description": "Event image URL",
                                                    "type": "string",
                                                    "example": "https://example.com/event-image.jpg"
                                                },
                                                "participants_count": {
                                                    "description": "Total number of participants",
                                                    "type": "integer",
                                                    "example": 3
                                                },
                                                "participants": {
                                                    "description": "List of latest participants",
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "description": "Participant ID",
                                                                "type": "integer",
                                                                "example": 10
                                                            },
                                                            "user_id": {
                                                                "description": "User ID of the participant",
                                                                "type": "integer",
                                                                "example": 2
                                                            },
                                                            "status": {
                                                                "description": "Participant approval status",
                                                                "type": "string",
                                                                "example": "approved"
                                                            },
                                                            "user": {
                                                                "description": "User details",
                                                                "properties": {
                                                                    "id": {
                                                                        "description": "User ID",
                                                                        "type": "integer",
                                                                        "example": 2
                                                                    },
                                                                    "name": {
                                                                        "description": "User name",
                                                                        "type": "string",
                                                                        "example": "John Doe"
                                                                    },
                                                                    "email": {
                                                                        "description": "User email",
                                                                        "type": "string",
                                                                        "example": "johndoe@example.com"
                                                                    }
                                                                },
                                                                "type": "object"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "user": {
                                                    "description": "Event owner details",
                                                    "properties": {
                                                        "id": {
                                                            "description": "Event owner ID",
                                                            "type": "integer",
                                                            "example": 1
                                                        },
                                                        "name": {
                                                            "description": "Event owner name",
                                                            "type": "string",
                                                            "example": "Jane Doe"
                                                        },
                                                        "email": {
                                                            "description": "Event owner email",
                                                            "type": "string",
                                                            "example": "janedoe@example.com"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The event_id field is required."
                                        },
                                        "errors": {
                                            "properties": {
                                                "event_id": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string",
                                                        "example": "The selected event_id is invalid."
                                                    }
                                                },
                                                "creator_payment_id": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string",
                                                        "example": "The creator_payment_id field is required."
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Unauthorized or event not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Event not found or unauthorized access."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Something Went Wrong: {error_message}"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/reject": {
            "post": {
                "tags": [
                    "Event"
                ],
                "summary": "Reject an event",
                "description": "Allows an authenticated user to reject an event and update participant status.",
                "operationId": "0005243013f85cb61db189ef718cf402",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "event_id"
                                ],
                                "properties": {
                                    "event_id": {
                                        "description": "ID of the event to be rejected",
                                        "type": "integer",
                                        "example": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Event successfully rejected",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Event detail"
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "description": "Event ID",
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "status": {
                                                    "description": "Updated event status",
                                                    "type": "string",
                                                    "example": "rejected"
                                                },
                                                "image": {
                                                    "description": "Event image URL",
                                                    "type": "string",
                                                    "example": "https://example.com/event-image.jpg"
                                                },
                                                "participants_count": {
                                                    "description": "Total number of participants",
                                                    "type": "integer",
                                                    "example": 3
                                                },
                                                "participants": {
                                                    "description": "List of latest participants",
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "description": "Participant ID",
                                                                "type": "integer",
                                                                "example": 10
                                                            },
                                                            "user_id": {
                                                                "description": "User ID of the participant",
                                                                "type": "integer",
                                                                "example": 2
                                                            },
                                                            "status": {
                                                                "description": "Participant rejection status",
                                                                "type": "string",
                                                                "example": "rejected"
                                                            },
                                                            "user": {
                                                                "description": "User details",
                                                                "properties": {
                                                                    "id": {
                                                                        "description": "User ID",
                                                                        "type": "integer",
                                                                        "example": 2
                                                                    },
                                                                    "name": {
                                                                        "description": "User name",
                                                                        "type": "string",
                                                                        "example": "John Doe"
                                                                    },
                                                                    "email": {
                                                                        "description": "User email",
                                                                        "type": "string",
                                                                        "example": "johndoe@example.com"
                                                                    }
                                                                },
                                                                "type": "object"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "user": {
                                                    "description": "Event owner details",
                                                    "properties": {
                                                        "id": {
                                                            "description": "Event owner ID",
                                                            "type": "integer",
                                                            "example": 1
                                                        },
                                                        "name": {
                                                            "description": "Event owner name",
                                                            "type": "string",
                                                            "example": "Jane Doe"
                                                        },
                                                        "email": {
                                                            "description": "Event owner email",
                                                            "type": "string",
                                                            "example": "janedoe@example.com"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "The event_id field is required."
                                        },
                                        "errors": {
                                            "properties": {
                                                "event_id": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string",
                                                        "example": "The selected event_id is invalid."
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Unauthorized or event not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Event not found or unauthorized access."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Something Went Wrong: {error_message}"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/event/pending": {
            "get": {
                "tags": [
                    "Event"
                ],
                "summary": "Fetch pending event",
                "description": "Retrieve event participation details for the authenticated user.",
                "operationId": "3020885c2ff2629a6ba417204dcd4268",
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User Pending Events."
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "event_id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "status": {
                                                        "type": "string",
                                                        "example": "active"
                                                    },
                                                    "created_by": {
                                                        "type": "integer",
                                                        "example": 2
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User Pending Events not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User Pending Events not found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/formSubmition": {
            "post": {
                "tags": [
                    "Form Submition"
                ],
                "operationId": "f68f7581fc052a43d6d20513c8c51a7c",
                "requestBody": {
                    "description": "Form Submition",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "first_name",
                                    "last_name",
                                    "email",
                                    "message"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Email",
                                        "type": "string"
                                    },
                                    "first_name": {
                                        "description": "First Name",
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "description": "Last Name",
                                        "type": "string"
                                    },
                                    "message": {
                                        "description": "Message",
                                        "type": "string"
                                    },
                                    "address": {
                                        "description": "Address",
                                        "type": "string"
                                    },
                                    "phone_no": {
                                        "description": "Phone Number",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Form Submition",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/payment/intent": {
            "post": {
                "tags": [
                    "Payment"
                ],
                "operationId": "b2a594c85826cc36bdd25b5e4df59315",
                "requestBody": {
                    "description": "Generate Payment Intent",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "amount"
                                ],
                                "properties": {
                                    "amount": {
                                        "description": "Amount for generating payment",
                                        "type": "integer"
                                    }
                                },
                                "type": "object",
                                "example": {
                                    "amount": 99
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Generate Payment Intent",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            }
        },
        "/stripe-connect": {
            "get": {
                "tags": [
                    "Stripe"
                ],
                "summary": "Connect user to Stripe Express account",
                "description": "Creates or retrieves a Stripe Express account for the authenticated user.\n     *                  If an account already exists, it returns the existing account ID.\n     *                  Otherwise, it creates a new Express account and generates an onboarding link.",
                "operationId": "15ee898c9832d2c3ad81f33f0a2e81f5",
                "responses": {
                    "200": {
                        "description": "Stripe account connected successfully or already exists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Stripe account created successfully!"
                                        },
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "stripe_account_id": {
                                            "type": "string",
                                            "example": "acct_1Q2w3e4r5t6y",
                                            "nullable": true
                                        },
                                        "link": {
                                            "type": "string",
                                            "example": "https://connect.stripe.com/setup/s/123abc",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request / Stripe connection failed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Connecting failed! Error: Invalid API Key provided"
                                        },
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/polling": {
            "get": {
                "tags": [
                    "Polling"
                ],
                "operationId": "18149e35591f11882fea55b3bdab0ad2",
                "responses": {
                    "200": {
                        "description": "Polling list",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/polling/vote/{poll_option}": {
            "post": {
                "tags": [
                    "Polling"
                ],
                "summary": "Vote Polling",
                "operationId": "ec88b6ca8134eea11539f3500a07890b",
                "parameters": [
                    {
                        "name": "poll_option",
                        "in": "path",
                        "description": "Option ID For Vote",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Voted successfully"
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/user": {
            "get": {
                "tags": [
                    "Profile"
                ],
                "operationId": "6570178f86b0b35fad12ad0af4b00449",
                "responses": {
                    "200": {
                        "description": "User",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Profile"
                ],
                "operationId": "77dfb34fb8a3ecbe7a26f718c3a01dcc",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "_method",
                                    "name",
                                    "email"
                                ],
                                "properties": {
                                    "_method": {
                                        "type": "string",
                                        "example": "put"
                                    },
                                    "name": {
                                        "description": "User name",
                                        "type": "string"
                                    },
                                    "email": {
                                        "description": "User email",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "phone": {
                                        "description": "User phone number",
                                        "type": "string",
                                        "format": "02190832532"
                                    },
                                    "dob": {
                                        "description": "User Date Of Birth",
                                        "type": "string",
                                        "format": "2027-10-21"
                                    },
                                    "gender": {
                                        "description": "User Gender",
                                        "type": "string",
                                        "format": "Male"
                                    },
                                    "about_me": {
                                        "description": "User About Me",
                                        "type": "string",
                                        "format": "This is my about"
                                    },
                                    "image": {
                                        "description": "Profile image file",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Profile updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/user/update-password": {
            "post": {
                "tags": [
                    "Profile"
                ],
                "operationId": "5ab4a565149a62cf26802f4d3cfbd435",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "_method",
                                    "current_password",
                                    "password",
                                    "password_confirmation"
                                ],
                                "properties": {
                                    "_method": {
                                        "type": "string",
                                        "example": "put"
                                    },
                                    "current_password": {
                                        "description": "Current Password of the user",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "password": {
                                        "description": "New Password of the user",
                                        "type": "string",
                                        "example": ""
                                    },
                                    "password_confirmation": {
                                        "description": "Confirmation Password",
                                        "type": "string",
                                        "example": ""
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Password updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/user/update-device-token": {
            "post": {
                "tags": [
                    "User"
                ],
                "summary": "Update the device token for push notifications",
                "description": "Updates the authenticated user's device token for receiving push notifications.",
                "operationId": "updateDeviceToken",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "device_token"
                                ],
                                "properties": {
                                    "device_token": {
                                        "type": "string",
                                        "example": "fcm_device_token_123456789"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Device token updated successfully or user not authenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Device token updated successfully."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "The given data was invalid."
                                        },
                                        "errors": {
                                            "properties": {
                                                "device_token": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string",
                                                        "example": "The device token field is required."
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/auth/register": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "operationId": "a5e99257a0d904a2e1aedcc3e0621065",
                "requestBody": {
                    "description": "User registration",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "email",
                                    "password",
                                    "password_confirmation"
                                ],
                                "properties": {
                                    "name": {
                                        "description": "Name of the user",
                                        "type": "string"
                                    },
                                    "email": {
                                        "description": "Email of the user",
                                        "type": "string"
                                    },
                                    "password": {
                                        "description": "Password of the user",
                                        "type": "string"
                                    },
                                    "password_confirmation": {
                                        "description": "Confirmation Password",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User Registration",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            }
        },
        "/auth/login": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "operationId": "cd16214b6282a5fcaf30cc623048e161",
                "requestBody": {
                    "description": "User login",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Email of the user",
                                        "type": "string"
                                    },
                                    "password": {
                                        "description": "Password of the user",
                                        "type": "string"
                                    }
                                },
                                "type": "object",
                                "example": {
                                    "email": "test@mailinator.com",
                                    "password": "12345678"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User Login",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            }
        },
        "/user/logout": {
            "post": {
                "tags": [
                    "Profile"
                ],
                "operationId": "808dff22421b866c8f0d6cd826e77b3b",
                "responses": {
                    "200": {
                        "description": "User Logout",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        },
        "/auth/forget/password": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "operationId": "2cb31f1a9f3cabbd474b1b6680ec6dab",
                "requestBody": {
                    "description": "User login",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Email of the user",
                                        "type": "string"
                                    }
                                },
                                "type": "object",
                                "example": {
                                    "email": "johndoe@mailinator.com"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User Forgot Password",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            }
        },
        "/auth/update/password": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "operationId": "38e354e42cfaa6d708a7876341c71475",
                "requestBody": {
                    "description": "User update password request",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "code",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Email of the user",
                                        "type": "string",
                                        "example": "johndoe@mailinator.com"
                                    },
                                    "code": {
                                        "description": "Code for password reset",
                                        "type": "string",
                                        "example": "abc123"
                                    },
                                    "password": {
                                        "description": "New password",
                                        "type": "string",
                                        "example": "newpassword"
                                    },
                                    "password_confirmation": {
                                        "description": "Password confirmation",
                                        "type": "string",
                                        "example": "newpassword"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User Update Password",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            }
        },
        "/contact": {
            "post": {
                "tags": [
                    "Contact"
                ],
                "operationId": "be2e07a306c3fc6abb8257fabdd15de2",
                "requestBody": {
                    "description": "Contact Email",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "first_name",
                                    "last_name",
                                    "email",
                                    "message"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Email",
                                        "type": "string"
                                    },
                                    "first_name": {
                                        "description": "First Name",
                                        "type": "string"
                                    },
                                    "last_name": {
                                        "description": "Last Name",
                                        "type": "string"
                                    },
                                    "message": {
                                        "description": "Message",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Contact Email",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            }
        },
        "/auth/users/{id}": {
            "delete": {
                "tags": [
                    "Profile"
                ],
                "summary": "Delete User",
                "description": "Delete a specific user by ID.",
                "operationId": "a0ee2993ccb8c891da81e5f96d5819f1",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "User ID",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User deleted successfully!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User not found."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/user/wallet": {
            "get": {
                "tags": [
                    "User"
                ],
                "summary": "Get user wallet balance",
                "description": "Returns the current authenticated user's wallet balance",
                "operationId": "0897e998c76f6939d2986e0b733ca6be",
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "wallet_balance": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 120.5
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "BearerAuth": []
                    }
                ]
            }
        }
    },
    "components": {
        "securitySchemes": {
            "BearerAuth": {
                "type": "http",
                "description": "Enter JWT Bearer token **_only_**",
                "name": "Authorization",
                "in": "header",
                "bearerFormat": "JWT",
                "scheme": "bearer"
            }
        }
    },
    "tags": [
        {
            "name": "Authentication"
        },
        {
            "name": "Event",
            "description": "Event"
        },
        {
            "name": "Form Submition",
            "description": "Form Submition"
        },
        {
            "name": "Payment",
            "description": "Payment"
        },
        {
            "name": "Stripe",
            "description": "Stripe"
        },
        {
            "name": "Polling",
            "description": "Polling"
        },
        {
            "name": "Profile",
            "description": "Profile"
        },
        {
            "name": "User",
            "description": "User"
        },
        {
            "name": "Contact",
            "description": "Contact"
        }
    ]
}