{ "swagger": "2.0", "info": { "contact": {} }, "paths": { "/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/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" } } } } }, "/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/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", "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", "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/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 existing admin user", "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", "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/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/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/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/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/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 details", "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/domain.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/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/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/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 image by its ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "images" ], "summary": "Delete image", "parameters": [ { "type": "string", "description": "Image ID", "name": "imageId", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" }, "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/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/{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 new details", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "products" ], "summary": "Update product", "parameters": [ { "type": "string", "description": "Product ID", "name": "id", "in": "path", "required": true }, { "description": "Product update payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.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/{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/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" } } } }, "post": { "description": "Creates a new image for a specific product", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "images" ], "summary": "Create a new product image", "parameters": [ { "type": "string", "description": "Product ID", "name": "productId", "in": "path", "required": true }, { "description": "Image creation payload", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/http.CreateImageRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/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/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" } } } } }, "/api/v1/users/otp/send": { "post": { "description": "Generates and sends an OTP code to the specified phone number", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Send OTP to phone number", "parameters": [ { "description": "Phone number", "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" } } } } } }, "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.CreateAdminUserRequest": { "type": "object", "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" }, "password": { "type": "string" }, "status": { "type": "string" }, "username": { "type": "string" } } }, "domain.CreateCategoryRequest": { "type": "object", "properties": { "name": { "type": "string" } } }, "domain.CreateCategoryResponse": { "type": "object", "properties": { "category": { "$ref": "#/definitions/domain.ProductCategory" } } }, "domain.CreatePermissionRequest": { "type": "object", "properties": { "description": { "type": "string" }, "title": { "type": "string" } } }, "domain.CreatePermissionResponse": { "type": "object", "properties": { "permission": { "$ref": "#/definitions/domain.Permission" } } }, "domain.CreateProductRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "category_ids": { "type": "array", "items": { "type": "integer" } }, "description": { "type": "string" }, "name": { "type": "string" }, "type": { "type": "integer" } } }, "domain.CreateProductResponse": { "type": "object", "properties": { "product": { "$ref": "#/definitions/domain.Product" } } }, "domain.CreateProductVariantRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "fee_percentage": { "type": "integer" }, "product_id": { "type": "integer" }, "profit_percentage": { "type": "integer" }, "weight": { "type": "number" } } }, "domain.CreateProductVariantResponse": { "type": "object", "properties": { "variant": { "$ref": "#/definitions/domain.ProductVariant" } } }, "domain.CreateRoleRequest": { "type": "object", "properties": { "description": { "type": "string" }, "title": { "type": "string" } } }, "domain.DeleteCategoryResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeletePermissionResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeleteProductResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.DeleteProductVariantResponse": { "type": "object", "properties": { "message": { "type": "string" } } }, "domain.GetAllCategoriesResponse": { "type": "object", "properties": { "categories": { "type": "array", "items": { "$ref": "#/definitions/domain.ProductCategory" } } } }, "domain.GetAllPermissionsResponse": { "type": "object", "properties": { "permissions": { "type": "array", "items": { "$ref": "#/definitions/domain.Permission" } } } }, "domain.GetAllProductsResponse": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/definitions/domain.Product" } } } }, "domain.GetPermissionByIDResponse": { "type": "object", "properties": { "permission": { "$ref": "#/definitions/domain.Permission" } } }, "domain.GetProductByIDResponse": { "type": "object", "properties": { "product": { "$ref": "#/definitions/domain.Product" } } }, "domain.GetProductVariantsByProductIDResponse": { "type": "object", "properties": { "variants": { "type": "array", "items": { "$ref": "#/definitions/domain.ProductVariant" } } } }, "domain.GetProductsByCategoryResponse": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/definitions/domain.Product" } } } }, "domain.GetProductsWithFiltersResponse": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/definitions/domain.Product" } } } }, "domain.Image": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "updated_at": { "type": "string" }, "url": { "type": "string" } } }, "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/domain.UserInfo" } } }, "domain.Permission": { "type": "object", "properties": { "created_at": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "integer" }, "title": { "type": "string" }, "updated_at": { "type": "string" } } }, "domain.Product": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "created_at": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "integer" }, "images": { "type": "array", "items": { "$ref": "#/definitions/domain.Image" } }, "name": { "type": "string" }, "product_categories": { "type": "array", "items": { "$ref": "#/definitions/domain.ProductCategory" } }, "product_variants": { "type": "array", "items": { "$ref": "#/definitions/domain.ProductVariant" } }, "type": { "type": "integer" }, "updated_at": { "type": "string" } } }, "domain.ProductCategory": { "type": "object", "properties": { "created_at": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "updated_at": { "type": "string" } } }, "domain.ProductVariant": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "created_at": { "type": "string" }, "fee_percentage": { "type": "integer" }, "id": { "type": "integer" }, "images": { "type": "array", "items": { "$ref": "#/definitions/domain.Image" } }, "product_id": { "type": "integer" }, "profit_percentage": { "type": "integer" }, "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" }, "status": { "type": "string" }, "username": { "type": "string" } } }, "domain.UpdateCategoryRequest": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } }, "domain.UpdateCategoryResponse": { "type": "object", "properties": { "category": { "$ref": "#/definitions/domain.ProductCategory" } } }, "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.UpdateProductRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "category_ids": { "type": "array", "items": { "type": "integer" } }, "description": { "type": "string" }, "id": { "type": "integer" }, "name": { "type": "string" }, "type": { "type": "integer" } } }, "domain.UpdateProductResponse": { "type": "object", "properties": { "product": { "$ref": "#/definitions/domain.Product" } } }, "domain.UpdateProductVariantRequest": { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": true }, "fee_percentage": { "type": "integer" }, "id": { "type": "integer" }, "profit_percentage": { "type": "integer" }, "weight": { "type": "number" } } }, "domain.UpdateProductVariantResponse": { "type": "object", "properties": { "variant": { "$ref": "#/definitions/domain.ProductVariant" } } }, "domain.UpdateRoleRequest": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "integer" }, "title": { "type": "string" } } }, "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" } } }, "gitlab_com_mazane_beehive_mazane_application_admin_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_user_delivery_http.ErrorResponse": { "type": "object", "properties": { "error": { "type": "string" } } }, "http.CreateImageRequest": { "type": "object", "properties": { "name": { "type": "string" }, "url": { "type": "string" } } }, "http.UpdateImageRequest": { "type": "object", "properties": { "name": { "type": "string" }, "url": { "type": "string" } } }, "time.Duration": { "type": "integer", "enum": [ -9223372036854775808, 9223372036854775807, 1, 1000, 1000000, 1000000000, 60000000000, 3600000000000 ], "x-enum-varnames": [ "minDuration", "maxDuration", "Nanosecond", "Microsecond", "Millisecond", "Second", "Minute", "Hour" ] } } }