{
    "openapi": "3.0.0",
    "info": {
        "title": "My First API",
        "version": "0.1"
    },
    "paths": {
        "/api/outlets/index": {
            "get": {
                "tags": [
                    "Outlets"
                ],
                "summary": "Get list of outlets with optional filtering",
                "description": "Retrieve a paginated list of outlets with optional location-based or text search filtering",
                "operationId": "getOutlets",
                "parameters": [
                    {
                        "name": "lat",
                        "in": "query",
                        "description": "Latitude for location-based search",
                        "required": false,
                        "schema": {
                            "type": "number",
                            "format": "float",
                            "maximum": 90,
                            "minimum": -90
                        }
                    },
                    {
                        "name": "lng",
                        "in": "query",
                        "description": "Longitude for location-based search",
                        "required": false,
                        "schema": {
                            "type": "number",
                            "format": "float",
                            "maximum": 180,
                            "minimum": -180
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "description": "Search query for outlet name or address",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "maxLength": 255
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully getting outlet"
                                        },
                                        "data": {
                                            "properties": {
                                                "data": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "type": "string",
                                                                "example": "uuid"
                                                            },
                                                            "name": {
                                                                "type": "string",
                                                                "example": "Outlet Name"
                                                            },
                                                            "address": {
                                                                "type": "string",
                                                                "example": "Outlet Address"
                                                            },
                                                            "lat": {
                                                                "type": "number",
                                                                "format": "float",
                                                                "example": -6.2088
                                                            },
                                                            "lng": {
                                                                "type": "number",
                                                                "format": "float",
                                                                "example": 106.8456
                                                            },
                                                            "distance": {
                                                                "type": "string",
                                                                "example": "5.2"
                                                            },
                                                            "absolute_image_url": {
                                                                "type": "string",
                                                                "example": "https://example.com/storage/outlets/image.jpg"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "current_page": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "example": 5
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "example": 20
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Failed to search outlets"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Internal server error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/near-me": {
            "post": {
                "tags": [
                    "Outlets"
                ],
                "summary": "Get nearby outlets within a specified radius",
                "description": "Find outlets within a specified radius from given coordinates",
                "operationId": "getNearbyOutlets",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "lat",
                                    "lng"
                                ],
                                "properties": {
                                    "lat": {
                                        "description": "Latitude",
                                        "type": "number",
                                        "format": "float",
                                        "example": -6.2088
                                    },
                                    "lng": {
                                        "description": "Longitude",
                                        "type": "number",
                                        "format": "float",
                                        "example": 106.8456
                                    },
                                    "radius": {
                                        "description": "Search radius in kilometers (default: 50)",
                                        "type": "number",
                                        "example": 50
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully found nearby outlets"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "string",
                                                        "example": "uuid"
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "Outlet Name"
                                                    },
                                                    "address": {
                                                        "type": "string",
                                                        "example": "Outlet Address"
                                                    },
                                                    "lat": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": -6.2088
                                                    },
                                                    "lng": {
                                                        "type": "number",
                                                        "format": "float",
                                                        "example": 106.8456
                                                    },
                                                    "distance_km": {
                                                        "type": "string",
                                                        "example": "5.2"
                                                    },
                                                    "absolute_image_url": {
                                                        "type": "string",
                                                        "example": "https://example.com/storage/outlets/image.jpg"
                                                    },
                                                    "product_types": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "string",
                                                            "example": "photobooth"
                                                        }
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid location coordinates"
                                        },
                                        "data": {
                                            "properties": {
                                                "lat": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "lng": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Failed to find nearby outlets"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Internal server error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/outlets/active": {
            "get": {
                "tags": [
                    "Outlets"
                ],
                "summary": "Get list of active outlets",
                "description": "Retrieve a list of all active outlets sorted by display priority",
                "operationId": "getActiveOutlets",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "id": {
                                                "type": "string",
                                                "example": "uuid"
                                            },
                                            "name": {
                                                "type": "string",
                                                "example": "Outlet Name"
                                            },
                                            "address": {
                                                "type": "string",
                                                "example": "Outlet Address"
                                            },
                                            "lat": {
                                                "type": "number",
                                                "format": "float",
                                                "example": -6.2088
                                            },
                                            "lng": {
                                                "type": "number",
                                                "format": "float",
                                                "example": 106.8456
                                            },
                                            "active": {
                                                "type": "boolean",
                                                "example": true
                                            },
                                            "display": {
                                                "type": "boolean",
                                                "example": true
                                            },
                                            "display_priority": {
                                                "type": "integer",
                                                "example": 1
                                            },
                                            "type": {
                                                "type": "string",
                                                "example": "outlet"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/products": {
            "get": {
                "tags": [
                    "Products"
                ],
                "summary": "Get products for the authenticated user's outlet",
                "operationId": "d187c1564039a69e6edc3e0a1a9848d2",
                "parameters": [
                    {
                        "name": "last_updated",
                        "in": "query",
                        "description": "Filter products updated after this date",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "products": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "type": "string"
                                                            },
                                                            "name": {
                                                                "type": "string"
                                                            },
                                                            "description": {
                                                                "type": "string"
                                                            },
                                                            "price": {
                                                                "type": "number"
                                                            },
                                                            "type": {
                                                                "type": "string"
                                                            },
                                                            "image_url": {
                                                                "type": "string"
                                                            },
                                                            "absolute_image_url": {
                                                                "type": "string"
                                                            },
                                                            "print_medias": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "object"
                                                                }
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "total_count": {
                                                    "type": "integer",
                                                    "example": 10
                                                },
                                                "filtered_count": {
                                                    "type": "integer",
                                                    "example": 5
                                                },
                                                "outlet_type": {
                                                    "type": "string",
                                                    "example": "moments"
                                                },
                                                "outlet_id": {
                                                    "type": "string",
                                                    "example": "96cbad8d-a542-4c83-900b-a7bb2442aa91"
                                                },
                                                "last_updated": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Products retrieved successfully."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User has no outlet assigned"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Failed to retrieve products"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/products/index": {
            "get": {
                "tags": [
                    "Products"
                ],
                "summary": "Get list of active root products",
                "operationId": "b9e469fc442982fd19b9300f50d5b5bf",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "string"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "description": {
                                                        "type": "string"
                                                    },
                                                    "price": {
                                                        "type": "number"
                                                    },
                                                    "type": {
                                                        "type": "string"
                                                    },
                                                    "image_url": {
                                                        "type": "string"
                                                    },
                                                    "absolute_image_url": {
                                                        "type": "string"
                                                    },
                                                    "print_medias": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object"
                                                        }
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success get product list"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Internal server error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/products/moments-addon": {
            "get": {
                "tags": [
                    "Products"
                ],
                "summary": "Get moments addon products for an outlet",
                "operationId": "0416c9260db41e82723517584f90df4d",
                "parameters": [
                    {
                        "name": "outlet_id",
                        "in": "query",
                        "description": "Outlet ID (required for Super Admin users)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "string"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "description": {
                                                        "type": "string"
                                                    },
                                                    "price": {
                                                        "type": "number"
                                                    },
                                                    "type": {
                                                        "type": "string"
                                                    },
                                                    "image_url": {
                                                        "type": "string"
                                                    },
                                                    "absolute_image_url": {
                                                        "type": "string"
                                                    },
                                                    "print_medias": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object"
                                                        }
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Moments addon successfully fetched"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Forbidden"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Internal server error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get transactions for the authenticated user's outlet",
                "operationId": "8be2192a53adde0fd4f205331bfbf737",
                "parameters": [
                    {
                        "name": "last_updated",
                        "in": "query",
                        "description": "Filter transactions updated after this date",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "transaction_id",
                        "in": "query",
                        "description": "Filter by specific transaction ID",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "string"
                                                    },
                                                    "transaction_number": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "payment_status": {
                                                        "type": "string"
                                                    },
                                                    "outlet_id": {
                                                        "type": "string"
                                                    },
                                                    "outlet_name": {
                                                        "type": "string"
                                                    },
                                                    "payment_type": {
                                                        "type": "string"
                                                    },
                                                    "processed_gross_amount": {
                                                        "type": "number"
                                                    },
                                                    "type": {
                                                        "type": "string"
                                                    },
                                                    "details": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object"
                                                        }
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully getting transactions"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Create a new transaction",
                "operationId": "ac83e8e2e5fc5cf33d878106ff9ae654",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "payment_method",
                                    "product_id",
                                    "quantity",
                                    "outlet_id"
                                ],
                                "properties": {
                                    "payment_method": {
                                        "description": "Payment method",
                                        "type": "string",
                                        "enum": [
                                            "cash",
                                            "qris",
                                            "gopay",
                                            "bca",
                                            "bni",
                                            "bri",
                                            "mandiri",
                                            "permata"
                                        ]
                                    },
                                    "product_id": {
                                        "description": "Product ID",
                                        "type": "string"
                                    },
                                    "quantity": {
                                        "description": "Product quantity",
                                        "type": "number"
                                    },
                                    "outlet_id": {
                                        "description": "Outlet ID",
                                        "type": "string"
                                    },
                                    "customer_email": {
                                        "description": "Customer email",
                                        "type": "string",
                                        "format": "email",
                                        "nullable": true
                                    },
                                    "customer_name": {
                                        "description": "Customer name",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "customer_phone": {
                                        "description": "Customer phone",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "employee_id": {
                                        "description": "Employee ID",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "employee_name": {
                                        "description": "Employee name",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "ig_username": {
                                        "description": "Instagram username",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "consent_to_sharing_photos": {
                                        "description": "Consent to sharing photos",
                                        "type": "boolean",
                                        "nullable": true
                                    },
                                    "session_start": {
                                        "description": "Session start time (for moments products)",
                                        "type": "string",
                                        "format": "date-time",
                                        "nullable": true
                                    },
                                    "session_end": {
                                        "description": "Session end time (for moments products)",
                                        "type": "string",
                                        "format": "date-time",
                                        "nullable": true
                                    },
                                    "code": {
                                        "description": "Voucher code",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "parent_id": {
                                        "description": "Parent transaction ID",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "addons": {
                                        "description": "Product addons",
                                        "type": "array",
                                        "items": {
                                            "required": [
                                                "product_id",
                                                "qty"
                                            ],
                                            "properties": {
                                                "product_id": {
                                                    "description": "Addon product ID",
                                                    "type": "string"
                                                },
                                                "qty": {
                                                    "description": "Addon quantity",
                                                    "type": "number"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "pg_order_id": {
                                                    "type": "string"
                                                },
                                                "pg_status": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "actions": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "va_number": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "va_number_bank": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "biller_code": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "bill_key": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "permata_va_number": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully creating a new order"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Validation errors or payment gateway error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions/by-uuid": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get transaction by UUID",
                "operationId": "4a1adb4e1803464748d3d4efdaf56136",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "query",
                        "description": "Transaction UUID or PIN",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "description": "Search type (uuid or pin)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "uuid",
                                "pin"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully getting transactions"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Transaction not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/user/transactions": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get transactions for the authenticated user",
                "operationId": "1247edb5df72c2bb9ed9537ce4032fb6",
                "parameters": [
                    {
                        "name": "isLast24Hours",
                        "in": "query",
                        "description": "Filter transactions from the last 24 hours",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "pin",
                        "in": "query",
                        "description": "Filter by transaction PIN",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Filter by transaction status",
                        "required": false,
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string",
                                "enum": [
                                    "done",
                                    "unpaid",
                                    "pending"
                                ]
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "string"
                                                    },
                                                    "transaction_number": {
                                                        "type": "string"
                                                    },
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "payment_status": {
                                                        "type": "string"
                                                    },
                                                    "outlet_id": {
                                                        "type": "string"
                                                    },
                                                    "outlet_name": {
                                                        "type": "string"
                                                    },
                                                    "payment_type": {
                                                        "type": "string"
                                                    },
                                                    "processed_gross_amount": {
                                                        "type": "number"
                                                    },
                                                    "type": {
                                                        "type": "string"
                                                    },
                                                    "details": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object"
                                                        }
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success get list user transactions"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/user/transactions/{id}": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get transaction details for the authenticated user",
                "operationId": "284512b39007b77fb1a0a9f59037cda9",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Transaction ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success get user transaction"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Transaction not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/user/transactions/{id}/order-images": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get order images for a user transaction",
                "operationId": "1973070d31ab714b8aaf9c2ec0c7796e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Transaction ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "transaction_id": {
                                                    "type": "string"
                                                },
                                                "transaction_date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "order_images": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "type": "string"
                                                            },
                                                            "image_url": {
                                                                "type": "string"
                                                            },
                                                            "thumbnail_path": {
                                                                "type": "string"
                                                            },
                                                            "unlock": {
                                                                "type": "boolean"
                                                            },
                                                            "type": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success get user transaction order images"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Transaction not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions/{id}/order-images": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get order images for a transaction",
                "operationId": "99208d8e6ef3b0de4763531cbf9d908c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Transaction ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "original": {
                                                    "properties": {
                                                        "count": {
                                                            "type": "integer"
                                                        },
                                                        "list": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "object"
                                                            }
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "edited_files": {
                                                    "properties": {
                                                        "count": {
                                                            "type": "integer"
                                                        },
                                                        "list": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "object"
                                                            }
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction Order Image fetched successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Forbidden"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Transaction Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction Not Found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/user/refund-requests": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get refund requests for the authenticated user",
                "operationId": "cc6750c3e1907f6269c42d646221801e",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "data": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "type": "string"
                                                            },
                                                            "user_id": {
                                                                "type": "string"
                                                            },
                                                            "transaction_id": {
                                                                "type": "string"
                                                            },
                                                            "reason": {
                                                                "type": "string"
                                                            },
                                                            "status": {
                                                                "type": "string"
                                                            },
                                                            "items": {
                                                                "type": "array",
                                                                "items": {
                                                                    "type": "object"
                                                                }
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "first_page_url": {
                                                    "type": "string"
                                                },
                                                "from": {
                                                    "type": "integer"
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "last_page_url": {
                                                    "type": "string"
                                                },
                                                "links": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                },
                                                "next_page_url": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "path": {
                                                    "type": "string"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "prev_page_url": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "to": {
                                                    "type": "integer"
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success get list user request refund"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/refund-requests/{id}": {
            "get": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Get refund request details",
                "operationId": "2e6b0c542227cd0dc7370eca28544e11",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Refund request ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "user_id": {
                                                    "type": "string"
                                                },
                                                "transaction_id": {
                                                    "type": "string"
                                                },
                                                "reason": {
                                                    "type": "string"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "bank_name": {
                                                    "type": "string"
                                                },
                                                "bank_account_number": {
                                                    "type": "string"
                                                },
                                                "customer_phone": {
                                                    "type": "string"
                                                },
                                                "customer_email": {
                                                    "type": "string"
                                                },
                                                "customer_name": {
                                                    "type": "string"
                                                },
                                                "amount": {
                                                    "type": "number"
                                                },
                                                "payment_proof": {
                                                    "type": "string"
                                                },
                                                "items": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success get request refund detail"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/refund-requests": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Create a new refund request",
                "operationId": "64f715c62e4ac30501c9b598c7719087",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "transaction_id",
                                    "user_id",
                                    "reason",
                                    "bank_name",
                                    "transaction_detail",
                                    "bank_account_number",
                                    "customer_phone",
                                    "customer_email",
                                    "customer_name",
                                    "outlet_id",
                                    "amount",
                                    "payment_proof"
                                ],
                                "properties": {
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string"
                                    },
                                    "user_id": {
                                        "description": "User ID",
                                        "type": "string"
                                    },
                                    "reason": {
                                        "description": "Reason for refund",
                                        "type": "string"
                                    },
                                    "bank_name": {
                                        "description": "Bank name",
                                        "type": "string"
                                    },
                                    "transaction_detail": {
                                        "description": "Transaction detail IDs as JSON array",
                                        "type": "string"
                                    },
                                    "bank_account_number": {
                                        "description": "Bank account number",
                                        "type": "string"
                                    },
                                    "customer_phone": {
                                        "description": "Customer phone number",
                                        "type": "string"
                                    },
                                    "customer_email": {
                                        "description": "Customer email",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "customer_name": {
                                        "description": "Customer name",
                                        "type": "string"
                                    },
                                    "outlet_id": {
                                        "description": "Outlet ID",
                                        "type": "string"
                                    },
                                    "amount": {
                                        "description": "Refund amount",
                                        "type": "number",
                                        "format": "float"
                                    },
                                    "payment_proof": {
                                        "description": "Payment proof image file (max 2MB)",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "user_id": {
                                                    "type": "string"
                                                },
                                                "transaction_id": {
                                                    "type": "string"
                                                },
                                                "reason": {
                                                    "type": "string"
                                                },
                                                "status": {
                                                    "type": "string",
                                                    "example": "pending"
                                                },
                                                "bank_name": {
                                                    "type": "string"
                                                },
                                                "bank_account_number": {
                                                    "type": "string"
                                                },
                                                "customer_phone": {
                                                    "type": "string"
                                                },
                                                "customer_email": {
                                                    "type": "string"
                                                },
                                                "customer_name": {
                                                    "type": "string"
                                                },
                                                "amount": {
                                                    "type": "number"
                                                },
                                                "payment_proof": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Refund requested successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Validation errors or duplicate request"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions/sync": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Sync offline transactions",
                "operationId": "c8b2e24b807c2684d8c89dbea397d8b0",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "transactions"
                                ],
                                "properties": {
                                    "transactions": {
                                        "description": "Array of transactions to sync",
                                        "type": "array",
                                        "items": {
                                            "required": [
                                                "id",
                                                "date",
                                                "status",
                                                "payment_status",
                                                "outlet_name",
                                                "processed_gross_amount",
                                                "type",
                                                "details"
                                            ],
                                            "properties": {
                                                "id": {
                                                    "description": "Transaction ID",
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "description": "Transaction date",
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "description": "Transaction status",
                                                    "type": "string",
                                                    "enum": [
                                                        "done",
                                                        "unpaid",
                                                        "pending",
                                                        "cancel",
                                                        "void"
                                                    ]
                                                },
                                                "payment_status": {
                                                    "description": "Payment status",
                                                    "type": "string",
                                                    "enum": [
                                                        "paid",
                                                        "unpaid"
                                                    ]
                                                },
                                                "outlet_name": {
                                                    "description": "Outlet name",
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "description": "Payment type",
                                                    "type": "string",
                                                    "enum": [
                                                        "cash",
                                                        "qris",
                                                        "gopay",
                                                        "bca",
                                                        "bni",
                                                        "bri",
                                                        "mandiri",
                                                        "permata"
                                                    ]
                                                },
                                                "pg_status": {
                                                    "description": "Payment gateway status",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "transaction_fee": {
                                                    "description": "Transaction fee",
                                                    "type": "number",
                                                    "nullable": true
                                                },
                                                "customer_email": {
                                                    "description": "Customer email",
                                                    "type": "string",
                                                    "format": "email",
                                                    "nullable": true
                                                },
                                                "customer_name": {
                                                    "description": "Customer name",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "customer_phone": {
                                                    "description": "Customer phone",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "employee_id": {
                                                    "description": "Employee ID",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "employee_name": {
                                                    "description": "Employee name",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "note": {
                                                    "description": "Transaction notes",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "processed_gross_amount": {
                                                    "description": "Total amount",
                                                    "type": "number"
                                                },
                                                "session_started_at": {
                                                    "description": "Session start timestamp",
                                                    "type": "number",
                                                    "nullable": true
                                                },
                                                "session_ended_at": {
                                                    "description": "Session end timestamp",
                                                    "type": "number",
                                                    "nullable": true
                                                },
                                                "type": {
                                                    "description": "Transaction type",
                                                    "type": "string",
                                                    "enum": [
                                                        "moments",
                                                        "standalone",
                                                        "product",
                                                        "subscription"
                                                    ]
                                                },
                                                "ig_username": {
                                                    "description": "Instagram username",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "consent_to_sharing_photos": {
                                                    "description": "Consent to sharing photos",
                                                    "type": "boolean"
                                                },
                                                "details": {
                                                    "description": "Transaction details",
                                                    "type": "array",
                                                    "items": {
                                                        "required": [
                                                            "product_id",
                                                            "transaction_id",
                                                            "product_name",
                                                            "quantity",
                                                            "price",
                                                            "print_qty",
                                                            "capture_qty",
                                                            "retake_qty",
                                                            "print_media_id"
                                                        ],
                                                        "properties": {
                                                            "id": {
                                                                "description": "Transaction detail ID",
                                                                "type": "string",
                                                                "nullable": true
                                                            },
                                                            "product_id": {
                                                                "description": "Product ID",
                                                                "type": "string"
                                                            },
                                                            "transaction_id": {
                                                                "description": "Transaction ID",
                                                                "type": "string"
                                                            },
                                                            "product_name": {
                                                                "description": "Product name",
                                                                "type": "string"
                                                            },
                                                            "quantity": {
                                                                "description": "Quantity",
                                                                "type": "integer"
                                                            },
                                                            "price": {
                                                                "description": "Price",
                                                                "type": "number"
                                                            },
                                                            "print_qty": {
                                                                "description": "Print quantity",
                                                                "type": "integer"
                                                            },
                                                            "capture_qty": {
                                                                "description": "Capture quantity",
                                                                "type": "integer"
                                                            },
                                                            "retake_qty": {
                                                                "description": "Retake quantity",
                                                                "type": "integer"
                                                            },
                                                            "print_media_id": {
                                                                "description": "Print media ID",
                                                                "type": "string",
                                                                "nullable": true
                                                            },
                                                            "unlocked_photo": {
                                                                "description": "Unlocked photo flag",
                                                                "type": "boolean",
                                                                "nullable": true
                                                            },
                                                            "order_image_id": {
                                                                "description": "Order image ID",
                                                                "type": "string",
                                                                "nullable": true
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "success": {
                                                    "type": "boolean",
                                                    "example": true
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "example": "Successfully sync offline transactions"
                                                },
                                                "sync_count": {
                                                    "type": "integer",
                                                    "example": 5
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully sync offline transactions"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/snap-notification": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Midtrans payment callback",
                "operationId": "ee2463352ab98521bd6ad8f54b21446c",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "order_id",
                                    "status_code",
                                    "gross_amount",
                                    "signature_key",
                                    "transaction_status"
                                ],
                                "properties": {
                                    "order_id": {
                                        "description": "Order ID",
                                        "type": "string"
                                    },
                                    "status_code": {
                                        "description": "Status code",
                                        "type": "string"
                                    },
                                    "gross_amount": {
                                        "description": "Gross amount",
                                        "type": "string"
                                    },
                                    "signature_key": {
                                        "description": "Signature key for verification",
                                        "type": "string"
                                    },
                                    "transaction_status": {
                                        "description": "Transaction status",
                                        "type": "string",
                                        "enum": [
                                            "capture",
                                            "settlement",
                                            "pending",
                                            "deny",
                                            "cancel",
                                            "expire"
                                        ]
                                    },
                                    "status_message": {
                                        "description": "Status message",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "payment_type": {
                                        "description": "Payment type",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "fraud_status": {
                                        "description": "Fraud status",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "approval_code": {
                                        "description": "Approval code",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "transaction_time": {
                                        "description": "Transaction time",
                                        "type": "string",
                                        "format": "date-time",
                                        "nullable": true
                                    },
                                    "bill_key": {
                                        "description": "Bill key",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "biller_code": {
                                        "description": "Biller code",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "masked_card": {
                                        "description": "Masked card number",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "permata_va_number": {
                                        "description": "Permata VA number",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "payment_code": {
                                        "description": "Payment code",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "va_numbers": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "bank": {
                                                    "type": "string"
                                                },
                                                "va_number": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Callback Success"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Invalid signature",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not a Valid Sender"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Invalid request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Not a valid request"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/transactions/cancel": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Cancel a transaction",
                "operationId": "b28e8bc0a68baf1622791ca1e0b72109",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "transaction_id"
                                ],
                                "properties": {
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully canceling a transaction"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found or cannot be cancelled"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/user/transactions/cancel": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Cancel a user transaction",
                "operationId": "572df5fb3bce035605d3b070f21ad5f3",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "transaction_id"
                                ],
                                "properties": {
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully canceling a transaction"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Transaction not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Forbidden"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions/void": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Void a transaction",
                "operationId": "f1fa4be2815789eb41f43d6fc6fe50b5",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "transaction_id"
                                ],
                                "properties": {
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully void a transaction"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found or access denied"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions/send-notification-email": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Send notification email for a transaction",
                "operationId": "7a777bf2955d9844a072905cd36ea434",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "transaction_id"
                                ],
                                "properties": {
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully sending user an notification email"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Transaction not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions/resend-qr-email": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Resend QR code email for a transaction",
                "operationId": "c53b9484d3161bc17c6fbf24996165fa",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "transaction_id"
                                ],
                                "properties": {
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully resending user an email"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found or payment not completed"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/transactions/create-from-booking": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Create a transaction from a booking",
                "operationId": "58479db7615871637bc8e057d91e45b0",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "date",
                                    "payment_status",
                                    "payment_type",
                                    "outlet_id",
                                    "booking_id",
                                    "booking_number",
                                    "selfie_time_product_id",
                                    "quantity",
                                    "price"
                                ],
                                "properties": {
                                    "date": {
                                        "description": "Transaction date",
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "payment_status": {
                                        "description": "Payment status",
                                        "type": "string",
                                        "enum": [
                                            "paid",
                                            "unpaid"
                                        ]
                                    },
                                    "payment_type": {
                                        "description": "Payment type",
                                        "type": "string",
                                        "enum": [
                                            "cash",
                                            "qris",
                                            "gopay",
                                            "bca",
                                            "bni",
                                            "bri",
                                            "mandiri",
                                            "permata"
                                        ]
                                    },
                                    "outlet_id": {
                                        "description": "Outlet ID",
                                        "type": "string"
                                    },
                                    "booking_id": {
                                        "description": "Booking ID",
                                        "type": "string"
                                    },
                                    "booking_number": {
                                        "description": "Booking number",
                                        "type": "string"
                                    },
                                    "selfie_time_product_id": {
                                        "description": "Product ID",
                                        "type": "string"
                                    },
                                    "quantity": {
                                        "description": "Product quantity",
                                        "type": "number"
                                    },
                                    "price": {
                                        "description": "Product price",
                                        "type": "number"
                                    },
                                    "pg_transaction_id": {
                                        "description": "Payment gateway transaction ID",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "pg_transaction_time": {
                                        "description": "Payment gateway transaction time",
                                        "type": "string",
                                        "format": "date-time",
                                        "nullable": true
                                    },
                                    "pg_status": {
                                        "description": "Payment gateway status",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "customer_email": {
                                        "description": "Customer email",
                                        "type": "string",
                                        "format": "email",
                                        "nullable": true
                                    },
                                    "customer_name": {
                                        "description": "Customer name",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "customer_phone": {
                                        "description": "Customer phone",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully creating a new order"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Outlet not available! or Product not available! or Booking ID already exist!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthenticated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Unauthenticated."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/xendit-callback": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Xendit payment callback",
                "operationId": "54bf9e699ea8e2c6889ed16fbce012aa",
                "parameters": [
                    {
                        "name": "x-callback-token",
                        "in": "header",
                        "description": "Xendit callback token for verification",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "event",
                                    "data"
                                ],
                                "properties": {
                                    "event": {
                                        "description": "Callback event type",
                                        "type": "string",
                                        "enum": [
                                            "payment_method.activated",
                                            "payment_method.expired",
                                            "payment_method.failed",
                                            "payment_method.expiry.expired",
                                            "payment.succeeded",
                                            "qr.payment"
                                        ]
                                    },
                                    "data": {
                                        "required": [
                                            "id",
                                            "reference_id",
                                            "status"
                                        ],
                                        "properties": {
                                            "id": {
                                                "description": "Payment method ID",
                                                "type": "string"
                                            },
                                            "reference_id": {
                                                "description": "Transaction reference ID",
                                                "type": "string"
                                            },
                                            "status": {
                                                "description": "Payment status",
                                                "type": "string",
                                                "enum": [
                                                    "ACTIVE",
                                                    "EXPIRED",
                                                    "FAILED",
                                                    "SUCCEEDED"
                                                ]
                                            },
                                            "amount": {
                                                "description": "Payment amount",
                                                "type": "number",
                                                "nullable": true
                                            },
                                            "payment_method": {
                                                "properties": {
                                                    "id": {
                                                        "type": "string"
                                                    },
                                                    "type": {
                                                        "type": "string",
                                                        "enum": [
                                                            "QR_CODE",
                                                            "VIRTUAL_ACCOUNT"
                                                        ]
                                                    },
                                                    "status": {
                                                        "type": "string",
                                                        "enum": [
                                                            "ACTIVE",
                                                            "EXPIRED",
                                                            "FAILED",
                                                            "SUCCEEDED"
                                                        ]
                                                    }
                                                },
                                                "type": "object",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "XENDIT CALLBACK SUCCESS!"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "TRANSACTION NOT FOUND"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "TRANSACTION NOT FOUND"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "CALLBACK ERROR"
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/create-product-transaction": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Create a new product transaction",
                "operationId": "31d477ac8e1fa788c6dd71c32a71ba7f",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "payment_method",
                                    "type",
                                    "details"
                                ],
                                "properties": {
                                    "payment_method": {
                                        "description": "Payment method",
                                        "type": "string",
                                        "enum": [
                                            "cash",
                                            "qris",
                                            "gopay",
                                            "bca",
                                            "bni",
                                            "bri",
                                            "mandiri",
                                            "permata"
                                        ]
                                    },
                                    "type": {
                                        "description": "Transaction type",
                                        "type": "string",
                                        "enum": [
                                            "product",
                                            "standalone"
                                        ]
                                    },
                                    "customer_email": {
                                        "description": "Customer email",
                                        "type": "string",
                                        "format": "email",
                                        "nullable": true
                                    },
                                    "customer_name": {
                                        "description": "Customer name",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "customer_phone": {
                                        "description": "Customer phone",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "employee_id": {
                                        "description": "Employee ID",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "employee_name": {
                                        "description": "Employee name",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "code": {
                                        "description": "Voucher code",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "details": {
                                        "description": "Transaction details",
                                        "type": "array",
                                        "items": {
                                            "required": [
                                                "product_id",
                                                "product_name",
                                                "quantity",
                                                "price",
                                                "print_qty",
                                                "capture_qty",
                                                "retake_qty",
                                                "print_media_id"
                                            ],
                                            "properties": {
                                                "product_id": {
                                                    "description": "Product ID",
                                                    "type": "string"
                                                },
                                                "product_name": {
                                                    "description": "Product name",
                                                    "type": "string"
                                                },
                                                "quantity": {
                                                    "description": "Quantity",
                                                    "type": "number"
                                                },
                                                "price": {
                                                    "description": "Price",
                                                    "type": "number"
                                                },
                                                "print_qty": {
                                                    "description": "Print quantity",
                                                    "type": "integer"
                                                },
                                                "capture_qty": {
                                                    "description": "Capture quantity",
                                                    "type": "integer"
                                                },
                                                "retake_qty": {
                                                    "description": "Retake quantity",
                                                    "type": "integer"
                                                },
                                                "print_media_id": {
                                                    "description": "Print media ID",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "unlocked_photo": {
                                                    "description": "Unlocked photo flag",
                                                    "type": "boolean",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "pg_order_id": {
                                                    "type": "string"
                                                },
                                                "pg_status": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "actions": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "va_number": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "va_number_bank": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "biller_code": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "bill_key": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "permata_va_number": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Successfully creating a new order"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Validation errors or payment gateway error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/update-transaction-status": {
            "post": {
                "tags": [
                    "Transactions"
                ],
                "summary": "Update transaction status",
                "operationId": "8b121108cb3487d6271e20fd12754788",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "transaction_id"
                                ],
                                "properties": {
                                    "transaction_id": {
                                        "description": "Transaction ID",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Update Status Successful"
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "transaction_number": {
                                                    "type": "string"
                                                },
                                                "date": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "payment_status": {
                                                    "type": "string"
                                                },
                                                "outlet_id": {
                                                    "type": "string"
                                                },
                                                "outlet_name": {
                                                    "type": "string"
                                                },
                                                "payment_type": {
                                                    "type": "string"
                                                },
                                                "processed_gross_amount": {
                                                    "type": "number"
                                                },
                                                "type": {
                                                    "type": "string"
                                                },
                                                "details": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Transaction not found or check status error"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/users/{userId}": {
            "get": {
                "tags": [
                    "Users"
                ],
                "summary": "Get user details",
                "operationId": "29f68a885275143bc0ab45cea2a9b121",
                "parameters": [
                    {
                        "name": "userId",
                        "in": "path",
                        "description": "User ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "name": {
                                                    "type": "string",
                                                    "example": "John Doe"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "example": "john@example.com"
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "example": "08123456789"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "User not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "User not found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/register": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Register a new user",
                "operationId": "584a102470c054e585330c05f7da4bfc",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "email",
                                    "password",
                                    "confirm_password"
                                ],
                                "properties": {
                                    "name": {
                                        "description": "User name",
                                        "type": "string"
                                    },
                                    "email": {
                                        "description": "User email",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "password": {
                                        "description": "User password",
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "confirm_password": {
                                        "description": "Confirm password",
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "province": {
                                        "description": "Province",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "city": {
                                        "description": "City",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "dob": {
                                        "description": "Date of birth",
                                        "type": "string",
                                        "format": "date",
                                        "nullable": true
                                    },
                                    "gender": {
                                        "description": "Gender",
                                        "type": "string",
                                        "enum": [
                                            "P",
                                            "L"
                                        ],
                                        "nullable": true
                                    },
                                    "registration_outlet_id": {
                                        "description": "Registration outlet ID",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "phone": {
                                        "description": "Phone number",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "token": {
                                                    "type": "string",
                                                    "example": "access_token"
                                                },
                                                "user": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "email": {
                                                            "type": "string",
                                                            "format": "email"
                                                        },
                                                        "phone": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "city": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "dob": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "nullable": true
                                                        },
                                                        "gender": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "registration_outlet_id": {
                                                            "type": "string",
                                                            "nullable": true
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Registration Success"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Validation error message"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/login": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Login user",
                "operationId": "2526fe2d44c926504aa3663c8f10a15c",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "User email",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "password": {
                                        "description": "User password",
                                        "type": "string",
                                        "format": "password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "token": {
                                                    "type": "string",
                                                    "example": "access_token"
                                                },
                                                "user": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "email": {
                                                            "type": "string",
                                                            "format": "email"
                                                        },
                                                        "phone": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "city": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "dob": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "nullable": true
                                                        },
                                                        "gender": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "registration_outlet_id": {
                                                            "type": "string",
                                                            "nullable": true
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Login Successful"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Incorrect email or password"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Account deactivated or banned",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Akun Anda telah dinonaktifkan. Mohon hubungi admin untuk bantuan aktivasi kembali."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/update": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Update user profile",
                "operationId": "f01c603ed9440c4a6e15696d29ade802",
                "requestBody": {
                    "required": false,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "properties": {
                                    "profile_photo": {
                                        "description": "Profile photo",
                                        "type": "string",
                                        "format": "binary"
                                    },
                                    "daily_activities": {
                                        "description": "Daily activities",
                                        "type": "string"
                                    },
                                    "city": {
                                        "description": "City",
                                        "type": "string"
                                    },
                                    "province": {
                                        "description": "Province",
                                        "type": "string"
                                    },
                                    "phone": {
                                        "description": "Phone number",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "format": "email"
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "city": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "dob": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "nullable": true
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "registration_outlet_id": {
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Profile successfully updated"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/complete": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Complete user profile",
                "operationId": "266557a08f99dc28ac5f99a477e05098",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "registration_outlet_id"
                                ],
                                "properties": {
                                    "gender": {
                                        "description": "Gender",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "dob": {
                                        "description": "Date of birth",
                                        "type": "string",
                                        "format": "date",
                                        "nullable": true
                                    },
                                    "phone_number": {
                                        "description": "Phone number",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "daily_activities": {
                                        "description": "Daily activities",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "province": {
                                        "description": "Province",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "city": {
                                        "description": "City",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "phone": {
                                        "description": "Phone",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "registration_outlet_id": {
                                        "description": "Registration outlet ID",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string",
                                                    "format": "uuid"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "format": "email"
                                                },
                                                "email_verified_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "nullable": true
                                                },
                                                "profile_photo_path": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "profile_photo_url": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "enum": [
                                                        "P",
                                                        "L"
                                                    ],
                                                    "nullable": true
                                                },
                                                "city": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "province": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "dob": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "nullable": true
                                                },
                                                "daily_activities": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "registration_outlet_id": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "active": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "badge": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "min_points": {
                                                            "type": "integer"
                                                        },
                                                        "image_url": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "type": "object",
                                                    "nullable": true
                                                },
                                                "next_badge": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "min_points": {
                                                            "type": "integer"
                                                        },
                                                        "image_url": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "type": "object",
                                                    "nullable": true
                                                },
                                                "wallets": {
                                                    "properties": {
                                                        "points": {
                                                            "properties": {
                                                                "id": {
                                                                    "type": "string"
                                                                },
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "slug": {
                                                                    "type": "string"
                                                                },
                                                                "balance": {
                                                                    "type": "number",
                                                                    "format": "float"
                                                                }
                                                            },
                                                            "type": "object",
                                                            "nullable": true
                                                        },
                                                        "badge": {
                                                            "properties": {
                                                                "id": {
                                                                    "type": "string"
                                                                },
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "slug": {
                                                                    "type": "string"
                                                                },
                                                                "balance": {
                                                                    "type": "number",
                                                                    "format": "float"
                                                                }
                                                            },
                                                            "type": "object",
                                                            "nullable": true
                                                        }
                                                    },
                                                    "type": "object",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success on completing profile"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/login-facebook": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Login with Facebook",
                "operationId": "52df8274523552bc63935525e816f6bc",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "access_token"
                                ],
                                "properties": {
                                    "access_token": {
                                        "description": "Facebook access token",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "token": {
                                                    "type": "string",
                                                    "example": "access_token"
                                                },
                                                "user": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string",
                                                            "format": "uuid"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "email": {
                                                            "type": "string",
                                                            "format": "email"
                                                        },
                                                        "email_verified_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "nullable": true
                                                        },
                                                        "profile_photo_path": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "profile_photo_url": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "phone": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "gender": {
                                                            "type": "string",
                                                            "enum": [
                                                                "P",
                                                                "L"
                                                            ],
                                                            "nullable": true
                                                        },
                                                        "city": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "province": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "dob": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "nullable": true
                                                        },
                                                        "daily_activities": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "registration_outlet_id": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "active": {
                                                            "type": "integer",
                                                            "example": 1
                                                        },
                                                        "created_at": {
                                                            "type": "string",
                                                            "format": "date-time"
                                                        },
                                                        "updated_at": {
                                                            "type": "string",
                                                            "format": "date-time"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "wallets": {
                                                    "type": "array",
                                                    "items": {}
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Login Successful"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid credentials or source",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid credentials"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/login-google": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Login with Google",
                "operationId": "b4b43965af268aa431c568cdc3e932c2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "id_token"
                                ],
                                "properties": {
                                    "id_token": {
                                        "description": "Google ID token",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "token": {
                                                    "type": "string",
                                                    "example": "access_token"
                                                },
                                                "user": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string",
                                                            "format": "uuid"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "email": {
                                                            "type": "string",
                                                            "format": "email"
                                                        },
                                                        "email_verified_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "nullable": true
                                                        },
                                                        "profile_photo_path": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "profile_photo_url": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "phone": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "gender": {
                                                            "type": "string",
                                                            "enum": [
                                                                "P",
                                                                "L"
                                                            ],
                                                            "nullable": true
                                                        },
                                                        "city": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "province": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "dob": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "nullable": true
                                                        },
                                                        "daily_activities": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "registration_outlet_id": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "active": {
                                                            "type": "integer",
                                                            "example": 1
                                                        },
                                                        "created_at": {
                                                            "type": "string",
                                                            "format": "date-time"
                                                        },
                                                        "updated_at": {
                                                            "type": "string",
                                                            "format": "date-time"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "wallets": {
                                                    "type": "array",
                                                    "items": {}
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Login Successful"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid token or expired token",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid token"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/cities-by-province": {
            "get": {
                "tags": [
                    "Users"
                ],
                "summary": "Get cities by province or list of provinces",
                "operationId": "da09aa366ea3e87888a6ff48e5d5e596",
                "parameters": [
                    {
                        "name": "province_name",
                        "in": "query",
                        "description": "Province name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "value": {
                                                        "type": "string",
                                                        "example": "Jakarta"
                                                    },
                                                    "label": {
                                                        "type": "string",
                                                        "example": "Jakarta"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success get cities list"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/profile": {
            "get": {
                "tags": [
                    "Users"
                ],
                "summary": "Get user profile",
                "operationId": "3384a525dc49213daef6c5274b276a74",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string",
                                                    "format": "uuid"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "format": "email"
                                                },
                                                "email_verified_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "nullable": true
                                                },
                                                "profile_photo_path": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "profile_photo_url": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "enum": [
                                                        "P",
                                                        "L"
                                                    ],
                                                    "nullable": true
                                                },
                                                "city": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "province": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "dob": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "nullable": true
                                                },
                                                "daily_activities": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "registration_outlet_id": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "active": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "badge": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "min_points": {
                                                            "type": "integer"
                                                        },
                                                        "image_url": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "type": "object",
                                                    "nullable": true
                                                },
                                                "next_badge": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "min_points": {
                                                            "type": "integer"
                                                        },
                                                        "image_url": {
                                                            "type": "string"
                                                        }
                                                    },
                                                    "type": "object",
                                                    "nullable": true
                                                },
                                                "wallets": {
                                                    "properties": {
                                                        "points": {
                                                            "properties": {
                                                                "id": {
                                                                    "type": "string"
                                                                },
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "slug": {
                                                                    "type": "string"
                                                                },
                                                                "balance": {
                                                                    "type": "number",
                                                                    "format": "float"
                                                                }
                                                            },
                                                            "type": "object",
                                                            "nullable": true
                                                        },
                                                        "badge": {
                                                            "properties": {
                                                                "id": {
                                                                    "type": "string"
                                                                },
                                                                "name": {
                                                                    "type": "string"
                                                                },
                                                                "slug": {
                                                                    "type": "string"
                                                                },
                                                                "balance": {
                                                                    "type": "number",
                                                                    "format": "float"
                                                                }
                                                            },
                                                            "type": "object",
                                                            "nullable": true
                                                        }
                                                    },
                                                    "type": "object",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success getting user data"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/logout": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Logout user",
                "operationId": "b9c12342da1bfbec9f02fd4e3667ad52",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Logout success"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/change-password": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Change user password",
                "operationId": "652674a82651ab3977194934fc3ac298",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "old_password",
                                    "password",
                                    "confirm_password"
                                ],
                                "properties": {
                                    "old_password": {
                                        "description": "Current password",
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "password": {
                                        "description": "New password",
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "confirm_password": {
                                        "description": "Confirm new password",
                                        "type": "string",
                                        "format": "password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string",
                                                    "format": "uuid"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "format": "email"
                                                },
                                                "email_verified_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "nullable": true
                                                },
                                                "profile_photo_path": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "profile_photo_url": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "enum": [
                                                        "P",
                                                        "L"
                                                    ],
                                                    "nullable": true
                                                },
                                                "city": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "province": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "dob": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "nullable": true
                                                },
                                                "daily_activities": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "registration_outlet_id": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "active": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success updating your password"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Wrong password",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Wrong password"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/outlet-info": {
            "get": {
                "tags": [
                    "Users"
                ],
                "summary": "Get outlet information for user",
                "operationId": "888a07554a3e63ab560bb3236704ec5a",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "address": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "city": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "province": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "postal_code": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "latitude": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "nullable": true
                                                },
                                                "longitude": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "nullable": true
                                                },
                                                "opening_hours": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "image_url": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success getting outlet data"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "User doesn't belong to any outlet",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "This user doesn't belong in any outlet"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/outlet-users": {
            "get": {
                "tags": [
                    "Users"
                ],
                "summary": "Get users from the same outlet",
                "operationId": "fc9e52b43f367f9928f371bf0cd96457",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "John Doe"
                                                    },
                                                    "email": {
                                                        "type": "string",
                                                        "example": "john@example.com"
                                                    },
                                                    "encrypt_pass": {
                                                        "type": "string",
                                                        "example": "hashed_password"
                                                    },
                                                    "role": {
                                                        "type": "string",
                                                        "example": "Outlet Staff"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success getting outlet users"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "User doesn't belong to any outlet",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "This user doesn't belong in any outlet"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/send-otp": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Send OTP for verification",
                "operationId": "535d9a1adc251f21f47c630ef3bf2a92",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "email": {
                                        "description": "Email address",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "phone": {
                                        "description": "Phone number",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Send OTP Successful"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/check-otp": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Verify OTP code",
                "operationId": "d5436458f4cb2060a8cc70f6113098a8",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "otp"
                                ],
                                "properties": {
                                    "otp": {
                                        "description": "OTP code",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "id": {
                                                    "type": "string",
                                                    "format": "uuid"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "email": {
                                                    "type": "string",
                                                    "format": "email"
                                                },
                                                "email_verified_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "nullable": true
                                                },
                                                "profile_photo_path": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "profile_photo_url": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "phone": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "gender": {
                                                    "type": "string",
                                                    "enum": [
                                                        "P",
                                                        "L"
                                                    ],
                                                    "nullable": true
                                                },
                                                "city": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "province": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "dob": {
                                                    "type": "string",
                                                    "format": "date",
                                                    "nullable": true
                                                },
                                                "daily_activities": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "registration_outlet_id": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "active": {
                                                    "type": "integer",
                                                    "example": 1
                                                },
                                                "created_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Email Verified"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid OTP",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "OTP Invalid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/send-otp-forget-password": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Send OTP for password reset",
                "operationId": "beb49c29acf1d15f1ab15810da092447",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "email": {
                                        "description": "Email address",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "phone": {
                                        "description": "Phone number",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "email": {
                                                    "type": "string",
                                                    "example": "user@example.com"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Success send Otp"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/check-otp-forget-password": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Verify OTP for password reset",
                "operationId": "b15ba436630df8a3fda1a879b1051bf5",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "otp"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Email address",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "phone": {
                                        "description": "Phone number",
                                        "type": "string"
                                    },
                                    "otp": {
                                        "description": "OTP code",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "email": {
                                                    "type": "string",
                                                    "example": "user@example.com"
                                                },
                                                "otp": {
                                                    "type": "string",
                                                    "example": "123456"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "OTP Valid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid OTP",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "OTP Invalid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/reset-password": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Reset password with OTP",
                "operationId": "48208475dfcc36888f80b3075a0fc707",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "new_password",
                                    "email",
                                    "otp"
                                ],
                                "properties": {
                                    "new_password": {
                                        "description": "New password",
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "new_password_confirmation": {
                                        "description": "Confirm new password",
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "email": {
                                        "description": "Email address",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "otp": {
                                        "description": "OTP code",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Password reset successful"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid OTP",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "OTP Invalid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/login-apple": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Login with Apple",
                "operationId": "4a62aa774afccf894f1aecccb944f577",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "authorizationCode"
                                ],
                                "properties": {
                                    "authorizationCode": {
                                        "description": "Apple authorization code",
                                        "type": "string"
                                    },
                                    "fullName": {
                                        "properties": {
                                            "givenName": {
                                                "type": "string",
                                                "example": "John"
                                            }
                                        },
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "token": {
                                                    "type": "string",
                                                    "example": "access_token"
                                                },
                                                "user": {
                                                    "properties": {
                                                        "id": {
                                                            "type": "string",
                                                            "format": "uuid"
                                                        },
                                                        "name": {
                                                            "type": "string"
                                                        },
                                                        "email": {
                                                            "type": "string",
                                                            "format": "email"
                                                        },
                                                        "email_verified_at": {
                                                            "type": "string",
                                                            "format": "date-time",
                                                            "nullable": true
                                                        },
                                                        "profile_photo_path": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "profile_photo_url": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "phone": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "gender": {
                                                            "type": "string",
                                                            "enum": [
                                                                "P",
                                                                "L"
                                                            ],
                                                            "nullable": true
                                                        },
                                                        "city": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "province": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "dob": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "nullable": true
                                                        },
                                                        "daily_activities": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "registration_outlet_id": {
                                                            "type": "string",
                                                            "nullable": true
                                                        },
                                                        "active": {
                                                            "type": "integer",
                                                            "example": 1
                                                        },
                                                        "created_at": {
                                                            "type": "string",
                                                            "format": "date-time"
                                                        },
                                                        "updated_at": {
                                                            "type": "string",
                                                            "format": "date-time"
                                                        }
                                                    },
                                                    "type": "object"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Login Successful"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid grant token or registration failed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Invalid Grant Token"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/deactivate": {
            "post": {
                "tags": [
                    "Users"
                ],
                "summary": "Deactivate user account",
                "operationId": "15e2ce412e84fbc299b79ef787e24b64",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "User email",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "delete_feedback": {
                                        "description": "Feedback for account deactivation",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Account successfully deactivated"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid email or feature disabled",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Email invalid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/user-highest-voucher-next-badge": {
            "get": {
                "tags": [
                    "Users"
                ],
                "summary": "Get highest voucher for user's next badge",
                "operationId": "1683dfd3caa8ebe78ef4023ef181ea66",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Voucher found"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        }
    },
    "tags": [
        {
            "name": "Outlets",
            "description": "API endpoints for managing outlets"
        },
        {
            "name": "Products",
            "description": "API endpoints for managing products"
        },
        {
            "name": "Transactions",
            "description": "API endpoints for managing transactions"
        },
        {
            "name": "Users",
            "description": "API endpoints for managing users"
        }
    ],
    "components": {
        "securitySchemes": {
            "sanctum": {
                "type": "apiKey",
                "description": "Enter token in format (Bearer <token>)",
                "name": "Authorization",
                "in": "header"
            }
        }
    },
    "security": [
        {
            "sanctum": []
        }
    ]
}