Yimaru-BackEnd/docs/swagger.yaml

7462 lines
182 KiB
YAML

definitions:
domain.ARIFPAYPaymentMethod:
properties:
id:
type: integer
name:
type: string
type: object
domain.AleaPlayCallback:
properties:
amount:
type: number
currency:
type: string
event_id:
type: string
game_id:
type: string
is_free_round:
type: boolean
multiplier:
type: number
operator_id:
type: string
round_id:
type: string
session_id:
type: string
signature:
type: string
timestamp:
type: integer
transaction_id:
type: string
type:
description: BET, WIN, CASHOUT, etc.
type: string
user_id:
type: string
type: object
domain.ArifpayB2CRequest:
properties:
Phonenumber:
type: string
amount:
type: number
customerEmail:
type: string
customerPhone:
type: string
required:
- amount
- customerEmail
- customerPhone
type: object
domain.ArifpayVerifyByTransactionIDRequest:
properties:
paymentType:
type: integer
transactionId:
type: string
type: object
domain.Bank:
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
type: object
domain.BetOutcome:
properties:
away_team_name:
example: Liverpool
type: string
bet_id:
example: 1
type: integer
event_id:
example: 1
type: integer
expires:
example: "2025-04-08T12:00:00Z"
type: string
home_team_name:
example: Manchester
type: string
id:
example: 1
type: integer
market_id:
example: 1
type: integer
market_name:
example: Fulltime Result
type: string
odd:
example: 1.5
type: number
odd_handicap:
example: "1"
type: string
odd_header:
example: "1"
type: string
odd_id:
example: 1
type: integer
odd_name:
example: "1"
type: string
sport_id:
example: 1
type: integer
status:
allOf:
- $ref: '#/definitions/domain.OutcomeStatus'
example: 1
type: object
domain.BetRes:
properties:
amount:
example: 100
type: number
cashed_out:
example: false
type: boolean
created_at:
example: "2025-04-08T12:00:00Z"
type: string
fast_code:
type: string
full_name:
example: John Smith
type: string
id:
example: 1
type: integer
is_shop_bet:
example: false
type: boolean
outcomes:
items:
$ref: '#/definitions/domain.BetOutcome'
type: array
status:
allOf:
- $ref: '#/definitions/domain.OutcomeStatus'
example: 1
total_odds:
example: 4.22
type: number
user_id:
example: 2
type: integer
type: object
domain.BranchDetailRes:
properties:
balance:
example: 100.5
type: number
branch_manager_id:
example: 1
type: integer
company_id:
example: 1
type: integer
id:
example: 1
type: integer
is_active:
example: false
type: boolean
is_self_owned:
example: false
type: boolean
is_wallet_active:
example: false
type: boolean
location:
example: Addis Ababa
type: string
manager_name:
example: John Smith
type: string
manager_phone_number:
example: "0911111111"
type: string
name:
example: 4-kilo Branch
type: string
profit_percentage:
example: 0.1
type: number
wallet_id:
example: 1
type: integer
type: object
domain.BranchLocation:
properties:
key:
example: addis_ababa
type: string
name:
example: Addis Ababa
type: string
type: object
domain.BranchOperationRes:
properties:
description:
example: Betting on sport events
type: string
name:
example: SportsBook
type: string
type: object
domain.BranchRes:
properties:
branch_manager_id:
example: 1
type: integer
company_id:
example: 1
type: integer
id:
example: 1
type: integer
is_active:
example: false
type: boolean
is_self_owned:
example: false
type: boolean
location:
example: Addis Ababa
type: string
name:
example: 4-kilo Branch
type: string
profit_percentage:
example: 0.1
type: number
wallet_id:
example: 1
type: integer
type: object
domain.CashoutReq:
properties:
account_name:
type: string
account_number:
type: string
bank_code:
type: string
beneficiary_name:
type: string
branch_id:
example: 1
type: integer
cashout_id:
example: "1234"
type: string
payment_option:
allOf:
- $ref: '#/definitions/domain.PaymentOption'
example: 1
reference_number:
type: string
type: object
domain.ChapaDepositRequestPayload:
properties:
amount:
type: number
required:
- amount
type: object
domain.ChapaDepositResponse:
properties:
checkoutURL:
type: string
reference:
type: string
type: object
domain.ChapaVerificationResponse:
properties:
amount:
type: number
currency:
type: string
status:
type: string
tx_ref:
type: string
type: object
domain.ChapaWebhookPayload:
properties:
amount:
type: integer
currency:
type: string
status:
$ref: '#/definitions/domain.PaymentStatus'
tx_ref:
type: string
type: object
domain.ChapaWithdrawalRequest:
properties:
account_name:
type: string
account_number:
type: string
amount:
description: string because Chapa API uses string for monetary values
type: string
bank_code:
type: integer
currency:
type: string
reference:
type: string
type: object
domain.CheckoutSessionClientRequest:
properties:
amount:
type: number
customerEmail:
type: string
customerPhone:
type: string
required:
- amount
- customerEmail
- customerPhone
type: object
domain.CompanyRes:
properties:
admin_id:
example: 1
type: integer
deducted_percentage:
example: 0.1
type: number
id:
example: 1
type: integer
is_active:
example: true
type: boolean
name:
example: CompanyName
type: string
wallet_id:
example: 1
type: integer
type: object
domain.CreateBetOutcomeReq:
properties:
event_id:
example: 1
type: integer
market_id:
example: 1
type: integer
odd_id:
example: 1
type: integer
type: object
domain.CreateBetReq:
properties:
amount:
example: 100
type: number
branch_id:
example: 1
type: integer
outcomes:
items:
$ref: '#/definitions/domain.CreateBetOutcomeReq'
type: array
required:
- amount
- outcomes
type: object
domain.CreateBetWithFastCodeReq:
properties:
amount:
type: number
branch_id:
type: integer
fast_code:
type: string
type: object
domain.CreateBranchOperationReq:
properties:
branch_id:
example: 1
type: integer
operation_id:
example: 1
type: integer
type: object
domain.CreateBranchReq:
properties:
branch_manager_id:
example: 1
type: integer
company_id:
example: 1
type: integer
is_self_owned:
example: false
type: boolean
location:
example: Addis Ababa
maxLength: 100
minLength: 3
type: string
name:
example: 4-kilo Branch
maxLength: 100
minLength: 3
type: string
operations:
items:
type: integer
type: array
profit_percentage:
example: 0.1
type: number
required:
- branch_manager_id
- location
- name
- operations
type: object
domain.CreateCompanyReq:
properties:
admin_id:
example: 1
type: integer
deducted_percentage:
example: 0.1
type: number
name:
example: CompanyName
type: string
type: object
domain.CreateSupportedOperationReq:
properties:
description:
example: Betting on sport events
type: string
name:
example: SportsBook
type: string
type: object
domain.CreateTicketOutcomeReq:
properties:
event_id:
description: TicketID int64 `json:"ticket_id" example:"1"`
example: 1
type: integer
market_id:
example: 1
type: integer
odd_id:
example: 1
type: integer
type: object
domain.CreateTicketReq:
properties:
amount:
example: 100
type: number
outcomes:
items:
$ref: '#/definitions/domain.CreateTicketOutcomeReq'
type: array
type: object
domain.CreateTicketRes:
properties:
created_number:
example: 3
type: integer
fast_code:
example: 1234
type: integer
type: object
domain.DashboardSummary:
properties:
active_admins:
type: integer
active_bets:
type: integer
active_branches:
type: integer
active_cashiers:
type: integer
active_companies:
type: integer
active_customers:
type: integer
active_games:
type: integer
active_managers:
type: integer
average_stake:
type: integer
branches_count:
type: integer
customer_count:
type: integer
inactive_admins:
type: integer
inactive_branches:
type: integer
inactive_cashiers:
type: integer
inactive_companies:
type: integer
inactive_customers:
type: integer
inactive_games:
type: integer
inactive_managers:
type: integer
profit:
type: integer
read_notifications:
type: integer
total_admins:
type: integer
total_bets:
type: integer
total_cashiers:
type: integer
total_companies:
type: integer
total_deposits:
type: integer
total_games:
type: integer
total_losses:
type: integer
total_managers:
type: integer
total_notifications:
type: integer
total_stakes:
type: integer
total_wallets:
type: integer
total_wins:
type: integer
total_withdrawals:
type: integer
unread_notifications:
type: integer
win_balance:
type: integer
win_rate:
type: number
type: object
domain.DemoGameRequest:
properties:
brandId:
type: string
country:
type: string
deviceType:
type: string
gameId:
type: string
ip:
type: string
language:
type: string
playerId:
type: string
providerId:
type: string
type: object
domain.DirectDepositRequest:
properties:
amount:
type: integer
bank_reference:
type: string
customer_id:
type: integer
sender_account:
type: string
required:
- amount
- bank_reference
- customer_id
- sender_account
type: object
domain.ErrorResponse:
properties:
error:
type: string
message:
type: string
type: object
domain.EventStatus:
enum:
- upcoming
- in_play
- to_be_fixed
- ended
- postponed
- cancelled
- walkover
- interrupted
- abandoned
- retired
- suspended
- decided_by_fa
- removed
type: string
x-enum-varnames:
- STATUS_PENDING
- STATUS_IN_PLAY
- STATUS_TO_BE_FIXED
- STATUS_ENDED
- STATUS_POSTPONED
- STATUS_CANCELLED
- STATUS_WALKOVER
- STATUS_INTERRUPTED
- STATUS_ABANDONED
- STATUS_RETIRED
- STATUS_SUSPENDED
- STATUS_DECIDED_BY_FA
- STATUS_REMOVED
domain.FavoriteGameRequest:
properties:
game_id:
type: integer
type: object
domain.GameListRequest:
properties:
brandId:
type: string
page:
type: integer
providerId:
type: string
size:
type: integer
type: object
domain.GameRecommendation:
properties:
bets:
items:
type: number
type: array
game_id:
type: integer
game_name:
type: string
reason:
description: e.g., "Based on your activity", "Popular", "Random pick"
type: string
thumbnail:
type: string
type: object
domain.GameStartRequest:
properties:
brandId:
type: string
cashierUrl:
type: string
country:
type: string
currency:
type: string
deviceType:
type: string
gameId:
type: string
ip:
type: string
language:
type: string
lobbyUrl:
type: string
playerId:
type: string
playerName:
type: string
providerId:
type: string
sessionId:
type: string
userAgent:
type: string
type: object
domain.GameStartResponse:
properties:
startGameUrl:
type: string
type: object
domain.GamingActivityItem:
properties:
actionType:
type: string
amount:
type: number
amountEur:
type: number
amountUsd:
type: number
brandId:
type: string
correlationId:
type: string
createdAt:
type: string
currency:
type: string
gameId:
type: string
playerId:
type: string
providerId:
type: string
refActionType:
type: string
refRoundType:
type: string
refTransactionId:
type: string
roundId:
type: string
roundType:
type: string
sessionId:
type: string
transactionId:
type: string
type: object
domain.GamingActivityRequest:
properties:
currencies:
description: Optional
items:
type: string
type: array
excludeFreeWin:
description: Optional
type: boolean
fromDate:
description: YYYY-MM-DD
type: string
gameIds:
description: Optional
items:
type: string
type: array
page:
description: Optional, default 1
type: integer
playerIds:
description: Optional
items:
type: string
type: array
providerId:
description: Optional
type: string
size:
description: Optional, default 100
type: integer
toDate:
description: YYYY-MM-DD
type: string
type: object
domain.GamingActivityResponse:
properties:
items:
items:
$ref: '#/definitions/domain.GamingActivityItem'
type: array
meta:
$ref: '#/definitions/domain.PaginationMeta'
type: object
domain.GeneratePaymentURLRequest:
properties:
amount:
type: integer
paymentMethod:
type: string
paymentReason:
type: string
phoneNumber:
type: string
type: object
domain.GetCompanyRes:
properties:
admin_first_name:
example: John
type: string
admin_id:
example: 1
type: integer
admin_last_name:
example: Doe
type: string
admin_phone_number:
example: "1234567890"
type: string
balance:
example: 1
type: number
deducted_percentage:
example: 0.1
type: number
id:
example: 1
type: integer
is_active:
example: false
type: boolean
is_wallet_active:
example: false
type: boolean
name:
example: CompanyName
type: string
wallet_id:
example: 1
type: integer
type: object
domain.HugeWinItem:
properties:
betAmount:
type: number
betAmountUsd:
type: number
betTransactionId:
type: string
brandId:
type: string
correlationId:
type: string
createdAt:
type: string
currency:
type: string
gameId:
type: string
operatorId:
type: string
playerId:
type: string
providerId:
type: string
reason:
type: string
roundId:
type: string
winAmount:
type: number
winAmountUsd:
type: number
winTransactionId:
type: string
type: object
domain.HugeWinsRequest:
properties:
brandId:
type: string
currencies:
items:
type: string
type: array
fromDate:
type: string
gameIds:
items:
type: string
type: array
page:
type: integer
providerId:
type: string
size:
type: integer
toDate:
type: string
type: object
domain.HugeWinsResponse:
properties:
items:
items:
$ref: '#/definitions/domain.HugeWinItem'
type: array
meta:
$ref: '#/definitions/domain.PaginationMeta'
type: object
domain.InstResponse:
properties:
data:
description: Changed to interface{} for flexibility
message:
type: string
pagination:
allOf:
- $ref: '#/definitions/domain.Pagination'
description: Made pointer and optional
status:
type: string
type: object
domain.League:
properties:
bet365_id:
example: 1121
type: integer
cc:
example: uk
type: string
id:
example: 1
type: integer
is_active:
example: false
type: boolean
is_featured:
example: false
type: boolean
name:
example: BPL
type: string
sport_id:
example: 1
type: integer
type: object
domain.LogEntry:
properties:
caller:
type: string
env:
type: string
fields:
additionalProperties: true
type: object
level:
type: string
message:
type: string
service:
type: string
stacktrace:
type: string
timestamp:
type: string
type: object
domain.LogResponse:
properties:
data:
items:
$ref: '#/definitions/domain.LogEntry'
type: array
message:
type: string
pagination:
$ref: '#/definitions/domain.Pagination'
type: object
domain.Odd:
properties:
category:
type: string
event_id:
type: string
fetched_at:
type: string
fi:
type: string
handicap:
type: string
is_active:
type: boolean
market_category:
type: string
market_id:
type: string
market_name:
type: string
market_type:
type: string
name:
type: string
odds_value:
type: number
raw_odds:
items: {}
type: array
section:
type: string
source:
type: string
type: object
domain.OutcomeStatus:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
x-enum-comments:
OUTCOME_STATUS_ERROR: Half Win and Half Given Back
OUTCOME_STATUS_HALF: Half Win and Half Given Back
OUTCOME_STATUS_VOID: Give Back
x-enum-varnames:
- OUTCOME_STATUS_PENDING
- OUTCOME_STATUS_WIN
- OUTCOME_STATUS_LOSS
- OUTCOME_STATUS_VOID
- OUTCOME_STATUS_HALF
- OUTCOME_STATUS_ERROR
domain.PaginatedFileResponse:
properties:
data:
items:
type: string
type: array
message:
type: string
pagination:
$ref: '#/definitions/domain.Pagination'
status_code:
type: integer
success:
type: boolean
type: object
domain.Pagination:
properties:
current_page:
type: integer
limit:
type: integer
total:
type: integer
total_pages:
type: integer
type: object
domain.PaginationMeta:
properties:
currentPage:
type: integer
itemCount:
type: integer
itemsPerPage:
type: integer
totalItems:
type: integer
totalPages:
type: integer
type: object
domain.PaymentOption:
enum:
- 0
- 1
- 2
- 3
type: integer
x-enum-varnames:
- CASH_TRANSACTION
- TELEBIRR_TRANSACTION
- ARIFPAY_TRANSACTION
- BANK
domain.PaymentStatus:
enum:
- success
- pending
- completed
- failed
type: string
x-enum-varnames:
- PaymentStatusSuccessful
- PaymentStatusPending
- PaymentStatusCompleted
- PaymentStatusFailed
domain.PopOKCallback:
properties:
amount:
type: number
currency:
type: string
session_id:
type: string
signature:
description: HMAC-SHA256 signature for verification
type: string
timestamp:
type: integer
transaction_id:
type: string
type:
description: BET, WIN, REFUND, JACKPOT_WIN
type: string
type: object
domain.PopOKGame:
properties:
bets:
items:
type: number
type: array
gameName:
type: string
id:
type: integer
status:
type: integer
thumbnail:
type: string
type: object
domain.ProviderRequest:
properties:
brandId:
type: string
extraData:
type: boolean
page:
type: integer
size:
type: integer
type: object
domain.ProviderResponse:
properties:
items:
items:
properties:
logoForDark:
type: string
logoForLight:
type: string
providerId:
type: string
providerName:
type: string
type: object
type: array
type: object
domain.RandomBetReq:
properties:
branch_id:
example: 1
type: integer
number_of_bets:
example: 1
type: integer
required:
- branch_id
- number_of_bets
type: object
domain.RawOddsByMarketID:
properties:
fetched_at:
type: string
handicap:
type: string
id:
type: integer
market_name:
type: string
raw_odds:
items: {}
type: array
type: object
domain.ReferralSettings:
properties:
betReferralBonusPercentage:
type: number
cashbackPercentage:
type: number
createdAt:
type: string
expiresAfterDays:
type: integer
id:
type: integer
maxReferrals:
type: integer
referralRewardAmount:
type: number
updatedAt:
type: string
updatedBy:
type: string
version:
type: integer
type: object
domain.ReferralStats:
properties:
completedReferrals:
type: integer
pendingRewards:
type: number
totalReferrals:
type: integer
totalRewardEarned:
type: number
type: object
domain.ReportedIssue:
properties:
created_at:
type: string
description:
type: string
id:
type: integer
issue_type:
type: string
metadata:
additionalProperties: true
type: object
status:
type: string
subject:
type: string
updated_at:
type: string
user_id:
type: integer
user_role:
$ref: '#/definitions/domain.Role'
type: object
domain.Response:
properties:
data: {}
message:
type: string
status_code:
type: integer
success:
type: boolean
type: object
domain.Role:
enum:
- super_admin
- admin
- branch_manager
- customer
- cashier
type: string
x-enum-varnames:
- RoleSuperAdmin
- RoleAdmin
- RoleBranchManager
- RoleCustomer
- RoleCashier
domain.SantimPayCallbackPayload:
properties:
accountNumber:
type: string
address:
type: string
amount:
type: string
created_at:
type: string
currency:
type: string
failureRedirectUrl:
type: string
merId:
type: string
merName:
type: string
message:
type: string
msisdn:
type: string
paymentVia:
type: string
reason:
type: string
receiverWalletID:
type: string
refId:
type: string
status:
type: string
successRedirectUrl:
type: string
thirdPartyId:
type: string
txnId:
type: string
updated_at:
type: string
type: object
domain.ShopBetReq:
properties:
account_name:
type: string
account_number:
type: string
amount:
example: 100
type: number
bank_code:
type: string
beneficiary_name:
type: string
bet_id:
example: 1
type: integer
branch_id:
example: 1
type: integer
full_name:
example: John Smith
type: string
outcomes:
items:
$ref: '#/definitions/domain.CreateBetOutcomeReq'
type: array
payment_option:
allOf:
- $ref: '#/definitions/domain.PaymentOption'
example: 1
phone_number:
example: "0911111111"
type: string
reference_number:
type: string
type: object
domain.ShopBetRes:
properties:
amount:
type: integer
bet_id:
example: 1
type: integer
branch_id:
example: 2
type: integer
cashed_out:
example: false
type: boolean
cashout_id:
example: "21234"
type: string
company_id:
example: 2
type: integer
created_at:
example: "2025-04-08T12:00:00Z"
type: string
full_name:
example: John
type: string
id:
type: integer
number_of_outcomes:
example: 1
type: integer
outcomes:
items:
$ref: '#/definitions/domain.BetOutcome'
type: array
phone_number:
example: "1234567890"
type: string
shop_transaction_id:
type: integer
status:
allOf:
- $ref: '#/definitions/domain.OutcomeStatus'
example: 1
total_odds:
example: 4.22
type: number
transaction_verified:
example: true
type: boolean
updated_at:
example: "2025-04-08T12:00:00Z"
type: string
type: object
domain.ShopDepositReq:
properties:
account_name:
type: string
account_number:
type: string
amount:
example: 100
type: number
bank_code:
description: |-
FullName string `json:"full_name" example:"John Smith"`
PhoneNumber string `json:"phone_number" example:"0911111111"`
type: string
beneficiary_name:
type: string
branch_id:
example: 1
type: integer
customer_id:
example: 1
type: integer
payment_option:
allOf:
- $ref: '#/definitions/domain.PaymentOption'
example: 1
reference_number:
type: string
type: object
domain.ShopDepositRes:
properties:
customer_id:
type: integer
id:
type: integer
shop_transaction_id:
type: integer
wallet_transfer_id:
type: integer
type: object
domain.ShopTransactionRes:
properties:
account_name:
type: string
account_number:
type: string
amount:
example: 100
type: number
approved_by:
example: 1
type: integer
approver_first_name:
example: John
type: string
approver_last_name:
example: Smith
type: string
approver_phone_number:
example: "0911111111"
type: string
bank_code:
type: string
beneficiary_name:
type: string
branch_id:
example: 1
type: integer
branch_location:
example: Branch Location
type: string
branch_name:
example: Branch Name
type: string
cashier_name:
example: John Smith
type: string
company_id:
example: 1
type: integer
created_at:
type: string
creator_first_name:
example: John
type: string
creator_last_name:
example: Smith
type: string
creator_phone_number:
example: "0911111111"
type: string
full_name:
example: John Smith
type: string
id:
example: 1
type: integer
payment_option:
allOf:
- $ref: '#/definitions/domain.PaymentOption'
example: 1
phone_number:
example: "0911111111"
type: string
reference_number:
type: string
type:
example: 1
type: integer
updated_at:
type: string
user_id:
example: 1
type: integer
verified:
example: true
type: boolean
type: object
domain.SupportedOperationRes:
properties:
description:
example: Betting on sport events
type: string
id:
example: 1
type: integer
name:
example: SportsBook
type: string
type: object
domain.TelebirrPaymentCallbackPayload:
properties:
appid:
description: App ID provided by Telebirr
type: string
callback_info:
description: Optional merchant-defined callback data
type: string
merch_code:
description: Merchant short code
type: string
merch_order_id:
description: Order ID from merchant system
type: string
notify_time:
description: Notification timestamp (UTC, in seconds)
type: string
notify_url:
description: Optional callback URL
type: string
payment_order_id:
description: Order ID from Telebirr system
type: string
sign:
description: Signature of the payload
type: string
sign_type:
description: Signature type, e.g., SHA256WithRSA
type: string
total_amount:
description: Payment amount
type: string
trade_status:
description: Payment status (e.g., Completed, Failure)
type: string
trans_currency:
description: Currency type (e.g., ETB)
type: string
trans_end_time:
description: Transaction end time (UTC seconds)
type: string
trans_id:
description: Transaction ID
type: string
type: object
domain.TicketOutcome:
properties:
away_team_name:
example: Liverpool
type: string
event_id:
example: 1
type: integer
expires:
example: "2025-04-08T12:00:00Z"
type: string
home_team_name:
example: Manchester
type: string
id:
example: 1
type: integer
market_id:
example: 1
type: integer
market_name:
example: Fulltime Result
type: string
odd:
example: 1.5
type: number
odd_handicap:
example: "1"
type: string
odd_header:
example: "1"
type: string
odd_id:
example: 1
type: integer
odd_name:
example: "1"
type: string
status:
allOf:
- $ref: '#/definitions/domain.OutcomeStatus'
example: 1
ticket_id:
example: 1
type: integer
type: object
domain.TicketRes:
properties:
amount:
example: 100
type: number
id:
example: 1
type: integer
outcomes:
items:
$ref: '#/definitions/domain.TicketOutcome'
type: array
total_odds:
example: 4.22
type: number
type: object
domain.TransactionStatusRequest:
properties:
fullParams:
type: boolean
id:
type: string
type: object
domain.UpcomingEvent:
properties:
away_kit_image:
description: Kit or image for away team (optional)
type: string
away_team:
description: Away team name (can be empty/null)
type: string
away_team_id:
description: Away team ID (can be empty/null)
type: integer
home_kit_image:
description: Kit or image for home team (optional)
type: string
home_team:
description: Home team name (if available)
type: string
home_team_id:
description: Home team ID
type: integer
id:
description: Event ID
type: string
is_active:
description: Whether the event is featured or not
type: boolean
is_featured:
description: Whether the event is featured or not
type: boolean
league_cc:
description: League country code
type: string
league_id:
description: League ID
type: integer
league_name:
description: League name
type: string
match_name:
description: Match or event name
type: string
source:
description: bet api provider (bet365, betfair)
type: string
sport_id:
description: Sport ID
type: integer
start_time:
description: Converted from "time" field in UNIX format
type: string
status:
allOf:
- $ref: '#/definitions/domain.EventStatus'
description: Match Status for event
type: object
domain.UpdateCompanyReq:
properties:
admin_id:
example: 1
type: integer
deducted_percentage:
example: 0.1
type: number
is_active:
example: true
type: boolean
name:
example: CompanyName
type: string
type: object
domain.UpdateTransactionVerifiedReq:
properties:
verified:
example: true
type: boolean
type: object
domain.VerifyDirectDepositRequest:
properties:
deposit_id:
type: integer
is_verified:
type: boolean
notes:
type: string
required:
- deposit_id
- is_verified
type: object
domain.VirtualGameProvider:
properties:
created_at:
type: string
enabled:
type: boolean
logo_dark:
type: string
logo_light:
type: string
provider_id:
description: ID int64 `json:"id" db:"id"`
type: string
provider_name:
type: string
updated_at:
type: string
type: object
domain.WebhookRequest:
properties:
nonce:
type: string
notificationUrl:
type: string
paymentMethod:
type: string
phone:
type: string
sessionId:
type: string
totalAmount:
type: integer
transaction:
properties:
transactionId:
type: string
transactionStatus:
type: string
type: object
transactionStatus:
type: string
uuid:
type: string
type: object
handlers.AdminProfileRes:
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
type: object
handlers.AdminRes:
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
type: object
handlers.CheckPhoneEmailExistReq:
properties:
email:
example: john.doe@example.com
type: string
phone_number:
example: "1234567890"
type: string
type: object
handlers.CheckPhoneEmailExistRes:
properties:
email_exist:
type: boolean
phone_number_exist:
type: boolean
type: object
handlers.CreateAdminReq:
properties:
company_id:
example: 1
type: integer
email:
example: john.doe@example.com
type: string
first_name:
example: John
type: string
last_name:
example: Doe
type: string
password:
example: password123
type: string
phone_number:
example: "1234567890"
type: string
type: object
handlers.CreateCashierReq:
properties:
branch_id:
example: 1
type: integer
email:
example: john.doe@example.com
type: string
first_name:
example: John
type: string
last_name:
example: Doe
type: string
password:
example: password123
type: string
phone_number:
example: "1234567890"
type: string
suspended:
example: false
type: boolean
type: object
handlers.CreateManagerReq:
properties:
company_id:
example: 1
type: integer
email:
example: john.doe@example.com
type: string
first_name:
example: John
type: string
last_name:
example: Doe
type: string
password:
example: password123
type: string
phone_number:
example: "1234567890"
type: string
type: object
handlers.CreateTransferReq:
properties:
amount:
example: 100
type: number
payment_method:
example: cash
type: string
type: object
handlers.CustomerProfileRes:
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
type: object
handlers.CustomerWalletRes:
properties:
created_at:
type: string
customer_id:
example: 1
type: integer
first_name:
example: John
type: string
id:
example: 1
type: integer
last_name:
example: Smith
type: string
phone_number:
example: "0911111111"
type: string
regular_balance:
example: 100
type: number
regular_id:
example: 1
type: integer
regular_is_active:
example: true
type: boolean
regular_updated_at:
type: string
static_balance:
example: 100
type: number
static_id:
example: 1
type: integer
static_is_active:
example: true
type: boolean
static_updated_at:
type: string
type: object
handlers.CustomersRes:
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
type: object
handlers.GetCashierRes:
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
type: object
handlers.ManagersRes:
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
type: object
handlers.RegisterCodeReq:
properties:
email:
example: john.doe@example.com
type: string
phone_number:
example: "1234567890"
type: string
type: object
handlers.RegisterUserReq:
properties:
email:
example: john.doe@example.com
type: string
first_name:
example: John
type: string
last_name:
example: Doe
type: string
otp:
example: "123456"
type: string
password:
example: password123
type: string
phone_number:
example: "1234567890"
type: string
referal_code:
example: ABC123
type: string
type: object
handlers.ResetCodeReq:
properties:
email:
example: john.doe@example.com
type: string
phone_number:
example: "1234567890"
type: string
type: object
handlers.ResetPasswordReq:
properties:
email:
example: john.doe@example.com
type: string
otp:
example: "123456"
type: string
password:
example: newpassword123
minLength: 8
type: string
phone_number:
example: "1234567890"
type: string
required:
- otp
- password
type: object
handlers.ResultRes:
properties:
outcomes:
items:
$ref: '#/definitions/domain.BetOutcome'
type: array
type: object
handlers.SearchUserByNameOrPhoneReq:
properties:
query:
type: string
role:
$ref: '#/definitions/domain.Role'
type: object
handlers.SetLeagueActiveReq:
properties:
is_active:
type: boolean
type: object
handlers.SetLeagueAsFeatured:
properties:
is_featured:
example: true
type: boolean
type: object
handlers.TopLeague:
properties:
events:
items:
$ref: '#/definitions/domain.UpcomingEvent'
type: array
league_cc:
type: string
league_id:
type: integer
league_name:
type: string
league_sport_id:
type: integer
type: object
handlers.TransferWalletRes:
properties:
amount:
type: number
created_at:
type: string
depositor_first_name:
type: string
depositor_id:
type: integer
depositor_last_name:
type: string
depositor_phone_number:
type: string
id:
type: integer
message:
type: string
payment_method:
type: string
receiver_wallet_id:
type: integer
reference_number:
description: ← Add this
type: string
sender_wallet_id:
type: integer
type:
type: string
updated_at:
type: string
verified:
type: boolean
type: object
handlers.UpdateCashOutReq:
properties:
cashedOut:
type: boolean
type: object
handlers.UpdateUserSuspendReq:
properties:
suspended:
example: true
type: boolean
user_id:
example: 123
type: integer
required:
- user_id
type: object
handlers.UpdateUserSuspendRes:
properties:
suspended:
type: boolean
user_id:
type: integer
type: object
handlers.UpdateWalletActiveReq:
properties:
is_active:
example: true
type: boolean
required:
- is_active
type: object
handlers.UserProfileRes:
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
type: object
handlers.WalletRes:
properties:
amount:
example: 100
type: number
created_at:
type: string
id:
example: 1
type: integer
is_active:
example: true
type: boolean
is_bettable:
example: true
type: boolean
is_transferable:
example: true
type: boolean
is_withdraw:
example: true
type: boolean
updated_at:
type: string
user_id:
example: 1
type: integer
type: object
handlers.launchVirtualGameReq:
properties:
currency:
example: USD
type: string
game_id:
example: "1"
type: string
mode:
enum:
- fun
- real
example: real
type: string
required:
- currency
- game_id
- mode
type: object
handlers.launchVirtualGameRes:
properties:
launch_url:
type: string
type: object
handlers.loginAdminReq:
properties:
email:
example: john.doe@example.com
type: string
password:
example: password123
type: string
phone_number:
example: "1234567890"
type: string
required:
- password
type: object
handlers.loginAdminRes:
properties:
access_token:
type: string
refresh_token:
type: string
role:
type: string
type: object
handlers.loginCustomerReq:
properties:
email:
example: john.doe@example.com
type: string
password:
example: password123
type: string
phone_number:
example: "1234567890"
type: string
required:
- password
type: object
handlers.loginCustomerRes:
properties:
access_token:
type: string
refresh_token:
type: string
role:
type: string
type: object
handlers.logoutReq:
properties:
refresh_token:
example: <refresh-token>
type: string
required:
- refresh_token
type: object
handlers.refreshToken:
properties:
access_token:
example: <jwt-token>
type: string
refresh_token:
example: <refresh-token>
type: string
required:
- access_token
- refresh_token
type: object
handlers.updateAdminReq:
properties:
company_id:
example: 1
type: integer
first_name:
example: John
type: string
last_name:
example: Doe
type: string
suspended:
example: false
type: boolean
type: object
handlers.updateCashierReq:
properties:
first_name:
example: John
type: string
last_name:
example: Doe
type: string
suspended:
example: false
type: boolean
type: object
handlers.updateCustomerReq:
properties:
company_id:
example: 1
type: integer
first_name:
example: John
type: string
last_name:
example: Doe
type: string
suspended:
example: false
type: boolean
type: object
handlers.updateManagerReq:
properties:
company_id:
example: 1
type: integer
first_name:
example: John
type: string
last_name:
example: Doe
type: string
suspended:
example: false
type: boolean
type: object
response.APIResponse:
properties:
data: {}
message:
type: string
metadata: {}
page:
type: integer
status:
$ref: '#/definitions/response.Status'
timestamp:
type: string
total:
type: integer
type: object
response.Status:
enum:
- error
- success
type: string
x-enum-varnames:
- Error
- Success
info:
contact:
email: support@swagger.io
name: API Support
url: http://www.swagger.io/support
description: This is server for FortuneBet.
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
termsOfService: http://swagger.io/terms/
title: FortuneBet API
version: 1.0.1
paths:
/api/v1/admin:
get:
consumes:
- application/json
description: Get all Admins
parameters:
- description: Page number
in: query
name: page
type: integer
- description: Page size
in: query
name: page_size
type: integer
produces:
- application/json
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'
summary: Get all Admins
tags:
- admin
post:
consumes:
- application/json
description: Create Admin
parameters:
- description: Create admin
in: body
name: manger
required: true
schema:
$ref: '#/definitions/handlers.CreateAdminReq'
produces:
- application/json
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'
summary: Create Admin
tags:
- admin
/api/v1/admin-company:
get:
consumes:
- application/json
description: Gets a single company by id
produces:
- application/json
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'
summary: Gets company by id
tags:
- company
/api/v1/admin/{id}:
get:
consumes:
- application/json
description: Get a single admin by id
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Get admin by id
tags:
- admin
put:
consumes:
- application/json
description: Update Admin
parameters:
- description: Update Admin
in: body
name: admin
required: true
schema:
$ref: '#/definitions/handlers.updateAdminReq'
produces:
- application/json
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'
summary: Update Admin
tags:
- admin
/api/v1/alea-games/launch:
get:
consumes:
- application/json
description: Generates an authenticated launch URL for Alea Play virtual games
parameters:
- description: Game identifier (e.g., 'aviator', 'plinko')
in: query
name: game_id
required: true
type: string
- default: USD
description: Currency code (ISO 4217)
enum:
- USD
- EUR
- GBP
in: query
name: currency
type: string
- default: real
description: Game mode
enum:
- real
- demo
in: query
name: mode
type: string
produces:
- application/json
responses:
"200":
description: Returns authenticated game launch URL
schema:
additionalProperties:
allOf:
- type: string
- properties:
launch_url:
type: string
type: object
type: object
security:
- BearerAuth: []
summary: Launch an Alea Play virtual game
tags:
- Alea Virtual Games
/api/v1/arifpay/b2c-webhook:
post:
consumes:
- application/json
description: Handles webhook notifications from Arifpay for B2C transfers and
updates transfer + wallet status.
parameters:
- description: Arifpay webhook payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.WebhookRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Handle Arifpay B2C Webhook
tags:
- Arifpay
/api/v1/arifpay/b2c/transfer:
post:
consumes:
- application/json
description: Initiates a B2C transfer using Telebirr, CBE, or MPESA depending
on the "type" query parameter
parameters:
- description: Transfer type (telebirr, cbe, mpesa)
in: query
name: type
required: true
type: string
- description: Transfer request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.ArifpayB2CRequest'
produces:
- application/json
responses:
"200":
description: 'message: transfer executed successfully'
schema:
additionalProperties:
type: string
type: object
"400":
description: 'error: invalid request or unsupported transfer type'
schema:
additionalProperties:
type: string
type: object
"500":
description: 'error: internal server error'
schema:
additionalProperties:
type: string
type: object
summary: Execute B2C Transfer
tags:
- Arifpay
/api/v1/arifpay/c2b-webhook:
post:
consumes:
- application/json
description: Handles webhook notifications from Arifpay for C2B transfers and
updates transfer + wallet status.
parameters:
- description: Arifpay webhook payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.WebhookRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Handle Arifpay C2B Webhook
tags:
- Arifpay
/api/v1/arifpay/checkout:
post:
consumes:
- application/json
description: Creates a payment session using Arifpay and returns a redirect
URL.
parameters:
- description: Checkout session request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.CheckoutSessionClientRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Create Arifpay Checkout Session
tags:
- Arifpay
/api/v1/arifpay/checkout/{sessionId}/cancel:
post:
consumes:
- application/json
description: Cancels a payment session using Arifpay before completion.
parameters:
- description: Checkout session ID
in: path
name: sessionId
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Cancel Arifpay Checkout Session
tags:
- Arifpay
/api/v1/arifpay/payment-methods:
get:
description: Returns all payment method IDs and names for Arifpay
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.ARIFPAYPaymentMethod'
type: array
summary: List Arifpay Payment Methods
tags:
- Arifpay
/api/v1/arifpay/session-id/verify-transaction/{session_id}:
get:
consumes:
- application/json
description: Verifies an Arifpay transaction using a session ID
parameters:
- description: Arifpay Session ID
in: query
name: session_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Verify Arifpay Transaction by Session ID
tags:
- Arifpay
/api/v1/arifpay/transaction-id/verify-transaction:
post:
consumes:
- application/json
description: Verifies a transaction using transaction ID and payment type
parameters:
- description: Transaction verification payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.ArifpayVerifyByTransactionIDRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Verify Arifpay Transaction
tags:
- Arifpay
/api/v1/auth/admin-login:
post:
consumes:
- application/json
description: Login customer
parameters:
- description: Login admin
in: body
name: login
required: true
schema:
$ref: '#/definitions/handlers.loginAdminReq'
produces:
- application/json
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'
summary: Login customer
tags:
- auth
/api/v1/auth/customer-login:
post:
consumes:
- application/json
description: Login customer
parameters:
- description: Login customer
in: body
name: login
required: true
schema:
$ref: '#/definitions/handlers.loginCustomerReq'
produces:
- application/json
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'
summary: Login customer
tags:
- auth
/api/v1/auth/logout:
post:
consumes:
- application/json
description: Logout customer
parameters:
- description: Logout customer
in: body
name: logout
required: true
schema:
$ref: '#/definitions/handlers.logoutReq'
produces:
- application/json
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'
summary: Logout customer
tags:
- auth
/api/v1/auth/refresh:
post:
consumes:
- application/json
description: Refresh token
parameters:
- description: tokens
in: body
name: refresh
required: true
schema:
$ref: '#/definitions/handlers.refreshToken'
produces:
- application/json
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'
summary: Refresh token
tags:
- auth
/api/v1/banks:
get:
parameters:
- description: Filter by country ID
in: query
name: country_id
type: integer
- description: Filter by active status
in: query
name: is_active
type: boolean
- description: Search term for bank name or code
in: query
name: search
type: string
- default: 1
description: Page number
in: query
name: page
type: integer
- default: 50
description: Items per page
in: query
maximum: 100
name: page_size
type: integer
produces:
- application/json
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'
summary: List all banks with pagination and filtering
tags:
- Institutions - Banks
post:
consumes:
- application/json
parameters:
- description: Bank Info
in: body
name: bank
required: true
schema:
$ref: '#/definitions/domain.Bank'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/domain.Bank'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Create a new bank
tags:
- Institutions - Banks
/api/v1/banks/{id}:
delete:
parameters:
- description: Bank ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Delete a bank
tags:
- Institutions - Banks
get:
parameters:
- description: Bank ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Get a bank by ID
tags:
- Institutions - Banks
put:
consumes:
- application/json
parameters:
- description: Bank ID
in: path
name: id
required: true
type: integer
- description: Bank Info
in: body
name: bank
required: true
schema:
$ref: '#/definitions/domain.Bank'
produces:
- application/json
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'
summary: Update a bank
tags:
- Institutions - Banks
/api/v1/branch:
get:
consumes:
- application/json
description: Gets all branches
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BranchDetailRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all branches
tags:
- branch
post:
consumes:
- application/json
description: Creates a branch
parameters:
- description: Creates branch
in: body
name: createBranch
required: true
schema:
$ref: '#/definitions/domain.CreateBranchReq'
produces:
- application/json
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'
summary: Create a branch
tags:
- branch
/api/v1/branch/{id}:
delete:
consumes:
- application/json
description: Delete the branch
parameters:
- description: Branch ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Delete the branch
tags:
- branch
get:
consumes:
- application/json
description: Gets a single branch by id
parameters:
- description: Branch ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Gets branch by id
tags:
- branch
put:
consumes:
- application/json
description: Updates a branch
parameters:
- description: Branch ID
in: path
name: id
required: true
type: integer
- description: Update Branch
in: body
name: updateBranch
required: true
schema:
$ref: '#/definitions/domain.CreateBranchReq'
produces:
- application/json
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'
summary: Updates a branch
tags:
- branch
/api/v1/branch/{id}/bets:
get:
consumes:
- application/json
description: Gets bets by its branch id
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BetRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets bets by its branch id
tags:
- branch
/api/v1/branch/{id}/cashier:
get:
consumes:
- application/json
description: Gets branch cashiers
parameters:
- description: Branch ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/handlers.GetCashierRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets branch cashiers
tags:
- branch
/api/v1/branch/{id}/operation:
get:
consumes:
- application/json
description: Gets branch operations
parameters:
- description: Branch ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BranchOperationRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets branch operations
tags:
- branch
/api/v1/branch/{id}/operation/{opID}:
delete:
consumes:
- application/json
description: Delete the branch operation
parameters:
- description: Branch ID
in: path
name: id
required: true
type: integer
- description: Branch Operation ID
in: path
name: opID
required: true
type: integer
produces:
- application/json
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'
summary: Delete the branch operation
tags:
- branch
/api/v1/branchCashier:
get:
consumes:
- application/json
description: Gets branch for cahier
parameters:
- description: Branch ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Gets branch for cahier
tags:
- branch
/api/v1/branchLocation:
get:
consumes:
- application/json
description: Gets all branch locations
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BranchLocation'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all branch locations
tags:
- branch
/api/v1/branchWallet:
get:
consumes:
- application/json
description: Retrieve all branch wallets
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/handlers.WalletRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get all branch wallets
tags:
- wallet
/api/v1/cashier/{id}:
get:
consumes:
- application/json
description: Get a single cashier by id
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Get cashier by id
tags:
- cashier
/api/v1/cashierWallet:
get:
consumes:
- application/json
description: Get wallet for cashier
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Get wallet for cashier
tags:
- cashier
/api/v1/cashiers:
get:
consumes:
- application/json
description: Get all cashiers
parameters:
- description: Page number
in: query
name: page
type: integer
- description: Page size
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/handlers.GetCashierRes'
type: array
"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'
summary: Get all cashiers
tags:
- cashier
post:
consumes:
- application/json
description: Create cashier
parameters:
- description: Create cashier
in: body
name: cashier
required: true
schema:
$ref: '#/definitions/handlers.CreateCashierReq'
produces:
- application/json
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'
summary: Create cashier
tags:
- cashier
/api/v1/cashiers/{id}:
put:
consumes:
- application/json
description: Update cashier
parameters:
- description: Cashier ID
in: path
name: id
required: true
type: integer
- description: Update cashier
in: body
name: cashier
required: true
schema:
$ref: '#/definitions/handlers.updateCashierReq'
produces:
- application/json
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'
summary: Update cashier
tags:
- cashier
/api/v1/chapa/banks:
get:
consumes:
- application/json
description: Get list of banks supported by Chapa
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get supported banks
tags:
- Chapa
/api/v1/chapa/payments/deposit:
post:
consumes:
- application/json
description: Starts a new deposit process using Chapa payment gateway
parameters:
- description: Deposit request
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.ChapaDepositRequestPayload'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ChapaDepositResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
security:
- ApiKeyAuth: []
summary: Initiate a deposit
tags:
- Chapa
/api/v1/chapa/payments/manual/verify/{tx_ref}:
get:
consumes:
- application/json
description: Manually verify a payment using Chapa's API
parameters:
- description: Transaction Reference
in: path
name: tx_ref
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ChapaVerificationResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Verify a payment manually
tags:
- Chapa
/api/v1/chapa/payments/webhook/verify:
post:
consumes:
- application/json
description: Handles payment notifications from Chapa
parameters:
- description: Webhook payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.ChapaWebhookPayload'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Chapa payment webhook callback (used by Chapa)
tags:
- Chapa
/api/v1/chapa/payments/withdraw:
post:
consumes:
- application/json
description: Initiates a withdrawal request to transfer funds to a bank account
via Chapa
parameters:
- description: Withdrawal request details
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.ChapaWithdrawalRequest'
produces:
- application/json
responses:
"201":
description: Chapa withdrawal process initiated successfully
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Invalid request body
schema:
$ref: '#/definitions/domain.ErrorResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/domain.ErrorResponse'
"422":
description: Unprocessable entity
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal server error
schema:
$ref: '#/definitions/domain.ErrorResponse'
security:
- ApiKeyAuth: []
summary: Initiate a withdrawal
tags:
- Chapa
/api/v1/company:
get:
consumes:
- application/json
description: Gets all companies
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.GetCompanyRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all companies
tags:
- company
post:
consumes:
- application/json
description: Creates a company
parameters:
- description: Creates company
in: body
name: createCompany
required: true
schema:
$ref: '#/definitions/domain.CreateCompanyReq'
produces:
- application/json
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'
summary: Create a company
tags:
- company
/api/v1/company/{id}:
delete:
consumes:
- application/json
description: Delete the company
parameters:
- description: Company ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Delete the company
tags:
- company
get:
consumes:
- application/json
description: Gets a single company by id
parameters:
- description: Company ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Gets company by id
tags:
- company
put:
consumes:
- application/json
description: Updates a company
parameters:
- description: Company ID
in: path
name: id
required: true
type: integer
- description: Update Company
in: body
name: updateCompany
required: true
schema:
$ref: '#/definitions/domain.UpdateCompanyReq'
produces:
- application/json
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'
summary: Updates a company
tags:
- company
/api/v1/company/{id}/branch:
get:
consumes:
- application/json
description: Gets branches by company id
parameters:
- description: Company ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BranchDetailRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets branches by company id
tags:
- branch
/api/v1/currencies:
get:
description: Returns list of supported currencies
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
type: integer
type: array
type: object
summary: Get supported currencies
tags:
- Multi-Currency
/api/v1/currencies/convert:
get:
description: Converts amount from one currency to another
parameters:
- description: Source currency code (e.g., USD)
in: query
name: from
required: true
type: string
- description: Target currency code (e.g., ETB)
in: query
name: to
required: true
type: string
- description: Amount to convert
in: query
name: amount
required: true
type: number
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
type: number
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Convert currency
tags:
- Multi-Currency
/api/v1/customer:
get:
consumes:
- application/json
description: Get all Customers
parameters:
- description: Page number
in: query
name: page
type: integer
- description: Page size
in: query
name: page_size
type: integer
produces:
- application/json
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'
summary: Get all Customers
tags:
- customer
/api/v1/customer/{id}:
get:
consumes:
- application/json
description: Get a single customer by id
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Get customer by id
tags:
- customer
put:
consumes:
- application/json
description: Update Customers
parameters:
- description: Update Customers
in: body
name: Customers
required: true
schema:
$ref: '#/definitions/handlers.updateCustomerReq'
produces:
- application/json
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'
summary: Update Customers
tags:
- customer
/api/v1/customerWallet:
get:
consumes:
- application/json
description: Retrieve all customer wallets
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/handlers.CustomerWalletRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get all customer wallets
tags:
- wallet
/api/v1/direct_deposit:
post:
consumes:
- application/json
description: Customer initiates a direct deposit from mobile banking
parameters:
- description: Deposit details
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.DirectDepositRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Initiate a direct deposit
tags:
- Direct Deposits
/api/v1/direct_deposit/pending:
get:
description: Get list of direct deposits needing verification
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get pending direct deposits
tags:
- Direct Deposits
/api/v1/direct_deposit/verify:
post:
consumes:
- application/json
description: Cashier verifies a direct deposit transaction
parameters:
- description: Verification details
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.VerifyDirectDepositRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Verify a direct deposit
tags:
- Direct Deposits
/api/v1/events:
get:
consumes:
- application/json
description: Retrieve all upcoming events from the database
parameters:
- description: Page number
in: query
name: page
type: integer
- description: Page size
in: query
name: page_size
type: integer
- description: League ID Filter
in: query
name: league_id
type: string
- description: Sport ID Filter
in: query
name: sport_id
type: string
- description: Country Code Filter
in: query
name: cc
type: string
- description: Start Time
in: query
name: first_start_time
type: string
- description: End Time
in: query
name: last_start_time
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.UpcomingEvent'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all upcoming events
tags:
- prematch
/api/v1/events/{id}:
delete:
consumes:
- application/json
description: Set the event status to removed
parameters:
- description: Event ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Set the event status to removed
tags:
- event
get:
consumes:
- application/json
description: Retrieve an upcoming event by ID
parameters:
- description: ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.UpcomingEvent'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve an upcoming by ID
tags:
- prematch
/api/v1/events/{id}/flag:
put:
consumes:
- application/json
description: Update the event featured
parameters:
- description: Event ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: update the event featured
tags:
- event
/api/v1/issues:
get:
description: Admin endpoint to list all reported issues with pagination
parameters:
- description: Limit
in: query
name: limit
type: integer
- description: Offset
in: query
name: offset
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.ReportedIssue'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all reported issues
tags:
- Issues
post:
consumes:
- application/json
description: Allows a customer to report a new issue related to the betting
platform
parameters:
- description: Issue to report
in: body
name: issue
required: true
schema:
$ref: '#/definitions/domain.ReportedIssue'
produces:
- application/json
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'
summary: Report an issue
tags:
- Issues
/api/v1/issues/{issue_id}:
delete:
description: Admin endpoint to delete a reported issue
parameters:
- description: Issue ID
in: path
name: issue_id
required: true
type: integer
responses:
"204":
description: No Content
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Delete a reported issue
tags:
- Issues
/api/v1/issues/{issue_id}/status:
patch:
consumes:
- application/json
description: Admin endpoint to update the status of a reported issue
parameters:
- description: Issue ID
in: path
name: issue_id
required: true
type: integer
- description: New issue status (pending, in_progress, resolved, rejected)
in: body
name: status
required: true
schema:
properties:
status:
type: string
type: object
responses:
"204":
description: No Content
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Update issue status
tags:
- Issues
/api/v1/issues/user/{user_id}:
get:
description: Returns all issues reported by a specific user
parameters:
- description: User ID
in: path
name: user_id
required: true
type: integer
- description: Limit
in: query
name: limit
type: integer
- description: Offset
in: query
name: offset
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.ReportedIssue'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get reported issues by a user
tags:
- Issues
/api/v1/leagues:
get:
consumes:
- application/json
description: Gets all leagues
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.League'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all leagues
tags:
- leagues
/api/v1/leagues/{id}/featured:
put:
consumes:
- application/json
description: Set the league to featured/un-featured
parameters:
- description: League ID
in: path
name: id
required: true
type: integer
- description: League Featured Request
in: body
name: active
required: true
schema:
$ref: '#/definitions/handlers.SetLeagueAsFeatured'
produces:
- application/json
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'
summary: Set the league to featured/un-featured
tags:
- leagues
/api/v1/leagues/{id}/set-active:
put:
consumes:
- application/json
description: Set the league to active
parameters:
- description: League ID
in: path
name: id
required: true
type: integer
- description: League Active Request
in: body
name: active
required: true
schema:
$ref: '#/definitions/handlers.SetLeagueActiveReq'
produces:
- application/json
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'
summary: Set the league to active
tags:
- leagues
/api/v1/logs:
get:
description: Fetches application logs from MongoDB with pagination, level filtering,
and search
parameters:
- description: Filter logs by level (debug, info, warn, error, dpanic, panic,
fatal)
in: query
name: level
type: string
- description: Search term to match against message or fields
in: query
name: search
type: string
- default: 1
description: 'Page number for pagination (default: 1)'
in: query
name: page
type: integer
- default: 50
description: 'Number of items per page (default: 50, max: 100)'
in: query
name: limit
type: integer
produces:
- application/json
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'
summary: Retrieve application logs with filtering and pagination
tags:
- Logs
/api/v1/manager/{id}/branch:
get:
consumes:
- application/json
description: Gets a branches by manager id
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BranchDetailRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets branches by manager id
tags:
- branch
/api/v1/managers:
get:
consumes:
- application/json
description: Get all Managers
parameters:
- description: Page number
in: query
name: page
type: integer
- description: Page size
in: query
name: page_size
type: integer
produces:
- application/json
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'
summary: Get all Managers
tags:
- manager
post:
consumes:
- application/json
description: Create Manager
parameters:
- description: Create manager
in: body
name: manger
required: true
schema:
$ref: '#/definitions/handlers.CreateManagerReq'
produces:
- application/json
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'
summary: Create Manager
tags:
- manager
/api/v1/managers/{id}:
get:
consumes:
- application/json
description: Get a single manager by id
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Get manager by id
tags:
- manager
put:
consumes:
- application/json
description: Update Managers
parameters:
- description: Update Managers
in: body
name: Managers
required: true
schema:
$ref: '#/definitions/handlers.updateManagerReq'
produces:
- application/json
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'
summary: Update Managers
tags:
- manager
/api/v1/odds:
get:
consumes:
- application/json
description: Retrieve all prematch odds from the database
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.Odd'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all prematch odds
tags:
- prematch
/api/v1/odds/upcoming/{upcoming_id}:
get:
consumes:
- application/json
description: Retrieve prematch odds by upcoming event ID (FI from Bet365) with
optional pagination
parameters:
- description: Upcoming Event ID (FI)
in: path
name: upcoming_id
required: true
type: string
- description: 'Number of results to return (default: 10)'
in: query
name: limit
type: integer
- description: 'Number of results to skip (default: 0)'
in: query
name: offset
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.Odd'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve prematch odds by upcoming ID (FI)
tags:
- prematch
/api/v1/odds/upcoming/{upcoming_id}/market/{market_id}:
get:
consumes:
- application/json
description: Retrieve raw odds records using a Market ID
parameters:
- description: Upcoming ID
in: path
name: upcoming_id
required: true
type: string
- description: Market ID
in: path
name: market_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.RawOddsByMarketID'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve raw odds by Market ID
tags:
- prematch
/api/v1/operation:
post:
consumes:
- application/json
description: Creates a operation
parameters:
- description: Creates operation
in: body
name: createBranchOperation
required: true
schema:
$ref: '#/definitions/domain.CreateBranchOperationReq'
produces:
- application/json
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'
summary: Create a operation
tags:
- branch
/api/v1/referral/settings:
get:
consumes:
- application/json
description: Retrieves current referral settings (admin only)
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ReferralSettings'
"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'
security:
- Bearer: []
summary: Get referral settings
tags:
- referral
put:
consumes:
- application/json
description: Updates referral settings (admin only)
parameters:
- description: Referral settings
in: body
name: settings
required: true
schema:
$ref: '#/definitions/domain.ReferralSettings'
produces:
- application/json
responses:
"200":
description: OK
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'
security:
- Bearer: []
summary: Update referral settings
tags:
- referral
/api/v1/referral/stats:
get:
consumes:
- application/json
description: Retrieves referral statistics for the authenticated user
produces:
- application/json
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'
security:
- Bearer: []
summary: Get referral statistics
tags:
- referral
/api/v1/report-files/download/{filename}:
get:
description: Downloads a generated report CSV file from the server
parameters:
- description: Name of the report file to download (e.g., report_daily_2025-06-21.csv)
in: path
name: filename
required: true
type: string
produces:
- text/csv
responses:
"200":
description: CSV file will be downloaded
schema:
type: file
"400":
description: Missing or invalid filename
schema:
$ref: '#/definitions/domain.ErrorResponse'
"404":
description: Report file not found
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal server error while serving the file
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Download a CSV report file
tags:
- Reports
/api/v1/report-files/list:
get:
description: Returns a paginated list of generated report CSV files with search
capability
parameters:
- description: Search term to filter filenames
in: query
name: search
type: string
- default: 1
description: 'Page number (default: 1)'
in: query
name: page
type: integer
- default: 20
description: 'Items per page (default: 20, max: 100)'
in: query
name: limit
type: integer
produces:
- application/json
responses:
"200":
description: Paginated list of CSV report filenames
schema:
$ref: '#/definitions/domain.PaginatedFileResponse'
"400":
description: Invalid pagination parameters
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Failed to read report directory
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: List available report CSV files
tags:
- Reports
/api/v1/reports/dashboard:
get:
consumes:
- application/json
description: Returns a comprehensive dashboard report with key metrics
parameters:
- description: Company ID filter
in: query
name: company_id
type: integer
- description: Branch ID filter
in: query
name: branch_id
type: integer
- description: User ID filter
in: query
name: user_id
type: integer
- description: Start time filter (RFC3339 format)
in: query
name: start_time
type: string
- description: End time filter (RFC3339 format)
in: query
name: end_time
type: string
- description: Sport ID filter
in: query
name: sport_id
type: string
- description: Status filter (0=Pending, 1=Win, 2=Loss, 3=Half, 4=Void, 5=Error)
in: query
name: status
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.DashboardSummary'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
security:
- ApiKeyAuth: []
summary: Get dashboard report
tags:
- Reports
/api/v1/result/{id}:
get:
consumes:
- application/json
description: Get results for an event
parameters:
- description: Event ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/handlers.ResultRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get results for an event
tags:
- result
/api/v1/santimpay/b2c-withdrawal:
post:
consumes:
- application/json
description: Initiates a B2C withdrawal request with SantimPay and returns the
response.
parameters:
- description: SantimPay B2C withdrawal request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.GeneratePaymentURLRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Process SantimPay B2C Withdrawal
tags:
- SantimPay
/api/v1/santimpay/b2c/partners:
get:
consumes:
- application/json
description: Fetches a list of available B2C payout partners (e.g., Telebirr,
Mpesa, Banks) from SantimPay.
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get SantimPay B2C Partners
tags:
- SantimPay
/api/v1/santimpay/callback:
post:
consumes:
- application/json
description: Processes a callback from SantimPay, updates transfer status, and
credits user wallet if payment was successful.
parameters:
- description: SantimPay callback payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.SantimPayCallbackPayload'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Process SantimPay Payment Callback
tags:
- SantimPay
/api/v1/santimpay/direct-payment:
post:
consumes:
- application/json
description: Initiates a direct payment request with SantimPay and returns the
response.
parameters:
- description: SantimPay direct payment request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.GeneratePaymentURLRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Process SantimPay Direct Payment
tags:
- SantimPay
/api/v1/santimpay/payment:
post:
consumes:
- application/json
description: Generates a payment URL using SantimPay and returns it to the client.
parameters:
- description: SantimPay payment request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.GeneratePaymentURLRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Create SantimPay Payment Session
tags:
- SantimPay
/api/v1/santimpay/transaction-status:
post:
consumes:
- application/json
description: Retrieves the real-time status of a transaction from SantimPay.
parameters:
- description: Transaction status request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.TransactionStatusRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Check SantimPay Transaction Status
tags:
- SantimPay
/api/v1/search/branch:
get:
consumes:
- application/json
description: Search branches by name or location
parameters:
- description: Search query
in: query
name: q
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BranchDetailRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Search branches
tags:
- branch
/api/v1/search/company:
get:
consumes:
- application/json
description: Gets all companies
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.CompanyRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all companies
tags:
- company
/api/v1/shop/bet:
get:
consumes:
- application/json
description: Gets all the shop bets
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.ShopBetRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all shop bets
tags:
- bet
post:
consumes:
- application/json
description: Create bet at branch
parameters:
- description: create bet
in: body
name: createBet
required: true
schema:
$ref: '#/definitions/domain.ShopBetReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopTransactionRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Create bet at branch
tags:
- transaction
/api/v1/shop/bet/{id}:
get:
consumes:
- application/json
description: Cashout bet at branch
parameters:
- description: cashout bet
in: body
name: createBet
required: true
schema:
$ref: '#/definitions/domain.CashoutReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopTransactionRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Cashout bet at branch
tags:
- transaction
/api/v1/shop/bet/{id}/cashout:
post:
consumes:
- application/json
description: Cashout bet at branch
parameters:
- description: cashout bet
in: body
name: cashoutBet
required: true
schema:
$ref: '#/definitions/domain.CashoutReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopTransactionRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Cashout bet at branch
tags:
- transaction
/api/v1/shop/cashout:
post:
consumes:
- application/json
description: Cashout bet by cashoutID
parameters:
- description: cashout bet
in: body
name: cashoutBet
required: true
schema:
$ref: '#/definitions/domain.CashoutReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopTransactionRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Cashout bet by cashoutID
tags:
- transaction
/api/v1/shop/cashout/{id}:
get:
consumes:
- application/json
description: Cashout bet at branch
parameters:
- description: cashout bet
in: body
name: createBet
required: true
schema:
$ref: '#/definitions/domain.CashoutReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopTransactionRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Cashout bet at branch
tags:
- transaction
/api/v1/shop/deposit:
post:
consumes:
- application/json
description: Transfers money from branch wallet to customer wallet
parameters:
- description: ShopDepositReq
in: body
name: transferToWallet
required: true
schema:
$ref: '#/definitions/domain.ShopDepositReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopDepositRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Shop deposit into customer wallet
tags:
- transaction
/api/v1/shop/transaction:
get:
consumes:
- application/json
description: Gets all the transactions
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.ShopTransactionRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all transactions
tags:
- transaction
/api/v1/shop/transaction/{id}:
get:
consumes:
- application/json
description: Gets a single transaction by id
parameters:
- description: Transaction ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopTransactionRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets transaction by id
tags:
- transaction
put:
consumes:
- application/json
description: Updates the verified status of a transaction
parameters:
- description: Transaction ID
in: path
name: id
required: true
type: integer
- description: Updates Transaction Verification
in: body
name: updateVerified
required: true
schema:
$ref: '#/definitions/domain.UpdateTransactionVerifiedReq'
produces:
- application/json
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'
summary: Updates the verified field of a transaction
tags:
- transaction
/api/v1/shop/transaction/{id}/bet:
get:
consumes:
- application/json
description: Gets a single shop bet by transaction id
parameters:
- description: Transaction ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ShopTransactionRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets shop bet by transaction id
tags:
- transaction
/api/v1/sport/bet:
get:
consumes:
- application/json
description: Gets all the bets
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BetRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all bets
tags:
- bet
post:
consumes:
- application/json
description: Creates a bet
parameters:
- description: Creates bet
in: body
name: createBet
required: true
schema:
$ref: '#/definitions/domain.CreateBetReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BetRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Create a bet
tags:
- bet
/api/v1/sport/bet/{id}:
delete:
consumes:
- application/json
description: Deletes bet by id
parameters:
- description: Bet ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Deletes bet by id
tags:
- bet
get:
consumes:
- application/json
description: Gets a single bet by id
parameters:
- description: Bet ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BetRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets bet by id
tags:
- bet
patch:
consumes:
- application/json
description: Updates the cashed out field
parameters:
- description: Bet ID
in: path
name: id
required: true
type: integer
- description: Updates Cashed Out
in: body
name: updateCashOut
required: true
schema:
$ref: '#/definitions/handlers.UpdateCashOutReq'
produces:
- application/json
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'
summary: Updates the cashed out field
tags:
- bet
/api/v1/sport/bet/fastcode:
post:
consumes:
- application/json
description: Creates a bet with fast code
parameters:
- description: Creates bet
in: body
name: createBetWithFastCode
required: true
schema:
$ref: '#/definitions/domain.CreateBetWithFastCodeReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BetRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Create a bet with fast code
tags:
- bet
/api/v1/sport/bet/fastcode/{fast_code}:
get:
consumes:
- application/json
description: Gets a single bet by fast_code
parameters:
- description: Bet ID
in: path
name: fast_code
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BetRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets bet by fast_code
tags:
- bet
/api/v1/sport/random/bet:
post:
consumes:
- application/json
description: Generate a random bet
parameters:
- description: Create Random bet
in: body
name: createBet
required: true
schema:
$ref: '#/definitions/domain.RandomBetReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BetRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Generate a random bet
tags:
- bet
/api/v1/supportedOperation:
get:
consumes:
- application/json
description: Gets all supported operations
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BranchDetailRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets all supported operations
tags:
- branch
post:
consumes:
- application/json
description: Creates a supported operation
parameters:
- description: Creates supported operation
in: body
name: createSupportedOperation
required: true
schema:
$ref: '#/definitions/domain.CreateSupportedOperationReq'
produces:
- application/json
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'
summary: Create a supported operation
tags:
- branch
/api/v1/telebirr/callback:
post:
consumes:
- application/json
description: Processes the Telebirr payment result and updates wallet balance.
parameters:
- description: Callback payload from Telebirr
in: body
name: payload
required: true
schema:
$ref: '#/definitions/domain.TelebirrPaymentCallbackPayload'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Handle Telebirr Payment Callback
tags:
- Telebirr
/api/v1/telebirr/payment:
post:
consumes:
- application/json
description: Generates a payment URL using Telebirr and returns it to the client.
parameters:
- description: Telebirr payment request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.GeneratePaymentURLRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Create Telebirr Payment Session
tags:
- Telebirr
/api/v1/ticket:
get:
consumes:
- application/json
description: Retrieve all tickets
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.TicketRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get all tickets
tags:
- ticket
post:
consumes:
- application/json
description: Creates a temporary ticket
parameters:
- description: Creates ticket
in: body
name: createTicket
required: true
schema:
$ref: '#/definitions/domain.CreateTicketReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.CreateTicketRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Create a temporary ticket
tags:
- ticket
/api/v1/ticket/{id}:
get:
consumes:
- application/json
description: Retrieve ticket details by ticket ID
parameters:
- description: Ticket ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.TicketRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get ticket by ID
tags:
- ticket
/api/v1/top-leagues:
get:
consumes:
- application/json
description: Retrieve all top leagues
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/handlers.TopLeague'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all top leagues
tags:
- prematch
/api/v1/transfer/refill/:id:
post:
consumes:
- application/json
description: Super Admin route to refill a wallet
parameters:
- description: Create Transfer
in: body
name: refillWallet
required: true
schema:
$ref: '#/definitions/handlers.CreateTransferReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handlers.TransferWalletRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Refill wallet
tags:
- transfer
/api/v1/transfer/wallet/:id:
post:
consumes:
- application/json
description: Create a transfer to wallet
parameters:
- description: Create Transfer
in: body
name: transferToWallet
required: true
schema:
$ref: '#/definitions/handlers.CreateTransferReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handlers.TransferWalletRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Create a transfer to wallet
tags:
- transfer
/api/v1/transfer/wallet/{id}:
get:
consumes:
- application/json
description: Get transfer by wallet
parameters:
- description: Create Transfer
in: body
name: transferToWallet
required: true
schema:
$ref: '#/definitions/handlers.CreateTransferReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handlers.TransferWalletRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get transfer by wallet
tags:
- transfer
/api/v1/user/admin-profile:
get:
consumes:
- application/json
description: Get user profile
produces:
- application/json
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'
security:
- Bearer: []
summary: Get user profile
tags:
- user
/api/v1/user/bets:
get:
consumes:
- application/json
description: Gets user bets
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BetRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Gets user bets
tags:
- user
/api/v1/user/checkPhoneEmailExist:
post:
consumes:
- application/json
description: Check if phone number or email exist
parameters:
- description: Check phone number or email exist
in: body
name: checkPhoneEmailExist
required: true
schema:
$ref: '#/definitions/handlers.CheckPhoneEmailExistReq'
produces:
- application/json
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'
summary: Check if phone number or email exist
tags:
- user
/api/v1/user/customer-profile:
get:
consumes:
- application/json
description: Get user profile
produces:
- application/json
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'
security:
- Bearer: []
summary: Get user profile
tags:
- user
/api/v1/user/delete/{id}:
delete:
consumes:
- application/json
description: Delete a user by their ID
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Delete user by ID
tags:
- user
/api/v1/user/register:
post:
consumes:
- application/json
description: Register user
parameters:
- description: Register user
in: body
name: registerUser
required: true
schema:
$ref: '#/definitions/handlers.RegisterUserReq'
produces:
- application/json
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'
summary: Register user
tags:
- user
/api/v1/user/resetPassword:
post:
consumes:
- application/json
description: Reset password
parameters:
- description: Reset password
in: body
name: resetPassword
required: true
schema:
$ref: '#/definitions/handlers.ResetPasswordReq'
produces:
- application/json
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'
summary: Reset password
tags:
- user
/api/v1/user/search:
post:
consumes:
- application/json
description: Search for user using name or phone
parameters:
- description: Search for using his name or phone
in: body
name: searchUserByNameOrPhone
required: true
schema:
$ref: '#/definitions/handlers.SearchUserByNameOrPhoneReq'
produces:
- application/json
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'
summary: Search for user using name or phone
tags:
- user
/api/v1/user/sendRegisterCode:
post:
consumes:
- application/json
description: Send register code
parameters:
- description: Send register code
in: body
name: registerCode
required: true
schema:
$ref: '#/definitions/handlers.RegisterCodeReq'
produces:
- application/json
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'
summary: Send register code
tags:
- user
/api/v1/user/sendResetCode:
post:
consumes:
- application/json
description: Send reset code
parameters:
- description: Send reset code
in: body
name: resetCode
required: true
schema:
$ref: '#/definitions/handlers.ResetCodeReq'
produces:
- application/json
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'
summary: Send reset code
tags:
- user
/api/v1/user/single/{id}:
get:
consumes:
- application/json
description: Get a single user by id
parameters:
- description: User ID
in: path
name: id
required: true
type: integer
produces:
- application/json
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'
summary: Get user by id
tags:
- user
/api/v1/user/suspend:
post:
consumes:
- application/json
description: Suspend or unsuspend a user
parameters:
- description: Suspend or unsuspend a user
in: body
name: updateUserSuspend
required: true
schema:
$ref: '#/definitions/handlers.UpdateUserSuspendReq'
produces:
- application/json
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'
summary: Suspend or unsuspend a user
tags:
- user
/api/v1/user/wallet:
get:
consumes:
- application/json
description: Retrieve customer wallet details
parameters:
- description: Company ID
in: header
name: company_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handlers.CustomerWalletRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
security:
- Bearer: []
summary: Get customer wallet
tags:
- wallet
/api/v1/veli/games-list:
post:
consumes:
- application/json
description: Retrieves games for the specified provider
parameters:
- description: Brand and Provider ID
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.GameListRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.Response'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get games by provider
tags:
- Virtual Games - VeliGames
/api/v1/veli/gaming-activity:
post:
consumes:
- application/json
description: Retrieves successfully processed gaming activity transactions (BET,
WIN, CANCEL) from Veli Games
parameters:
- description: Gaming Activity Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.GamingActivityRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.GamingActivityResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get Veli Gaming Activity
tags:
- Virtual Games - VeliGames
/api/v1/veli/huge-wins:
post:
consumes:
- application/json
description: Retrieves huge win transactions based on brand configuration (e.g.
win > 10000 USD or 100x bet)
parameters:
- description: Huge Wins Request
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.HugeWinsRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.HugeWinsResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get Veli Huge Wins
tags:
- Virtual Games - VeliGames
/api/v1/veli/providers:
post:
consumes:
- application/json
description: Retrieves the list of VeliGames providers
parameters:
- description: Brand ID and paging options
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.ProviderRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.ProviderResponse'
type: array
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get game providers
tags:
- Virtual Games - VeliGames
/api/v1/veli/start-demo-game:
post:
consumes:
- application/json
description: Starts a demo session of the specified game (must support demo
mode)
parameters:
- description: Start demo game input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.DemoGameRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.GameStartResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Start a demo game session
tags:
- Virtual Games - VeliGames
/api/v1/veli/start-game:
post:
consumes:
- application/json
description: Starts a real VeliGames session with the given player and game
info
parameters:
- description: Start game input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.GameStartRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.GameStartResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Start a real game session
tags:
- Virtual Games - VeliGames
/api/v1/virtual-game/favorites:
get:
description: Lists the games that the user marked as favorite
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.GameRecommendation'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get user's favorite games
tags:
- VirtualGames - Favourites
post:
consumes:
- application/json
description: Adds a game to the user's favorite games list
parameters:
- description: Game ID to add
in: body
name: body
required: true
schema:
$ref: '#/definitions/domain.FavoriteGameRequest'
produces:
- application/json
responses:
"201":
description: created
schema:
type: string
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Add game to favorites
tags:
- VirtualGames - Favourites
/api/v1/virtual-game/favorites/{gameID}:
delete:
description: Removes a game from the user's favorites
parameters:
- description: Game ID to remove
in: path
name: gameID
required: true
type: integer
produces:
- application/json
responses:
"200":
description: removed
schema:
type: string
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Remove game from favorites
tags:
- VirtualGames - Favourites
/api/v1/virtual-game/orchestrator/providers/status:
patch:
description: Sets the enabled status of a provider
parameters:
- description: Provider ID
in: path
name: provider_id
required: true
type: string
- description: Enable or Disable
in: query
name: enabled
required: true
type: boolean
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.VirtualGameProvider'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Enable/Disable a provider
tags:
- VirtualGames - Orchestration
/api/v1/virtual-game/providers:
get:
description: Lists all providers with pagination
parameters:
- description: Limit
in: query
name: limit
type: integer
- description: Offset
in: query
name: offset
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: List virtual game providers
tags:
- VirtualGames - Orchestration
/api/v1/virtual-game/providers/{provider_id}:
delete:
description: Deletes a provider by provider_id
parameters:
- description: Provider ID
in: path
name: provider_id
required: true
type: string
responses:
"200":
description: OK
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Remove a virtual game provider
tags:
- VirtualGames - Orchestration
get:
description: Fetches a provider by provider_id
parameters:
- description: Provider ID
in: path
name: provider_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.VirtualGameProvider'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get a virtual game provider
tags:
- VirtualGames - Orchestration
/api/v1/wallet:
get:
consumes:
- application/json
description: Retrieve all wallets
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/handlers.WalletRes'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get all wallets
tags:
- wallet
/api/v1/wallet/{id}:
get:
consumes:
- application/json
description: Retrieve wallet details by wallet ID
parameters:
- description: Wallet ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handlers.WalletRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Get wallet by ID
tags:
- wallet
patch:
consumes:
- application/json
description: Can activate and deactivate wallet
parameters:
- description: Wallet ID
in: path
name: id
required: true
type: integer
- description: Update Wallet Active
in: body
name: updateCashOut
required: true
schema:
$ref: '#/definitions/handlers.UpdateWalletActiveReq'
produces:
- application/json
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'
summary: Activate and Deactivate Wallet
tags:
- wallet
/api/v1/webhooks/alea:
post:
consumes:
- application/json
description: Handles webhook callbacks from Alea Play virtual games for bet
settlement
parameters:
- description: Callback payload
in: body
name: callback
required: true
schema:
$ref: '#/definitions/domain.AleaPlayCallback'
produces:
- application/json
responses:
"200":
description: Callback processed successfully
schema:
additionalProperties:
allOf:
- type: string
- properties:
status:
type: string
type: object
type: object
summary: Process Alea Play game callback
tags:
- Alea Virtual Games
/api/v1/win:
post:
consumes:
- application/json
description: Processes win callbacks from either Veli or PopOK providers by
auto-detecting the format
produces:
- application/json
responses:
"200":
description: Win processing result
schema: {}
"400":
description: Invalid request format
schema:
$ref: '#/definitions/domain.ErrorResponse'
"401":
description: Authentication failed
schema:
$ref: '#/definitions/domain.ErrorResponse'
"409":
description: Duplicate transaction
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal server error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Handle win callback (Veli or PopOK)
tags:
- Wins
/popok/games:
get:
consumes:
- application/json
description: Retrieves the list of available PopOK slot games
parameters:
- default: USD
description: Currency (e.g. USD, ETB)
in: query
name: currency
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.PopOKGame'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get PopOK Games List
tags:
- Virtual Games - PopOK
/popok/games/recommend:
get:
description: Recommends games based on user history or randomly
parameters:
- description: User ID
in: query
name: user_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.GameRecommendation'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Recommend virtual games
tags:
- Virtual Games - PopOK
/virtual-game/callback:
post:
consumes:
- application/json
description: Processes callbacks from PopOK for game events
parameters:
- description: Callback data
in: body
name: callback
required: true
schema:
$ref: '#/definitions/domain.PopOKCallback'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ErrorResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Handle PopOK game callback
tags:
- Virtual Games - PopOK
/virtual-game/launch:
post:
consumes:
- application/json
description: Generates a URL to launch a PopOK game
parameters:
- description: Game launch details
in: body
name: launch
required: true
schema:
$ref: '#/definitions/handlers.launchVirtualGameReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/handlers.launchVirtualGameRes'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"401":
description: Unauthorized
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
security:
- Bearer: []
summary: Launch a PopOK virtual game
tags:
- Virtual Games - PopOK
securityDefinitions:
Bearer:
in: header
name: Authorization
type: apiKey
swagger: "2.0"