Spaces:
Runtime error
Runtime error
| { | |
| "swagger": "2.0", | |
| "info": { | |
| "contact": {} | |
| }, | |
| "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/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/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/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/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" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "definitions": { | |
| "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.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.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.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.UpdateUserRoleRequest": { | |
| "type": "object", | |
| "required": [ | |
| "role" | |
| ], | |
| "properties": { | |
| "role": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateUserRolesRequest": { | |
| "type": "object", | |
| "required": [ | |
| "role" | |
| ], | |
| "properties": { | |
| "role": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "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": { | |
| "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.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" | |
| } | |
| } | |
| } | |
| } | |
| } |