// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { "description": "{{escape .Description}}", "title": "{{.Title}}", "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": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { "/admin/v1/change-password": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Change current user password", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Change password", "parameters": [ { "description": "Password change data", "name": "password", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.ChangePasswordForm" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a paginated list of companies with advanced filtering options including search, type, status, industry, verification status, tags, and business criteria. Supports sorting and pagination.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "List companies with filters and pagination", "parameters": [ { "type": "string", "description": "Search term to filter companies by name, description, or industry", "name": "search", "in": "query" }, { "enum": [ "private", "public", "government", "ngo", "startup" ], "type": "string", "description": "Filter by company type", "name": "type", "in": "query" }, { "enum": [ "active", "inactive", "suspended", "pending" ], "type": "string", "description": "Filter by company status", "name": "status", "in": "query" }, { "type": "string", "description": "Filter by industry", "name": "industry", "in": "query" }, { "type": "boolean", "description": "Filter by verification status", "name": "is_verified", "in": "query" }, { "type": "boolean", "description": "Filter by compliance status", "name": "is_compliant", "in": "query" }, { "type": "boolean", "description": "Filter by customer assignment status", "name": "has_customer", "in": "query" }, { "type": "array", "description": "Filter by CPV codes", "name": "cpv_codes", "in": "query" }, { "type": "array", "description": "Filter by categories", "name": "categories", "in": "query" }, { "type": "array", "description": "Filter by keywords", "name": "keywords", "in": "query" }, { "type": "array", "description": "Filter by specializations", "name": "specializations", "in": "query" }, { "type": "integer", "description": "Minimum employee count", "name": "employee_count_min", "in": "query" }, { "type": "integer", "description": "Maximum employee count", "name": "employee_count_max", "in": "query" }, { "type": "number", "description": "Minimum annual revenue", "name": "annual_revenue_min", "in": "query" }, { "type": "number", "description": "Maximum annual revenue", "name": "annual_revenue_max", "in": "query" }, { "type": "integer", "description": "Minimum founded year", "name": "founded_year_min", "in": "query" }, { "type": "integer", "description": "Maximum founded year", "name": "founded_year_max", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 20, "description": "Number of companies per page (1-100)", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of companies to skip for pagination", "name": "offset", "in": "query" }, { "enum": [ "name", "type", "industry", "created_at", "updated_at", "status", "employee_count", "annual_revenue" ], "type": "string", "default": "created_at", "description": "Field to sort by", "name": "sort_by", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "default": "desc", "description": "Sort order", "name": "sort_order", "in": "query" } ], "responses": { "200": { "description": "Companies retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/company.CompanyListResponse" } } } ] } }, "400": { "description": "Bad request - Invalid query parameters", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid query parameters", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new company with comprehensive information including business details, address, tags, and customer assignment. This endpoint is used by the web panel for full company registration.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Create a new company", "parameters": [ { "description": "Company information including type, business details, address, tags, and optional customer assignment", "name": "company", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.CreateCompanyForm" } } ], "responses": { "201": { "description": "Company created successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/company.CompanyResponse" } } } ] } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "409": { "description": "Conflict - Company with this name/registration/tax ID already exists", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/industry/{industry}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve companies filtered by their industry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Get companies by industry", "parameters": [ { "type": "string", "description": "Industry", "name": "industry", "in": "path", "required": true }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 20, "description": "Number of companies per page (1-100)", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of companies to skip for pagination", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Companies retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/company.CompanyResponse" } }, "meta": { "$ref": "#/definitions/response.Meta" } } } ] } }, "400": { "description": "Bad request - Invalid industry", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/search": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Search companies with advanced filtering capabilities including tags, business criteria, and location", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Advanced search for companies", "parameters": [ { "type": "string", "description": "Search query", "name": "q", "in": "query" }, { "type": "array", "description": "CPV codes filter", "name": "cpv_codes", "in": "query" }, { "type": "array", "description": "Categories filter", "name": "categories", "in": "query" }, { "type": "array", "description": "Keywords filter", "name": "keywords", "in": "query" }, { "type": "array", "description": "Specializations filter", "name": "specializations", "in": "query" }, { "type": "string", "description": "Industry filter", "name": "industry", "in": "query" }, { "type": "string", "description": "Location filter", "name": "location", "in": "query" }, { "type": "integer", "description": "Minimum employees", "name": "min_employees", "in": "query" }, { "type": "integer", "description": "Maximum employees", "name": "max_employees", "in": "query" }, { "type": "number", "description": "Minimum revenue", "name": "min_revenue", "in": "query" }, { "type": "number", "description": "Maximum revenue", "name": "max_revenue", "in": "query" }, { "type": "boolean", "description": "Verification status", "name": "is_verified", "in": "query" }, { "type": "boolean", "description": "Compliance status", "name": "is_compliant", "in": "query" }, { "type": "integer", "default": 20, "description": "Limit", "name": "limit", "in": "query" }, { "type": "integer", "default": 0, "description": "Offset", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Companies search completed", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/company.CompanyListResponse" } } } ] } }, "400": { "description": "Bad request - Invalid query parameters", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid query parameters", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/stats": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get comprehensive company statistics for dashboard", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Get company statistics", "responses": { "200": { "description": "Company statistics retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/company.CompanyStatsResponse" } } } ] } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/status/{status}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve companies filtered by their status (active, inactive, suspended, pending)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Get companies by status", "parameters": [ { "enum": [ "active", "inactive", "suspended", "pending" ], "type": "string", "description": "Company status", "name": "status", "in": "path", "required": true }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 20, "description": "Number of companies per page (1-100)", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of companies to skip for pagination", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Companies retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/company.CompanyResponse" } }, "meta": { "$ref": "#/definitions/response.Meta" } } } ] } }, "400": { "description": "Bad request - Invalid company status", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/type/{type}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve companies filtered by their type (private, public, government, ngo, startup)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Get companies by type", "parameters": [ { "enum": [ "private", "public", "government", "ngo", "startup" ], "type": "string", "description": "Company type", "name": "type", "in": "path", "required": true }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 20, "description": "Number of companies per page (1-100)", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of companies to skip for pagination", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Companies retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/company.CompanyResponse" } }, "meta": { "$ref": "#/definitions/response.Meta" } } } ] } }, "400": { "description": "Bad request - Invalid company type", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve detailed company information by company ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Get company by ID", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Company retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/company.CompanyResponse" } } } ] } }, "400": { "description": "Bad request - Invalid company ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update company information including business details, address, tags, and customer assignment", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Update company information", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Company update information", "name": "company", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.UpdateCompanyForm" } } ], "responses": { "200": { "description": "Company updated successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/company.CompanyResponse" } } } ] } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "409": { "description": "Conflict - Company with this name/registration/tax ID already exists", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Soft delete a company by setting status to inactive", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Delete company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Company deleted successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid company ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/activate": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Activate a suspended company account", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Activate company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Company activated successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid company ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/assign-customer": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Assign a customer to a company for login credentials", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Assign customer to company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Customer assignment information", "name": "assignment", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.AssignCustomerForm" } } ], "responses": { "200": { "description": "Customer assigned successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "409": { "description": "Conflict - Customer already assigned", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/status": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update company account status (active, inactive, suspended, pending)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Update company status", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "New company status", "name": "status", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.UpdateCompanyStatusForm" } } ], "responses": { "200": { "description": "Company status updated successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/suspend": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Suspend a company account with reason", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Suspend company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Suspension information", "name": "suspension", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.SuspendCompanyForm" } } ], "responses": { "200": { "description": "Company suspended successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/tags": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update company tags (CPV, categories, keywords, specializations, certifications)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Update company tags", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Tags update information", "name": "tags", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.UpdateCompanyTagsForm" } } ], "responses": { "200": { "description": "Company tags updated successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/tags/add": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Add specific tags to a company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Add tags to company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Tags to add", "name": "tags", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.AddTagsForm" } } ], "responses": { "200": { "description": "Tags added successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/tags/remove": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Remove specific tags from a company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Remove tags from company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Tags to remove", "name": "tags", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.RemoveTagsForm" } } ], "responses": { "200": { "description": "Tags removed successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/unassign-customer": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Remove customer assignment from a company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Unassign customer from company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Customer unassigned successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid company ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/verification": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update company verification and compliance status", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Update company verification status", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Verification status update", "name": "verification", "in": "body", "required": true, "schema": { "$ref": "#/definitions/company.UpdateCompanyVerificationForm" } } ], "responses": { "200": { "description": "Company verification updated successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/companies/{id}/verify": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Mark a company as verified", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Companies-Admin" ], "summary": "Verify company", "parameters": [ { "type": "string", "description": "Company ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Company verified successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid company ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Company not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a paginated list of customers with advanced filtering options including search, type, status, company, industry, verification status, and compliance status. Supports sorting and pagination.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "List customers with filters and pagination", "parameters": [ { "type": "string", "description": "Search term to filter customers by name, email, or company name", "name": "search", "in": "query" }, { "enum": [ "individual", "company", "government" ], "type": "string", "description": "Filter by customer type", "name": "type", "in": "query" }, { "enum": [ "active", "inactive", "suspended", "pending" ], "type": "string", "description": "Filter by customer status", "name": "status", "in": "query" }, { "type": "string", "format": "uuid", "description": "Filter by company ID", "name": "company_id", "in": "query" }, { "type": "string", "description": "Filter by industry", "name": "industry", "in": "query" }, { "type": "boolean", "description": "Filter by verification status", "name": "is_verified", "in": "query" }, { "type": "boolean", "description": "Filter by compliance status", "name": "is_compliant", "in": "query" }, { "type": "string", "description": "Filter by preferred language", "name": "language", "in": "query" }, { "type": "string", "description": "Filter by preferred currency", "name": "currency", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 20, "description": "Number of customers per page (1-100)", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of customers to skip for pagination", "name": "offset", "in": "query" }, { "enum": [ "email", "company_name", "created_at", "updated_at", "status" ], "type": "string", "default": "created_at", "description": "Field to sort by", "name": "sort_by", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "default": "desc", "description": "Sort order", "name": "sort_order", "in": "query" } ], "responses": { "200": { "description": "Customers retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/customer.CustomerListResponse" } } } ] } }, "400": { "description": "Bad request - Invalid query parameters", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid query parameters", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new customer with comprehensive information including personal details, company information, address, and business details. This endpoint is used by the web panel for full customer registration.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Create a new customer", "parameters": [ { "description": "Customer information including type (individual|company|government), personal details, company info, address, and business details", "name": "customer", "in": "body", "required": true, "schema": { "$ref": "#/definitions/customer.CreateCustomerForm" } } ], "responses": { "201": { "description": "Customer created successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/customer.CustomerResponse" } } } ] } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "409": { "description": "Conflict - Customer with this email/company already exists", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/company/{companyId}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all customers associated with a specific company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Get customers by company ID", "parameters": [ { "type": "string", "description": "Company ID", "name": "companyId", "in": "path", "required": true }, { "type": "integer", "description": "Number of customers to return (default: 10, max: 100)", "name": "limit", "in": "query" }, { "type": "integer", "description": "Number of customers to skip (default: 0)", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Customers retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/customer.CustomerResponse" } } } } ] } }, "400": { "description": "Bad request - Invalid company ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/status/{status}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve customers filtered by their account status (active, inactive, suspended, or pending). Useful for administrative monitoring and management.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Get customers by status", "parameters": [ { "enum": [ "active", "inactive", "suspended", "pending" ], "type": "string", "description": "Customer status", "name": "status", "in": "path", "required": true }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 20, "description": "Number of customers per page (1-100)", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of customers to skip for pagination", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Customers retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/customer.CustomerResponse" } }, "meta": { "$ref": "#/definitions/response.Meta" } } } ] } }, "400": { "description": "Bad request - Invalid customer status", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/type/{type}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve customers filtered by their type (individual, company, or government). Useful for administrative reporting and management.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Get customers by type", "parameters": [ { "enum": [ "individual", "company", "government" ], "type": "string", "description": "Customer type", "name": "type", "in": "path", "required": true }, { "maximum": 100, "minimum": 1, "type": "integer", "default": 20, "description": "Number of customers per page (1-100)", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "default": 0, "description": "Number of customers to skip for pagination", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Customers retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/customer.CustomerResponse" } }, "meta": { "$ref": "#/definitions/response.Meta" } } } ] } }, "400": { "description": "Bad request - Invalid customer type", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve detailed customer information by customer ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Get customer by ID", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Customer retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/customer.CustomerResponse" } } } ] } }, "400": { "description": "Bad request - Invalid customer ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update customer information including personal details, company information, address, and business details", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Update customer information", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true }, { "description": "Updated customer information", "name": "customer", "in": "body", "required": true, "schema": { "$ref": "#/definitions/customer.UpdateCustomerForm" } } ], "responses": { "200": { "description": "Customer updated successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/customer.CustomerResponse" } } } ] } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "409": { "description": "Conflict - Customer with this email/company already exists", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Soft delete a customer by setting status to inactive", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Delete customer", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Customer deleted successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid customer ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/{id}/activate": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Activate a suspended customer account", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Activate customer", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Customer activated successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid customer ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/{id}/status": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update customer account status (active, inactive, suspended, pending)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Update customer status", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true }, { "description": "New customer status", "name": "status", "in": "body", "required": true, "schema": { "$ref": "#/definitions/customer.UpdateCustomerStatusForm" } } ], "responses": { "200": { "description": "Customer status updated successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/{id}/suspend": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Suspend a customer account with optional reason", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Suspend customer", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true }, { "description": "Suspension information", "name": "suspension", "in": "body", "required": true, "schema": { "$ref": "#/definitions/customer.SuspendCustomerForm" } } ], "responses": { "200": { "description": "Customer suspended successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/{id}/verification": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update customer verification and compliance status", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Update customer verification status", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true }, { "description": "Verification status update", "name": "verification", "in": "body", "required": true, "schema": { "$ref": "#/definitions/customer.UpdateCustomerVerificationForm" } } ], "responses": { "200": { "description": "Customer verification updated successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/customers/{id}/verify": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Mark a customer as verified", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Admin" ], "summary": "Verify customer", "parameters": [ { "type": "string", "description": "Customer ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Customer verified successfully", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad request - Invalid customer ID", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/health": { "get": { "description": "Get server health status", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Health" ], "summary": "Health check", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/main.HealthResponse" } } } } }, "/admin/v1/login": { "post": { "description": "Authenticate user with username and password", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authorization" ], "summary": "Login user", "parameters": [ { "description": "Login credentials", "name": "login", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.LoginForm" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.AuthResponse" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/logout": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Logout current user and invalidate tokens", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Logout user", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/profile": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get current user profile information", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get user profile", "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.UserResponse" } } } ] } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update current user profile information", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update user profile", "parameters": [ { "description": "Profile update data", "name": "profile", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.UpdateUserForm" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.UserResponse" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/refresh-token": { "post": { "description": "Refresh access token using refresh token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authorization" ], "summary": "Refresh access token", "parameters": [ { "description": "Refresh token", "name": "refresh", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.RefreshTokenForm" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.AuthResponse" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/reset-password": { "post": { "description": "Send password reset email to user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authorization" ], "summary": "Reset password", "parameters": [ { "description": "Password reset request", "name": "reset", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.ResetPasswordForm" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/users": { "get": { "security": [ { "BearerAuth": [] } ], "description": "List users with search and filters (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "List users", "parameters": [ { "type": "string", "description": "Search term", "name": "search", "in": "query" }, { "type": "string", "description": "User status filter", "name": "status", "in": "query" }, { "type": "string", "description": "User role filter", "name": "role", "in": "query" }, { "type": "string", "description": "Company ID filter", "name": "company_id", "in": "query" }, { "type": "integer", "description": "Limit results", "name": "limit", "in": "query" }, { "type": "integer", "description": "Offset results", "name": "offset", "in": "query" }, { "type": "string", "description": "Sort field", "name": "sort_by", "in": "query" }, { "type": "string", "description": "Sort order", "name": "sort_order", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.UserListResponse" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new user (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Create user", "parameters": [ { "description": "User creation data", "name": "user", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.CreateUserForm" } } ], "responses": { "201": { "description": "Created", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.UserResponse" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/users/company/{company_id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get users belonging to a specific company (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get users by company ID", "parameters": [ { "type": "string", "description": "Company ID", "name": "company_id", "in": "path", "required": true }, { "type": "integer", "description": "Limit results", "name": "limit", "in": "query" }, { "type": "integer", "description": "Offset results", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Users with pagination metadata", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": true } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/users/role/{role}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get users with a specific role (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get users by role", "parameters": [ { "type": "string", "description": "User role", "name": "role", "in": "path", "required": true }, { "type": "integer", "description": "Limit results", "name": "limit", "in": "query" }, { "type": "integer", "description": "Offset results", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "Users with pagination metadata", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": true } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/users/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get user details by ID (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get user by ID", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.UserResponse" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update user information (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update user", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true }, { "description": "User update data", "name": "user", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.UpdateUserForm" } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/user.UserResponse" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a user (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Delete user", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/users/{id}/role": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update user role (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update user role", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true }, { "description": "Role update data", "name": "role", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.UpdateUserRoleForm" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/admin/v1/users/{id}/status": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Update user account status (admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update user status", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true }, { "description": "Status update data", "name": "status", "in": "body", "required": true, "schema": { "$ref": "#/definitions/user.UpdateUserStatusForm" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/login": { "post": { "description": "Authenticate customer with username (email) and password. Returns access token, refresh token, and customer information upon successful authentication.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Authorization" ], "summary": "Customer login", "parameters": [ { "description": "Login credentials (username/email and password)", "name": "login", "in": "body", "required": true, "schema": { "$ref": "#/definitions/customer.LoginForm" } } ], "responses": { "200": { "description": "Login successful", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/customer.AuthResponse" } } } ] } }, "400": { "description": "Bad request - Invalid input data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized - Invalid credentials or inactive account", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/logout": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Logout customer and invalidate access token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Authorization" ], "summary": "Customer logout", "responses": { "200": { "description": "Logout successful", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized - Invalid or missing token", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/profile": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve current customer profile information", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Authorization" ], "summary": "Get customer profile", "responses": { "200": { "description": "Profile retrieved successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/customer.CustomerResponse" } } } ] } }, "401": { "description": "Unauthorized - Invalid or missing token", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "404": { "description": "Not found - Customer not found", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/refresh-token": { "post": { "description": "Refresh access token using a valid refresh token. This allows customers to maintain their session without re-authentication.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Customers-Authorization" ], "summary": "Refresh customer access token", "parameters": [ { "description": "Refresh token for generating new access token", "name": "refresh", "in": "body", "required": true, "schema": { "$ref": "#/definitions/customer.RefreshTokenForm" } } ], "responses": { "200": { "description": "Token refreshed successfully", "schema": { "allOf": [ { "$ref": "#/definitions/response.APIResponse" }, { "type": "object", "properties": { "data": { "$ref": "#/definitions/customer.AuthResponse" } } } ] } }, "400": { "description": "Bad request - Invalid refresh token or feature not implemented", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "401": { "description": "Unauthorized - Invalid or expired refresh token", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "422": { "description": "Validation error - Invalid request data", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } } }, "definitions": { "company.AddTagsForm": { "type": "object", "properties": { "categories": { "type": "array", "items": { "type": "string" } }, "certifications": { "type": "array", "items": { "type": "string" } }, "cpv_codes": { "type": "array", "items": { "type": "string" } }, "keywords": { "type": "array", "items": { "type": "string" } }, "specializations": { "type": "array", "items": { "type": "string" } } } }, "company.Address": { "type": "object", "properties": { "city": { "type": "string" }, "country": { "type": "string" }, "postal_code": { "type": "string" }, "state": { "type": "string" }, "street": { "type": "string" } } }, "company.AddressForm": { "type": "object", "properties": { "city": { "type": "string" }, "country": { "type": "string" }, "postal_code": { "type": "string" }, "state": { "type": "string" }, "street": { "type": "string" } } }, "company.AssignCustomerForm": { "type": "object", "properties": { "customer_id": { "type": "string" } } }, "company.CPVCodeCount": { "type": "object", "properties": { "count": { "type": "integer" }, "cpv_code": { "type": "string" } } }, "company.CategoryCount": { "type": "object", "properties": { "category": { "type": "string" }, "count": { "type": "integer" } } }, "company.CompanyListResponse": { "type": "object", "properties": { "companies": { "type": "array", "items": { "$ref": "#/definitions/company.CompanyResponse" } }, "limit": { "type": "integer" }, "offset": { "type": "integer" }, "total": { "type": "integer" }, "total_pages": { "type": "integer" } } }, "company.CompanyResponse": { "type": "object", "properties": { "address": { "$ref": "#/definitions/company.Address" }, "annual_revenue": { "type": "number" }, "compliance_notes": { "type": "string" }, "contact_person": { "$ref": "#/definitions/company.ContactPerson" }, "created_at": { "type": "integer" }, "created_by": { "type": "string" }, "currency": { "type": "string" }, "customer_id": { "type": "string" }, "description": { "type": "string" }, "email": { "type": "string" }, "employee_count": { "type": "integer" }, "founded_year": { "type": "integer" }, "id": { "type": "string" }, "industry": { "type": "string" }, "is_compliant": { "type": "boolean" }, "is_verified": { "type": "boolean" }, "language": { "type": "string" }, "name": { "type": "string" }, "phone": { "type": "string" }, "registration_number": { "type": "string" }, "status": { "type": "string" }, "tags": { "$ref": "#/definitions/company.CompanyTags" }, "tax_id": { "type": "string" }, "timezone": { "type": "string" }, "type": { "type": "string" }, "updated_at": { "type": "integer" }, "updated_by": { "type": "string" }, "website": { "type": "string" } } }, "company.CompanyStatsResponse": { "type": "object", "properties": { "active_companies": { "type": "integer" }, "companies_by_industry": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } }, "companies_by_status": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } }, "companies_by_type": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } }, "companies_with_customer": { "type": "integer" }, "top_categories": { "type": "array", "items": { "$ref": "#/definitions/company.CategoryCount" } }, "top_cpv_codes": { "type": "array", "items": { "$ref": "#/definitions/company.CPVCodeCount" } }, "total_companies": { "type": "integer" }, "verified_companies": { "type": "integer" } } }, "company.CompanyTags": { "type": "object", "properties": { "categories": { "description": "Categories", "type": "array", "items": { "type": "string" } }, "certifications": { "description": "Certifications", "type": "array", "items": { "type": "string" } }, "cpv_codes": { "description": "CPV codes (Common Procurement Vocabulary)", "type": "array", "items": { "type": "string" } }, "keywords": { "description": "Keywords for search and matching", "type": "array", "items": { "type": "string" } }, "specializations": { "description": "Specializations", "type": "array", "items": { "type": "string" } } } }, "company.CompanyTagsForm": { "type": "object", "properties": { "categories": { "type": "array", "items": { "type": "string" } }, "certifications": { "type": "array", "items": { "type": "string" } }, "cpv_codes": { "type": "array", "items": { "type": "string" } }, "keywords": { "type": "array", "items": { "type": "string" } }, "specializations": { "type": "array", "items": { "type": "string" } } } }, "company.ContactPerson": { "type": "object", "properties": { "email": { "type": "string" }, "first_name": { "type": "string" }, "full_name": { "type": "string" }, "is_primary": { "type": "boolean" }, "last_name": { "type": "string" }, "mobile": { "type": "string" }, "phone": { "type": "string" }, "position": { "type": "string" } } }, "company.ContactPersonForm": { "type": "object", "properties": { "email": { "type": "string" }, "first_name": { "type": "string" }, "full_name": { "type": "string" }, "is_primary": { "type": "boolean" }, "last_name": { "type": "string" }, "mobile": { "type": "string" }, "phone": { "type": "string" }, "position": { "type": "string" } } }, "company.CreateCompanyForm": { "type": "object", "properties": { "address": { "description": "Address information", "allOf": [ { "$ref": "#/definitions/company.AddressForm" } ] }, "annual_revenue": { "type": "number" }, "contact_person": { "description": "Contact information", "allOf": [ { "$ref": "#/definitions/company.ContactPersonForm" } ] }, "currency": { "type": "string" }, "customer_id": { "description": "Customer assignment (for login credentials)", "type": "string" }, "description": { "type": "string" }, "email": { "type": "string" }, "employee_count": { "description": "Business information", "type": "integer" }, "founded_year": { "type": "integer" }, "industry": { "type": "string" }, "language": { "description": "Settings", "type": "string" }, "name": { "type": "string" }, "phone": { "type": "string" }, "registration_number": { "type": "string" }, "tags": { "description": "Tags for categorization and search", "allOf": [ { "$ref": "#/definitions/company.CompanyTagsForm" } ] }, "tax_id": { "type": "string" }, "timezone": { "type": "string" }, "type": { "type": "string" }, "website": { "type": "string" } } }, "company.RemoveTagsForm": { "type": "object", "properties": { "categories": { "type": "array", "items": { "type": "string" } }, "certifications": { "type": "array", "items": { "type": "string" } }, "cpv_codes": { "type": "array", "items": { "type": "string" } }, "keywords": { "type": "array", "items": { "type": "string" } }, "specializations": { "type": "array", "items": { "type": "string" } } } }, "company.SuspendCompanyForm": { "type": "object", "properties": { "reason": { "type": "string" } } }, "company.UpdateCompanyForm": { "type": "object", "properties": { "address": { "description": "Address information", "allOf": [ { "$ref": "#/definitions/company.AddressForm" } ] }, "annual_revenue": { "type": "number" }, "contact_person": { "description": "Contact information", "allOf": [ { "$ref": "#/definitions/company.ContactPersonForm" } ] }, "currency": { "type": "string" }, "customer_id": { "description": "Customer assignment (for login credentials)", "type": "string" }, "description": { "type": "string" }, "email": { "type": "string" }, "employee_count": { "description": "Business information", "type": "integer" }, "founded_year": { "type": "integer" }, "industry": { "type": "string" }, "language": { "description": "Settings", "type": "string" }, "name": { "type": "string" }, "phone": { "type": "string" }, "registration_number": { "type": "string" }, "tags": { "description": "Tags for categorization and search", "allOf": [ { "$ref": "#/definitions/company.CompanyTagsForm" } ] }, "tax_id": { "type": "string" }, "timezone": { "type": "string" }, "type": { "type": "string" }, "website": { "type": "string" } } }, "company.UpdateCompanyStatusForm": { "type": "object", "properties": { "status": { "type": "string" } } }, "company.UpdateCompanyTagsForm": { "type": "object", "properties": { "tags": { "$ref": "#/definitions/company.CompanyTagsForm" } } }, "company.UpdateCompanyVerificationForm": { "type": "object", "properties": { "compliance_notes": { "type": "string" }, "is_compliant": { "type": "boolean" }, "is_verified": { "type": "boolean" } } }, "customer.Address": { "type": "object", "properties": { "address_type": { "description": "billing, shipping, etc.", "type": "string" }, "city": { "type": "string" }, "country": { "type": "string" }, "is_default": { "type": "boolean" }, "postal_code": { "type": "string" }, "state": { "type": "string" }, "street": { "type": "string" } } }, "customer.AddressForm": { "type": "object", "properties": { "address_type": { "type": "string" }, "city": { "type": "string" }, "country": { "type": "string" }, "is_default": { "type": "boolean" }, "postal_code": { "type": "string" }, "state": { "type": "string" }, "street": { "type": "string" } } }, "customer.AuthResponse": { "type": "object", "properties": { "access_token": { "type": "string" }, "customer": { "$ref": "#/definitions/customer.CustomerResponse" }, "expires_at": { "type": "integer" }, "refresh_token": { "type": "string" } } }, "customer.ContactPerson": { "type": "object", "properties": { "email": { "type": "string" }, "first_name": { "type": "string" }, "full_name": { "type": "string" }, "is_primary": { "type": "boolean" }, "last_name": { "type": "string" }, "mobile": { "type": "string" }, "phone": { "type": "string" }, "position": { "type": "string" } } }, "customer.ContactPersonForm": { "type": "object", "properties": { "email": { "type": "string" }, "first_name": { "type": "string" }, "full_name": { "type": "string" }, "is_primary": { "type": "boolean" }, "last_name": { "type": "string" }, "mobile": { "type": "string" }, "phone": { "type": "string" }, "position": { "type": "string" } } }, "customer.CreateCustomerForm": { "type": "object", "properties": { "address": { "description": "Address information", "allOf": [ { "$ref": "#/definitions/customer.AddressForm" } ] }, "annual_revenue": { "type": "number" }, "business_type": { "description": "Business information", "type": "string" }, "company_id": { "type": "string" }, "company_name": { "description": "Company customer fields", "type": "string" }, "contact_person": { "description": "Contact person (for company customers)", "allOf": [ { "$ref": "#/definitions/customer.ContactPersonForm" } ] }, "currency": { "type": "string" }, "email": { "type": "string" }, "employee_count": { "type": "integer" }, "first_name": { "description": "Individual customer fields", "type": "string" }, "founded_year": { "type": "integer" }, "full_name": { "type": "string" }, "industry": { "type": "string" }, "language": { "description": "Preferences and settings", "type": "string" }, "last_name": { "type": "string" }, "mobile": { "type": "string" }, "password": { "type": "string" }, "phone": { "type": "string" }, "registration_number": { "type": "string" }, "tax_id": { "type": "string" }, "timezone": { "type": "string" }, "type": { "type": "string" }, "username": { "type": "string" } } }, "customer.CustomerListResponse": { "type": "object", "properties": { "customers": { "type": "array", "items": { "$ref": "#/definitions/customer.CustomerResponse" } }, "limit": { "type": "integer" }, "offset": { "type": "integer" }, "total": { "type": "integer" }, "total_pages": { "type": "integer" } } }, "customer.CustomerResponse": { "type": "object", "properties": { "address": { "$ref": "#/definitions/customer.Address" }, "annual_revenue": { "type": "number" }, "business_type": { "type": "string" }, "company_id": { "type": "string" }, "company_name": { "type": "string" }, "compliance_notes": { "type": "string" }, "contact_person": { "$ref": "#/definitions/customer.ContactPerson" }, "created_at": { "type": "integer" }, "created_by": { "type": "string" }, "currency": { "type": "string" }, "email": { "type": "string" }, "employee_count": { "type": "integer" }, "first_name": { "type": "string" }, "founded_year": { "type": "integer" }, "full_name": { "type": "string" }, "id": { "type": "string" }, "industry": { "type": "string" }, "is_compliant": { "type": "boolean" }, "is_verified": { "type": "boolean" }, "language": { "type": "string" }, "last_name": { "type": "string" }, "mobile": { "type": "string" }, "phone": { "type": "string" }, "registration_number": { "type": "string" }, "status": { "type": "string" }, "tax_id": { "type": "string" }, "timezone": { "type": "string" }, "type": { "type": "string" }, "updated_at": { "type": "integer" }, "updated_by": { "type": "string" }, "username": { "type": "string" } } }, "customer.LoginForm": { "type": "object", "properties": { "password": { "type": "string" }, "username": { "type": "string" } } }, "customer.RefreshTokenForm": { "type": "object", "properties": { "refresh_token": { "type": "string" } } }, "customer.SuspendCustomerForm": { "type": "object", "properties": { "reason": { "type": "string" } } }, "customer.UpdateCustomerForm": { "type": "object", "properties": { "address": { "description": "Address information", "allOf": [ { "$ref": "#/definitions/customer.AddressForm" } ] }, "annual_revenue": { "type": "number" }, "business_type": { "description": "Business information", "type": "string" }, "company_id": { "type": "string" }, "company_name": { "description": "Company customer fields", "type": "string" }, "contact_person": { "description": "Contact person (for company customers)", "allOf": [ { "$ref": "#/definitions/customer.ContactPersonForm" } ] }, "currency": { "type": "string" }, "email": { "type": "string" }, "employee_count": { "type": "integer" }, "first_name": { "description": "Individual customer fields", "type": "string" }, "founded_year": { "type": "integer" }, "full_name": { "type": "string" }, "industry": { "type": "string" }, "language": { "description": "Preferences and settings", "type": "string" }, "last_name": { "type": "string" }, "mobile": { "type": "string" }, "phone": { "type": "string" }, "registration_number": { "type": "string" }, "tax_id": { "type": "string" }, "timezone": { "type": "string" }, "type": { "type": "string" }, "username": { "type": "string" } } }, "customer.UpdateCustomerStatusForm": { "type": "object", "properties": { "status": { "type": "string" } } }, "customer.UpdateCustomerVerificationForm": { "type": "object", "properties": { "compliance_notes": { "type": "string" }, "is_compliant": { "type": "boolean" }, "is_verified": { "type": "boolean" } } }, "main.HealthResponse": { "type": "object", "properties": { "status": { "type": "string" }, "time": { "type": "integer" }, "version": { "type": "string" } } }, "response.APIError": { "type": "object", "properties": { "code": { "type": "string" }, "details": { "type": "string" }, "message": { "type": "string" } } }, "response.APIResponse": { "type": "object", "properties": { "data": {}, "error": { "$ref": "#/definitions/response.APIError" }, "message": { "type": "string" }, "meta": { "$ref": "#/definitions/response.Meta" }, "success": { "type": "boolean" } } }, "response.Meta": { "type": "object", "properties": { "limit": { "type": "integer" }, "offset": { "type": "integer" }, "page": { "type": "integer" }, "pages": { "type": "integer" }, "total": { "type": "integer" } } }, "user.AuthResponse": { "type": "object", "properties": { "access_token": { "type": "string" }, "expires_at": { "type": "integer" }, "refresh_token": { "type": "string" }, "user": { "$ref": "#/definitions/user.UserResponse" } } }, "user.ChangePasswordForm": { "type": "object", "properties": { "new_password": { "type": "string" }, "old_password": { "type": "string" } } }, "user.CreateUserForm": { "type": "object", "properties": { "company_id": { "type": "string" }, "department": { "type": "string" }, "email": { "type": "string" }, "full_name": { "type": "string" }, "password": { "type": "string" }, "phone": { "type": "string" }, "position": { "type": "string" }, "profile_image": { "type": "string" }, "role": { "type": "string" }, "username": { "type": "string" } } }, "user.LoginForm": { "type": "object", "properties": { "password": { "type": "string" }, "username": { "type": "string" } } }, "user.RefreshTokenForm": { "type": "object", "properties": { "refresh_token": { "type": "string" } } }, "user.ResetPasswordForm": { "type": "object", "properties": { "email": { "type": "string" } } }, "user.UpdateUserForm": { "type": "object", "properties": { "company_id": { "type": "string" }, "department": { "type": "string" }, "email": { "type": "string" }, "full_name": { "type": "string" }, "phone": { "type": "string" }, "position": { "type": "string" }, "profile_image": { "type": "string" }, "role": { "type": "string" }, "status": { "type": "string" }, "username": { "type": "string" } } }, "user.UpdateUserRoleForm": { "type": "object", "properties": { "role": { "type": "string" } } }, "user.UpdateUserStatusForm": { "type": "object", "properties": { "status": { "type": "string" } } }, "user.UserListResponse": { "type": "object", "properties": { "limit": { "type": "integer" }, "offset": { "type": "integer" }, "total": { "type": "integer" }, "total_pages": { "type": "integer" }, "users": { "type": "array", "items": { "$ref": "#/definitions/user.UserResponse" } } } }, "user.UserResponse": { "type": "object", "properties": { "company_id": { "type": "string" }, "created_at": { "type": "integer" }, "created_by": { "type": "string" }, "department": { "type": "string" }, "email": { "type": "string" }, "full_name": { "type": "string" }, "id": { "type": "string" }, "is_verified": { "type": "boolean" }, "last_login_at": { "type": "integer" }, "phone": { "type": "string" }, "position": { "type": "string" }, "profile_image": { "type": "string" }, "role": { "type": "string" }, "status": { "type": "string" }, "updated_at": { "type": "integer" }, "updated_by": { "type": "string" }, "username": { "type": "string" } } } }, "securityDefinitions": { "BearerAuth": { "description": "Type \"Bearer\" followed by a space and JWT token.", "type": "apiKey", "name": "Authorization", "in": "header" } }, "tags": [ { "description": "User management operations including authentication, profile management, and admin operations", "name": "Users" }, { "description": "Authentication operations including login, logout, and token management", "name": "Authorization" }, { "description": "Customer management operations including authentication, profile management, and admin operations", "name": "Customers-Admin" }, { "description": "Customer authentication operations including login, logout, and token management", "name": "Customers-Authorization" }, { "description": "Company management operations for web panel including CRUD, customer assignment, and tag management", "name": "Companies-Admin" }, { "description": "Health check operations", "name": "Health" } ] }` // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0.0", Host: "localhost:8081", BasePath: "", Schemes: []string{}, Title: "Tender Management API", Description: "This is the API documentation for the Tender Management System.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }