{ "schemes": ["http", "https"], "swagger": "2.0", "info": { "description": "Beehive API for managing products, files, users and admin operations\n\n## Environments\n- **Local**: http://localhost:8090\n- **Stage**: https://apimznstg.aireview.ir\n\nChange the host in the swagger UI or API client to match your target environment.", "title": "Beehive API", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", "url": "http://www.swagger.io/support", "email": "support@swagger.io" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "1.0" }, "host": "localhost:8090", "basePath": "/", "paths": { "/api/v1/admin/admin-users": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves all admin users with pagination support", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get all admin users", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "integer", "description": "Number of items per page", "name": "limit", "in": "query" }, { "type": "integer", "description": "Page offset", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "List of admin users", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.AdminUserInfo" } } }, "401": { "description": "Unauthorized - invalid or missing JWT token", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Creates a new admin user in the system with optional roles and permissions", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Create admin user", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "description": "Admin user information including roles and permissions", "name": "adminUser", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreateAdminUserRequest" } } ], "responses": { "201": { "description": "Admin user created successfully", "schema": { "$ref": "#/definitions/domain.AdminUserInfo" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized - invalid or missing JWT token", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/admin-users/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves a specific admin user by their ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get admin user by ID", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Admin user found", "schema": { "$ref": "#/definitions/domain.AdminUserInfo" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized - invalid or missing JWT token", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "404": { "description": "Admin user not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Updates an admin user in the system with optional roles and permissions (overwrites existing)", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Update admin user", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true }, { "description": "Updated admin user information including roles and permissions", "name": "adminUser", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.UpdateAdminUserRequest" } } ], "responses": { "200": { "description": "Admin user updated successfully", "schema": { "$ref": "#/definitions/domain.AdminUserInfo" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "404": { "description": "Admin user not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Deletes an admin user from the system", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Delete admin user", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Admin user deleted successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "404": { "description": "Admin user not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/admin-users/{id}/permissions": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves all permissions assigned to an admin user", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get admin user permissions", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "List of permissions", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.Permission" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/admin-users/{id}/permissions/{permissionId}": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Assigns a permission to an admin user", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Assign permission to admin user", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Permission ID", "name": "permissionId", "in": "path", "required": true } ], "responses": { "200": { "description": "Permission assigned successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Removes a permission from an admin user", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Remove permission from admin user", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Permission ID", "name": "permissionId", "in": "path", "required": true } ], "responses": { "200": { "description": "Permission removed successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/admin-users/{id}/roles": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves all roles assigned to an admin user", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get admin user roles", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "List of roles", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.Role" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/admin-users/{id}/roles/{roleId}": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Assigns a role to an admin user", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Assign role to admin user", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Role ID", "name": "roleId", "in": "path", "required": true } ], "responses": { "200": { "description": "Role assigned successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Removes a role from an admin user", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Remove role from admin user", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Admin user ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Role ID", "name": "roleId", "in": "path", "required": true } ], "responses": { "200": { "description": "Role removed successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/auth/login": { "post": { "description": "Authenticates admin user with username and password, returns JWT tokens and user permissions", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin-auth"], "summary": "Admin login", "parameters": [ { "description": "Admin login payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.AdminLoginRequest" } } ], "responses": { "200": { "description": "Login successful with tokens and permissions", "schema": { "$ref": "#/definitions/domain.AdminLoginResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/files": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a paginated list of files with optional filtering", "produces": ["application/json"], "tags": ["files"], "summary": "List files", "parameters": [ { "type": "integer", "description": "Number of files to return (default: 10)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of files to skip (default: 0)", "name": "offset", "in": "query" }, { "type": "string", "description": "Filter by file type (image/video)", "name": "type", "in": "query" }, { "type": "string", "description": "Search text in file names", "name": "search", "in": "query" }, { "type": "integer", "description": "Minimum file size in bytes", "name": "min_size", "in": "query" }, { "type": "integer", "description": "Maximum file size in bytes", "name": "max_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetFilesResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Upload an image or video file with admin authentication", "consumes": ["multipart/form-data"], "produces": ["application/json"], "tags": ["files"], "summary": "Upload a new file", "parameters": [ { "type": "file", "description": "File to upload", "name": "file", "in": "formData", "required": true }, { "type": "string", "description": "Display name for the file", "name": "name", "in": "formData" } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/domain.UploadFileResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/files/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get file information by ID", "produces": ["application/json"], "tags": ["files"], "summary": "Get file by ID", "parameters": [ { "type": "string", "description": "File ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.FileInfo" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "404": { "description": "File not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update file information", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["files"], "summary": "Update file", "parameters": [ { "type": "string", "description": "File ID", "name": "id", "in": "path", "required": true }, { "description": "Update file request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.UpdateFileRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.UpdateFileResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "404": { "description": "File not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a file by ID", "produces": ["application/json"], "tags": ["files"], "summary": "Delete file", "parameters": [ { "type": "string", "description": "File ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.DeleteFileResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "404": { "description": "File not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/permissions": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves all permissions from the system", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get all permissions", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of permissions", "schema": { "$ref": "#/definitions/domain.GetAllPermissionsResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Creates a new permission in the system", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Create permission", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "description": "Permission information", "name": "permission", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreatePermissionRequest" } } ], "responses": { "201": { "description": "Permission created successfully", "schema": { "$ref": "#/definitions/domain.CreatePermissionResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized - invalid or missing JWT token", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/permissions/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves a specific permission by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get permission by ID", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Permission ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Permission found", "schema": { "$ref": "#/definitions/domain.GetPermissionByIDResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "404": { "description": "Permission not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Updates an existing permission", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Update permission", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Permission ID", "name": "id", "in": "path", "required": true }, { "description": "Updated permission information", "name": "permission", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.UpdatePermissionRequest" } } ], "responses": { "200": { "description": "Permission updated successfully", "schema": { "$ref": "#/definitions/domain.UpdatePermissionResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "404": { "description": "Permission not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Deletes a permission from the system", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Delete permission", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Permission ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Permission deleted successfully", "schema": { "$ref": "#/definitions/domain.DeletePermissionResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/roles": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves all roles from the system", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get all roles", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true } ], "responses": { "200": { "description": "List of roles", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.Role" } } }, "401": { "description": "Unauthorized - invalid or missing JWT token", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "post": { "security": [ { "AdminAuth": [] } ], "description": "Creates a new role in the system", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Create role", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "description": "Role information", "name": "role", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreateRoleRequest" } } ], "responses": { "201": { "description": "Role created successfully", "schema": { "$ref": "#/definitions/domain.Role" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized - invalid or missing JWT token", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/roles/{id}": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves a specific role by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get role by ID", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Role found", "schema": { "$ref": "#/definitions/domain.Role" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "404": { "description": "Role not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Updates an existing role", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Update role", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true }, { "description": "Updated role information", "name": "role", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.UpdateRoleRequest" } } ], "responses": { "200": { "description": "Role updated successfully", "schema": { "$ref": "#/definitions/domain.Role" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "404": { "description": "Role not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Deletes a role from the system", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Delete role", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Role deleted successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/roles/{id}/permissions": { "get": { "security": [ { "AdminAuth": [] } ], "description": "Retrieves all permissions assigned to a role", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Get role permissions", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "List of permissions", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.Permission" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "put": { "security": [ { "AdminAuth": [] } ], "description": "Assigns multiple permissions to a role, overwriting all existing permissions", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Assign permissions to role (bulk)", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true }, { "description": "Permission IDs to assign", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.AssignPermissionsToRoleRequest" } } ], "responses": { "200": { "description": "Permissions assigned successfully", "schema": { "$ref": "#/definitions/domain.AssignPermissionsToRoleResponse" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/admin/roles/{id}/permissions/{permissionId}": { "post": { "security": [ { "AdminAuth": [] } ], "description": "Assigns a permission to a role", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Assign permission to role", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Permission ID", "name": "permissionId", "in": "path", "required": true } ], "responses": { "200": { "description": "Permission assigned successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } }, "delete": { "security": [ { "AdminAuth": [] } ], "description": "Removes a permission from a role", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["admin"], "summary": "Remove permission from role", "parameters": [ { "type": "string", "description": "Bearer \u003ctoken\u003e", "name": "Authorization", "in": "header", "required": true }, { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Permission ID", "name": "permissionId", "in": "path", "required": true } ], "responses": { "200": { "description": "Permission removed successfully", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "403": { "description": "Forbidden - insufficient permissions", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse" } } } } }, "/api/v1/auth/otp/send": { "post": { "description": "Sends an OTP code to the provided phone number for authentication", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["auth"], "summary": "Send OTP for user login/register", "parameters": [ { "description": "Send OTP payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.SendOTPRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.SendOTPResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_user_delivery_http.ErrorResponse" } }, "429": { "description": "Too Many Requests", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_user_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_user_delivery_http.ErrorResponse" } } } } }, "/api/v1/files/{serveKey}": { "get": { "description": "Download a file by its serve key and stream the actual file content", "produces": ["application/octet-stream"], "tags": ["files"], "summary": "Download file", "parameters": [ { "type": "string", "description": "File serve key", "name": "serveKey", "in": "path", "required": true } ], "responses": { "200": { "description": "File content", "schema": { "type": "file" } }, "400": { "description": "Bad request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } }, "404": { "description": "File not found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse" } } } } }, "/api/v1/images": { "get": { "description": "Retrieves a paginated list of all images", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Get all images", "parameters": [ { "type": "integer", "description": "Number of images to return (default: 10)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of images to skip (default: 0)", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetAllImagesResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "post": { "description": "Creates a new image", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Create a new image", "parameters": [ { "description": "Image creation payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.CreateImageRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/product-options": { "get": { "description": "Retrieves a paginated list of all product options", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["product-options"], "summary": "Get all product options", "parameters": [ { "type": "integer", "description": "Number of product options to return (default: 10)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of product options to skip (default: 0)", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetAllProductOptionsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/product-options/{id}": { "get": { "description": "Retrieves a specific product option by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["product-options"], "summary": "Get product option by ID", "parameters": [ { "type": "integer", "description": "Product Option ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetProductOptionByIDResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "delete": { "description": "Deletes a product option by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["product-options"], "summary": "Delete a product option", "parameters": [ { "type": "integer", "description": "Product Option ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.DeleteProductOptionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products": { "get": { "description": "Retrieves a paginated list of all products", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Get all products", "parameters": [ { "type": "integer", "description": "Number of products to return (default: 10)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of products to skip (default: 0)", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetAllProductsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "post": { "description": "Creates a new product with the provided information", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Create a new product", "parameters": [ { "description": "Product creation payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.CreateProductRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/domain.CreateProductResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/categories": { "get": { "description": "Retrieves all product categories", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["categories"], "summary": "Get all product categories", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetAllCategoriesResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "post": { "description": "Creates a new product category", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["categories"], "summary": "Create a new product category", "parameters": [ { "description": "Category creation payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.CreateCategoryRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/domain.CreateCategoryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/categories/{categoryId}": { "put": { "description": "Updates an existing product category", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["categories"], "summary": "Update product category", "parameters": [ { "type": "string", "description": "Category ID", "name": "categoryId", "in": "path", "required": true }, { "description": "Category update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.UpdateCategoryRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.UpdateCategoryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "delete": { "description": "Deletes a product category by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["categories"], "summary": "Delete product category", "parameters": [ { "type": "string", "description": "Category ID", "name": "categoryId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.DeleteCategoryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/category/{categoryId}": { "get": { "description": "Retrieves products filtered by category ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Get products by category", "parameters": [ { "type": "string", "description": "Category ID", "name": "categoryId", "in": "path", "required": true }, { "type": "integer", "description": "Number of products to return (default: 10)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of products to skip (default: 0)", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetProductsByCategoryResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/filter": { "get": { "description": "Retrieves products with optional filters for type, category, search, and weight range", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Get products with filters", "parameters": [ { "type": "integer", "description": "Product type filter", "name": "type", "in": "query" }, { "type": "string", "description": "Category ID filter", "name": "categoryId", "in": "query" }, { "type": "string", "description": "Text search in name and description", "name": "search", "in": "query" }, { "type": "number", "description": "Minimum weight filter", "name": "minWeight", "in": "query" }, { "type": "number", "description": "Maximum weight filter", "name": "maxWeight", "in": "query" }, { "type": "integer", "description": "Number of products to return (default: 10)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of products to skip (default: 0)", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetProductsWithFiltersResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/images/{imageId}": { "put": { "description": "Updates an existing image", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Update image", "parameters": [ { "type": "string", "description": "Image ID", "name": "imageId", "in": "path", "required": true }, { "description": "Image update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.UpdateImageRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "delete": { "description": "Deletes an existing image", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Delete image", "parameters": [ { "type": "string", "description": "Image ID", "name": "imageId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/product-options": { "post": { "description": "Creates a new product option with the provided details", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["product-options"], "summary": "Create a new product option", "parameters": [ { "description": "Product option creation payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.CreateProductOptionRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/domain.CreateProductOptionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/product-options/{id}": { "put": { "description": "Updates an existing product option with the provided details", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["product-options"], "summary": "Update product option", "parameters": [ { "type": "string", "description": "Product Option ID", "name": "id", "in": "path", "required": true }, { "description": "Product option update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.UpdateProductOptionRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.UpdateProductOptionResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/variants/{variantId}": { "put": { "description": "Updates an existing product variant", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["variants"], "summary": "Update product variant", "parameters": [ { "type": "string", "description": "Variant ID", "name": "variantId", "in": "path", "required": true }, { "description": "Variant update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.UpdateProductVariantRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.UpdateProductVariantResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "delete": { "description": "Deletes a product variant by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["variants"], "summary": "Delete product variant", "parameters": [ { "type": "string", "description": "Variant ID", "name": "variantId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.DeleteProductVariantResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/variants/{variantId}/assign-images": { "post": { "description": "Assigns an array of images to a specific product variant", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Assign images to variant", "parameters": [ { "type": "string", "description": "Variant ID", "name": "variantId", "in": "path", "required": true }, { "description": "Image assignment payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.AssignImagesToVariantRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/http.AssignImagesToVariantResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/{id}": { "get": { "description": "Retrieves a specific product by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Get product by ID", "parameters": [ { "type": "string", "description": "Product ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetProductByIDResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "put": { "description": "Updates an existing product with the provided information", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Update product", "parameters": [ { "type": "integer", "description": "Product ID", "name": "id", "in": "path", "required": true }, { "description": "Product update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.UpdateProductRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.UpdateProductResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "delete": { "description": "Deletes a product by its ID", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Delete product", "parameters": [ { "type": "string", "description": "Product ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.DeleteProductResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/{id}/total-sold": { "put": { "description": "Sets the total sold count for a product for promotional purposes", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Set product total sold count", "parameters": [ { "type": "integer", "description": "Product ID", "name": "id", "in": "path", "required": true }, { "description": "Total sold update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.SetTotalSoldRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/http.SetTotalSoldResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/{productID}/recommended": { "get": { "description": "Retrieves recommended products based on the categories of the specified product", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["products"], "summary": "Get recommended products", "parameters": [ { "type": "string", "description": "Product ID", "name": "productID", "in": "path", "required": true }, { "type": "integer", "description": "Number of recommended products to return (default: 10)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of recommended products to skip (default: 0)", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetRecommendedProductsResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/{productId}/all-images": { "get": { "description": "Retrieves all images for a specific product and its variants", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Get product and variants images", "parameters": [ { "type": "string", "description": "Product ID", "name": "productId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetProductAndVariantsImagesResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/{productId}/assign-images": { "post": { "description": "Assigns an array of images to a specific product", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Assign images to product", "parameters": [ { "type": "string", "description": "Product ID", "name": "productId", "in": "path", "required": true }, { "description": "Image assignment payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.AssignImagesToProductRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/http.AssignImagesToProductResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/{productId}/images": { "get": { "description": "Retrieves all images for a specific product", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["images"], "summary": "Get product images", "parameters": [ { "type": "string", "description": "Product ID", "name": "productId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/products/{productId}/variants": { "get": { "description": "Retrieves all variants for a specific product", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["variants"], "summary": "Get product variants", "parameters": [ { "type": "string", "description": "Product ID", "name": "productId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetProductVariantsByProductIDResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } }, "post": { "description": "Creates a new product variant for a specific product", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["variants"], "summary": "Create a new product variant", "parameters": [ { "type": "string", "description": "Product ID", "name": "productId", "in": "path", "required": true }, { "description": "Variant creation payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.CreateProductVariantRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/domain.CreateProductVariantResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse" } } } } }, "/api/v1/users/login": { "post": { "description": "Authenticates user with OTP or creates new account", "consumes": ["application/json"], "produces": ["application/json"], "tags": ["auth"], "summary": "Login or register user", "parameters": [ { "description": "Login/Register payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.LoginOrRegisterRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.LoginOrRegisterResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_user_delivery_http.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_user_delivery_http.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_user_delivery_http.ErrorResponse" } } } } } }, "definitions": { "domain.AdminLoginRequest": { "type": "object", "properties": { "password": { "type": "string" }, "username": { "type": "string" } } }, "domain.AdminLoginResponse": { "type": "object", "properties": { "admin_user": { "$ref": "#/definitions/domain.AdminUserInfo" }, "permissions": { "type": "array", "items": { "$ref": "#/definitions/domain.Permission" } }, "tokens": { "$ref": "#/definitions/domain.TokenPair" } } }, "domain.AdminUserInfo": { "type": "object", "properties": { "created_at": { "type": "string" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_name": { "type": "string" }, "permissions": { "type": "array", "items": { "$ref": "#/definitions/domain.Permission" } }, "roles": { "type": "array", "items": { "$ref": "#/definitions/domain.Role" } }, "status": { "$ref": "#/definitions/domain.Status" }, "updated_at": { "type": "string" }, "username": { "type": "string" } } }, "domain.AssignPermissionsToRoleRequest": { "type": "object", "properties": { "permission_ids": { "type": "array", "items": { "type": "integer" } }, "role_id": { "type": "integer" } } }, "domain.AssignPermissionsToRoleResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.CreateAdminUserRequest": { "type": "object", "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" }, "password": { "type": "string" }, "permissions": { "type": "array", "items": { "type": "integer" } }, "roles": { "type": "array", "items": { "type": "integer" } }, "status": { "type": "string" }, "username": { "type": "string" } } }, "domain.CreateCategoryResponse": { "type": "object", "properties": { "category": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductCategory" } } }, "domain.CreatePermissionRequest": { "type": "object", "properties": { "description": { "type": "string" }, "title": { "type": "string" } } }, "domain.CreatePermissionResponse": { "type": "object", "properties": { "permission": { "$ref": "#/definitions/domain.Permission" } } }, "domain.CreateProductOptionResponse": { "type": "object", "properties": { "product_option": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductOption" } } }, "domain.CreateProductResponse": { "type": "object", "properties": { "product": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Product" } } }, "domain.CreateProductVariantResponse": { "type": "object", "properties": { "variant": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductVariant" } } }, "domain.CreateRoleRequest": { "type": "object", "properties": { "description": { "type": "string" }, "title": { "type": "string" } } }, "domain.DeleteCategoryResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeleteFileResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeletePermissionResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeleteProductOptionResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeleteProductResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeleteProductVariantResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.FileInfo": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "integer" }, "mime_type": { "type": "string" }, "name": { "type": "string" }, "original_name": { "type": "string" }, "serve_key": { "type": "string" }, "size": { "type": "integer" }, "thumbnail_serve_key": { "type": "string" }, "thumbnail_url": { "type": "string" }, "type": { "$ref": "#/definitions/domain.FileType" }, "updated_at": { "type": "string" }, "url": { "type": "string" } } }, "domain.FileType": { "type": "string", "enum": ["image", "video"], "x-enum-varnames": ["FileTypeImage", "FileTypeVideo"] }, "domain.GetAllCategoriesResponse": { "type": "object", "properties": { "categories": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductCategory" } } } }, "domain.GetAllImagesResponse": { "type": "object", "properties": { "images": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } }, "total": { "type": "integer" } } }, "domain.GetAllPermissionsResponse": { "type": "object", "properties": { "permissions": { "type": "array", "items": { "$ref": "#/definitions/domain.Permission" } } } }, "domain.GetAllProductOptionsResponse": { "type": "object", "properties": { "product_options": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductOption" } }, "total": { "type": "integer" } } }, "domain.GetAllProductsResponse": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Product" } } } }, "domain.GetFilesResponse": { "type": "object", "properties": { "files": { "type": "array", "items": { "$ref": "#/definitions/domain.FileInfo" } }, "total": { "type": "integer" } } }, "domain.GetPermissionByIDResponse": { "type": "object", "properties": { "permission": { "$ref": "#/definitions/domain.Permission" } } }, "domain.GetProductAndVariantsImagesResponse": { "type": "object", "properties": { "images": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } }, "product_id": { "type": "integer" }, "variants": { "type": "array", "items": { "$ref": "#/definitions/domain.ProductVariantWithImages" } } } }, "domain.GetProductByIDResponse": { "type": "object", "properties": { "product": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Product" } } }, "domain.GetProductOptionByIDResponse": { "type": "object", "properties": { "product_option": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductOption" } } }, "domain.GetProductVariantsByProductIDResponse": { "type": "object", "properties": { "variants": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductVariant" } } } }, "domain.GetProductsByCategoryResponse": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Product" } } } }, "domain.GetProductsWithFiltersResponse": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Product" } } } }, "domain.GetRecommendedProductsResponse": { "type": "object", "properties": { "recommended_products": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Product" } } } }, "domain.LoginOrRegisterRequest": { "type": "object", "properties": { "otp_code": { "type": "string" }, "phone_number": { "type": "string" } } }, "domain.LoginOrRegisterResponse": { "type": "object", "properties": { "tokens": { "$ref": "#/definitions/domain.TokenPair" }, "user_info": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_user_domain.UserInfo" } } }, "domain.Maintenance": { "type": "object", "properties": { "content": { "type": "string" }, "description": { "type": "string" }, "image": { "type": "string" }, "title": { "type": "string" } } }, "domain.Option": { "type": "object", "properties": { "description": { "type": "string" }, "meta_title": { "type": "string" }, "title": { "type": "string" } } }, "domain.Permission": { "type": "object", "properties": { "created_at": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "integer" }, "title": { "type": "string" }, "updated_at": { "type": "string" } } }, "domain.ProductVariantWithImages": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "color": { "type": "string" }, "created_at": { "type": "string" }, "fee_percentage": { "type": "integer" }, "id": { "type": "integer" }, "images": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } }, "product_id": { "type": "integer" }, "profit_percentage": { "type": "integer" }, "size": { "type": "string" }, "updated_at": { "type": "string" }, "weight": { "type": "number" } } }, "domain.Role": { "type": "object", "properties": { "created_at": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "integer" }, "permissions": { "type": "array", "items": { "$ref": "#/definitions/domain.Permission" } }, "title": { "type": "string" }, "updated_at": { "type": "string" } } }, "domain.SendOTPRequest": { "type": "object", "properties": { "phone_number": { "type": "string" } } }, "domain.SendOTPResponse": { "type": "object", "properties": { "remaining_time": { "$ref": "#/definitions/time.Duration" } } }, "domain.Status": { "type": "string", "enum": ["active", "deactive"], "x-enum-varnames": ["StatusActive", "StatusDeactive"] }, "domain.TokenPair": { "type": "object", "properties": { "access_token": { "type": "string" }, "refresh_token": { "type": "string" } } }, "domain.UpdateAdminUserRequest": { "type": "object", "properties": { "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_name": { "type": "string" }, "password": { "type": "string" }, "permissions": { "type": "array", "items": { "type": "integer" } }, "roles": { "type": "array", "items": { "type": "integer" } }, "status": { "type": "string" }, "username": { "type": "string" } } }, "domain.UpdateCategoryResponse": { "type": "object", "properties": { "category": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductCategory" } } }, "domain.UpdateFileRequest": { "type": "object", "properties": { "name": { "type": "string" } } }, "domain.UpdateFileResponse": { "type": "object", "properties": { "file": { "$ref": "#/definitions/domain.FileInfo" } } }, "domain.UpdatePermissionRequest": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "integer" }, "title": { "type": "string" } } }, "domain.UpdatePermissionResponse": { "type": "object", "properties": { "permission": { "$ref": "#/definitions/domain.Permission" } } }, "domain.UpdateProductOptionResponse": { "type": "object", "properties": { "product_option": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductOption" } } }, "domain.UpdateProductResponse": { "type": "object", "properties": { "product": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Product" } } }, "domain.UpdateProductVariantResponse": { "type": "object", "properties": { "variant": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductVariant" } } }, "domain.UpdateRoleRequest": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "integer" }, "permissions": { "type": "array", "items": { "type": "integer" } }, "title": { "type": "string" } } }, "domain.UploadFileResponse": { "type": "object", "properties": { "file": { "$ref": "#/definitions/domain.FileInfo" } } }, "gitlab_com_mazane_beehive_mazane_application_admin_delivery_http.ErrorResponse": { "type": "object", "properties": { "error": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_file_delivery_http.ErrorResponse": { "type": "object", "properties": { "error": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_delivery_http.ErrorResponse": { "type": "object", "properties": { "error": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.CreateCategoryRequest": { "type": "object", "properties": { "name": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.CreateProductOptionRequest": { "type": "object", "properties": { "description": { "type": "string" }, "maintenance": { "$ref": "#/definitions/domain.Maintenance" }, "options": { "type": "array", "items": { "$ref": "#/definitions/domain.Option" } }, "title": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.CreateProductVariantRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "enabled": { "type": "boolean" }, "fee_percentage": { "type": "integer" }, "meta": { "type": "object", "additionalProperties": true }, "product_id": { "type": "integer" }, "profit_percentage": { "type": "integer" }, "size": { "type": "string" }, "stock_limit": { "type": "integer" }, "stock_managed": { "type": "boolean" }, "stock_number": { "type": "integer" }, "weight": { "type": "number" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.Image": { "type": "object", "properties": { "created_at": { "type": "string" }, "file_type": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "thumbnail_url": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.Product": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "created_at": { "type": "string" }, "description": { "type": "string" }, "design_style": { "type": "string" }, "enabled": { "type": "boolean" }, "id": { "type": "integer" }, "images": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } }, "name": { "type": "string" }, "product_categories": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductCategory" } }, "product_option": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductOption" }, "product_option_id": { "type": "integer" }, "product_variants": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.ProductVariant" } }, "total_sold": { "type": "integer" }, "type": { "type": "integer" }, "updated_at": { "type": "string" }, "weights": { "type": "array", "items": { "type": "number" } } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.ProductCategory": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "updated_at": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.ProductOption": { "type": "object", "properties": { "created_at": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "integer" }, "maintenance": { "$ref": "#/definitions/domain.Maintenance" }, "options": { "type": "array", "items": { "$ref": "#/definitions/domain.Option" } }, "title": { "type": "string" }, "updated_at": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.ProductVariant": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "color": { "type": "string" }, "created_at": { "type": "string" }, "enabled": { "type": "boolean" }, "fee_amount": { "type": "number" }, "fee_percentage": { "type": "integer" }, "id": { "type": "integer" }, "images": { "type": "array", "items": { "$ref": "#/definitions/gitlab_com_mazane_beehive_mazane_application_product_domain.Image" } }, "meta": { "type": "object", "additionalProperties": true }, "price_amount": { "description": "Pricing fields (calculated in response)", "type": "number" }, "product_id": { "type": "integer" }, "profit_amount": { "type": "number" }, "profit_percentage": { "type": "integer" }, "size": { "type": "string" }, "stock_limit": { "type": "integer" }, "stock_managed": { "type": "boolean" }, "stock_number": { "type": "integer" }, "tax_amount": { "type": "number" }, "tax_percentage": { "type": "number" }, "updated_at": { "type": "string" }, "weight": { "type": "number" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.UpdateCategoryRequest": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.UpdateProductOptionRequest": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "integer" }, "maintenance": { "$ref": "#/definitions/domain.Maintenance" }, "options": { "type": "array", "items": { "$ref": "#/definitions/domain.Option" } }, "title": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_product_domain.UpdateProductVariantRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "enabled": { "type": "boolean" }, "fee_percentage": { "type": "integer" }, "id": { "type": "integer" }, "meta": { "type": "object", "additionalProperties": true }, "profit_percentage": { "type": "integer" }, "size": { "type": "string" }, "stock_limit": { "type": "integer" }, "stock_managed": { "type": "boolean" }, "stock_number": { "type": "integer" }, "weight": { "type": "number" } } }, "gitlab_com_mazane_beehive_mazane_application_user_delivery_http.ErrorResponse": { "type": "object", "properties": { "error": { "type": "string" } } }, "gitlab_com_mazane_beehive_mazane_application_user_domain.UserInfo": { "type": "object", "properties": { "avatar": { "type": "string" }, "email": { "type": "string" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_name": { "type": "string" }, "national_code": { "type": "string" }, "phone_number": { "type": "string" }, "verified": { "type": "boolean" } } }, "http.AssignImagesToProductRequest": { "type": "object", "properties": { "image_ids": { "type": "array", "items": { "type": "integer" } } } }, "http.AssignImagesToProductResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "http.AssignImagesToVariantRequest": { "type": "object", "properties": { "image_ids": { "type": "array", "items": { "type": "integer" } } } }, "http.AssignImagesToVariantResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "http.CreateImageRequest": { "type": "object", "properties": { "file_type": { "type": "string" }, "name": { "type": "string" }, "thumbnail_url": { "type": "string" }, "url": { "type": "string" } } }, "http.CreateProductRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "category_ids": { "type": "array", "items": { "type": "integer" } }, "description": { "type": "string" }, "design_style": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "product_option_id": { "type": "integer" }, "total_sold": { "type": "integer" }, "type": { "type": "integer" }, "variants": { "type": "array", "items": { "$ref": "#/definitions/http.CreateVariantRequest" } } } }, "http.CreateVariantRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "enabled": { "type": "boolean" }, "fee_percentage": { "type": "integer" }, "meta": { "type": "object", "additionalProperties": true }, "profit_percentage": { "type": "integer" }, "stock_limit": { "type": "integer" }, "stock_managed": { "type": "boolean" }, "stock_number": { "type": "integer" }, "weight": { "type": "number" } } }, "http.SetTotalSoldRequest": { "type": "object", "properties": { "total_sold": { "type": "integer" } } }, "http.SetTotalSoldResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "http.UpdateImageRequest": { "type": "object", "properties": { "file_type": { "type": "string" }, "name": { "type": "string" }, "thumbnail_url": { "type": "string" }, "url": { "type": "string" } } }, "http.UpdateProductRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "category_ids": { "type": "array", "items": { "type": "integer" } }, "description": { "type": "string" }, "design_style": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "product_option_id": { "type": "integer" }, "total_sold": { "type": "integer" }, "type": { "type": "integer" }, "variants": { "type": "array", "items": { "$ref": "#/definitions/http.UpdateVariantRequest" } } } }, "http.UpdateVariantRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "enabled": { "type": "boolean" }, "fee_percentage": { "type": "integer" }, "id": { "type": "integer" }, "meta": { "type": "object", "additionalProperties": true }, "profit_percentage": { "type": "integer" }, "stock_limit": { "type": "integer" }, "stock_managed": { "type": "boolean" }, "stock_number": { "type": "integer" }, "weight": { "type": "number" } } }, "time.Duration": { "type": "integer", "enum": [ -9223372036854775808, 9223372036854775807, 1, 1000, 1000000, 1000000000, 60000000000, 3600000000000 ], "x-enum-varnames": [ "minDuration", "maxDuration", "Nanosecond", "Microsecond", "Millisecond", "Second", "Minute", "Hour" ] } }, "securityDefinitions": { "AdminAuth": { "description": "Type \"Bearer\" followed by a space and JWT token for admin access.", "type": "apiKey", "name": "Authorization", "in": "header" }, "BearerAuth": { "description": "Type \"Bearer\" followed by a space and JWT token.", "type": "apiKey", "name": "Authorization", "in": "header" } } }