{
    "openapi": "3.0.0",
    "info": {
        "title": "Nomadics API",
        "description": "APIs for frontend development",
        "version": "1.0.0"
    },
    "paths": {
        "/api/login": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "summary": "User Login",
                "operationId": "222b2625838e3c57e017987f73598fda",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "user@example.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password",
                                        "example": "password123"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful login",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "token": {
                                            "type": "string",
                                            "example": "jwt_token_here"
                                        },
                                        "user": {
                                            "properties": {
                                                "uuid": {
                                                    "type": "string",
                                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                                },
                                                "fname": {
                                                    "type": "string",
                                                    "example": "John"
                                                },
                                                "lname": {
                                                    "type": "string",
                                                    "example": "Doe"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "example": "user@example.com"
                                                },
                                                "role": {
                                                    "type": "string",
                                                    "example": "admin"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "expires_in": {
                                            "type": "integer",
                                            "example": 3600
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Invalid credentials",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Invalid credentials"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/send-otp": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "summary": "Send OTP to mobile number",
                "operationId": "fcec3024a193d9925132103e50ce4f45",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "mobile_number"
                                ],
                                "properties": {
                                    "mobile_number": {
                                        "type": "string",
                                        "example": "9876543210"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OTP sent successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "OTP sent successfully."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error or server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "The mobile number field is required."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/verify-otp": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "summary": "Verify OTP and login user",
                "operationId": "7dfc5833012ba49644bc48df3565b285",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "request_type",
                                    "otp_number",
                                    "mobile_number"
                                ],
                                "properties": {
                                    "request_type": {
                                        "type": "string",
                                        "example": "login"
                                    },
                                    "otp_number": {
                                        "type": "string",
                                        "example": "123456"
                                    },
                                    "mobile_number": {
                                        "type": "string",
                                        "example": "9876543210"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OTP verified and token generated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "token": {
                                            "type": "string",
                                            "example": "jwt_token_here"
                                        },
                                        "user": {
                                            "properties": {
                                                "uuid": {
                                                    "type": "string",
                                                    "example": "123e4567-e89b-12d3-a456-426614174000"
                                                },
                                                "fname": {
                                                    "type": "string",
                                                    "example": "John"
                                                },
                                                "lname": {
                                                    "type": "string",
                                                    "example": "Doe"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "example": "user@example.com"
                                                },
                                                "role": {
                                                    "type": "string",
                                                    "example": "user"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "expires_in": {
                                            "type": "integer",
                                            "example": 3600
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "OTP verification failed or user not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Verification code is not valid."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/logout": {
            "post": {
                "tags": [
                    "Authentication"
                ],
                "summary": "Logout user and invalidate JWT token",
                "operationId": "ad65cbbd4e9f201619eae184a5961a98",
                "responses": {
                    "200": {
                        "description": "Successfully logged out",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully logged out"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Failed to logout, token invalid or other error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Failed to logout, token invalid."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/locations": {
            "get": {
                "tags": [
                    "Locations"
                ],
                "summary": "Get list of available locations with banner and description",
                "operationId": "d102679a1a54322e12f64048db010504",
                "responses": {
                    "200": {
                        "description": "List of locations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "location": {
                                                        "type": "string",
                                                        "example": "Mumbai"
                                                    },
                                                    "type": {
                                                        "type": "string",
                                                        "example": "City"
                                                    },
                                                    "coming_soon": {
                                                        "type": "boolean",
                                                        "example": false
                                                    },
                                                    "banner_picture": {
                                                        "type": "string",
                                                        "example": "https://example.com/storage/location/banner.jpg"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "Welcome to Mumbai"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Error occurred",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Token invalid or unexpected error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/studios/{location_id}": {
            "get": {
                "tags": [
                    "Studios"
                ],
                "summary": "Get list of studios by location",
                "description": "Returns all studios associated with a specific location ID along with their type, banner, and description.",
                "operationId": "7f630055bf8632622b693f45e3b2e372",
                "parameters": [
                    {
                        "name": "location_id",
                        "in": "path",
                        "description": "ID of the location",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 5
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Studios fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 101
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "Studio A"
                                                    },
                                                    "studio_type": {
                                                        "type": "string",
                                                        "example": "Podcast"
                                                    },
                                                    "banner_picture": {
                                                        "type": "string",
                                                        "example": "https://example.com/storage/studio/banner.jpg"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "Studio A is equipped with modern audio tools."
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Error occurred while fetching studios",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Something went wrong"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/peoples": {
            "get": {
                "tags": [
                    "People"
                ],
                "summary": "Get list of all resource people",
                "description": "Returns a list of resource people including name, profile image, type, location, and social media links.",
                "operationId": "9523062027e0448784c193aeef274168",
                "responses": {
                    "200": {
                        "description": "People fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "uuid": {
                                                        "type": "string",
                                                        "example": "a4d53e3a-1b2d-4cbb-8430-9c7b193df8af"
                                                    },
                                                    "fname": {
                                                        "type": "string",
                                                        "example": "John"
                                                    },
                                                    "lname": {
                                                        "type": "string",
                                                        "example": "Doe"
                                                    },
                                                    "profile_pic": {
                                                        "type": "string",
                                                        "example": "https://example.com/storage/profile-pic/john.jpg"
                                                    },
                                                    "type": {
                                                        "type": "string",
                                                        "example": "Photographer"
                                                    },
                                                    "location": {
                                                        "type": "string",
                                                        "example": "Bangalore"
                                                    },
                                                    "profile_link": {
                                                        "type": "string",
                                                        "example": "https://example.com/johndoe"
                                                    },
                                                    "instagram_link": {
                                                        "type": "string",
                                                        "example": "https://instagram.com/johndoe"
                                                    },
                                                    "facebook_link": {
                                                        "type": "string",
                                                        "example": "https://facebook.com/johndoe"
                                                    },
                                                    "twitter_link": {
                                                        "type": "string",
                                                        "example": "https://twitter.com/johndoe"
                                                    },
                                                    "sm_link": {
                                                        "type": "string",
                                                        "example": "https://someothersocial.com/johndoe"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "John is a professional photographer with 10 years of experience."
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Error occurred while fetching people",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Something went wrong"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/events": {
            "get": {
                "tags": [
                    "Events"
                ],
                "summary": "Get list of active events",
                "description": "Returns a list of events with optional filters for date and location. Also includes interested and going counts.",
                "operationId": "abd064ca1834745d7eb2b33624f222a5",
                "parameters": [
                    {
                        "name": "filterDate",
                        "in": "query",
                        "description": "Filter events by date (YYYY-MM-DD)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date",
                            "example": "2025-07-19"
                        }
                    },
                    {
                        "name": "filterLocation",
                        "in": "query",
                        "description": "Filter events by location ID",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 3
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Events retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "title": {
                                                        "type": "string",
                                                        "example": "Music Night"
                                                    },
                                                    "description": {
                                                        "type": "string",
                                                        "example": "An exciting night of music and fun."
                                                    },
                                                    "thumbnail": {
                                                        "type": "string",
                                                        "example": "https://example.com/storage/location/event/event.jpg"
                                                    },
                                                    "event_status": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "interested_count": {
                                                        "type": "integer",
                                                        "example": 50
                                                    },
                                                    "going_count": {
                                                        "type": "integer",
                                                        "example": 30
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2025-07-18T10:00:00Z"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Failed to fetch events",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Unexpected error occurred"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        }
    },
    "tags": [
        {
            "name": "Authentication",
            "description": "Authentication"
        },
        {
            "name": "Locations",
            "description": "Locations"
        },
        {
            "name": "Studios",
            "description": "Studios"
        },
        {
            "name": "People",
            "description": "People"
        },
        {
            "name": "Events",
            "description": "Events"
        }
    ]
}