// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { "description": "{{escape .Description}}", "title": "{{.Title}}", "contact": { "name": "Abdan Hafidz", "email": "admin@example.com" }, "license": { "name": "MIT", "url": "https://opensource.org/licenses/MIT" }, "version": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { "/api/v1/assistants/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Return detailed information about an assistant (instructor) including nested previews of their classes.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Assistants" ], "summary": "Get Assistant Detail", "parameters": [ { "type": "string", "description": "Assistant ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.AssistantDetail" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/auth/otp/request": { "post": { "description": "Trigger an OTP code via WhatsApp for phone number verification.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Request OTP", "parameters": [ { "description": "OTP Request Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.OTPRequestInput" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.OTPRequestResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/auth/otp/verify": { "post": { "description": "Validate the OTP code provided by the user and return authentication token.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Verify OTP", "parameters": [ { "description": "OTP Verification Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.OTPVerifyInput" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.OTPVerifyResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/authentication/change-password": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update password for the logged-in user.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Change Password", "parameters": [ { "description": "Password Change Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.ChangePasswordRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.AuthenticatedUser" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/authentication/login": { "post": { "description": "Authenticate user via email/username and password.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Sign In", "parameters": [ { "description": "Sign In Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.SignInRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.AuthenticatedUser" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/authentication/register": { "post": { "description": "Register a new user with name, email, username and password.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Sign Up", "parameters": [ { "description": "Sign Up Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.SignUpRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/entities.User" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/authentication/role/{userId}": { "put": { "description": "Update user role. Note: This is an older endpoint, consider using /api/v1/users/me/roles instead.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update User Role (Legacy)", "parameters": [ { "type": "string", "description": "User ID", "name": "userId", "in": "path", "required": true }, { "description": "Role Update Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateUserRoleRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/entities.User" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/classes": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get class booking details by booking ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Get Class Booking Detail", "parameters": [ { "type": "string", "description": "Booking ID", "name": "booking_id", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.CreateClassBookingResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Book a specific slot and type of a class. Returns Xendit checkout URL if payment is required.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Book a Class", "parameters": [ { "description": "Class Booking Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.BookClassRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/dto.BookClassResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/classes/create": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a class booking with a specific payload (direct booking)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Create a new Class Booking (Direct)", "parameters": [ { "description": "Class Booking Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.CreateClassBookingRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/dto.CreateClassBookingResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/classes/delete": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Delete a class booking record by booking ID.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Delete a Class Booking", "parameters": [ { "type": "string", "description": "Booking ID", "name": "booking_id", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/classes/filters": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of class bookings filtered by user ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Get Class Bookings By Filter", "parameters": [ { "type": "string", "description": "User ID", "name": "user_id", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/dto.CreateClassBookingResponse" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/classes/reduce-capacity": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Reduce available capacity of a specific ticket type in a slot for a class", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Reduce Capacity", "parameters": [ { "description": "Reduce Capacity Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.ReduceCapacityRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.ClassBookingOptionsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/classes/update": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Partially update a class booking. JSON fields (payment_details, available_slots, available_types) are deep-merged — only provided keys are overwritten.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Partially Update a Class Booking", "parameters": [ { "type": "string", "description": "Booking ID", "name": "booking_id", "in": "query", "required": true }, { "description": "Fields to update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateClassBookingRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.UpdateClassBookingResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/classes/{classId}/options": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get available slots and class types for a specific class to be booked.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Class Booking" ], "summary": "Get Class Booking Options", "parameters": [ { "type": "string", "description": "Class ID", "name": "classId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.ClassBookingOptionsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/events": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Book a specific package for an approved event. Returns Xendit checkout URL if payment is required.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Event Booking" ], "summary": "Book an event", "parameters": [ { "description": "Booking Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.BookEventRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/dto.EventBookingResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/events/event/{event_id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a list of all bookings for a specific event. Intended for event owners/admins.", "produces": [ "application/json" ], "tags": [ "Event Booking" ], "summary": "Get all bookings for an event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/dto.EventBookingResponse" } } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/events/me": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a list of event bookings made by the authenticated user.", "produces": [ "application/json" ], "tags": [ "Event Booking" ], "summary": "Get my event bookings", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/dto.EventBookingResponse" } } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/bookings/events/{booking_id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns full details of a specific event booking by booking ID.", "produces": [ "application/json" ], "tags": [ "Event Booking" ], "summary": "Get event booking detail", "parameters": [ { "type": "string", "description": "Booking ID", "name": "booking_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.EventBookingResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update booking or payment status of an event booking. Used by admin.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Event Booking" ], "summary": "Update event booking status", "parameters": [ { "type": "string", "description": "Booking ID", "name": "booking_id", "in": "path", "required": true }, { "description": "Fields to update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateEventBookingRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.EventBookingResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Cancel a booking made by the authenticated user.", "produces": [ "application/json" ], "tags": [ "Event Booking" ], "summary": "Cancel event booking", "parameters": [ { "type": "string", "description": "Booking ID", "name": "booking_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/class-categories": { "get": { "description": "Get master list of class categories", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Master Data" ], "summary": "Get Class Categories", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.CategoryResponseWrapper" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/classes": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Allows an instructor to create/host a new class. Automatically creates an instructor profile if one doesn't exist.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Host a Class", "parameters": [ { "description": "Class Creation Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.CreateClassRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/entities.Class" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/classes/favorites": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a paginated list of classes favorited by the authenticated user. Response structure matches /api/v1/classes/search.", "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Get favorite classes", "parameters": [ { "type": "integer", "description": "Page (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Limit (default: 10)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.SearchClassesResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/classes/filters": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns available filter options for class search", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Get Class Filters Metadata", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.FiltersMetadataResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/classes/search": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Search classes with filters and sorting options", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Search for Classes", "parameters": [ { "type": "string", "description": "Search query", "name": "q", "in": "query" }, { "type": "string", "description": "Location name", "name": "location_name", "in": "query" }, { "type": "number", "description": "User latitude", "name": "latitude", "in": "query" }, { "type": "number", "description": "User longitude", "name": "longitude", "in": "query" }, { "type": "string", "default": "nearest", "description": "Sort by (nearest|popular|rating|newest)", "name": "sort_by", "in": "query" }, { "type": "integer", "default": 1, "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "default": 10, "description": "Items per page", "name": "limit", "in": "query" }, { "type": "string", "default": "class", "description": "View type", "name": "view_type", "in": "query" }, { "type": "string", "default": "all", "description": "Category", "name": "category", "in": "query" }, { "type": "string", "description": "Dance type", "name": "dance_type", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.SearchClassesResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/classes/{class_id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Return comprehensive class information needed to render the detail page.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Get Class Details", "parameters": [ { "type": "string", "description": "Class ID", "name": "class_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.ClassDetailResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update details of an existing class", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Update a Class", "parameters": [ { "type": "string", "description": "Class ID", "name": "class_id", "in": "path", "required": true }, { "description": "Class Update Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateClassRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/entities.Class" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an existing class", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Delete a Class", "parameters": [ { "type": "string", "description": "Class ID", "name": "class_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/classes/{class_id}/favorite": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Adds the class to favorites if not already favorited, removes it if already favorited.", "produces": [ "application/json" ], "tags": [ "Classes" ], "summary": "Toggle Class Favorite", "parameters": [ { "type": "string", "description": "Class ID", "name": "class_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/event-categories": { "get": { "description": "Get master list of event categories", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Master Data" ], "summary": "Get Event Categories", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.CategoryResponseWrapper" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/events": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a paginated list of approved events visible to members.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "List approved events", "parameters": [ { "type": "integer", "description": "Page (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Limit (default: 10)", "name": "limit", "in": "query" }, { "type": "string", "description": "Search by title", "name": "search", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.EventListResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Allows an instructor (DI) to create a new event. Starts in PENDING_APPROVAL status.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Create an event", "parameters": [ { "description": "Event Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.CreateEventRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/entities.Event" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/events/favorites": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a paginated list of events favorited by the authenticated user. Response structure matches /api/v1/events.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Get favorite events", "parameters": [ { "type": "integer", "description": "Page (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Limit (default: 10)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.EventListResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/events/me": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a paginated list of events created by the authenticated instructor.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Get my events", "parameters": [ { "type": "integer", "description": "Page (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Limit (default: 10)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.EventListResponse" } } } } }, "/api/v1/events/packages/{package_id}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Partially update a ticket package. Only the event owner can do this.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Update an event package", "parameters": [ { "type": "string", "description": "Package ID", "name": "package_id", "in": "path", "required": true }, { "description": "Fields to update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateEventPackageRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/entities.EventPackage" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove a ticket package from an event. Only the event owner can do this.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Delete an event package", "parameters": [ { "type": "string", "description": "Package ID", "name": "package_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } } } } }, "/api/v1/events/pending": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns events awaiting approval. Accessible by admin/DI approvers.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "List pending events (approval queue)", "parameters": [ { "type": "integer", "description": "Page (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Limit (default: 10)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.EventListResponse" } } } } }, "/api/v1/events/{event_id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns full event details for the member-facing detail page.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Get event detail", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.EventDetailResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Partially update an event owned by the authenticated instructor.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Update an event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true }, { "description": "Fields to update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateEventRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/entities.Event" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an event owned by the authenticated instructor.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Delete an event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/events/{event_id}/approve": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Approve a pending event so it becomes visible to members.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Approve an event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } } } } }, "/api/v1/events/{event_id}/favorite": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Adds the event to favorites if not already favorited, removes it if already favorited.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Toggle Event Favorite", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/events/{event_id}/instructors": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Link a partner instructor to an event. Only the event owner can do this.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Add instructor to event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true }, { "description": "Instructor Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.AddEventInstructorRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/entities.EventInstructor" } } } } }, "/api/v1/events/{event_id}/instructors/{instructor_id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Unlink a partner instructor from an event. Only the event owner can do this.", "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Remove instructor from event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true }, { "type": "string", "description": "Instructor ID", "name": "instructor_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } } } } }, "/api/v1/events/{event_id}/packages": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Add a ticket package to an event. Only the event owner can do this.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Add package to event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true }, { "description": "Package Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.CreateEventPackageRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/entities.EventPackage" } } } } }, "/api/v1/events/{event_id}/reject": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Reject a pending event with an optional reason.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Events" ], "summary": "Reject an event", "parameters": [ { "type": "string", "description": "Event ID", "name": "event_id", "in": "path", "required": true }, { "description": "Rejection reason", "name": "request", "in": "body", "schema": { "$ref": "#/definitions/dto.EventApprovalRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } } } } }, "/api/v1/home": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Return all sections needed by the home page in one aggregated response.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Home Dashboard" ], "summary": "Get Home Page Data", "parameters": [ { "type": "string", "description": "Selected date for schedule card section (YYYY-MM-DD)", "name": "date", "in": "query" }, { "type": "number", "description": "User latitude", "name": "latitude", "in": "query" }, { "type": "number", "description": "User longitude", "name": "longitude", "in": "query" }, { "type": "string", "description": "User city", "name": "city", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.HomeResponseWrapper" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/payment/callback": { "post": { "description": "Receive and process payment status updates from Xendit", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Payment" ], "summary": "Handle Xendit Payment Callback", "parameters": [ { "description": "Xendit Callback Payload", "name": "request", "in": "body", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.SuccessResponse-any" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/schedules": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of class or event schedules based on date range, city, filters, etc.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Home Dashboard" ], "summary": "Get Schedule List", "parameters": [ { "type": "string", "description": "Exact date (YYYY-MM-DD)", "name": "date", "in": "query" }, { "type": "string", "description": "Start date range (YYYY-MM-DD)", "name": "start_date", "in": "query" }, { "type": "string", "description": "End date range (YYYY-MM-DD)", "name": "end_date", "in": "query" }, { "type": "string", "description": "Filter by city", "name": "city", "in": "query" }, { "type": "string", "description": "Filter by class level (e.g., beginner)", "name": "level", "in": "query" }, { "type": "string", "description": "Filter by class category (e.g., salsa)", "name": "category", "in": "query" }, { "type": "integer", "description": "Page number (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Items per page (default: 10, max: 100)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.ScheduleListResponseWrapper" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/upload": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Upload an image or file to storage and receive a public URL back.", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Upload" ], "summary": "Upload a media file", "parameters": [ { "type": "file", "description": "File to upload", "name": "file", "in": "formData", "required": true }, { "type": "string", "description": "Folder name (default: uploads)", "name": "folder", "in": "formData" } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/users/me": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get current logged-in user profile, including roles and about details.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get My Profile", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.UserProfileResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/users/me/about": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update user's personal details like gender, dance level, and description.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update About You", "parameters": [ { "description": "Update Profile Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateAboutYouRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.UserProfileResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/users/me/roles": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update user's primary role (member, instructor, venue_owner).", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Assign Role", "parameters": [ { "description": "Role Assignment Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateUserRolesRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.UserProfileResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/users/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get public profile and roles of another user by their ID.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get User Details", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.UserProfileResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/venues": { "get": { "description": "Returns a paginated list of all venues.", "produces": [ "application/json" ], "tags": [ "Venue" ], "summary": "Get all venues", "parameters": [ { "type": "integer", "description": "Page number (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Items per page (default: 10, max: 50)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.VenueListResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Submit the Add Venue form with detailed location, facilities, specs, and photos URLs.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Venue" ], "summary": "Create a new venue", "parameters": [ { "description": "Create Venue Form Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.CreateVenueRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.VenueResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/venues/me": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a paginated list of venues owned by the current user.", "produces": [ "application/json" ], "tags": [ "Venue" ], "summary": "Get owner's venues", "parameters": [ { "type": "integer", "description": "Page number (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Items per page (default: 10, max: 50)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.VenueListResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } }, "/api/v1/venues/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns the full detail of a venue by its ID.", "produces": [ "application/json" ], "tags": [ "Venue" ], "summary": "Get venue detail", "parameters": [ { "type": "string", "description": "Venue ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.VenueDetailResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update the details of an existing venue owned by the current user.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Venue" ], "summary": "Update an existing venue", "parameters": [ { "type": "string", "description": "Venue ID", "name": "id", "in": "path", "required": true }, { "description": "Update Venue Form Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateVenueRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.VenueDetailResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete an existing venue owned by the current user if it has no classes attached.", "produces": [ "application/json" ], "tags": [ "Venue" ], "summary": "Delete a venue", "parameters": [ { "type": "string", "description": "Venue ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } } } } } }, "definitions": { "dto.AddEventInstructorRequest": { "type": "object", "required": [ "instructor_id", "partner_capacity" ], "properties": { "instructor_id": { "type": "string" }, "partner_capacity": { "type": "integer", "minimum": 0 } } }, "dto.AssistantClassPreview": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "image_urls": { "type": "array", "items": { "type": "string" } }, "title": { "type": "string" } } }, "dto.AssistantDetail": { "type": "object", "properties": { "cancellation_policy": { "type": "array", "items": { "type": "string" } }, "class_previews": { "type": "array", "items": { "$ref": "#/definitions/dto.AssistantClassPreview" } }, "id": { "type": "string" }, "is_favorited": { "type": "boolean" }, "pricing": { "$ref": "#/definitions/dto.AssistantPricing" }, "profile": { "$ref": "#/definitions/dto.AssistantProfile" }, "specializations": { "type": "array", "items": { "type": "string" } } } }, "dto.AssistantPricing": { "type": "object", "properties": { "currency": { "type": "string" }, "display_range": { "type": "string" }, "max_price": { "type": "integer" }, "min_price": { "type": "integer" } } }, "dto.AssistantProfile": { "type": "object", "properties": { "avatar_url": { "type": "string" }, "name": { "type": "string" }, "rank": { "type": "string" } } }, "dto.AuthenticatedUser": { "type": "object", "properties": { "token": { "type": "string" }, "user": { "$ref": "#/definitions/entities.User" } } }, "dto.BookClassRequest": { "type": "object", "required": [ "class_id", "slot_ids", "type_id" ], "properties": { "class_id": { "type": "string" }, "slot_ids": { "type": "array", "minItems": 1, "items": { "type": "string" } }, "type_id": { "type": "string" } } }, "dto.BookClassResponse": { "type": "object", "properties": { "base_amount": { "type": "number" }, "booking_id": { "type": "string" }, "checkout_url": { "type": "string" }, "payment_status": { "type": "string" }, "service_fee": { "type": "number" }, "status": { "type": "string" }, "tax": { "type": "number" }, "total_amount": { "type": "number" }, "xendit_invoice_id": { "type": "string" } } }, "dto.BookEventRequest": { "type": "object", "required": [ "event_id", "package_id" ], "properties": { "event_id": { "type": "string" }, "package_id": { "type": "string" }, "partner_instructor_id": { "type": "string" } } }, "dto.CategoryResponse": { "type": "object", "properties": { "id": { "type": "string" }, "image_url": { "type": "string" }, "name": { "type": "string" } } }, "dto.CategoryResponseWrapper": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/dto.CategoryResponse" } }, "success": { "type": "boolean" } } }, "dto.ChangePasswordRequest": { "type": "object", "required": [ "new_password", "old_password" ], "properties": { "new_password": { "type": "string" }, "old_password": { "type": "string" } } }, "dto.ClassBooking": { "type": "object", "properties": { "booking_type": { "type": "string" }, "button_text": { "type": "string" }, "is_bookable": { "type": "boolean" }, "starting_price": { "$ref": "#/definitions/dto.PriceData" } } }, "dto.ClassBookingOptionsResponse": { "type": "object", "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "class_id": { "type": "string" } } }, "dto.ClassDescription": { "type": "object", "properties": { "full_text": { "type": "string" }, "is_truncated": { "type": "boolean" }, "short_text": { "type": "string" } } }, "dto.ClassDetailResponse": { "type": "object", "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "booking": { "$ref": "#/definitions/dto.ClassBooking" }, "cancellation_policy": { "type": "array", "items": { "type": "string" } }, "capacity": { "type": "integer" }, "class_id": { "type": "string" }, "custom_field": { "type": "object" }, "description": { "$ref": "#/definitions/dto.ClassDescription" }, "details": { "type": "array", "items": { "type": "string" } }, "extra_lessons": { "$ref": "#/definitions/dto.ClassExtraLessons" }, "favorite": { "$ref": "#/definitions/dto.ClassFavorite" }, "gallery": { "type": "array", "items": { "$ref": "#/definitions/dto.ClassGalleryItem" } }, "hero_image_url": { "type": "string" }, "house_dancer": { "$ref": "#/definitions/dto.ClassHouseDancer" }, "instructor": { "$ref": "#/definitions/dto.ClassInstructor" }, "location": { "$ref": "#/definitions/dto.ClassLocation" }, "rating": { "$ref": "#/definitions/dto.ClassRating" }, "schedule_type": { "description": "Core Fields synced from Host Class", "type": "string" }, "share": { "$ref": "#/definitions/dto.ClassShare" }, "summary": { "$ref": "#/definitions/dto.ClassSummary" }, "tags": { "type": "array", "items": { "$ref": "#/definitions/dto.ClassTag" } }, "title": { "type": "string" }, "type": { "type": "string" } } }, "dto.ClassExtraLessons": { "type": "object", "properties": { "available": { "type": "boolean" }, "description": { "type": "string" } } }, "dto.ClassFavorite": { "type": "object", "properties": { "is_favorited": { "type": "boolean" } } }, "dto.ClassGalleryItem": { "type": "object", "properties": { "id": { "type": "string" }, "image_url": { "type": "string" }, "thumbnail_url": { "type": "string" } } }, "dto.ClassHouseDancer": { "type": "object", "properties": { "available": { "type": "boolean" }, "description": { "type": "string" }, "price": { "$ref": "#/definitions/dto.PriceData" } } }, "dto.ClassInstructor": { "type": "object", "properties": { "avatar_url": { "type": "string" }, "id": { "type": "string" }, "is_message_enabled": { "type": "boolean" }, "name": { "type": "string" }, "subtitle": { "type": "string" }, "title": { "type": "string" } } }, "dto.ClassLocation": { "type": "object", "properties": { "address": { "type": "string" }, "area_text": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "map_preview_url": { "type": "string" }, "venue_name": { "type": "string" } } }, "dto.ClassRating": { "type": "object", "properties": { "average": { "type": "number" }, "count": { "type": "integer" } } }, "dto.ClassSearchResult": { "type": "object", "properties": { "class_id": { "type": "string" }, "distance_km": { "type": "number" }, "is_favorited": { "type": "boolean" }, "location_text": { "type": "string" }, "price": { "$ref": "#/definitions/dto.PriceInfo" }, "schedule_text": { "type": "string" }, "thumbnail_url": { "type": "string" }, "title": { "type": "string" } } }, "dto.ClassShare": { "type": "object", "properties": { "share_text": { "type": "string" }, "share_url": { "type": "string" } } }, "dto.ClassSummary": { "type": "object", "properties": { "date": { "$ref": "#/definitions/dto.DateDisplay" }, "location": { "$ref": "#/definitions/dto.SummaryLocation" }, "starting_price": { "$ref": "#/definitions/dto.PriceData" } } }, "dto.ClassTag": { "type": "object", "properties": { "key": { "type": "string" }, "label": { "type": "string" } } }, "dto.CreateClassBookingRequest": { "type": "object", "required": [ "class_id" ], "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "class_id": { "type": "string" }, "payment_details": { "type": "object" }, "status": { "type": "string" } } }, "dto.CreateClassBookingResponse": { "type": "object", "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "booking_id": { "type": "string" }, "class_id": { "type": "string" }, "payment_details": { "type": "object" }, "status": { "type": "string" }, "user_id": { "type": "string" } } }, "dto.CreateClassRequest": { "type": "object", "required": [ "capacity", "schedule_type", "title" ], "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "capacity": { "type": "integer" }, "custom_field": { "type": "object" }, "description": { "type": "string" }, "schedule_type": { "type": "string" }, "title": { "type": "string" }, "venue_id": { "type": "string" } } }, "dto.CreateEventPackageRequest": { "type": "object", "required": [ "name", "price" ], "properties": { "custom_field": { "type": "object" }, "description": { "type": "string" }, "name": { "type": "string", "maxLength": 100, "minLength": 1 }, "partner_included": { "type": "boolean" }, "price": { "type": "number", "minimum": 0 } } }, "dto.CreateEventRequest": { "type": "object", "required": [ "capacity", "end_time", "event_date", "schedule_type", "start_time", "title" ], "properties": { "capacity": { "type": "integer", "minimum": 1 }, "description": { "type": "string" }, "end_time": { "type": "string" }, "entrance_fee": { "type": "number" }, "event_date": { "type": "string" }, "event_media": { "type": "object" }, "schedule_type": { "type": "string" }, "start_time": { "type": "string" }, "title": { "type": "string", "maxLength": 200, "minLength": 2 }, "venue_id": { "type": "string" } } }, "dto.CreateVenueRequest": { "type": "object", "required": [ "address", "capacity", "city", "name", "province" ], "properties": { "address": { "type": "string" }, "capacity": { "type": "integer" }, "city": { "type": "string" }, "closing_time": { "type": "string" }, "description": { "type": "object", "additionalProperties": true }, "extra_facilities": { "type": "array", "items": { "type": "string" } }, "facilities": { "type": "array", "items": { "type": "string" } }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "minimum_consumption": { "type": "number" }, "name": { "type": "string" }, "opening_time": { "type": "string" }, "province": { "type": "string" }, "venue_media": { "type": "array", "items": { "type": "object", "additionalProperties": true } } } }, "dto.CurrentLocation": { "type": "object", "properties": { "city": { "type": "string" }, "label": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" } } }, "dto.DateDisplay": { "type": "object", "properties": { "display": { "type": "string" }, "raw": { "type": "string" } } }, "dto.ErrorResponse": { "type": "object", "properties": { "errors": {}, "message": {}, "meta_data": {}, "status": { "type": "string" } } }, "dto.EventApprovalRequest": { "type": "object", "properties": { "reason": { "description": "Reason is required only when action is \"reject\".", "type": "string" } } }, "dto.EventBookingResponse": { "type": "object", "properties": { "booking_id": { "type": "string" }, "booking_status": { "type": "string" }, "checkout_url": { "type": "string" }, "created_at": { "type": "string" }, "event_id": { "type": "string" }, "event_title": { "type": "string" }, "package_id": { "type": "string" }, "package_name": { "type": "string" }, "partner_instructor_id": { "type": "string" }, "payment_method": { "type": "string" }, "payment_status": { "type": "string" }, "total_amount": { "type": "number" }, "user_id": { "type": "string" }, "xendit_invoice_id": { "type": "string" } } }, "dto.EventDetailResponse": { "type": "object", "properties": { "approval_status": { "type": "string" }, "booking_count": { "type": "integer" }, "capacity": { "type": "integer" }, "description": { "type": "string" }, "end_time": { "type": "string" }, "entrance_fee": { "type": "number" }, "event_date": { "type": "string" }, "event_id": { "type": "string" }, "fee_display": { "type": "string" }, "hero_image_url": { "type": "string" }, "host": { "$ref": "#/definitions/dto.EventHostInfo" }, "instructors": { "type": "array", "items": { "$ref": "#/definitions/dto.EventInstructorResponse" } }, "is_bookable": { "type": "boolean" }, "location": { "$ref": "#/definitions/dto.EventLocation" }, "packages": { "type": "array", "items": { "$ref": "#/definitions/dto.EventPackageResponse" } }, "schedule_type": { "type": "string" }, "share": { "$ref": "#/definitions/dto.EventShare" }, "start_time": { "type": "string" }, "title": { "type": "string" } } }, "dto.EventHostInfo": { "type": "object", "properties": { "avatar_url": { "type": "string" }, "name": { "type": "string" }, "user_id": { "type": "string" } } }, "dto.EventInstructorResponse": { "type": "object", "properties": { "avatar_url": { "type": "string" }, "event_id": { "type": "string" }, "id": { "type": "string" }, "instructor_id": { "type": "string" }, "instructor_name": { "type": "string" }, "partner_capacity": { "type": "integer" } } }, "dto.EventListItem": { "type": "object", "properties": { "approval_status": { "type": "string" }, "area_text": { "type": "string" }, "booking_count": { "type": "integer" }, "capacity": { "type": "integer" }, "entrance_fee": { "type": "number" }, "event_date": { "type": "string" }, "fee_display": { "type": "string" }, "id": { "type": "string" }, "start_time": { "type": "string" }, "thumbnail_url": { "type": "string" }, "title": { "type": "string" }, "venue_name": { "type": "string" } } }, "dto.EventListResponse": { "type": "object", "properties": { "events": { "type": "array", "items": { "$ref": "#/definitions/dto.EventListItem" } }, "pagination": { "$ref": "#/definitions/dto.Pagination" } } }, "dto.EventLocation": { "type": "object", "properties": { "address": { "type": "string" }, "area_text": { "type": "string" }, "city": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "province": { "type": "string" }, "venue_name": { "type": "string" } } }, "dto.EventPackageResponse": { "type": "object", "properties": { "description": { "type": "string" }, "event_id": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "partner_included": { "type": "boolean" }, "price": { "type": "number" }, "price_display": { "type": "string" } } }, "dto.EventShare": { "type": "object", "properties": { "share_text": { "type": "string" }, "share_url": { "type": "string" } } }, "dto.Facility": { "type": "object", "properties": { "icon": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } } }, "dto.FilterOption": { "type": "object", "properties": { "id": { "type": "string" }, "is_default": { "type": "boolean" }, "label": { "type": "string" } } }, "dto.FiltersMetadataResponse": { "type": "object", "properties": { "categories": { "type": "array", "items": { "$ref": "#/definitions/dto.FilterOption" } }, "dance_types": { "type": "array", "items": { "$ref": "#/definitions/dto.FilterOption" } }, "sort_options": { "type": "array", "items": { "$ref": "#/definitions/dto.SortOption" } }, "view_types": { "type": "array", "items": { "$ref": "#/definitions/dto.FilterOption" } } } }, "dto.HomeBeginnerClassSection": { "type": "object", "properties": { "id": { "type": "string" }, "image_url": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" } } }, "dto.HomeDay": { "type": "object", "properties": { "date": { "type": "string" }, "day_name_short": { "type": "string" }, "day_number": { "type": "integer" }, "has_schedule": { "type": "boolean" }, "is_selected": { "type": "boolean" } } }, "dto.HomeEventSection": { "type": "object", "properties": { "id": { "type": "string" }, "image_url": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "string" } } }, "dto.HomeHeroBanner": { "type": "object", "properties": { "badge_text": { "type": "string" }, "cta_target_id": { "type": "string" }, "cta_text": { "type": "string" }, "cta_type": { "type": "string" }, "id": { "type": "string" }, "image_url": { "type": "string" }, "subtitle": { "type": "string" }, "title": { "type": "string" } } }, "dto.HomeNotifications": { "type": "object", "properties": { "unread_count": { "type": "integer" } } }, "dto.HomePromoStrip": { "type": "object", "properties": { "cta_target_id": { "type": "string" }, "cta_text": { "type": "string" }, "cta_type": { "type": "string" }, "id": { "type": "string" }, "text": { "type": "string" } } }, "dto.HomeResponse": { "type": "object", "properties": { "beginner_class_sections": { "type": "array", "items": { "$ref": "#/definitions/dto.HomeBeginnerClassSection" } }, "event_sections": { "type": "array", "items": { "$ref": "#/definitions/dto.HomeEventSection" } }, "hero_banners": { "type": "array", "items": { "$ref": "#/definitions/dto.HomeHeroBanner" } }, "notifications": { "$ref": "#/definitions/dto.HomeNotifications" }, "promo_strip": { "$ref": "#/definitions/dto.HomePromoStrip" }, "search": { "$ref": "#/definitions/dto.HomeSearch" }, "user": { "$ref": "#/definitions/dto.HomeUser" }, "week_schedule": { "$ref": "#/definitions/dto.HomeWeekSchedule" } } }, "dto.HomeResponseWrapper": { "type": "object", "properties": { "data": { "$ref": "#/definitions/dto.HomeResponse" }, "message": { "type": "string" }, "success": { "type": "boolean" } } }, "dto.HomeSearch": { "type": "object", "properties": { "placeholder": { "type": "string" } } }, "dto.HomeUser": { "type": "object", "properties": { "avatar_url": { "type": "string" }, "first_name": { "type": "string" }, "full_name": { "type": "string" }, "id": { "type": "string" } } }, "dto.HomeWeekSchedule": { "type": "object", "properties": { "days": { "type": "array", "items": { "$ref": "#/definitions/dto.HomeDay" } }, "end_date": { "type": "string" }, "items": { "type": "array", "items": { "$ref": "#/definitions/dto.ScheduleItem" } }, "selected_date": { "type": "string" }, "start_date": { "type": "string" }, "view_all_url": { "type": "string" }, "week_label": { "type": "string" } } }, "dto.OTPAuth": { "type": "object", "properties": { "access_token": { "type": "string" }, "expires_in_seconds": { "type": "integer" }, "refresh_token": { "type": "string" }, "token_type": { "type": "string" } } }, "dto.OTPRequestInput": { "type": "object", "required": [ "channel", "phone_number", "purpose" ], "properties": { "app_name": { "type": "string" }, "channel": { "type": "string" }, "device_id": { "type": "string" }, "locale": { "type": "string" }, "phone_number": { "type": "string" }, "purpose": { "type": "string" } } }, "dto.OTPRequestResponse": { "type": "object", "properties": { "channel": { "type": "string" }, "expires_in_seconds": { "type": "integer" }, "masked_destination": { "type": "string" }, "otp_length": { "type": "integer" }, "otp_request_id": { "type": "string" }, "resend_available_in_seconds": { "type": "integer" } } }, "dto.OTPVerifiedUser": { "type": "object", "properties": { "id": { "type": "string" }, "is_new_user": { "type": "boolean" }, "name": { "type": "string" }, "phone_number": { "type": "string" } } }, "dto.OTPVerifyInput": { "type": "object", "required": [ "otp_code", "otp_request_id", "phone_number", "purpose" ], "properties": { "device_id": { "type": "string" }, "otp_code": { "type": "string" }, "otp_request_id": { "type": "string" }, "phone_number": { "type": "string" }, "purpose": { "type": "string" } } }, "dto.OTPVerifyResponse": { "type": "object", "properties": { "auth": { "$ref": "#/definitions/dto.OTPAuth" }, "user": { "$ref": "#/definitions/dto.OTPVerifiedUser" } } }, "dto.Pagination": { "type": "object", "properties": { "has_next_page": { "type": "boolean" }, "limit": { "type": "integer" }, "page": { "type": "integer" }, "total_items": { "type": "integer" }, "total_pages": { "type": "integer" } } }, "dto.PaginationMeta": { "type": "object", "properties": { "limit": { "type": "integer" }, "page": { "type": "integer" }, "total_items": { "type": "integer" }, "total_pages": { "type": "integer" } } }, "dto.PriceData": { "type": "object", "properties": { "amount": { "type": "integer" }, "currency": { "type": "string" }, "display": { "type": "string" } } }, "dto.PriceInfo": { "type": "object", "properties": { "currency": { "type": "string" }, "display": { "type": "string" }, "max_amount": { "type": "number" }, "min_amount": { "type": "number" } } }, "dto.ReduceCapacityRequest": { "type": "object", "required": [ "booking_id", "class_id", "number_to_reduce", "slot_id", "type_id" ], "properties": { "booking_id": { "type": "string" }, "class_id": { "type": "string" }, "number_to_reduce": { "type": "integer" }, "slot_id": { "type": "string" }, "type_id": { "type": "string" } } }, "dto.RoleDTO": { "type": "object", "properties": { "created_at": { "type": "string" }, "role": { "type": "string" } } }, "dto.ScheduleItem": { "type": "object", "properties": { "city": { "type": "string" }, "class_id": { "type": "string" }, "date": { "type": "string" }, "display_time": { "type": "string" }, "end_time": { "type": "string" }, "is_booked": { "type": "boolean" }, "schedule_id": { "type": "string" }, "start_time": { "type": "string" }, "studio_name": { "type": "string" }, "teacher_name": { "type": "string" }, "title": { "type": "string" } } }, "dto.ScheduleListItem": { "type": "object", "properties": { "address": { "type": "string" }, "available_slots": { "type": "integer" }, "category": { "type": "string" }, "city": { "type": "string" }, "class_id": { "type": "string" }, "date": { "type": "string" }, "display_time": { "type": "string" }, "end_time": { "type": "string" }, "is_booked": { "type": "boolean" }, "level": { "type": "string" }, "price": { "$ref": "#/definitions/dto.PriceData" }, "schedule_id": { "type": "string" }, "start_time": { "type": "string" }, "studio_name": { "type": "string" }, "teacher_name": { "type": "string" }, "thumbnail_url": { "type": "string" }, "title": { "type": "string" } } }, "dto.ScheduleListResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/dto.ScheduleListItem" } }, "pagination": { "$ref": "#/definitions/dto.PaginationMeta" } } }, "dto.ScheduleListResponseWrapper": { "type": "object", "properties": { "data": { "$ref": "#/definitions/dto.ScheduleListResponse" }, "message": { "type": "string" }, "success": { "type": "boolean" } } }, "dto.SearchClassesResponse": { "type": "object", "properties": { "current_location": { "$ref": "#/definitions/dto.CurrentLocation" }, "nearby_classes": { "type": "array", "items": { "$ref": "#/definitions/dto.ClassSearchResult" } }, "pagination": { "$ref": "#/definitions/dto.Pagination" }, "previous_classes": { "type": "array", "items": { "$ref": "#/definitions/dto.ClassSearchResult" } }, "search_context": { "$ref": "#/definitions/dto.SearchContext" } } }, "dto.SearchContext": { "type": "object", "properties": { "query": { "type": "string" }, "selected_filters": { "type": "object", "additionalProperties": true }, "sort_by": { "type": "string" }, "view_type": { "type": "string" } } }, "dto.SignInRequest": { "type": "object", "required": [ "email_or_username", "password" ], "properties": { "email_or_username": { "type": "string" }, "password": { "type": "string" } } }, "dto.SignUpRequest": { "type": "object", "required": [ "email", "password", "username" ], "properties": { "email": { "type": "string" }, "name": { "type": "string" }, "password": { "type": "string" }, "username": { "type": "string" } } }, "dto.SortOption": { "type": "object", "properties": { "id": { "type": "string" }, "is_default": { "type": "boolean" }, "label": { "type": "string" } } }, "dto.SuccessResponse-any": { "type": "object", "properties": { "data": {}, "message": {}, "meta_data": {}, "status": { "type": "string" } } }, "dto.SummaryLocation": { "type": "object", "properties": { "display": { "type": "string" }, "venue_name": { "type": "string" } } }, "dto.UpdateAboutYouRequest": { "type": "object", "properties": { "age": { "type": "integer" }, "city": { "type": "string" }, "dance_level": { "type": "string" }, "description": { "type": "string" }, "email": { "type": "string" }, "full_name": { "type": "string" }, "gender": { "type": "string" }, "id": { "type": "string" }, "interest": { "type": "array", "items": { "type": "string" } }, "is_instructor": { "type": "boolean" }, "is_member": { "type": "boolean" }, "is_vo": { "type": "boolean" }, "nickname": { "type": "string" }, "other_interest": { "type": "string" }, "phone_number": { "type": "string" }, "profile_media": { "type": "string" }, "province": { "type": "string" }, "rank": { "type": "string" }, "roles": { "type": "array", "items": { "$ref": "#/definitions/dto.RoleDTO" } } } }, "dto.UpdateClassBookingRequest": { "type": "object", "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "class_id": { "type": "string" }, "payment_details": { "type": "object" }, "status": { "type": "string" } } }, "dto.UpdateClassBookingResponse": { "type": "object", "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "booking_id": { "type": "string" }, "class_id": { "type": "string" }, "payment_details": { "type": "object" }, "status": { "type": "string" }, "user_id": { "type": "string" } } }, "dto.UpdateClassRequest": { "type": "object", "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "capacity": { "type": "integer" }, "custom_field": { "type": "object" }, "description": { "type": "string" }, "schedule_type": { "type": "string" }, "title": { "type": "string" }, "venue_id": { "type": "string" } } }, "dto.UpdateEventBookingRequest": { "type": "object", "properties": { "booking_status": { "type": "string" }, "payment_status": { "type": "string" } } }, "dto.UpdateEventPackageRequest": { "type": "object", "properties": { "custom_field": { "type": "object" }, "description": { "type": "string" }, "name": { "type": "string" }, "partner_included": { "type": "boolean" }, "price": { "type": "number" } } }, "dto.UpdateEventRequest": { "type": "object", "properties": { "capacity": { "type": "integer" }, "description": { "type": "string" }, "end_time": { "type": "string" }, "entrance_fee": { "type": "number" }, "event_date": { "type": "string" }, "event_media": { "type": "object" }, "schedule_type": { "type": "string" }, "start_time": { "type": "string" }, "title": { "type": "string" }, "venue_id": { "type": "string" } } }, "dto.UpdateUserRoleRequest": { "type": "object", "required": [ "role" ], "properties": { "role": { "type": "string" } } }, "dto.UpdateUserRolesRequest": { "type": "object", "required": [ "role" ], "properties": { "role": { "type": "string" } } }, "dto.UpdateVenueRequest": { "type": "object", "properties": { "address": { "type": "string" }, "capacity": { "type": "integer" }, "city": { "type": "string" }, "closing_time": { "type": "string" }, "description": { "type": "object", "additionalProperties": true }, "extra_facilities": { "type": "array", "items": { "type": "string" } }, "facilities": { "type": "array", "items": { "type": "string" } }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "minimum_consumption": { "type": "number" }, "name": { "type": "string" }, "opening_time": { "type": "string" }, "province": { "type": "string" }, "venue_media": { "type": "array", "items": { "type": "object", "additionalProperties": true } } } }, "dto.UserProfileResponse": { "type": "object", "properties": { "age": { "type": "integer" }, "city": { "type": "string" }, "dance_level": { "type": "string" }, "description": { "type": "string" }, "email": { "type": "string" }, "full_name": { "type": "string" }, "gender": { "type": "string" }, "id": { "type": "string" }, "interest": { "type": "array", "items": { "type": "string" } }, "is_instructor": { "type": "boolean" }, "is_member": { "type": "boolean" }, "is_vo": { "type": "boolean" }, "nickname": { "type": "string" }, "other_interest": { "type": "string" }, "phone_number": { "type": "string" }, "profile_media": { "type": "string" }, "province": { "type": "string" }, "rank": { "type": "string" }, "roles": { "type": "array", "items": { "$ref": "#/definitions/dto.UserRoleResponse" } }, "updated_at": { "type": "string" } } }, "dto.UserRoleResponse": { "type": "object", "properties": { "created_at": { "type": "string" }, "role": { "type": "string" } } }, "dto.VenueDetailMap": { "type": "object", "properties": { "address": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "venue_name": { "type": "string" } } }, "dto.VenueDetailOwner": { "type": "object", "properties": { "avatar_url": { "type": "string" }, "name": { "type": "string" }, "role": { "type": "string" } } }, "dto.VenueDetailRatings": { "type": "object", "properties": { "food": { "type": "number" }, "music": { "type": "number" }, "parking": { "type": "number" }, "price": { "type": "number" }, "sound": { "type": "number" } } }, "dto.VenueDetailResponse": { "type": "object", "properties": { "deletable": { "type": "boolean" }, "description": { "type": "string" }, "extra_facilities": { "type": "array", "items": { "type": "string" } }, "facilities": { "type": "array", "items": { "$ref": "#/definitions/dto.Facility" } }, "hero_images": { "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "map": { "$ref": "#/definitions/dto.VenueDetailMap" }, "owner": { "$ref": "#/definitions/dto.VenueDetailOwner" }, "ratings": { "$ref": "#/definitions/dto.VenueDetailRatings" }, "summary": { "$ref": "#/definitions/dto.VenueDetailSummary" }, "title": { "type": "string" } } }, "dto.VenueDetailSummary": { "type": "object", "properties": { "location": { "$ref": "#/definitions/dto.VenueDetailSummaryLocation" }, "price": { "$ref": "#/definitions/dto.VenueDetailSummaryPrice" }, "space_area": { "$ref": "#/definitions/dto.VenueDetailSummarySpaceArea" } } }, "dto.VenueDetailSummaryLocation": { "type": "object", "properties": { "address": { "type": "string" }, "name": { "type": "string" } } }, "dto.VenueDetailSummaryPrice": { "type": "object", "properties": { "display": { "type": "string" } } }, "dto.VenueDetailSummarySpaceArea": { "type": "object", "properties": { "display": { "type": "string" } } }, "dto.VenueListResponse": { "type": "object", "properties": { "pagination": { "$ref": "#/definitions/dto.Pagination" }, "venues": { "type": "array", "items": { "$ref": "#/definitions/dto.VenueResponse" } } } }, "dto.VenueResponse": { "type": "object", "properties": { "id": { "type": "string" }, "image": { "type": "string" }, "latitude": { "type": "number" }, "location": { "type": "string" }, "longitude": { "type": "number" }, "name": { "type": "string" }, "price": { "type": "string" }, "rooms": { "type": "string" }, "status": { "type": "string" } } }, "entities.Class": { "type": "object", "properties": { "available_slots": { "type": "object" }, "available_types": { "type": "object" }, "capacity": { "type": "integer" }, "class_media": { "type": "object" }, "created_at": { "type": "string" }, "custom_field": { "type": "object" }, "description": { "type": "object" }, "end_time": { "type": "string" }, "id": { "type": "string" }, "instructor": { "$ref": "#/definitions/entities.Instructor" }, "instructor_id": { "type": "string" }, "price": { "type": "number" }, "schedule_type": { "type": "string" }, "start_time": { "type": "string" }, "title": { "type": "string" }, "venue": { "$ref": "#/definitions/entities.Venue" }, "venue_id": { "type": "string" } } }, "entities.Event": { "type": "object", "properties": { "approval_status": { "description": "Approval workflow", "type": "string" }, "capacity": { "type": "integer" }, "created_at": { "type": "string" }, "description": { "type": "object" }, "end_time": { "type": "string" }, "entrance_fee": { "type": "number" }, "event_date": { "type": "string" }, "event_media": { "type": "object" }, "host_user": { "$ref": "#/definitions/entities.User" }, "host_user_id": { "type": "string" }, "id": { "type": "string" }, "instructors": { "type": "array", "items": { "$ref": "#/definitions/entities.EventInstructor" } }, "packages": { "type": "array", "items": { "$ref": "#/definitions/entities.EventPackage" } }, "rejection_reason": { "type": "string" }, "schedule_type": { "type": "string" }, "start_time": { "type": "string" }, "title": { "type": "string" }, "updated_at": { "type": "string" }, "venue": { "$ref": "#/definitions/entities.Venue" }, "venue_id": { "type": "string" } } }, "entities.EventInstructor": { "type": "object", "properties": { "created_at": { "type": "string" }, "event": { "$ref": "#/definitions/entities.Event" }, "event_id": { "type": "string" }, "id": { "type": "string" }, "instructor": { "$ref": "#/definitions/entities.Instructor" }, "instructor_id": { "type": "string" }, "partner_capacity": { "type": "integer" } } }, "entities.EventPackage": { "type": "object", "properties": { "created_at": { "type": "string" }, "description": { "type": "object" }, "event": { "$ref": "#/definitions/entities.Event" }, "event_id": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "partner_included": { "type": "boolean" }, "price": { "type": "number" } } }, "entities.Facility": { "type": "object", "properties": { "icon": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } } }, "entities.Instructor": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "string" }, "introduction": { "type": "object" }, "profile_media": { "type": "object" }, "rank": { "type": "string" }, "specialization": { "type": "object" }, "user": { "$ref": "#/definitions/entities.User" }, "user_id": { "type": "string" } } }, "entities.User": { "type": "object", "properties": { "additional_details": { "type": "object" }, "age": { "type": "integer" }, "city": { "type": "string" }, "created_at": { "type": "string" }, "dance_level": { "type": "string" }, "description": { "type": "string" }, "email": { "type": "string" }, "full_name": { "type": "string" }, "gender": { "type": "string" }, "id": { "type": "string" }, "interests": { "type": "object" }, "is_instructor": { "type": "boolean" }, "is_member": { "type": "boolean" }, "is_vo": { "type": "boolean" }, "nickname": { "type": "string" }, "other_interest": { "type": "string" }, "password_hash": { "type": "string" }, "phone_number": { "type": "string" }, "prefed_language": { "type": "string" }, "profile_media": { "type": "string" }, "province": { "type": "string" }, "rank": { "type": "string" }, "roles": { "type": "array", "items": { "$ref": "#/definitions/entities.UserRole" } }, "updated_at": { "type": "string" } } }, "entities.UserRole": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "string" }, "role": { "type": "string" }, "user": { "$ref": "#/definitions/entities.User" }, "user_id": { "type": "string" } } }, "entities.Venue": { "type": "object", "properties": { "address": { "type": "string" }, "capacity": { "type": "integer" }, "city": { "type": "string" }, "closing_time": { "type": "string" }, "created_at": { "type": "string" }, "description": { "type": "object" }, "extra_facilities": { "type": "array", "items": { "type": "string" } }, "facilities": { "type": "array", "items": { "$ref": "#/definitions/entities.Facility" } }, "id": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "minimum_consumption": { "type": "number" }, "name": { "type": "string" }, "opening_time": { "type": "string" }, "owner": { "$ref": "#/definitions/entities.VenueOwner" }, "owner_id": { "type": "string" }, "province": { "type": "string" }, "rating_food": { "type": "number" }, "rating_music": { "type": "number" }, "rating_parking": { "type": "number" }, "rating_price": { "type": "number" }, "rating_sound": { "type": "number" }, "venue_media": { "type": "object" }, "verification_status": { "type": "string" } } }, "entities.VenueOwner": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "string" }, "user": { "$ref": "#/definitions/entities.User" }, "user_id": { "type": "string" } } } }, "securityDefinitions": { "BearerAuth": { "type": "apiKey", "name": "Authorization", "in": "header" } } }` // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0.0", Host: "lifedebugger-danzapp-be-test.hf.space", BasePath: "/", Schemes: []string{"https"}, Title: "Go Boilerplate API", Description: "Backend API documentation", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }