diff --git "a/swagger/docs/docs.go" "b/swagger/docs/docs.go" --- "a/swagger/docs/docs.go" +++ "b/swagger/docs/docs.go" @@ -22,9 +22,9 @@ const docTemplate = `{ "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { - "/api/v1/class-categories": { - "get": { - "description": "Get master list of class categories", + "/api/v1/auth/otp/request": { + "post": { + "description": "Trigger an OTP code via WhatsApp for phone number verification.", "consumes": [ "application/json" ], @@ -32,14 +32,25 @@ const docTemplate = `{ "application/json" ], "tags": [ - "Master Data" + "Auth" + ], + "summary": "Request OTP", + "parameters": [ + { + "description": "OTP Request Data", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/dto.OTPRequestInput" + } + } ], - "summary": "Get Class Categories", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dto.CategoryResponseWrapper" + "$ref": "#/definitions/dto.OTPRequestResponse" } }, "400": { @@ -51,14 +62,9 @@ const docTemplate = `{ } } }, - "/api/v1/classes/filters": { - "get": { - "security": [ - { - "BearerAuth": [] - } - ], - "description": "Returns available filter options for class search", + "/api/v1/auth/otp/verify": { + "post": { + "description": "Validate the OTP code provided by the user and return authentication token.", "consumes": [ "application/json" ], @@ -66,14 +72,25 @@ const docTemplate = `{ "application/json" ], "tags": [ - "Classes" + "Auth" + ], + "summary": "Verify OTP", + "parameters": [ + { + "description": "OTP Verification Data", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/dto.OTPVerifyInput" + } + } ], - "summary": "Get Class Filters Metadata", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dto.FiltersMetadataResponse" + "$ref": "#/definitions/dto.OTPVerifyResponse" } }, "400": { @@ -81,24 +98,18 @@ const docTemplate = `{ "schema": { "$ref": "#/definitions/dto.ErrorResponse" } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/dto.ErrorResponse" - } } } } }, - "/api/v1/classes/search": { - "get": { + "/api/v1/authentication/change-password": { + "put": { "security": [ { "BearerAuth": [] } ], - "description": "Search classes with filters and sorting options", + "description": "Update password for the logged-in user.", "consumes": [ "application/json" ], @@ -106,81 +117,25 @@ const docTemplate = `{ "application/json" ], "tags": [ - "Classes" + "Auth" ], - "summary": "Search for Classes", + "summary": "Change Password", "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" + "description": "Password Change Data", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/dto.ChangePasswordRequest" + } } ], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dto.SearchClassesResponse" + "$ref": "#/definitions/dto.AuthenticatedUser" } }, "400": { @@ -198,14 +153,9 @@ const docTemplate = `{ } } }, - "/api/v1/classes/{class_id}": { - "get": { - "security": [ - { - "BearerAuth": [] - } - ], - "description": "Return comprehensive class information needed to render the detail page.", + "/api/v1/authentication/login": { + "post": { + "description": "Authenticate user via email/username and password.", "consumes": [ "application/json" ], @@ -213,33 +163,29 @@ const docTemplate = `{ "application/json" ], "tags": [ - "Classes" + "Auth" ], - "summary": "Get Class Details", + "summary": "Sign In", "parameters": [ { - "type": "string", - "description": "Class ID", - "name": "class_id", - "in": "path", - "required": true + "description": "Sign In Data", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/dto.SignInRequest" + } } ], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dto.ClassDetailResponse" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/dto.ErrorResponse" + "$ref": "#/definitions/dto.AuthenticatedUser" } }, - "404": { - "description": "Not Found", + "401": { + "description": "Unauthorized", "schema": { "$ref": "#/definitions/dto.ErrorResponse" } @@ -247,9 +193,9 @@ const docTemplate = `{ } } }, - "/api/v1/event-categories": { - "get": { - "description": "Get master list of event categories", + "/api/v1/authentication/register": { + "post": { + "description": "Register a new user with name, email, username and password.", "consumes": [ "application/json" ], @@ -257,14 +203,25 @@ const docTemplate = `{ "application/json" ], "tags": [ - "Master Data" + "Auth" + ], + "summary": "Sign Up", + "parameters": [ + { + "description": "Sign Up Data", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/dto.SignUpRequest" + } + } ], - "summary": "Get Event Categories", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dto.CategoryResponseWrapper" + "$ref": "#/definitions/entities.User" } }, "400": { @@ -276,14 +233,9 @@ const docTemplate = `{ } } }, - "/api/v1/home": { - "get": { - "security": [ - { - "BearerAuth": [] - } - ], - "description": "Return all sections needed by the home page in one aggregated response.", + "/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" ], @@ -291,40 +243,32 @@ const docTemplate = `{ "application/json" ], "tags": [ - "Home Dashboard" + "Users" ], - "summary": "Get Home Page Data", + "summary": "Update User Role (Legacy)", "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" + "description": "User ID", + "name": "userId", + "in": "path", + "required": true }, { - "type": "string", - "description": "User city", - "name": "city", - "in": "query" + "description": "Role Update Data", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/dto.UpdateUserRoleRequest" + } } ], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dto.HomeResponseWrapper" + "$ref": "#/definitions/entities.User" } }, "400": { @@ -336,9 +280,9 @@ const docTemplate = `{ } } }, - "/api/v1/payment/callback": { - "post": { - "description": "Receive and process payment status updates from Xendit", + "/api/v1/class-categories": { + "get": { + "description": "Get master list of class categories", "consumes": [ "application/json" ], @@ -346,26 +290,14 @@ const docTemplate = `{ "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 - } - } + "Master Data" ], + "summary": "Get Class Categories", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dto.SuccessResponse-any" + "$ref": "#/definitions/dto.CategoryResponseWrapper" } }, "400": { @@ -377,14 +309,14 @@ const docTemplate = `{ } } }, - "/api/v1/schedules": { - "get": { + "/api/v1/classes": { + "post": { "security": [ { "BearerAuth": [] } ], - "description": "Get a list of class or event schedules based on date range, city, filters, etc.", + "description": "Allows an instructor to create/host a new class. Automatically creates an instructor profile if one doesn't exist.", "consumes": [ "application/json" ], @@ -392,64 +324,262 @@ const docTemplate = `{ "application/json" ], "tags": [ - "Home Dashboard" + "Classes" ], - "summary": "Get Schedule List", + "summary": "Host a Class", "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" + "description": "Class Creation Data", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/dto.CreateClassRequest" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/entities.Class" + } }, - { - "type": "string", - "description": "End date range (YYYY-MM-DD)", - "name": "end_date", - "in": "query" + "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": "Filter by city", - "name": "city", + "description": "Search query", + "name": "q", "in": "query" }, { "type": "string", - "description": "Filter by class level (e.g., beginner)", - "name": "level", + "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", - "description": "Filter by class category (e.g., salsa)", - "name": "category", + "default": "nearest", + "description": "Sort by (nearest|popular|rating|newest)", + "name": "sort_by", "in": "query" }, { "type": "integer", - "description": "Page number (default: 1)", + "default": 1, + "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", - "description": "Items per page (default: 10, max: 100)", + "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.ScheduleListResponseWrapper" + "$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" + } + } + } + } + }, + "/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": { @@ -460,132 +590,864 @@ const docTemplate = `{ } } } - } - }, - "definitions": { - "dto.CategoryResponse": { + }, + "/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/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" + } + } + } + } + } + }, + "definitions": { + "dto.AuthenticatedUser": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/entities.User" + } + } + }, + "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.ClassDescription": { + "type": "object", + "properties": { + "full_text": { + "type": "string" + }, + "is_truncated": { + "type": "boolean" + }, + "short_text": { + "type": "string" + } + } + }, + "dto.ClassDetailResponse": { + "type": "object", + "properties": { + "booking": { + "$ref": "#/definitions/dto.ClassBooking" + }, + "cancellation_policy": { + "type": "array", + "items": { + "type": "string" + } + }, + "class_id": { + "type": "string" + }, + "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" + }, + "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": { - "id": { + "class_id": { "type": "string" }, - "image_url": { + "distance_km": { + "type": "number" + }, + "is_favorited": { + "type": "boolean" + }, + "location_text": { "type": "string" }, - "name": { + "price": { + "$ref": "#/definitions/dto.PriceInfo" + }, + "schedule_text": { + "type": "string" + }, + "thumbnail_url": { + "type": "string" + }, + "title": { "type": "string" } } }, - "dto.CategoryResponseWrapper": { + "dto.ClassShare": { "type": "object", "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/definitions/dto.CategoryResponse" - } + "share_text": { + "type": "string" }, - "success": { - "type": "boolean" + "share_url": { + "type": "string" } } }, - "dto.ClassBooking": { + "dto.ClassSummary": { "type": "object", "properties": { - "booking_type": { - "type": "string" - }, - "button_text": { - "type": "string" + "date": { + "$ref": "#/definitions/dto.DateDisplay" }, - "is_bookable": { - "type": "boolean" + "location": { + "$ref": "#/definitions/dto.SummaryLocation" }, "starting_price": { "$ref": "#/definitions/dto.PriceData" } } }, - "dto.ClassDescription": { + "dto.ClassTag": { "type": "object", "properties": { - "full_text": { + "key": { "type": "string" }, - "is_truncated": { - "type": "boolean" + "label": { + "type": "string" + } + } + }, + "dto.CreateClassRequest": { + "type": "object", + "required": [ + "capacity", + "end_time", + "price", + "schedule_type", + "start_time", + "title" + ], + "properties": { + "capacity": { + "type": "integer" }, - "short_text": { + "description": { + "type": "string" + }, + "end_time": { + "type": "string" + }, + "price": { + "type": "number" + }, + "schedule_type": { + "type": "string" + }, + "start_time": { + "type": "string" + }, + "title": { + "type": "string" + }, + "venue_id": { "type": "string" } } }, - "dto.ClassDetailResponse": { + "dto.CurrentLocation": { "type": "object", "properties": { - "booking": { - "$ref": "#/definitions/dto.ClassBooking" + "city": { + "type": "string" }, - "cancellation_policy": { - "type": "array", - "items": { - "type": "string" - } + "label": { + "type": "string" }, - "class_id": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + } + } + }, + "dto.DateDisplay": { + "type": "object", + "properties": { + "display": { "type": "string" }, - "description": { - "$ref": "#/definitions/dto.ClassDescription" + "raw": { + "type": "string" + } + } + }, + "dto.ErrorResponse": { + "type": "object", + "properties": { + "errors": {}, + "message": {}, + "meta_data": {}, + "status": { + "type": "string" + } + } + }, + "dto.FilterOption": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "details": { + "is_default": { + "type": "boolean" + }, + "label": { + "type": "string" + } + } + }, + "dto.FiltersMetadataResponse": { + "type": "object", + "properties": { + "categories": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/dto.FilterOption" } }, - "extra_lessons": { - "$ref": "#/definitions/dto.ClassExtraLessons" + "dance_types": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.FilterOption" + } }, - "favorite": { - "$ref": "#/definitions/dto.ClassFavorite" + "sort_options": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.SortOption" + } }, - "gallery": { + "view_types": { "type": "array", "items": { - "$ref": "#/definitions/dto.ClassGalleryItem" + "$ref": "#/definitions/dto.FilterOption" } + } + } + }, + "dto.HomeBeginnerClassSection": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "hero_image_url": { + "image_url": { "type": "string" }, - "house_dancer": { - "$ref": "#/definitions/dto.ClassHouseDancer" + "name": { + "type": "string" }, - "instructor": { - "$ref": "#/definitions/dto.ClassInstructor" + "type": { + "type": "string" + } + } + }, + "dto.HomeDay": { + "type": "object", + "properties": { + "date": { + "type": "string" }, - "location": { - "$ref": "#/definitions/dto.ClassLocation" + "day_name_short": { + "type": "string" }, - "rating": { - "$ref": "#/definitions/dto.ClassRating" + "day_number": { + "type": "integer" }, - "share": { - "$ref": "#/definitions/dto.ClassShare" + "has_schedule": { + "type": "boolean" }, - "summary": { - "$ref": "#/definitions/dto.ClassSummary" + "is_selected": { + "type": "boolean" + } + } + }, + "dto.HomeEventSection": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/dto.ClassTag" - } + "image_url": { + "type": "string" }, - "title": { + "name": { "type": "string" }, "type": { @@ -593,333 +1455,449 @@ const docTemplate = `{ } } }, - "dto.ClassExtraLessons": { + "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": { - "available": { - "type": "boolean" + "unread_count": { + "type": "integer" + } + } + }, + "dto.HomePromoStrip": { + "type": "object", + "properties": { + "cta_target_id": { + "type": "string" }, - "description": { + "cta_text": { + "type": "string" + }, + "cta_type": { + "type": "string" + }, + "id": { + "type": "string" + }, + "text": { "type": "string" } } }, - "dto.ClassFavorite": { + "dto.HomeResponse": { "type": "object", "properties": { - "is_favorited": { - "type": "boolean" + "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.ClassGalleryItem": { + "dto.HomeResponseWrapper": { "type": "object", "properties": { - "id": { - "type": "string" + "data": { + "$ref": "#/definitions/dto.HomeResponse" }, - "image_url": { + "message": { "type": "string" }, - "thumbnail_url": { - "type": "string" + "success": { + "type": "boolean" } } }, - "dto.ClassHouseDancer": { + "dto.HomeSearch": { "type": "object", "properties": { - "available": { - "type": "boolean" - }, - "description": { + "placeholder": { "type": "string" - }, - "price": { - "$ref": "#/definitions/dto.PriceData" } } }, - "dto.ClassInstructor": { + "dto.HomeUser": { "type": "object", "properties": { "avatar_url": { "type": "string" }, - "id": { - "type": "string" - }, - "is_message_enabled": { - "type": "boolean" - }, - "name": { + "first_name": { "type": "string" }, - "subtitle": { + "full_name": { "type": "string" }, - "title": { + "id": { "type": "string" } } }, - "dto.ClassLocation": { + "dto.HomeWeekSchedule": { "type": "object", "properties": { - "address": { - "type": "string" + "days": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.HomeDay" + } }, - "area_text": { + "end_date": { "type": "string" }, - "latitude": { - "type": "number" + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.ScheduleItem" + } }, - "longitude": { - "type": "number" + "selected_date": { + "type": "string" }, - "map_preview_url": { + "start_date": { "type": "string" }, - "venue_name": { + "view_all_url": { + "type": "string" + }, + "week_label": { "type": "string" } } }, - "dto.ClassRating": { + "dto.OTPAuth": { "type": "object", "properties": { - "average": { - "type": "number" + "access_token": { + "type": "string" }, - "count": { + "expires_in_seconds": { "type": "integer" + }, + "refresh_token": { + "type": "string" + }, + "token_type": { + "type": "string" } } }, - "dto.ClassSearchResult": { + "dto.OTPRequestInput": { "type": "object", + "required": [ + "channel", + "phone_number", + "purpose" + ], "properties": { - "class_id": { + "app_name": { "type": "string" }, - "distance_km": { - "type": "number" - }, - "is_favorited": { - "type": "boolean" - }, - "location_text": { + "channel": { "type": "string" }, - "price": { - "$ref": "#/definitions/dto.PriceInfo" + "device_id": { + "type": "string" }, - "schedule_text": { + "locale": { "type": "string" }, - "thumbnail_url": { + "phone_number": { "type": "string" }, - "title": { + "purpose": { "type": "string" } } }, - "dto.ClassShare": { + "dto.OTPRequestResponse": { "type": "object", "properties": { - "share_text": { + "channel": { "type": "string" }, - "share_url": { + "expires_in_seconds": { + "type": "integer" + }, + "masked_destination": { "type": "string" - } - } - }, - "dto.ClassSummary": { - "type": "object", - "properties": { - "date": { - "$ref": "#/definitions/dto.DateDisplay" }, - "location": { - "$ref": "#/definitions/dto.SummaryLocation" + "otp_length": { + "type": "integer" }, - "starting_price": { - "$ref": "#/definitions/dto.PriceData" + "otp_request_id": { + "type": "string" + }, + "resend_available_in_seconds": { + "type": "integer" } } }, - "dto.ClassTag": { + "dto.OTPVerifiedUser": { "type": "object", "properties": { - "key": { + "id": { "type": "string" }, - "label": { + "is_new_user": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "phone_number": { "type": "string" } } }, - "dto.CurrentLocation": { + "dto.OTPVerifyInput": { "type": "object", + "required": [ + "otp_code", + "otp_request_id", + "phone_number", + "purpose" + ], "properties": { - "city": { + "device_id": { "type": "string" }, - "label": { + "otp_code": { "type": "string" }, - "latitude": { - "type": "number" + "otp_request_id": { + "type": "string" }, - "longitude": { - "type": "number" + "phone_number": { + "type": "string" + }, + "purpose": { + "type": "string" } } }, - "dto.DateDisplay": { + "dto.OTPVerifyResponse": { "type": "object", "properties": { - "display": { - "type": "string" + "auth": { + "$ref": "#/definitions/dto.OTPAuth" }, - "raw": { - "type": "string" + "user": { + "$ref": "#/definitions/dto.OTPVerifiedUser" } } }, - "dto.ErrorResponse": { + "dto.Pagination": { "type": "object", "properties": { - "errors": {}, - "message": {}, - "meta_data": {}, - "status": { - "type": "string" + "has_next_page": { + "type": "boolean" + }, + "limit": { + "type": "integer" + }, + "page": { + "type": "integer" + }, + "total_items": { + "type": "integer" + }, + "total_pages": { + "type": "integer" } } }, - "dto.FilterOption": { + "dto.PaginationMeta": { "type": "object", "properties": { - "id": { - "type": "string" + "limit": { + "type": "integer" }, - "is_default": { - "type": "boolean" + "page": { + "type": "integer" }, - "label": { - "type": "string" + "total_items": { + "type": "integer" + }, + "total_pages": { + "type": "integer" } } }, - "dto.FiltersMetadataResponse": { + "dto.PriceData": { "type": "object", "properties": { - "categories": { - "type": "array", - "items": { - "$ref": "#/definitions/dto.FilterOption" - } - }, - "dance_types": { - "type": "array", - "items": { - "$ref": "#/definitions/dto.FilterOption" - } + "amount": { + "type": "integer" }, - "sort_options": { - "type": "array", - "items": { - "$ref": "#/definitions/dto.SortOption" - } + "currency": { + "type": "string" }, - "view_types": { - "type": "array", - "items": { - "$ref": "#/definitions/dto.FilterOption" - } + "display": { + "type": "string" } } }, - "dto.HomeBeginnerClassSection": { + "dto.PriceInfo": { "type": "object", "properties": { - "id": { + "currency": { "type": "string" }, - "image_url": { + "display": { "type": "string" }, - "name": { - "type": "string" + "max_amount": { + "type": "number" }, - "type": { - "type": "string" + "min_amount": { + "type": "number" } } }, - "dto.HomeDay": { + "dto.ScheduleItem": { "type": "object", "properties": { + "city": { + "type": "string" + }, + "class_id": { + "type": "string" + }, "date": { "type": "string" }, - "day_name_short": { + "display_time": { "type": "string" }, - "day_number": { - "type": "integer" + "end_time": { + "type": "string" }, - "has_schedule": { + "is_booked": { "type": "boolean" }, - "is_selected": { - "type": "boolean" - } - } - }, - "dto.HomeEventSection": { - "type": "object", - "properties": { - "id": { + "schedule_id": { "type": "string" }, - "image_url": { + "start_time": { "type": "string" }, - "name": { + "studio_name": { "type": "string" }, - "type": { + "teacher_name": { + "type": "string" + }, + "title": { "type": "string" } } }, - "dto.HomeHeroBanner": { + "dto.ScheduleListItem": { "type": "object", "properties": { - "badge_text": { + "address": { "type": "string" }, - "cta_target_id": { + "available_slots": { + "type": "integer" + }, + "category": { "type": "string" }, - "cta_text": { + "city": { "type": "string" }, - "cta_type": { + "class_id": { "type": "string" }, - "id": { + "date": { "type": "string" }, - "image_url": { + "display_time": { "type": "string" }, - "subtitle": { + "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": { @@ -927,409 +1905,533 @@ const docTemplate = `{ } } }, - "dto.HomeNotifications": { + "dto.ScheduleListResponse": { "type": "object", "properties": { - "unread_count": { - "type": "integer" + "items": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.ScheduleListItem" + } + }, + "pagination": { + "$ref": "#/definitions/dto.PaginationMeta" } } }, - "dto.HomePromoStrip": { + "dto.ScheduleListResponseWrapper": { "type": "object", "properties": { - "cta_target_id": { - "type": "string" - }, - "cta_text": { - "type": "string" - }, - "cta_type": { - "type": "string" + "data": { + "$ref": "#/definitions/dto.ScheduleListResponse" }, - "id": { + "message": { "type": "string" }, - "text": { - "type": "string" + "success": { + "type": "boolean" } } }, - "dto.HomeResponse": { + "dto.SearchClassesResponse": { "type": "object", "properties": { - "beginner_class_sections": { - "type": "array", - "items": { - "$ref": "#/definitions/dto.HomeBeginnerClassSection" - } + "current_location": { + "$ref": "#/definitions/dto.CurrentLocation" }, - "event_sections": { + "nearby_classes": { "type": "array", "items": { - "$ref": "#/definitions/dto.HomeEventSection" + "$ref": "#/definitions/dto.ClassSearchResult" } }, - "hero_banners": { + "pagination": { + "$ref": "#/definitions/dto.Pagination" + }, + "previous_classes": { "type": "array", "items": { - "$ref": "#/definitions/dto.HomeHeroBanner" + "$ref": "#/definitions/dto.ClassSearchResult" } }, - "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" + "search_context": { + "$ref": "#/definitions/dto.SearchContext" } } }, - "dto.HomeResponseWrapper": { + "dto.SearchContext": { "type": "object", "properties": { - "data": { - "$ref": "#/definitions/dto.HomeResponse" + "query": { + "type": "string" }, - "message": { + "selected_filters": { + "type": "object", + "additionalProperties": true + }, + "sort_by": { "type": "string" }, - "success": { - "type": "boolean" + "view_type": { + "type": "string" } } }, - "dto.HomeSearch": { + "dto.SignInRequest": { "type": "object", + "required": [ + "email_or_username", + "password" + ], "properties": { - "placeholder": { + "email_or_username": { + "type": "string" + }, + "password": { "type": "string" } } }, - "dto.HomeUser": { + "dto.SignUpRequest": { "type": "object", + "required": [ + "email", + "password", + "username" + ], "properties": { - "avatar_url": { + "email": { "type": "string" }, - "first_name": { + "name": { "type": "string" }, - "full_name": { + "password": { "type": "string" }, - "id": { + "username": { "type": "string" } } }, - "dto.HomeWeekSchedule": { + "dto.SortOption": { "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": { + "id": { "type": "string" }, - "view_all_url": { - "type": "string" + "is_default": { + "type": "boolean" }, - "week_label": { + "label": { "type": "string" } } }, - "dto.Pagination": { + "dto.SuccessResponse-any": { "type": "object", "properties": { - "has_next_page": { - "type": "boolean" - }, - "limit": { - "type": "integer" - }, - "page": { - "type": "integer" - }, - "total_items": { - "type": "integer" - }, - "total_pages": { - "type": "integer" + "data": {}, + "message": {}, + "meta_data": {}, + "status": { + "type": "string" } } }, - "dto.PaginationMeta": { + "dto.SummaryLocation": { "type": "object", "properties": { - "limit": { - "type": "integer" - }, - "page": { - "type": "integer" - }, - "total_items": { - "type": "integer" - }, - "total_pages": { - "type": "integer" + "display": { + "type": "string" + }, + "venue_name": { + "type": "string" } } }, - "dto.PriceData": { + "dto.UpdateAboutYouRequest": { "type": "object", "properties": { - "amount": { - "type": "integer" + "city": { + "type": "string" }, - "currency": { + "dance_level": { "type": "string" }, - "display": { + "description": { + "type": "string" + }, + "gender": { + "type": "string" + }, + "province": { "type": "string" } } }, - "dto.PriceInfo": { + "dto.UpdateUserRoleRequest": { "type": "object", + "required": [ + "role" + ], "properties": { - "currency": { + "role": { "type": "string" - }, - "display": { + } + } + }, + "dto.UpdateUserRolesRequest": { + "type": "object", + "required": [ + "role" + ], + "properties": { + "role": { "type": "string" - }, - "max_amount": { - "type": "number" - }, - "min_amount": { - "type": "number" } } }, - "dto.ScheduleItem": { + "dto.UserProfileResponse": { "type": "object", "properties": { "city": { "type": "string" }, - "class_id": { + "dance_level": { "type": "string" }, - "date": { + "description": { "type": "string" }, - "display_time": { + "email": { "type": "string" }, - "end_time": { + "full_name": { "type": "string" }, - "is_booked": { - "type": "boolean" + "gender": { + "type": "string" }, - "schedule_id": { + "id": { "type": "string" }, - "start_time": { + "is_instructor": { + "type": "boolean" + }, + "is_member": { + "type": "boolean" + }, + "is_vo": { + "type": "boolean" + }, + "nickname": { "type": "string" }, - "studio_name": { + "phone_number": { "type": "string" }, - "teacher_name": { + "profile_media": { "type": "string" }, - "title": { + "province": { "type": "string" + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/dto.UserRoleResponse" + } } } }, - "dto.ScheduleListItem": { + "dto.UserRoleResponse": { "type": "object", "properties": { - "address": { + "created_at": { "type": "string" }, - "available_slots": { - "type": "integer" - }, - "category": { + "role": { "type": "string" + } + } + }, + "entities.Class": { + "type": "object", + "properties": { + "capacity": { + "type": "integer" }, - "city": { - "type": "string" + "classMedia": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } }, - "class_id": { + "createdAt": { "type": "string" }, - "date": { - "type": "string" + "description": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } }, - "display_time": { + "endTime": { "type": "string" }, - "end_time": { + "id": { "type": "string" }, - "is_booked": { - "type": "boolean" + "instructor": { + "$ref": "#/definitions/entities.Instructor" }, - "level": { + "instructorID": { "type": "string" }, "price": { - "$ref": "#/definitions/dto.PriceData" - }, - "schedule_id": { - "type": "string" + "type": "number", + "format": "float64" }, - "start_time": { + "scheduleType": { "type": "string" }, - "studio_name": { + "startTime": { "type": "string" }, - "teacher_name": { + "title": { "type": "string" }, - "thumbnail_url": { - "type": "string" + "venue": { + "$ref": "#/definitions/entities.Venue" }, - "title": { + "venueID": { "type": "string" } } }, - "dto.ScheduleListResponse": { + "entities.Instructor": { "type": "object", "properties": { - "items": { + "createdAt": { + "type": "string" + }, + "id": { + "type": "string" + }, + "introduction": { "type": "array", "items": { - "$ref": "#/definitions/dto.ScheduleListItem" + "type": "integer", + "format": "int32" } }, - "pagination": { - "$ref": "#/definitions/dto.PaginationMeta" - } - } - }, - "dto.ScheduleListResponseWrapper": { - "type": "object", - "properties": { - "data": { - "$ref": "#/definitions/dto.ScheduleListResponse" + "profileMedia": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } }, - "message": { + "rank": { "type": "string" }, - "success": { - "type": "boolean" + "specialization": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + }, + "user": { + "$ref": "#/definitions/entities.User" + }, + "userID": { + "type": "string" } } }, - "dto.SearchClassesResponse": { + "entities.User": { "type": "object", "properties": { - "current_location": { - "$ref": "#/definitions/dto.CurrentLocation" + "additionalDetails": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } }, - "nearby_classes": { + "city": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "danceLevel": { + "type": "string" + }, + "description": { + "type": "string" + }, + "email": { + "type": "string" + }, + "fullName": { + "type": "string" + }, + "gender": { + "type": "string" + }, + "id": { + "type": "string" + }, + "interests": { "type": "array", "items": { - "$ref": "#/definitions/dto.ClassSearchResult" + "type": "integer", + "format": "int32" } }, - "pagination": { - "$ref": "#/definitions/dto.Pagination" + "isInstructor": { + "type": "boolean" }, - "previous_classes": { + "isMember": { + "type": "boolean" + }, + "isVO": { + "type": "boolean" + }, + "nickname": { + "type": "string" + }, + "passwordHash": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "prefedLanguage": { + "type": "string" + }, + "profileMedia": { + "type": "string" + }, + "province": { + "type": "string" + }, + "roles": { "type": "array", "items": { - "$ref": "#/definitions/dto.ClassSearchResult" + "$ref": "#/definitions/entities.UserRole" } }, - "search_context": { - "$ref": "#/definitions/dto.SearchContext" + "updatedAt": { + "type": "string" } } }, - "dto.SearchContext": { + "entities.UserRole": { "type": "object", "properties": { - "query": { + "createdAt": { "type": "string" }, - "selected_filters": { - "type": "object", - "additionalProperties": true + "id": { + "type": "string" }, - "sort_by": { + "role": { "type": "string" }, - "view_type": { + "user": { + "$ref": "#/definitions/entities.User" + }, + "userID": { "type": "string" } } }, - "dto.SortOption": { + "entities.Venue": { "type": "object", "properties": { + "address": { + "type": "string" + }, + "capacity": { + "type": "integer" + }, + "city": { + "type": "string" + }, + "closingTime": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "description": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + }, "id": { "type": "string" }, - "is_default": { - "type": "boolean" + "latitude": { + "type": "number", + "format": "float64" }, - "label": { + "longitude": { + "type": "number", + "format": "float64" + }, + "minimumConsumption": { + "type": "number", + "format": "float64" + }, + "name": { "type": "string" - } - } - }, - "dto.SuccessResponse-any": { - "type": "object", - "properties": { - "data": {}, - "message": {}, - "meta_data": {}, - "status": { + }, + "openingTime": { + "type": "string" + }, + "owner": { + "$ref": "#/definitions/entities.VenueOwner" + }, + "ownerID": { + "type": "string" + }, + "province": { + "type": "string" + }, + "venueMedia": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + } + }, + "verificationStatus": { "type": "string" } } }, - "dto.SummaryLocation": { + "entities.VenueOwner": { "type": "object", "properties": { - "display": { + "createdAt": { "type": "string" }, - "venue_name": { + "id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/entities.User" + }, + "userID": { "type": "string" } }