{ "swagger": "2.0", "info": { "description": "This is server for Yimaru.", "title": "Yimaru API", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", "url": "http://www.swagger.io/support", "email": "support@swagger.io" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "1.0.1" }, "paths": { "/api/v1/admin": { "get": { "description": "Get all Admins", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get all Admins", "parameters": [ { "type": "integer", "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "description": "Page size", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.AdminRes" } }, "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" } } } }, "post": { "description": "Create transaction approver", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Create transaction approver", "parameters": [ { "description": "Create transaction approver", "name": "manger", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.CreateTransactionApproverReq" } } ], "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" } } } } }, "/api/v1/admin-company": { "get": { "description": "Gets a single company by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "company" ], "summary": "Gets company by id", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetCompanyRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/admin/{id}": { "get": { "description": "Get a single admin by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get admin by id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.AdminRes" } }, "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" } } } }, "put": { "description": "Update Admin", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update Admin", "parameters": [ { "description": "Update Admin", "name": "admin", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.updateAdminReq" } } ], "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" } } } } }, "/api/v1/auth/logout": { "post": { "description": "Logout customer", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Logout customer", "parameters": [ { "description": "Logout customer", "name": "logout", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.logoutReq" } } ], "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" } } } } }, "/api/v1/auth/refresh": { "post": { "description": "Refresh token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Refresh token", "parameters": [ { "description": "tokens", "name": "refresh", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.refreshToken" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.loginCustomerRes" } }, "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" } } } } }, "/api/v1/banks": { "get": { "produces": [ "application/json" ], "tags": [ "Institutions - Banks" ], "summary": "List all banks with pagination and filtering", "parameters": [ { "type": "integer", "description": "Filter by country ID", "name": "country_id", "in": "query" }, { "type": "boolean", "description": "Filter by active status", "name": "is_active", "in": "query" }, { "type": "string", "description": "Search term for bank name or code", "name": "search", "in": "query" }, { "type": "integer", "default": 1, "description": "Page number", "name": "page", "in": "query" }, { "maximum": 100, "type": "integer", "default": 50, "description": "Items per page", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.InstResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } }, "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Institutions - Banks" ], "summary": "Create a new bank", "parameters": [ { "description": "Bank Info", "name": "bank", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.Bank" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/domain.Bank" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/banks/{id}": { "get": { "produces": [ "application/json" ], "tags": [ "Institutions - Banks" ], "summary": "Get a bank by ID", "parameters": [ { "type": "integer", "description": "Bank ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.Bank" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } }, "put": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Institutions - Banks" ], "summary": "Update a bank", "parameters": [ { "type": "integer", "description": "Bank ID", "name": "id", "in": "path", "required": true }, { "description": "Bank Info", "name": "bank", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.Bank" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.Bank" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } }, "delete": { "produces": [ "application/json" ], "tags": [ "Institutions - Banks" ], "summary": "Delete a bank", "parameters": [ { "type": "integer", "description": "Bank ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "Deleted successfully", "schema": { "type": "string" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/branch": { "get": { "description": "Gets all branches", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets all branches", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.BranchDetailRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "post": { "description": "Creates a branch", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Create a branch", "parameters": [ { "description": "Creates branch", "name": "createBranch", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreateBranchReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.BranchRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/branch/{id}": { "get": { "description": "Gets a single branch by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets branch by id", "parameters": [ { "type": "integer", "description": "Branch ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.BranchDetailRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "put": { "description": "Updates a branch", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Updates a branch", "parameters": [ { "type": "integer", "description": "Branch ID", "name": "id", "in": "path", "required": true }, { "description": "Update Branch", "name": "updateBranch", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreateBranchReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.BranchRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "delete": { "description": "Delete the branch", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Delete the branch", "parameters": [ { "type": "integer", "description": "Branch 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" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/branch/{id}/cashier": { "get": { "description": "Gets branch cashiers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets branch cashiers", "parameters": [ { "type": "integer", "description": "Branch ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/handlers.GetCashierRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/branch/{id}/operation": { "get": { "description": "Gets branch operations", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets branch operations", "parameters": [ { "type": "integer", "description": "Branch ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.BranchOperationRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/branch/{id}/operation/{opID}": { "delete": { "description": "Delete the branch operation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Delete the branch operation", "parameters": [ { "type": "integer", "description": "Branch ID", "name": "id", "in": "path", "required": true }, { "type": "integer", "description": "Branch Operation ID", "name": "opID", "in": "path", "required": true } ], "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" } } } } }, "/api/v1/branch/{id}/return": { "post": { "description": "Unassign the branch wallet to company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Unassign the branch wallet to company", "parameters": [ { "type": "integer", "description": "Branch ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.BranchDetailRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/branchCashier": { "get": { "description": "Gets branch for cahier", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets branch for cahier", "parameters": [ { "type": "integer", "description": "Branch ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.BranchDetailRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/branchLocation": { "get": { "description": "Gets all branch locations", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets all branch locations", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.BranchLocation" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/cashier/{id}": { "get": { "description": "Get a single cashier by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "cashier" ], "summary": "Get cashier by id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.UserProfileRes" } }, "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" } } } } }, "/api/v1/cashiers": { "get": { "description": "Get all cashiers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "cashier" ], "summary": "Get all cashiers", "parameters": [ { "type": "integer", "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "description": "Page size", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/handlers.GetCashierRes" } } }, "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" } } } }, "post": { "description": "Create cashier", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "cashier" ], "summary": "Create cashier", "parameters": [ { "description": "Create cashier", "name": "cashier", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.CreateCashierReq" } } ], "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" } } } } }, "/api/v1/cashiers/{id}": { "put": { "description": "Update cashier", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "cashier" ], "summary": "Update cashier", "parameters": [ { "type": "integer", "description": "Cashier ID", "name": "id", "in": "path", "required": true }, { "description": "Update cashier", "name": "cashier", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.updateCashierReq" } } ], "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" } } } } }, "/api/v1/company": { "get": { "description": "Gets all companies", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "company" ], "summary": "Gets all companies", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.GetCompanyRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "post": { "description": "Creates a company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "company" ], "summary": "Create a company", "parameters": [ { "description": "Creates company", "name": "createCompany", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreateCompanyReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.CompanyRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/company/{id}": { "get": { "description": "Gets a single company by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "company" ], "summary": "Gets company by id", "parameters": [ { "type": "integer", "description": "Company ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.GetCompanyRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "put": { "description": "Updates a company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "company" ], "summary": "Updates a company", "parameters": [ { "type": "integer", "description": "Company ID", "name": "id", "in": "path", "required": true }, { "description": "Update Company", "name": "updateCompany", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.UpdateCompanyReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.CompanyRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "delete": { "description": "Delete the company", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "company" ], "summary": "Delete the company", "parameters": [ { "type": "integer", "description": "Company 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" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/company/{id}/branch": { "get": { "description": "Gets branches by company id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets branches by company id", "parameters": [ { "type": "integer", "description": "Company ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.BranchDetailRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/currencies": { "get": { "description": "Returns list of supported currencies", "produces": [ "application/json" ], "tags": [ "Multi-Currency" ], "summary": "Get supported currencies", "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/domain.Response" }, { "type": "object", "properties": { "data": { "type": "array", "items": { "type": "integer" } } } } ] } } } } }, "/api/v1/currencies/convert": { "get": { "description": "Converts amount from one currency to another", "produces": [ "application/json" ], "tags": [ "Multi-Currency" ], "summary": "Convert currency", "parameters": [ { "type": "string", "description": "Source currency code (e.g., USD)", "name": "from", "in": "query", "required": true }, { "type": "string", "description": "Target currency code (e.g., ETB)", "name": "to", "in": "query", "required": true }, { "type": "number", "description": "Amount to convert", "name": "amount", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/domain.Response" }, { "type": "object", "properties": { "data": { "type": "number" } } } ] } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/customer": { "get": { "description": "Get all Customers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "customer" ], "summary": "Get all Customers", "parameters": [ { "type": "integer", "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "description": "Page size", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.CustomersRes" } }, "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" } } } } }, "/api/v1/customer/{id}": { "get": { "description": "Get a single customer by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "customer" ], "summary": "Get customer by id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.CustomersRes" } }, "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" } } } }, "put": { "description": "Update Customers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "customer" ], "summary": "Update Customers", "parameters": [ { "description": "Update Customers", "name": "Customers", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.updateCustomerReq" } } ], "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" } } } } }, "/api/v1/issues": { "get": { "description": "Admin endpoint to list all reported issues with pagination", "produces": [ "application/json" ], "tags": [ "Issues" ], "summary": "Get all reported issues", "parameters": [ { "type": "integer", "description": "Limit", "name": "limit", "in": "query" }, { "type": "integer", "description": "Offset", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.ReportedIssue" } } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } }, "post": { "description": "Allows a customer to report a new issue related to the betting platform", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Issues" ], "summary": "Report an issue", "parameters": [ { "description": "Issue to report", "name": "issue", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.ReportedIssue" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/domain.ReportedIssue" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/issues/user/{user_id}": { "get": { "description": "Returns all issues reported by a specific user", "produces": [ "application/json" ], "tags": [ "Issues" ], "summary": "Get reported issues by a user", "parameters": [ { "type": "integer", "description": "User ID", "name": "user_id", "in": "path", "required": true }, { "type": "integer", "description": "Limit", "name": "limit", "in": "query" }, { "type": "integer", "description": "Offset", "name": "offset", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.ReportedIssue" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/issues/{issue_id}": { "delete": { "description": "Admin endpoint to delete a reported issue", "tags": [ "Issues" ], "summary": "Delete a reported issue", "parameters": [ { "type": "integer", "description": "Issue ID", "name": "issue_id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/issues/{issue_id}/status": { "patch": { "description": "Admin endpoint to update the status of a reported issue", "consumes": [ "application/json" ], "tags": [ "Issues" ], "summary": "Update issue status", "parameters": [ { "type": "integer", "description": "Issue ID", "name": "issue_id", "in": "path", "required": true }, { "description": "New issue status (pending, in_progress, resolved, rejected)", "name": "status", "in": "body", "required": true, "schema": { "type": "object", "properties": { "status": { "type": "string" } } } } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/logs": { "get": { "description": "Fetches application logs from MongoDB with pagination, level filtering, and search", "produces": [ "application/json" ], "tags": [ "Logs" ], "summary": "Retrieve application logs with filtering and pagination", "parameters": [ { "type": "string", "description": "Filter logs by level (debug, info, warn, error, dpanic, panic, fatal)", "name": "level", "in": "query" }, { "type": "string", "description": "Search term to match against message or fields", "name": "search", "in": "query" }, { "type": "integer", "default": 1, "description": "Page number for pagination (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "default": 50, "description": "Number of items per page (default: 50, max: 100)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "Paginated list of application logs", "schema": { "$ref": "#/definitions/domain.LogResponse" } }, "400": { "description": "Invalid request parameters", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/domain.ErrorResponse" } } } } }, "/api/v1/manager/{id}/branch": { "get": { "description": "Gets a branches by manager id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets branches by manager id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.BranchDetailRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/managers": { "get": { "description": "Get all Managers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "manager" ], "summary": "Get all Managers", "parameters": [ { "type": "integer", "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "description": "Page size", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.ManagersRes" } }, "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" } } } }, "post": { "description": "Create Manager", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "manager" ], "summary": "Create Manager", "parameters": [ { "description": "Create manager", "name": "manger", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.CreateManagerReq" } } ], "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" } } } } }, "/api/v1/managers/{id}": { "get": { "description": "Get a single manager by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "manager" ], "summary": "Get manager by id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.ManagersRes" } }, "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" } } } }, "put": { "description": "Update Managers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "manager" ], "summary": "Update Managers", "parameters": [ { "description": "Update Managers", "name": "Managers", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.updateManagerReq" } } ], "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" } } } } }, "/api/v1/operation": { "post": { "description": "Creates a operation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Create a operation", "parameters": [ { "description": "Creates operation", "name": "createBranchOperation", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreateBranchOperationReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.BranchOperationRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/search/branch": { "get": { "description": "Search branches by name or location", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Search branches", "parameters": [ { "type": "string", "description": "Search query", "name": "q", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.BranchDetailRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/search/company": { "get": { "description": "Gets all companies", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "company" ], "summary": "Gets all companies", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.CompanyRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/super-login": { "post": { "description": "Login super-admin", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Login super-admin", "parameters": [ { "description": "Login super-admin", "name": "login", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.loginAdminReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.LoginAdminRes" } }, "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" } } } } }, "/api/v1/supportedOperation": { "get": { "description": "Gets all supported operations", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Gets all supported operations", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/domain.BranchDetailRes" } } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } }, "post": { "description": "Creates a supported operation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "branch" ], "summary": "Create a supported operation", "parameters": [ { "description": "Creates supported operation", "name": "createSupportedOperation", "in": "body", "required": true, "schema": { "$ref": "#/definitions/domain.CreateSupportedOperationReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.SupportedOperationRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/t-approver": { "get": { "description": "Get all Admins", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get all Admins", "parameters": [ { "type": "integer", "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "description": "Page size", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.AdminRes" } }, "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" } } } } }, "/api/v1/t-approver/{id}": { "get": { "description": "Get a single admin by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Get admin by id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.AdminRes" } }, "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" } } } }, "put": { "description": "Update Admin", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Update Admin", "parameters": [ { "description": "Update Admin", "name": "admin", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.updateAdminReq" } } ], "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" } } } } }, "/api/v1/tenant": { "get": { "description": "Check if phone number or email exist", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Check if phone number or email exist", "parameters": [ { "description": "Check phone number or email exist", "name": "checkPhoneEmailExist", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.CheckPhoneEmailExistReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.CheckPhoneEmailExistRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/tenant/{tenant_slug}/customer": { "get": { "description": "Get all Customers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "customer" ], "summary": "Get all Customers", "parameters": [ { "type": "integer", "description": "Page number", "name": "page", "in": "query" }, { "type": "integer", "description": "Page size", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.CustomersRes" } }, "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" } } } } }, "/api/v1/tenant/{tenant_slug}/customer/{id}": { "get": { "description": "Get a single customer by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "customer" ], "summary": "Get customer by id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.CustomersRes" } }, "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" } } } }, "put": { "description": "Update Customers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "customer" ], "summary": "Update Customers", "parameters": [ { "description": "Update Customers", "name": "Customers", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.updateCustomerReq" } } ], "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" } } } } }, "/api/v1/tenant/{tenant_slug}/referral/stats": { "get": { "security": [ { "Bearer": [] } ], "description": "Retrieves referral statistics for the authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "referral" ], "summary": "Get referral statistics", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/domain.ReferralStats" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/user/delete/{id}": { "delete": { "description": "Delete a user by their ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Delete user by ID", "parameters": [ { "type": "integer", "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" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/user/resetPassword": { "post": { "description": "Reset password", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Reset password", "parameters": [ { "description": "Reset password", "name": "resetPassword", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.ResetPasswordReq" } } ], "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" } } } } }, "/api/v1/user/search": { "post": { "description": "Search for user using name or phone", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Search for user using name or phone", "parameters": [ { "description": "Search for using his name or phone", "name": "searchUserByNameOrPhone", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.SearchUserByNameOrPhoneReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.UserProfileRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/user/sendResetCode": { "post": { "description": "Send reset code", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Send reset code", "parameters": [ { "description": "Send reset code", "name": "resetCode", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.ResetCodeReq" } } ], "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" } } } } }, "/api/v1/user/single/{id}": { "get": { "description": "Get a single user by id", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Get user by id", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.UserProfileRes" } }, "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" } } } } }, "/api/v1/user/suspend": { "post": { "description": "Suspend or unsuspend a user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Suspend or unsuspend a user", "parameters": [ { "description": "Suspend or unsuspend a user", "name": "updateUserSuspend", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.UpdateUserSuspendReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.UpdateUserSuspendRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/{tenant_slug}/admin-login": { "post": { "description": "Login customer", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Login customer", "parameters": [ { "description": "Login admin", "name": "login", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.loginAdminReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.LoginAdminRes" } }, "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" } } } } }, "/api/v1/{tenant_slug}/customer-login": { "post": { "description": "Login customer", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Login customer", "parameters": [ { "description": "Login customer", "name": "login", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.loginCustomerReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.loginCustomerRes" } }, "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" } } } } }, "/api/v1/{tenant_slug}/user/admin-profile": { "get": { "security": [ { "Bearer": [] } ], "description": "Get user profile", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Get user profile", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.AdminProfileRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/{tenant_slug}/user/checkPhoneEmailExist": { "post": { "description": "Check if phone number or email exist", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Check if phone number or email exist", "parameters": [ { "description": "Check phone number or email exist", "name": "checkPhoneEmailExist", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.CheckPhoneEmailExistReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.CheckPhoneEmailExistRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/{tenant_slug}/user/customer-profile": { "get": { "security": [ { "Bearer": [] } ], "description": "Get user profile", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Get user profile", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.CustomerProfileRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/{tenant_slug}/user/register": { "post": { "description": "Register user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Register user", "parameters": [ { "description": "Register user", "name": "registerUser", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.RegisterUserReq" } } ], "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" } } } } }, "/api/v1/{tenant_slug}/user/resetPassword": { "post": { "description": "Reset tenant password", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Reset tenant password", "parameters": [ { "description": "Reset password", "name": "resetPassword", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.ResetPasswordReq" } } ], "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" } } } } }, "/api/v1/{tenant_slug}/user/search": { "post": { "description": "Search for user using name or phone", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Search for user using name or phone", "parameters": [ { "description": "Search for using his name or phone", "name": "searchUserByNameOrPhone", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.SearchUserByNameOrPhoneReq" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/handlers.UserProfileRes" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/response.APIResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/response.APIResponse" } } } } }, "/api/v1/{tenant_slug}/user/sendRegisterCode": { "post": { "description": "Send register code", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Send register code", "parameters": [ { "description": "Send register code", "name": "registerCode", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.RegisterCodeReq" } } ], "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" } } } } }, "/api/v1/{tenant_slug}/user/sendResetCode": { "post": { "description": "Send reset code", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "user" ], "summary": "Send reset code", "parameters": [ { "description": "Send reset code", "name": "resetCode", "in": "body", "required": true, "schema": { "$ref": "#/definitions/handlers.ResetCodeReq" } } ], "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" } } } } } }, "definitions": { "domain.Bank": { "type": "object", "properties": { "acct_length": { "type": "integer" }, "active": { "type": "integer" }, "bank_logo": { "description": "URL or base64", "type": "string" }, "country_id": { "type": "integer" }, "created_at": { "type": "string" }, "currency": { "type": "string" }, "id": { "type": "integer" }, "is_24hrs": { "description": "nullable", "type": "integer" }, "is_active": { "type": "integer" }, "is_mobilemoney": { "description": "nullable", "type": "integer" }, "is_rtgs": { "type": "integer" }, "name": { "type": "string" }, "slug": { "type": "string" }, "swift": { "type": "string" }, "updated_at": { "type": "string" } } }, "domain.BranchDetailRes": { "type": "object", "properties": { "balance": { "type": "number", "example": 100.5 }, "branch_manager_id": { "type": "integer", "example": 1 }, "company_id": { "type": "integer", "example": 1 }, "company_name": { "type": "string", "example": "fortune" }, "deducted_stake": { "type": "number" }, "id": { "type": "integer", "example": 1 }, "is_active": { "type": "boolean", "example": false }, "is_self_owned": { "type": "boolean", "example": false }, "is_wallet_active": { "type": "boolean", "example": false }, "location": { "type": "string", "example": "Addis Ababa" }, "manager_name": { "type": "string", "example": "John Smith" }, "manager_phone_number": { "type": "string", "example": "0911111111" }, "name": { "type": "string", "example": "4-kilo Branch" }, "number_of_unsettled": { "type": "integer" }, "profit_percentage": { "type": "number", "example": 0.1 }, "stats_updated_at": { "type": "string" }, "total_bets": { "type": "integer" }, "total_cash_backs": { "type": "number" }, "total_cash_out": { "type": "number" }, "total_cashiers": { "type": "integer" }, "total_stake": { "type": "number" }, "total_unsettled_amount": { "type": "number" }, "wallet_id": { "type": "integer", "example": 1 } } }, "domain.BranchLocation": { "type": "object", "properties": { "key": { "type": "string", "example": "addis_ababa" }, "name": { "type": "string", "example": "Addis Ababa" } } }, "domain.BranchOperationRes": { "type": "object", "properties": { "description": { "type": "string", "example": "Betting on sport events" }, "name": { "type": "string", "example": "SportsBook" } } }, "domain.BranchRes": { "type": "object", "properties": { "branch_manager_id": { "type": "integer", "example": 1 }, "company_id": { "type": "integer", "example": 1 }, "id": { "type": "integer", "example": 1 }, "is_active": { "type": "boolean", "example": false }, "is_self_owned": { "type": "boolean", "example": false }, "location": { "type": "string", "example": "Addis Ababa" }, "name": { "type": "string", "example": "4-kilo Branch" }, "profit_percentage": { "type": "number", "example": 0.1 }, "wallet_id": { "type": "integer", "example": 1 } } }, "domain.CompanyRes": { "type": "object", "properties": { "admin_id": { "type": "integer", "example": 1 }, "deducted_percentage": { "type": "number", "example": 0.1 }, "id": { "type": "integer", "example": 1 }, "is_active": { "type": "boolean", "example": true }, "name": { "type": "string", "example": "CompanyName" }, "slug": { "type": "string", "example": "slug" }, "wallet_id": { "type": "integer", "example": 1 } } }, "domain.CreateBranchOperationReq": { "type": "object", "properties": { "branch_id": { "type": "integer", "example": 1 }, "operation_id": { "type": "integer", "example": 1 } } }, "domain.CreateBranchReq": { "type": "object", "required": [ "branch_manager_id", "location", "name", "operations" ], "properties": { "branch_manager_id": { "type": "integer", "example": 1 }, "company_id": { "type": "integer", "example": 1 }, "is_self_owned": { "type": "boolean", "example": false }, "location": { "type": "string", "maxLength": 100, "minLength": 3, "example": "Addis Ababa" }, "name": { "type": "string", "maxLength": 100, "minLength": 3, "example": "4-kilo Branch" }, "operations": { "type": "array", "items": { "type": "integer" } }, "profit_percentage": { "type": "number", "example": 0.1 } } }, "domain.CreateCompanyReq": { "type": "object", "properties": { "admin_id": { "type": "integer", "example": 1 }, "deducted_percentage": { "type": "number", "example": 0.1 }, "is_active": { "type": "boolean" }, "name": { "type": "string", "example": "CompanyName" }, "slug": { "type": "string" } } }, "domain.CreateSupportedOperationReq": { "type": "object", "properties": { "description": { "type": "string", "example": "Betting on sport events" }, "name": { "type": "string", "example": "SportsBook" } } }, "domain.ErrorResponse": { "type": "object", "properties": { "error": { "type": "string" }, "message": { "type": "string" } } }, "domain.GetCompanyRes": { "type": "object", "properties": { "admin_first_name": { "type": "string", "example": "John" }, "admin_id": { "type": "integer", "example": 1 }, "admin_last_name": { "type": "string", "example": "Doe" }, "admin_phone_number": { "type": "string", "example": "1234567890" }, "balance": { "type": "number", "example": 1 }, "deducted_percentage": { "type": "number", "example": 0.1 }, "deducted_stake": { "type": "number" }, "id": { "type": "integer", "example": 1 }, "is_active": { "type": "boolean", "example": false }, "is_wallet_active": { "type": "boolean", "example": false }, "name": { "type": "string", "example": "CompanyName" }, "number_of_unsettled": { "type": "integer" }, "slug": { "type": "string", "example": "slug" }, "stats_updated_at": { "type": "string" }, "total_admins": { "type": "integer" }, "total_approvers": { "type": "integer" }, "total_bets": { "type": "integer" }, "total_branches": { "type": "integer" }, "total_cash_backs": { "type": "number" }, "total_cash_out": { "type": "number" }, "total_cashiers": { "type": "integer" }, "total_customers": { "type": "integer" }, "total_managers": { "type": "integer" }, "total_stake": { "type": "number" }, "total_unsettled_amount": { "type": "number" }, "wallet_id": { "type": "integer", "example": 1 } } }, "domain.InstResponse": { "type": "object", "properties": { "data": { "description": "Changed to interface{} for flexibility" }, "message": { "type": "string" }, "pagination": { "description": "Made pointer and optional", "allOf": [ { "$ref": "#/definitions/domain.Pagination" } ] }, "status": { "type": "string" } } }, "domain.LogEntry": { "type": "object", "properties": { "caller": { "type": "string" }, "env": { "type": "string" }, "fields": { "type": "object", "additionalProperties": true }, "level": { "type": "string" }, "message": { "type": "string" }, "service": { "type": "string" }, "stacktrace": { "type": "string" }, "timestamp": { "type": "string" } } }, "domain.LogResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/domain.LogEntry" } }, "message": { "type": "string" }, "pagination": { "$ref": "#/definitions/domain.Pagination" } } }, "domain.Pagination": { "type": "object", "properties": { "current_page": { "type": "integer" }, "limit": { "type": "integer" }, "total": { "type": "integer" }, "total_pages": { "type": "integer" } } }, "domain.ReferralStats": { "type": "object", "properties": { "totalReferrals": { "type": "integer" }, "totalRewardEarned": { "type": "integer" } } }, "domain.ReportedIssue": { "type": "object", "properties": { "created_at": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "integer" }, "issue_type": { "type": "string" }, "metadata": { "type": "object", "additionalProperties": true }, "status": { "type": "string" }, "subject": { "type": "string" }, "updated_at": { "type": "string" }, "user_id": { "type": "integer" }, "user_role": { "$ref": "#/definitions/domain.Role" } } }, "domain.Response": { "type": "object", "properties": { "data": {}, "message": { "type": "string" }, "metadata": {}, "status_code": { "type": "integer" }, "success": { "type": "boolean" } } }, "domain.Role": { "type": "string", "enum": [ "super_admin", "admin", "branch_manager", "customer", "cashier", "transaction_approver" ], "x-enum-varnames": [ "RoleSuperAdmin", "RoleAdmin", "RoleBranchManager", "RoleCustomer", "RoleCashier", "RoleTransactionApprover" ] }, "domain.SupportedOperationRes": { "type": "object", "properties": { "description": { "type": "string", "example": "Betting on sport events" }, "id": { "type": "integer", "example": 1 }, "name": { "type": "string", "example": "SportsBook" } } }, "domain.UpdateCompanyReq": { "type": "object", "properties": { "admin_id": { "type": "integer", "example": 1 }, "deducted_percentage": { "type": "number", "example": 0.1 }, "is_active": { "type": "boolean", "example": true }, "name": { "type": "string", "example": "CompanyName" }, "slug": { "type": "string" } } }, "handlers.AdminProfileRes": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "email_verified": { "type": "boolean" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_login": { "type": "string" }, "last_name": { "type": "string" }, "phone_number": { "type": "string" }, "phone_verified": { "type": "boolean" }, "role": { "$ref": "#/definitions/domain.Role" }, "suspended": { "type": "boolean" }, "suspended_at": { "type": "string" }, "updated_at": { "type": "string" } } }, "handlers.AdminRes": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "email_verified": { "type": "boolean" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_login": { "type": "string" }, "last_name": { "type": "string" }, "phone_number": { "type": "string" }, "phone_verified": { "type": "boolean" }, "role": { "$ref": "#/definitions/domain.Role" }, "suspended": { "type": "boolean" }, "suspended_at": { "type": "string" }, "updated_at": { "type": "string" } } }, "handlers.CheckPhoneEmailExistReq": { "type": "object", "properties": { "email": { "type": "string", "example": "john.doe@example.com" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.CheckPhoneEmailExistRes": { "type": "object", "properties": { "email_exist": { "type": "boolean" }, "phone_number_exist": { "type": "boolean" } } }, "handlers.CreateAdminReq": { "type": "object", "properties": { "company_id": { "type": "integer", "example": 1 }, "email": { "type": "string", "example": "john.doe@example.com" }, "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "password": { "type": "string", "example": "password123" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.CreateCashierReq": { "type": "object", "properties": { "branch_id": { "type": "integer", "example": 1 }, "email": { "type": "string", "example": "john.doe@example.com" }, "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "password": { "type": "string", "example": "password123" }, "phone_number": { "type": "string", "example": "1234567890" }, "suspended": { "type": "boolean", "example": false } } }, "handlers.CreateManagerReq": { "type": "object", "properties": { "company_id": { "type": "integer", "example": 1 }, "email": { "type": "string", "example": "john.doe@example.com" }, "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "password": { "type": "string", "example": "password123" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.CreateTransactionApproverReq": { "type": "object", "properties": { "company_id": { "type": "integer", "example": 1 }, "email": { "type": "string", "example": "john.doe@example.com" }, "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "password": { "type": "string", "example": "password123" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.CustomerProfileRes": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "email_verified": { "type": "boolean" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_login": { "type": "string" }, "last_name": { "type": "string" }, "phone_number": { "type": "string" }, "phone_verified": { "type": "boolean" }, "referral_code": { "type": "string" }, "role": { "$ref": "#/definitions/domain.Role" }, "suspended": { "type": "boolean" }, "suspended_at": { "type": "string" }, "updated_at": { "type": "string" } } }, "handlers.CustomersRes": { "type": "object", "properties": { "company_id": { "type": "integer" }, "company_name": { "type": "string" }, "created_at": { "type": "string" }, "email": { "type": "string" }, "email_verified": { "type": "boolean" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_login": { "type": "string" }, "last_name": { "type": "string" }, "phone_number": { "type": "string" }, "phone_verified": { "type": "boolean" }, "role": { "$ref": "#/definitions/domain.Role" }, "suspended": { "type": "boolean" }, "suspended_at": { "type": "string" }, "updated_at": { "type": "string" } } }, "handlers.GetCashierRes": { "type": "object", "properties": { "branch_id": { "type": "integer" }, "branch_location": { "type": "string" }, "branch_name": { "type": "string" }, "branch_wallet": { "type": "integer" }, "created_at": { "type": "string" }, "email": { "type": "string" }, "email_verified": { "type": "boolean" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_login": { "type": "string" }, "last_name": { "type": "string" }, "phone_number": { "type": "string" }, "phone_verified": { "type": "boolean" }, "role": { "$ref": "#/definitions/domain.Role" }, "suspended": { "type": "boolean" }, "suspended_at": { "type": "string" }, "updated_at": { "type": "string" } } }, "handlers.LoginAdminRes": { "type": "object", "properties": { "access_token": { "type": "string" }, "refresh_token": { "type": "string" }, "role": { "type": "string" } } }, "handlers.ManagersRes": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "email_verified": { "type": "boolean" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_login": { "type": "string" }, "last_name": { "type": "string" }, "phone_number": { "type": "string" }, "phone_verified": { "type": "boolean" }, "role": { "$ref": "#/definitions/domain.Role" }, "suspended": { "type": "boolean" }, "suspended_at": { "type": "string" }, "updated_at": { "type": "string" } } }, "handlers.RegisterCodeReq": { "type": "object", "properties": { "email": { "type": "string", "example": "john.doe@example.com" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.RegisterUserReq": { "type": "object", "properties": { "email": { "type": "string", "example": "john.doe@example.com" }, "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "otp": { "type": "string", "example": "123456" }, "password": { "type": "string", "example": "password123" }, "phone_number": { "type": "string", "example": "1234567890" }, "referral_code": { "type": "string", "example": "ABC123" } } }, "handlers.ResetCodeReq": { "type": "object", "properties": { "email": { "type": "string", "example": "john.doe@example.com" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.ResetPasswordReq": { "type": "object", "required": [ "otp", "password" ], "properties": { "email": { "type": "string", "example": "john.doe@example.com" }, "otp": { "type": "string", "example": "123456" }, "password": { "type": "string", "minLength": 8, "example": "newpassword123" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.SearchUserByNameOrPhoneReq": { "type": "object", "properties": { "query": { "type": "string" }, "role": { "$ref": "#/definitions/domain.Role" } } }, "handlers.UpdateUserSuspendReq": { "type": "object", "required": [ "user_id" ], "properties": { "suspended": { "type": "boolean", "example": true }, "user_id": { "type": "integer", "example": 123 } } }, "handlers.UpdateUserSuspendRes": { "type": "object", "properties": { "suspended": { "type": "boolean" }, "user_id": { "type": "integer" } } }, "handlers.UserProfileRes": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "email_verified": { "type": "boolean" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "last_login": { "type": "string" }, "last_name": { "type": "string" }, "phone_number": { "type": "string" }, "phone_verified": { "type": "boolean" }, "referral_code": { "type": "string" }, "role": { "$ref": "#/definitions/domain.Role" }, "suspended": { "type": "boolean" }, "suspended_at": { "type": "string" }, "updated_at": { "type": "string" } } }, "handlers.loginAdminReq": { "type": "object", "required": [ "password" ], "properties": { "email": { "type": "string", "example": "john.doe@example.com" }, "password": { "type": "string", "example": "password123" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.loginCustomerReq": { "type": "object", "required": [ "password" ], "properties": { "email": { "type": "string", "example": "john.doe@example.com" }, "password": { "type": "string", "example": "password123" }, "phone_number": { "type": "string", "example": "1234567890" } } }, "handlers.loginCustomerRes": { "type": "object", "properties": { "access_token": { "type": "string" }, "refresh_token": { "type": "string" }, "role": { "type": "string" } } }, "handlers.logoutReq": { "type": "object", "required": [ "refresh_token" ], "properties": { "refresh_token": { "type": "string", "example": "\u003crefresh-token\u003e" } } }, "handlers.refreshToken": { "type": "object", "required": [ "access_token", "refresh_token" ], "properties": { "access_token": { "type": "string", "example": "\u003cjwt-token\u003e" }, "refresh_token": { "type": "string", "example": "\u003crefresh-token\u003e" } } }, "handlers.updateAdminReq": { "type": "object", "properties": { "company_id": { "type": "integer", "example": 1 }, "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "suspended": { "type": "boolean", "example": false } } }, "handlers.updateCashierReq": { "type": "object", "properties": { "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "suspended": { "type": "boolean", "example": false } } }, "handlers.updateCustomerReq": { "type": "object", "properties": { "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "suspended": { "type": "boolean", "example": false } } }, "handlers.updateManagerReq": { "type": "object", "properties": { "company_id": { "type": "integer", "example": 1 }, "first_name": { "type": "string", "example": "John" }, "last_name": { "type": "string", "example": "Doe" }, "suspended": { "type": "boolean", "example": false } } }, "response.APIResponse": { "type": "object", "properties": { "data": {}, "message": { "type": "string" }, "metadata": {}, "page": { "type": "integer" }, "status": { "$ref": "#/definitions/response.Status" }, "timestamp": { "type": "string" }, "total": { "type": "integer" } } }, "response.Status": { "type": "string", "enum": [ "error", "success" ], "x-enum-varnames": [ "Error", "Success" ] } }, "securityDefinitions": { "Bearer": { "type": "apiKey", "name": "Authorization", "in": "header" } } }