Yimaru-BackEnd/docs/swagger.yaml

10377 lines
255 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.ArifpayVerifyByTransactionIDRequest:
properties:
paymentType:
type: integer
transactionId:
type: string
type: object
domain.AtlasBetWinRequest:
properties:
betAmount:
type: number
casino_id:
type: string
currency:
type: string
game:
type: string
hash:
type: string
player_id:
type: string
round_id:
type: string
session_id:
type: string
timestamp:
type: string
transaction_id:
type: string
winAmount:
type: number
type: object
domain.AtlasBetWinResponse:
properties:
balance:
type: number
player_id:
type: string
type: object
domain.AtlasGameEntity:
properties:
demo_url:
description: ✅ new field
type: string
deviceType:
type: string
game_id:
type: string
has_demo:
type: boolean
hasFreeBets:
type: boolean
name:
type: string
providerId:
type: string
thumbnail_img_url:
description: ✅ new field
type: string
type:
type: string
type: object
domain.AtlasGameInitRequest:
properties:
currency:
type: string
game:
type: string
language:
type: string
player_id:
type: string
type: object
domain.AtlasGameInitResponse:
properties:
url:
type: string
type: object
domain.AtlasGetUserDataRequest:
properties:
casino_id:
type: string
game:
type: string
player_id:
type: string
session_id:
type: string
type: object
domain.AtlasGetUserDataResponse:
properties:
balance:
type: number
player_id:
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.BaseEvent:
properties:
addedTime:
$ref: '#/definitions/domain.ValidInt'
avgBetAmount:
type: integer
awayTeam:
type: string
awayTeamID:
type: integer
awayTeamImage:
type: string
defaultIsActive:
type: boolean
defaultIsFeatured:
type: boolean
defaultWinningUpperLimit:
type: integer
fetchedAt:
type: string
homeTeam:
type: string
homeTeamID:
type: integer
homeTeamImage:
type: string
id:
type: integer
isLive:
type: boolean
isMonitored:
type: boolean
leagueCC:
$ref: '#/definitions/domain.ValidString'
leagueID:
type: integer
leagueName:
type: string
matchMinute:
$ref: '#/definitions/domain.ValidInt'
matchName:
type: string
matchPeriod:
$ref: '#/definitions/domain.ValidInt'
numberOfBets:
type: integer
score:
$ref: '#/definitions/domain.ValidString'
source:
$ref: '#/definitions/domain.EventSource'
sourceEventID:
type: string
sportID:
type: integer
startTime:
type: string
status:
$ref: '#/definitions/domain.EventStatus'
timerStatus:
$ref: '#/definitions/domain.ValidString'
totalAmount:
type: integer
totalOddOutcomes:
type: integer
totalPotentialWinnings:
type: integer
type: object
domain.BaseLeague:
properties:
bet365ID:
$ref: '#/definitions/domain.ValidInt32'
countryCode:
$ref: '#/definitions/domain.ValidString'
defaultIsActive:
type: boolean
defaultIsFeatured:
type: boolean
id:
type: integer
name:
type: string
sportID:
type: integer
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
company_id:
example: 1
type: integer
company_slug:
example: fortune
type: string
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
company_name:
example: fortune
type: string
deducted_stake:
type: number
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
number_of_unsettled:
type: integer
profit_percentage:
example: 0.1
type: number
stats_updated_at:
type: string
total_bets:
type: integer
total_cash_backs:
type: number
total_cash_out:
type: number
total_cashiers:
type: integer
total_stake:
type: number
total_unsettled_amount:
type: number
wallet_id:
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.ChapaCancelResponse:
properties:
amount:
type: number
created_at:
type: string
currency:
type: string
message:
type: string
status:
type: string
tx_ref:
type: string
updated_at:
type: string
type: object
domain.ChapaCustomer:
properties:
email:
type: string
first_name:
type: string
id:
type: integer
last_name:
type: string
mobile:
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.ChapaTransaction:
properties:
amount:
type: string
charge:
type: string
created_at:
type: string
currency:
type: string
customer:
$ref: '#/definitions/domain.ChapaCustomer'
payment_method:
type: string
ref_id:
type: string
status:
type: string
trans_id:
type: string
type:
type: string
type: object
domain.ChapaTransactionEvent:
properties:
created_at:
type: string
item:
type: integer
message:
type: string
type:
type: string
updated_at:
type: string
type: object
domain.ChapaWebhookCustomization:
properties:
description:
type: string
logo:
type: string
title:
type: string
type: object
domain.ChapaWebhookPayment:
properties:
amount:
type: string
charge:
type: string
created_at:
type: string
currency:
type: string
customization:
$ref: '#/definitions/domain.ChapaWebhookCustomization'
email:
type: string
event:
type: string
first_name:
type: string
last_name:
type: string
meta:
description: may vary in structure, so kept flexible
mobile:
type: string
mode:
type: string
payment_method:
type: string
reference:
type: string
status:
type: string
tx_ref:
type: string
type:
type: string
updated_at:
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.CompanyMarketSettings:
properties:
companyID:
type: integer
isActive:
$ref: '#/definitions/domain.ValidBool'
marketID:
type: integer
marketName:
type: string
updatedAt:
type: string
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
slug:
example: slug
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.CreateCompanyMarketSettings:
properties:
companyID:
type: integer
isActive:
$ref: '#/definitions/domain.ValidBool'
marketID:
type: integer
marketName:
type: string
type: object
domain.CreateCompanyReq:
properties:
admin_id:
example: 1
type: integer
deducted_percentage:
example: 0.1
type: number
is_active:
type: boolean
name:
example: CompanyName
type: string
slug:
type: string
type: object
domain.CreateDirectDeposit:
properties:
accountHolder:
type: string
accountNumber:
type: string
amount:
type: number
bankName:
type: string
customerID:
type: integer
referenceNumber:
type: string
transferScreenshot:
type: string
walletID:
type: integer
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.CreditBalance:
properties:
balance:
type: number
currency:
type: string
threshold:
type: number
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
deviceType:
type: string
gameId:
type: string
ip:
type: string
language:
type: string
providerId:
type: string
type: object
domain.DirectDeposit:
properties:
accountHolder:
type: string
accountNumber:
type: string
amount:
type: number
approvedAt:
type: string
approvedBy:
type: integer
bankName:
type: string
createdAt:
type: string
customerID:
type: integer
id:
type: integer
referenceNumber:
type: string
rejectionReason:
type: string
status:
type: string
transferScreenshot:
type: string
walletID:
type: integer
type: object
domain.EnetpulseFixture:
properties:
gender:
type: string
id:
type: string
"n":
description: convert to int
type: string
name:
type: string
round_typeFK:
type: string
sport_name:
type: string
sportFK:
type: string
startdate:
description: ISO 8601
type: string
status_descFK:
type: string
status_type:
type: string
tournament_name:
type: string
tournament_stage_name:
description: TournamentStageFK string `json:"tournament_stageFK"`
type: string
tournament_template_name:
type: string
tournament_templateFK:
type: string
tournamentFK:
type: string
ut:
description: parse to time.Time
type: string
type: object
domain.EnetpulseFixtureWithPreodds:
properties:
createdAt:
type: string
fixtureApiID:
type: string
fixtureID:
type: string
fixtureName:
type: string
lastUpdatedAt:
type: string
preodds:
items:
$ref: '#/definitions/domain.EnetpulsePreodds'
type: array
roundTypeFk:
type: string
sportFk:
type: string
startDate:
type: string
statusDescFk:
type: string
statusType:
type: string
tournamentFk:
type: string
tournamentStageFk:
type: string
tournamentTemplateFk:
type: string
updatedAt:
type: string
updatesCount:
type: integer
type: object
domain.EnetpulsePreodds:
properties:
bettingOffers:
items:
$ref: '#/definitions/domain.EnetpulsePreoddsBettingOffer'
type: array
createdAt:
type: string
dparam:
type: string
dparam2:
type: string
eventFK:
type: integer
eventParticipantNumber:
type: integer
id:
type: integer
iparam:
type: string
iparam2:
type: string
lastUpdatedAt:
type: string
outcomeScopeFK:
type: integer
outcomeSubtypeFK:
type: integer
outcomeTypeFK:
type: integer
preoddsID:
type: string
sparam:
type: string
updatedAt:
type: string
updatesCount:
type: integer
type: object
domain.EnetpulsePreoddsBettingOffer:
properties:
active:
type: string
betting_offer_id:
type: string
betting_offer_status_fk:
type: integer
coupon_key:
type: string
created_at:
type: string
id:
type: integer
last_updated_at:
type: string
odds:
type: number
odds_old:
type: number
odds_provider_fk:
type: integer
preodds_fk:
type: string
updated_at:
type: string
updates_count:
type: integer
type: object
domain.EnetpulseResult:
properties:
commentary:
type: string
created_at:
type: string
first_half_ended:
type: string
game_ended:
type: string
game_started:
type: string
id:
type: integer
last_updated_at:
type: string
lineup_confirmed:
type: boolean
live:
type: string
livestats_plus:
type: string
livestats_type:
type: string
name:
type: string
result_id:
type: string
round:
type: string
round_type_fk:
type: string
second_half_ended:
type: string
second_half_started:
type: string
spectators:
type: integer
sport_fk:
type: string
sport_name:
type: string
start_date:
type: string
status_desc_fk:
type: string
status_type:
type: string
tournament_fk:
type: string
tournament_name:
type: string
tournament_stage_name:
description: TournamentStageFK string `json:"tournament_stage_fk"`
type: string
tournament_template_fk:
type: string
tournament_template_name:
type: string
updated_at:
type: string
updates_count:
type: integer
venue_name:
type: string
verified:
type: boolean
type: object
domain.EnetpulseSport:
properties:
created_at:
type: string
id:
description: DB primary key
type: integer
last_updated_at:
type: string
name:
description: from API "name"
type: string
sport_id:
description: from API "id"
type: string
status:
description: active/inactive
type: integer
updated_at:
type: string
updates_count:
description: from API "n"
type: integer
type: object
domain.EnetpulseTournament:
properties:
createdAt:
type: string
id:
description: internal DB PK
type: integer
lastUpdatedAt:
type: string
name:
type: string
status:
type: integer
tournamentID:
type: string
tournamentTemplateFK:
type: string
updatedAt:
type: string
updatesCount:
type: integer
type: object
domain.EnetpulseTournamentStage:
properties:
country_fk:
description: country FK from API
type: string
country_name:
description: country name from API
type: string
created_at:
type: string
end_date:
description: end date/time
type: string
gender:
description: male/female/mixed/unknown
type: string
id:
type: integer
last_updated_at:
description: ut from API
type: string
name:
description: API name
type: string
stage_id:
description: API id
type: string
start_date:
description: start date/time
type: string
status:
description: active/inactive
type: integer
tournament_fk:
description: Foreign key to tournament
type: string
updated_at:
type: string
updates_count:
description: n from API
type: integer
type: object
domain.EnetpulseTournamentTemplate:
properties:
created_at:
type: string
gender:
description: male, female, mixed, unknown
type: string
id:
type: integer
last_updated_at:
type: string
name:
description: from API "name"
type: string
sport_fk:
description: related sport id
type: string
status:
description: optional
type: integer
template_id:
description: from API "id"
type: string
updated_at:
type: string
updates_count:
description: from API "n"
type: integer
type: object
domain.ErrorResponse:
properties:
error:
type: string
message:
type: string
type: object
domain.EventSource:
enum:
- b365api
- bwin
- bfair
- 1xbet
- enetpulse
type: string
x-enum-varnames:
- EVENT_SOURCE_BET365
- EVENT_SOURCE_BWIN
- EVENT_SOURCE_BETFAIR
- EVENT_SOURCE_1XBET
- EVENT_SOURCE_ENET
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.EventWithSettingsRes:
properties:
added_time:
type: integer
average_bet_amount:
type: number
away_team:
type: string
away_team_id:
type: integer
away_team_image:
type: string
default_is_active:
type: boolean
default_is_featured:
type: boolean
default_winning_upper_limit:
type: integer
fetched_at:
type: string
home_team:
type: string
home_team_id:
type: integer
home_team_image:
type: string
id:
type: integer
is_active:
type: boolean
is_featured:
type: boolean
is_live:
type: boolean
is_monitored:
type: boolean
league_cc:
type: string
league_id:
type: integer
league_name:
type: string
match_minute:
type: integer
match_name:
type: string
match_period:
type: integer
number_of_bets:
type: integer
score:
type: string
source:
$ref: '#/definitions/domain.EventSource'
source_event_id:
type: string
sport_id:
type: integer
start_time:
type: string
status:
$ref: '#/definitions/domain.EventStatus'
timer_status:
type: string
total_amount:
type: number
total_odd_outcomes:
type: integer
total_potential_winnings:
type: number
updated_at:
type: string
winning_upper_limit:
type: integer
type: object
domain.FavoriteGameRequest:
properties:
game_id:
type: integer
type: object
domain.FreeSpinRequest:
properties:
casino_id:
type: string
end_date:
description: '"yyyy-mm-ddTHH:MM:SS+00:00"'
type: string
freespins_count:
description: count of free spins/bets
type: integer
hash:
type: string
player_id:
type: string
timestamp:
type: string
type: object
domain.FreeSpinResponse:
properties:
success:
type: boolean
type: object
domain.FreeSpinResultRequest:
properties:
amount:
description: win amount
type: number
casino_id:
type: string
currency:
type: string
game:
type: string
hash:
type: string
player_id:
type: string
round_id:
type: integer
session_id:
type: string
timestamp:
type: string
transaction_id:
type: string
type: object
domain.FreeSpinResultResponse:
properties:
success:
type: boolean
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
country:
type: string
currency:
type: string
deviceType:
type: string
gameId:
type: string
ip:
type: string
language:
type: string
playerId:
type: string
providerId:
type: string
sessionId:
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
deducted_stake:
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
number_of_unsettled:
type: integer
slug:
example: slug
type: string
stats_updated_at:
type: string
total_admins:
type: integer
total_approvers:
type: integer
total_bets:
type: integer
total_branches:
type: integer
total_cash_backs:
type: number
total_cash_out:
type: number
total_cashiers:
type: integer
total_customers:
type: integer
total_managers:
type: integer
total_stake:
type: number
total_unsettled_amount:
type: number
wallet_id:
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.JackpotRequest:
properties:
amount:
description: jackpot win
type: number
casino_id:
type: string
currency:
type: string
details:
type: string
game:
type: string
hash:
type: string
player_id:
type: string
round_id:
type: integer
session_id:
type: string
timestamp:
type: string
transaction_id:
type: string
type: object
domain.JackpotResponse:
properties:
success:
type: boolean
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.MarketSettings:
properties:
isActive:
type: boolean
marketID:
type: integer
marketName:
type: string
updatedAt:
type: string
type: object
domain.OddMarketFilter:
properties:
limit:
$ref: '#/definitions/domain.ValidInt32'
offset:
$ref: '#/definitions/domain.ValidInt32'
type: object
domain.OddMarketWithEventFilter:
properties:
isLive:
$ref: '#/definitions/domain.ValidBool'
limit:
$ref: '#/definitions/domain.ValidInt32'
offset:
$ref: '#/definitions/domain.ValidInt32'
status:
$ref: '#/definitions/domain.ValidString'
type: object
domain.OutcomeStatus:
enum:
- 0
- 1
- 2
- 3
- 4
- 5
type: integer
x-enum-comments:
OUTCOME_STATUS_ERROR: Error (Unsettled Bet)
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
metadata: {}
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.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:
expires_at:
type: string
fetched_at:
type: string
handicap:
type: string
id:
type: integer
market_name:
type: string
raw_odds:
items:
additionalProperties: true
type: object
type: array
type: object
domain.ReferralStats:
properties:
totalReferrals:
type: integer
totalRewardEarned:
type: integer
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
metadata: {}
status_code:
type: integer
success:
type: boolean
type: object
domain.Role:
enum:
- super_admin
- admin
- branch_manager
- customer
- cashier
- transaction_approver
type: string
x-enum-varnames:
- RoleSuperAdmin
- RoleAdmin
- RoleBranchManager
- RoleCustomer
- RoleCashier
- RoleTransactionApprover
domain.RollbackRequest:
properties:
bet_transaction_id:
type: string
casino_id:
type: string
game:
type: string
hash:
type: string
player_id:
type: string
round_id:
type: integer
session_id:
type: string
timestamp:
type: string
type: object
domain.RollbackResponse:
properties:
success:
type: boolean
type: object
domain.RoundResultRequest:
properties:
amount:
description: win amount
type: number
bet_transaction_id:
description: from BET request
type: string
casino_id:
type: string
currency:
type: string
game:
type: string
hash:
type: string
player_id:
type: string
round_id:
type: integer
session_id:
type: string
timestamp:
type: string
transaction_id:
description: new transaction id
type: string
type: object
domain.RoundResultResponse:
properties:
success:
type: boolean
type: object
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: number
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
fast_code:
example: 12SD1
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.SwapRequest:
properties:
amount:
type: number
from:
type: string
to:
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
company_id:
example: 1
type: integer
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.UnifiedGame:
properties:
bets:
items:
type: number
type: array
category:
type: string
demoUrl:
type: string
deviceType:
type: string
gameId:
type: string
hasDemo:
type: boolean
hasFreeBets:
type: boolean
name:
type: string
provider:
type: string
providerId:
type: string
rtp:
type: number
status:
type: integer
thumbnail:
type: string
volatility:
type: string
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
slug:
type: string
type: object
domain.UpdateTransactionVerifiedReq:
properties:
verified:
example: true
type: boolean
type: object
domain.ValidBool:
properties:
valid:
type: boolean
value:
type: boolean
type: object
domain.ValidInt:
properties:
valid:
type: boolean
value:
type: integer
type: object
domain.ValidInt32:
properties:
valid:
type: boolean
value:
type: integer
type: object
domain.ValidString:
properties:
valid:
type: boolean
value:
type: string
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.VirtualGameProviderReport:
properties:
created_at:
type: string
id:
type: integer
provider_id:
type: string
report_date:
type: string
report_type:
type: string
total_bets:
type: number
total_games_played:
type: integer
total_payouts:
type: number
total_players:
type: integer
total_profit:
type: number
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.CreateTransactionApproverReq:
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
number_of_deposits:
type: integer
number_of_transactions:
type: integer
number_of_transfers:
type: integer
number_of_withdraws:
type: integer
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
total_deposits_amount:
type: number
total_transactions:
type: number
total_transfers_amount:
type: number
total_withdraws_amount:
type: number
updated_at:
type: string
type: object
handlers.CustomersRes:
properties:
company_id:
type: integer
company_name:
type: string
created_at:
type: string
email:
type: string
email_verified:
type: boolean
first_name:
type: string
id:
type: integer
last_login:
type: string
last_name:
type: string
phone_number:
type: string
phone_verified:
type: boolean
role:
$ref: '#/definitions/domain.Role'
suspended:
type: boolean
suspended_at:
type: string
updated_at:
type: string
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
referral_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.EventWithSettingsRes'
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:
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:
/account:
post:
consumes:
- application/json
description: Callback endpoint for Atlas game server to fetch player balance
parameters:
- description: Get user data input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.AtlasGetUserDataRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.AtlasGetUserDataResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Atlas Get User Data callback
tags:
- Virtual Games - Atlas
/api/v1/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/events:
get:
consumes:
- application/json
description: Retrieve all upcoming events settings 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.BaseEvent'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all upcoming events with settings
tags:
- prematch
/api/v1/{tenant_slug}/leagues:
get:
consumes:
- application/json
description: Gets all leagues
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.BaseLeague'
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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/market-settings:
delete:
consumes:
- application/json
description: Remove all overridden market settings for a specific tenant
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 all market settings for a tenant
tags:
- market_settings
get:
consumes:
- application/json
description: Get all market settings overridden for a specific tenant
parameters:
- 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.CompanyMarketSettings'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all market settings for a tenant
tags:
- market_settings
post:
consumes:
- application/json
description: Insert new market settings for a specific tenant/company
parameters:
- description: Market Settings
in: body
name: body
required: true
schema:
$ref: '#/definitions/domain.CreateCompanyMarketSettings'
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: Insert company-specific market settings
tags:
- market_settings
/api/v1/{tenant_slug}/market-settings/{id}:
delete:
consumes:
- application/json
description: Remove a specific overridden market setting for a tenant
parameters:
- description: Market 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 a specific market setting for a tenant
tags:
- market_settings
/api/v1/{tenant_slug}/odds:
get:
consumes:
- application/json
description: Retrieve all odds from the database
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.OddMarketFilter'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all odds
tags:
- prematch
/api/v1/{tenant_slug}/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.OddMarketFilter'
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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/user/resetPassword:
post:
consumes:
- application/json
description: Reset tenant 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 tenant password
tags:
- user
/api/v1/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}/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/{tenant_slug}events/{id}:
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.BaseEvent'
"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/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 transaction approver
parameters:
- description: Create transaction approver
in: body
name: manger
required: true
schema:
$ref: '#/definitions/handlers.CreateTransactionApproverReq'
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 transaction approver
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.CheckoutSessionClientRequest'
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/cancel/{sessionId}:
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/atlas/freespin:
post:
consumes:
- application/json
description: Sends a request to Atlas to create free spins/bets for a given
player
parameters:
- description: Free spin input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.FreeSpinRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.FreeSpinResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Create free spins for a player
tags:
- Virtual Games - Atlas
/api/v1/atlas/games:
get:
description: Retrieves available Atlas virtual games from the provider
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.AtlasGameEntity'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: List Atlas virtual games
tags:
- Virtual Games - Atlas
/api/v1/atlas/init-game:
post:
consumes:
- application/json
description: Initializes a game session for the given player using Atlas virtual
game provider
parameters:
- description: Start game input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.AtlasGameInitRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.AtlasGameInitResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Start an Atlas virtual game session
tags:
- Virtual Games - Atlas
/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/branch/{id}/return:
post:
consumes:
- application/json
description: Unassign the branch wallet to company
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: Unassign the branch wallet to company
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/balances:
get:
consumes:
- application/json
description: Retrieve Chapa account balance, optionally filtered by currency
code (e.g., ETB, USD)
parameters:
- description: Currency code (optional)
in: query
name: currency_code
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: Get Chapa account balance
tags:
- Chapa
/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/receipt/{chapa_ref}:
get:
consumes:
- application/json
description: Retrieve the Chapa payment receipt URL using the reference ID
parameters:
- description: Chapa Reference ID
in: path
name: chapa_ref
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: Get Chapa Payment Receipt URL
tags:
- Chapa
/api/v1/chapa/payments/webhook/verify:
post:
consumes:
- application/json
description: Handles payment and transfer notifications from Chapa
parameters:
- description: Webhook payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.ChapaWebhookPayment'
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: 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:
"200":
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/chapa/swap:
post:
consumes:
- application/json
description: Convert an amount from one currency to another using Chapa's currency
swap API
parameters:
- description: Swap request payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.SwapRequest'
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: Swap currency using Chapa API
tags:
- Chapa
/api/v1/chapa/transaction/cancel/{tx_ref}:
put:
consumes:
- application/json
description: Cancels an active Chapa transaction using its transaction reference
parameters:
- description: Transaction Reference
in: path
name: tx_ref
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.ChapaCancelResponse'
"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'
security:
- ApiKeyAuth: []
summary: Cancel a Chapa deposit transaction
tags:
- Chapa
/api/v1/chapa/transaction/events/{ref_id}:
get:
consumes:
- application/json
description: Retrieve the timeline of events for a specific Chapa transaction
parameters:
- description: Transaction Reference
in: path
name: ref_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.ChapaTransactionEvent'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Fetch transaction events
tags:
- Chapa
/api/v1/chapa/transaction/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.Response'
"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/transactions:
get:
consumes:
- application/json
description: Retrieves all transactions from Chapa payment gateway
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.ChapaTransaction'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
security:
- ApiKeyAuth: []
summary: Get all Chapa transactions
tags:
- Chapa
/api/v1/chapa/transfers:
get:
consumes:
- application/json
description: Retrieve all transfer records from Chapa
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: Get all Chapa transfers
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/customer/{id}/bets:
get:
consumes:
- application/json
description: Get customer bets
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 bets
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-deposits:
get:
consumes:
- application/json
description: Fetches direct deposits filtered by status with pagination
parameters:
- description: Deposit status (e.g., PENDING, APPROVED, REJECTED)
in: query
name: status
required: true
type: string
- description: Page number
in: query
name: page
type: integer
- description: Page size
in: query
name: pageSize
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.DirectDeposit'
type: array
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get direct deposits by status
tags:
- DirectDeposit
post:
consumes:
- application/json
description: Creates a direct deposit for a customer and notifies both the customer
and admins
parameters:
- description: Direct deposit details
in: body
name: body
required: true
schema:
$ref: '#/definitions/domain.CreateDirectDeposit'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.DirectDeposit'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Create a new direct deposit
tags:
- DirectDeposit
/api/v1/direct-deposits/{depositID}:
delete:
consumes:
- application/json
description: Deletes a direct deposit by its ID
parameters:
- description: Deposit ID
in: path
name: depositID
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
type: string
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Delete a direct deposit
tags:
- DirectDeposit
get:
consumes:
- application/json
description: Fetches a single direct deposit by its ID
parameters:
- description: Deposit ID
in: path
name: depositID
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
$ref: '#/definitions/domain.DirectDeposit'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get a direct deposit by ID
tags:
- DirectDeposit
/api/v1/direct-deposits/{depositID}/approve:
post:
consumes:
- application/json
description: Approves a direct deposit by admin and credits customer wallet
parameters:
- description: Deposit ID
in: path
name: depositID
required: true
type: integer
- description: Admin ID performing the approval
in: query
name: adminID
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
type: string
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Approve a direct deposit
tags:
- DirectDeposit
/api/v1/direct-deposits/{depositID}/reject:
post:
consumes:
- application/json
description: Rejects a direct deposit by admin and notifies the customer
parameters:
- description: Deposit ID
in: path
name: depositID
required: true
type: integer
- description: Admin ID performing the rejection
in: query
name: adminID
required: true
type: integer
- description: Reason for rejection
in: query
name: reason
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
type: string
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Reject a direct deposit
tags:
- DirectDeposit
/api/v1/enetpulse/betting-offers:
get:
consumes:
- application/json
description: Fetches all EnetPulse preodds betting offers stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulsePreoddsBettingOffer'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all betting offers
tags:
- EnetPulse
/api/v1/enetpulse/fixtures:
get:
consumes:
- application/json
description: Fetches all fixtures stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulseFixture'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all stored fixtures
tags:
- EnetPulse
/api/v1/enetpulse/fixtures/preodds:
get:
consumes:
- application/json
description: Fetches all EnetPulse fixtures along with their associated pre-match
odds
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulseFixtureWithPreodds'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get fixtures with preodds
tags:
- EnetPulse
/api/v1/enetpulse/preodds:
get:
consumes:
- application/json
description: Fetches all EnetPulse pre-match odds stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulsePreodds'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all preodds
tags:
- EnetPulse
/api/v1/enetpulse/preodds-with-offers:
get:
consumes:
- application/json
description: Fetches all EnetPulse pre-match odds along with their associated
betting offers stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulsePreodds'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all preodds with betting offers
tags:
- EnetPulse
/api/v1/enetpulse/results:
get:
consumes:
- application/json
description: Fetches all EnetPulse match results stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulseResult'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all results
tags:
- EnetPulse
/api/v1/enetpulse/sports:
get:
consumes:
- application/json
description: Fetches all sports stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulseSport'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all sports
tags:
- EnetPulse
/api/v1/enetpulse/tournament-stages:
get:
consumes:
- application/json
description: Fetches all tournament stages stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulseTournamentStage'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all tournament stages
tags:
- EnetPulse
/api/v1/enetpulse/tournament-templates:
get:
consumes:
- application/json
description: Fetches all tournament templates stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulseTournamentTemplate'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all tournament templates
tags:
- EnetPulse
/api/v1/enetpulse/tournaments:
get:
consumes:
- application/json
description: Fetches all tournaments stored in the database
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.EnetpulseTournament'
type: array
type: object
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get all tournaments
tags:
- EnetPulse
/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.BaseEvent'
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.BaseEvent'
"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}/bets:
get:
consumes:
- application/json
description: Retrieve bet outcomes by event id
parameters:
- description: ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BaseEvent'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve bet outcomes by event id
tags:
- prematch
/api/v1/events/{id}/is_monitored:
patch:
consumes:
- application/json
description: Update the event is_monitored
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 is_monitored
tags:
- event
/api/v1/events/{id}/settings:
put:
consumes:
- application/json
description: Update the event settings
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 settings
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.BaseLeague'
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/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/market-settings:
get:
consumes:
- application/json
description: Get all market settings that apply globally
parameters:
- 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.MarketSettings'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all global market settings
tags:
- market_settings
/api/v1/odds:
get:
consumes:
- application/json
description: Retrieve all odds from the database
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.OddMarketFilter'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve all 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.OddMarketWithEventFilter'
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/orchestrator/virtual-game/provider-reports/asc:
get:
description: Retrieves all virtual game provider reports sorted by total_games_played
in ascending order
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.VirtualGameProviderReport'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: List virtual game provider reports (ascending)
tags:
- VirtualGames - Orchestration
/api/v1/orchestrator/virtual-game/provider-reports/desc:
get:
description: Retrieves all virtual game provider reports sorted by total_games_played
in descending order
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/domain.VirtualGameProviderReport'
type: array
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: List virtual game provider reports (descending)
tags:
- VirtualGames - Orchestration
/api/v1/orchestrator/virtual-games:
get:
consumes:
- application/json
description: Returns all virtual games with optional filters (category, search,
pagination)
parameters:
- description: Filter by category
in: query
name: category
type: string
- description: Search by game name
in: query
name: search
type: string
- description: Pagination limit
in: query
name: limit
type: integer
- description: Pagination offset
in: query
name: offset
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.UnifiedGame'
type: array
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: List all virtual games
tags:
- VirtualGames - Orchestration
/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/b365/{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/{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
/api/v1/super-login:
post:
consumes:
- application/json
description: Login super-admin
parameters:
- description: Login super-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 super-admin
tags:
- auth
/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/t-approver:
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
/api/v1/t-approver/{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/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/tenant:
get:
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/tenant/{tenant_slug}/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/tenant/{tenant_slug}/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/tenant/{tenant_slug}/customer/{id}/bets:
get:
consumes:
- application/json
description: Get tenant customer bets
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 tenant customer bets
tags:
- customer
/api/v1/tenant/{tenant_slug}/events/{id}/bets:
get:
consumes:
- application/json
description: Retrieve bet outcomes by event id
parameters:
- description: ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.BaseEvent'
"400":
description: Bad Request
schema:
$ref: '#/definitions/response.APIResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/response.APIResponse'
summary: Retrieve bet outcomes by event id
tags:
- prematch
/api/v1/tenant/{tenant_slug}/events/{id}/settings:
put:
consumes:
- application/json
description: Update the event settings
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 settings
tags:
- event
/api/v1/tenant/{tenant_slug}/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/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
/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/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/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/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/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/veli/credit-balances:
get:
consumes:
- application/json
description: Fetches current credit balances per currency for the specified
brand
parameters:
- description: Brand ID
in: query
name: brandId
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/domain.Response'
- properties:
data:
items:
$ref: '#/definitions/domain.CreditBalance'
type: array
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Get VeliGames credit balances for a brand
tags:
- Virtual Games - VeliGames
/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
/betwin:
post:
consumes:
- application/json
description: Processes a Bet and Win request from Atlas provider
parameters:
- description: Atlas BetWin input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.AtlasBetWinRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.AtlasBetWinResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Atlas BetWin callback
tags:
- Virtual Games - Atlas
/freespin:
post:
consumes:
- application/json
description: Handles the result of a free spin/bet from the game server
parameters:
- description: Free spin result input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.FreeSpinResultRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.FreeSpinResultResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Free Spin/Bet result callback
tags:
- Virtual Games - Atlas
/jackpot:
post:
consumes:
- application/json
description: Handles the jackpot result from the game server
parameters:
- description: Jackpot result input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.JackpotRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.JackpotResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Jackpot result callback
tags:
- Virtual Games - Atlas
/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
/result:
post:
consumes:
- application/json
description: Processes a round result from Atlas or other providers
parameters:
- description: Round result input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.RoundResultRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.RoundResultResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Atlas Round Result callback
tags:
- Virtual Games - Atlas
/rollback:
post:
consumes:
- application/json
description: Processes a rollback request from Atlas or other providers
parameters:
- description: Rollback request input
in: body
name: request
required: true
schema:
$ref: '#/definitions/domain.RollbackRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/domain.RollbackResponse'
"400":
description: Bad Request
schema:
$ref: '#/definitions/domain.ErrorResponse'
"502":
description: Bad Gateway
schema:
$ref: '#/definitions/domain.ErrorResponse'
summary: Atlas Rollback callback
tags:
- Virtual Games - Atlas
/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
/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
securityDefinitions:
Bearer:
in: header
name: Authorization
type: apiKey
swagger: "2.0"