Welcome to the official API documentation for AceLiveBet platform. This document outlines all available
endpoints, their request parameters, and response formats.
Authentication
POST /auth/register
Register a new user account
Request Body:
| Parameter |
Type |
Required |
Description |
| username |
String |
Yes |
Unique username |
| password |
String |
Yes |
User password (min 6 characters) |
| email |
String |
No |
Valid email address (optional) |
| name |
String |
Yes |
Full name |
| phone |
String |
No |
Phone number |
| age |
Number |
No |
Age of the user (optional) |
| address |
String |
No |
Residential address (optional) |
| account_holder_name |
String |
No |
Name of the account holder (optional) |
| account_number |
String |
No |
Bank account number (optional) |
| bank_name |
String |
No |
Name of the bank (optional) |
| bank_branch |
String |
No |
Branch of the bank (optional) |
| ifsc_code |
String |
No |
IFSC code of the bank (optional) |
| micr_code |
String |
No |
MICR code of the bank (optional) |
| white_label_id |
String |
No |
WhiteLabel ID (optional) |
| fancy_lock_status |
Boolean |
No |
Fancy bet lock status |
| betting_lock_status |
Boolean |
No |
Betting lock status |
| avatar |
String |
No |
URL of the user's avatar image |
| supervisor |
String |
No |
Supervisor ID |
| credit_limit |
Number |
No |
Credit limit for the user |
| net_Exposure |
Number |
No |
Net exposure amount |
| transaction_password |
String |
No |
Transaction password (auto-generated if not provided) |
Request Example (Minimal Required Fields):
POST /auth/register
Content-Type: application/json
{
"username": "johnsmith",
"password": "securepass123",
"name": "John Smith",
"role_slug": "user"
}
Request Example (With Optional Fields):
POST /auth/register
Content-Type: application/json
{
"username": "johnsmith",
"password": "securepass123",
"name": "John Smith",
"role_slug": "user",
"email": "john@example.com",
"phone": "+1234567890",
"age": 28,
"address": "123 Main Street, City, Country",
"account_holder_name": "John Smith",
"account_number": "9876543210",
"bank_name": "Global Bank",
"bank_branch": "Downtown Branch",
"ifsc_code": "GLOB0001234",
"micr_code": "400002000",
"white_label_id": "60d21b4667d0d8992e610c87",
"transaction_password": "transpass456"
}
Response Example:
{
"status": true,
"message": "User registered successfully",
"data": {
"user": {
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"name": "John Smith",
"email": "john@example.com"
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
POST /auth/login
Authenticate a user and get access token
Request Body:
| Parameter |
Type |
Required |
Description |
| username |
String |
Yes |
Username |
| password |
String |
Yes |
Password |
Request Example:
POST /auth/login
Content-Type: application/json
{
"username": "johnsmith",
"password": "securepass123"
}
Response Example:
{
"status": true,
"message": "Login successful",
"data": {
"user": {
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"name": "John Smith",
"email": "john@example.com",
"role": {
"_id": "60d21b4667d0d8992e610c86",
"name": "User",
"permissions": [...]
}
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
POST /auth/logout
Log out the current user
Auth Required
Response Example:
{
"status": true,
"message": "Logged out successfully"
}
POST /auth/change-password
Change user password
Auth Required
Request Body:
| Parameter |
Type |
Required |
Description |
| currentPassword |
String |
Yes |
Current password |
| newPassword |
String |
Yes |
New password (min 6 characters) |
Request Example:
POST /auth/change-password
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
"currentPassword": "securepass123",
"newPassword": "newsecurepass456"
}
Response Example:
{
"status": true,
"message": "Password changed successfully"
}
Users
GET /users
Get list of all users
Auth Required
Permission: read_users
Query Parameters:
| Parameter |
Type |
Required |
Description |
| page |
Number |
No |
Page number (default: 1) |
| limit |
Number |
No |
Items per page (default: 20) |
| search |
String |
No |
Search term for username/name/email |
| role |
String |
No |
Filter by role ID |
| status |
String |
No |
Filter by status (active/inactive) |
Request Example:
GET /users?page=1&limit=10&search=john&role=60d21b4667d0d8992e610c86&status=active
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Response Example:
{
"users": [
{
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"name": "John Smith",
"email": "john@example.com",
"role": {
"_id": "60d21b4667d0d8992e610c86",
"name": "User"
},
"status": "active",
"created_at": "2023-01-15T08:30:00.000Z"
},
// More users...
],
"totalPages": 5,
"currentPage": 1,
"total": 92
}
GET /users/profile
Get current user profile
Auth Required
Response Example:
{
"user": {
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"name": "John Smith",
"email": "john@example.com",
"phone": "+1234567890",
"role": {
"_id": "60d21b4667d0d8992e610c86",
"name": "User",
"permissions": [...]
},
"status": "active",
"created_at": "2023-01-15T08:30:00.000Z",
"white_label_id": {
"_id": "60d21b4667d0d8992e610c87",
"company_name": "AceLiveBet"
}
}
}
GET /users/downline
Get list of downline users (users created by the current user)
Auth Required
Response Example:
{
"users": [
{
"_id": "60d21b4667d0d8992e610c88",
"username": "user1",
"name": "User One",
"role": {
"_id": "60d21b4667d0d8992e610c89",
"name": "Player"
},
"status": "active",
"created_at": "2023-01-16T10:20:00.000Z"
},
// More users...
]
}
GET /users/search
Search users by username, email, phone, or name (case-insensitive)
Auth Required
Permission: read_users
Query Parameters:
| Parameter |
Type |
Required |
Description |
| query |
String |
Yes |
Search term for username, email, phone, or name |
Request Example:
GET /users/search?query=john
// With Authorization header:
// Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Response Example:
[
{
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"email": "john@example.com",
"phone": "1234567890",
"name": "John Smith",
"role": {
"name": "admin",
"slug": "admin",
"description": "Administrator",
"permissions": [ ... ]
},
"white_label_id": {
"company_name": "Acme Corp",
"domain_name": "acme.com",
"ip_address": "1.2.3.4",
"bet_status": true,
"casino_status": true,
"banner_image": "banner.jpg"
},
"supervisor": {
"username": "supervisor1",
"email": "supervisor@example.com"
}
// ...other user fields
}
]
Error Responses:
{ "message": "Query parameter is required" }
{ "message": "Server error" }
GET /users/me/permissions
Get current user's permissions
Auth Required
Response Example:
{
"permissions": [
"read_bets",
"create_bets",
"read_balance",
"read_sports",
// More permissions...
]
}
PUT /users/:id
Update a user by ID
Auth Required
Permission: update_users
URL Parameters:
| Parameter |
Type |
Required |
Description |
| id |
String |
Yes |
User ID |
Request Body:
| Parameter |
Type |
Required |
Description |
| name |
String |
No |
Full name |
| email |
String |
No |
Email address |
| phone |
String |
No |
Phone number |
| role |
String |
No |
Role ID |
Request Example:
PUT /users/60d21b4667d0d8992e610c85
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
"name": "John Smith Updated",
"email": "john.updated@example.com",
"phone": "+9876543210",
"role": "60d21b4667d0d8992e610c86"
}
Response Example:
{
"status": true,
"message": "User updated successfully",
"user": {
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"name": "John Smith Updated",
"email": "john.updated@example.com",
"phone": "+9876543210",
"role": {
"_id": "60d21b4667d0d8992e610c86",
"name": "Admin"
},
"status": "active"
}
}
Bets
POST /bets
Place a new bet
Auth Required
Permission: create_bets
Request Body:
| Parameter |
Type |
Required |
Description |
| event_id |
String |
Yes |
Event ID |
| market_type |
String |
Yes |
Market type (e.g., "match_odds", "over_under") |
| selection |
String |
Yes |
Selected outcome |
| odds |
Number |
Yes |
Betting odds (must be >= 1.0) |
| stake |
Number |
Yes |
Bet amount (must be > 0) |
| volume |
Number |
No |
Sports only: optional trade volume (>= 0) |
| is_live_bet |
Boolean |
No |
Whether it's a live bet (default: false) |
| device_info |
Object |
No |
Device information |
Request Example:
POST /bets
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
"event_id": "60d21b4667d0d8992e610c8b",
"market_type": "match_odds",
"selection": "Team A",
"odds": 2.5,
"stake": 100,
"volume": 2500,
"is_live_bet": false,
"device_info": {
"device": "desktop",
"browser": "chrome",
"ip": "192.168.1.1"
}
}
Response Example:
{
"message": "Bet placed successfully",
"bet": {
"id": "60d21b4667d0d8992e610c8a",
"reference_id": "BET12345678",
"event_id": "60d21b4667d0d8992e610c8b",
"stake": 100,
"potential_win": 250,
"status": "pending",
"placed_at": "2023-03-18T14:30:00.000Z"
},
"transaction": {
"id": "60d21b4667d0d8992e610c8c",
"type": "bet",
"amount": 100,
"status": "completed"
}
}
GET /bets
Get list of all bets (admin)
Auth Required
Permission: read_bets
Query Parameters:
| Parameter |
Type |
Required |
Description |
| page |
Number |
No |
Page number (default: 1) |
| limit |
Number |
No |
Items per page (default: 20) |
| status |
String |
No |
Filter by bet status |
| user_id |
String |
No |
Filter by user ID |
| event_id |
String |
No |
Filter by event ID |
| market_type |
String |
No |
Filter by market type |
| is_live_bet |
Boolean |
No |
Filter by live bet status |
| white_label_id |
String |
No |
Filter by white label ID |
Response Example:
{
"bets": [
{
"_id": "60d21b4667d0d8992e610c8a",
"user_id": {
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"name": "John Smith"
},
"event_id": "60d21b4667d0d8992e610c8b",
"market_type": "match_odds",
"selection": "Team A",
"odds": 2.5,
"stake": 100,
"potential_win": 250,
"status": "pending",
"result": null,
"placed_at": "2023-03-18T14:30:00.000Z"
},
// More bets...
],
"totalPages": 8,
"currentPage": 1,
"total": 152
}
GET /user/my_bets
Get current user's bets
Auth Required
Permission: read_bets
Query Parameters:
| Parameter |
Type |
Required |
Description |
| page |
Number |
No |
Page number (default: 1) |
| limit |
Number |
No |
Items per page (default: 20) |
| status |
String |
No |
Filter by bet status |
| from |
Date |
No |
Filter from date (ISO format) |
| to |
Date |
No |
Filter to date (ISO format) |
Response Example:
{
"status": true,
"message": "User bets fetched successfully",
"data": [
{
"_id": "60d21b4667d0d8992e610c8a",
"event_id": "60d21b4667d0d8992e610c8b",
"market_type": "match_odds",
"selection": "Team A",
"odds": 2.5,
"stake": 100,
"potential_win": 250,
"status": "settled",
"result": "win",
"payout_amount": 250,
"placed_at": "2023-03-18T14:30:00.000Z",
"settled_at": "2023-03-18T17:30:00.000Z"
},
// More bets...
]
}
GET /bets/profit-loss
Get user profit/loss report
Auth Required
Query Parameters:
| Parameter |
Type |
Required |
Description |
| from |
Date |
No |
Filter from date (ISO format) |
| to |
Date |
No |
Filter to date (ISO format) |
Response Example:
{
"status": true,
"message": "User profit/loss fetched successfully",
"data": [
{
"event_id": "60d21b4667d0d8992e610c8b",
"placed_at": "2023-03-18T14:30:00.000Z",
"stake": 100,
"result": "win",
"settled_at": "2023-03-18T17:30:00.000Z",
"payout_amount": 250,
"profit_loss": 150
},
{
"event_id": "60d21b4667d0d8992e610c8c",
"placed_at": "2023-03-19T12:15:00.000Z",
"stake": 200,
"result": "lose",
"settled_at": "2023-03-19T15:45:00.000Z",
"payout_amount": 0,
"profit_loss": -200
},
// More entries...
]
}
Balance
GET /balance/my-balance
Get current user's balance
Auth Required
Response Example:
{
"status": true,
"message": "Balance fetched successfully",
"data": {
"user_id": "60d21b4667d0d8992e610c85",
"main_balance": 5000,
"exposure": 500,
"casino_exposure": 0,
"profit_loss": 1200,
"credit_limit": 10000,
"available_credit": 9500
}
}
Sports
GET /sports
Get list of all sports
Auth Required
Permission: read_sports
Response Example:
{
"sports": [
{
"_id": "60d21b4667d0d8992e610c8d",
"name": "Cricket",
"slug": "cricket",
"status": "active",
"priority": 1,
"icon": "cricket.png"
},
{
"_id": "60d21b4667d0d8992e610c8e",
"name": "Football",
"slug": "football",
"status": "active",
"priority": 2,
"icon": "football.png"
},
// More sports...
]
}
GET /sports/active
Get list of active sports
Auth Required
Permission: read_sports
Response Example:
{
"sports": [
{
"_id": "60d21b4667d0d8992e610c8d",
"name": "Cricket",
"slug": "cricket",
"priority": 1,
"icon": "cricket.png"
},
// More active sports...
]
}
WhiteLabel
GET /whitelabel
Get list of all whitelabels
Auth Required
Permission: read_whitelabels
Response Example:
{
"whitelabels": [
{
"_id": "60d21b4667d0d8992e610c87",
"company_name": "AceLiveBet",
"domain_name": "acelivebet.com",
"company_email": "contact@acelivebet.com",
"company_phone": "+1234567890",
"company_address": "123 Betting Street, City",
"company_logo": "/uploads/logos/logo-123456789.jpg",
"ip_address": "192.168.1.1",
"valid_upto": "2025-12-31T23:59:59.999Z",
"bet_status": "active",
"casino_status": "active"
},
// More whitelabels...
]
}
POST /whitelabel/:id/logo
Upload logo for a whitelabel
Auth Required
Permission: update_whitelabels
URL Parameters:
| Parameter |
Type |
Required |
Description |
| id |
String |
Yes |
WhiteLabel ID |
Request Body (multipart/form-data):
| Parameter |
Type |
Required |
Description |
| logo |
File |
Yes |
Logo image file (max 5MB, JPEG/PNG/GIF/WebP) |
Response Example:
{
"status": true,
"message": "Logo uploaded successfully",
"data": {
"company_logo": "/uploads/logos/logo-123456789.jpg"
}
}
Transactions
POST /transactions/deposit
Process a deposit transaction
Auth Required
Permission: process_deposits
Request Body:
| Parameter |
Type |
Required |
Description |
| userId |
String |
Yes |
User ID |
| amount |
Number |
Yes |
Deposit amount (must be > 0) |
| remarks |
String |
No |
Transaction remarks |
| paymentMethod |
String |
No |
Payment method used |
Request Example:
POST /transactions/deposit
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
"userId": "60d21b4667d0d8992e610c85",
"amount": 1000,
"remarks": "Monthly deposit",
"paymentMethod": "bank_transfer"
}
Response Example:
{
"status": true,
"message": "Deposit processed successfully",
"transaction": {
"_id": "60d21b4667d0d8992e610c8f",
"userId": "60d21b4667d0d8992e610c85",
"type": "deposit",
"direction": "credit",
"amount": 1000,
"previous_balance": 5000,
"current_balance": 6000,
"status": "completed",
"created_at": "2023-03-20T09:15:00.000Z"
},
"new_balance": 6000
}
POST /transactions/withdraw
Process a withdrawal transaction
Auth Required
Permission: process_withdrawals
Request Body:
| Parameter |
Type |
Required |
Description |
| userId |
String |
Yes |
User ID |
| amount |
Number |
Yes |
Withdrawal amount (must be > 0) |
| remarks |
String |
No |
Transaction remarks |
| paymentMethod |
String |
No |
Payment method used |
Request Example:
POST /transactions/withdraw
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
{
"userId": "60d21b4667d0d8992e610c85",
"amount": 500,
"remarks": "User requested withdrawal",
"paymentMethod": "bank_transfer"
}
Response Example:
{
"status": true,
"message": "Withdrawal processed successfully",
"transaction": {
"_id": "60d21b4667d0d8992e610c90",
"userId": "60d21b4667d0d8992e610c85",
"type": "withdrawal",
"direction": "debit",
"amount": 500,
"previous_balance": 6000,
"current_balance": 5500,
"status": "completed",
"created_at": "2023-03-21T14:30:00.000Z"
},
"new_balance": 5500
}
GET /transactions
Get list of all transactions
Auth Required
Permission: read_transactions
Query Parameters:
| Parameter |
Type |
Required |
Description |
| page |
Number |
No |
Page number (default: 1) |
| limit |
Number |
No |
Items per page (default: 20) |
| type |
String |
No |
Filter by transaction type |
| userId |
String |
No |
Filter by user ID |
| from |
Date |
No |
Filter from date (ISO format) |
| to |
Date |
No |
Filter to date (ISO format) |
Response Example:
{
"transactions": [
{
"_id": "60d21b4667d0d8992e610c8f",
"userId": {
"_id": "60d21b4667d0d8992e610c85",
"username": "johnsmith",
"name": "John Smith"
},
"type": "deposit",
"direction": "credit",
"amount": 1000,
"previous_balance": 5000,
"current_balance": 6000,
"status": "completed",
"created_at": "2023-03-20T09:15:00.000Z"
},
// More transactions...
],
"totalPages": 12,
"currentPage": 1,
"total": 234
}
Casino
GET /casino/
Get list of all casino games
Response Example:
{
"status": true,
"message": "Casino games fetched successfully",
"data": [
{
"_id": "60d21b4667d0d8992e610c91",
"name": "Roulette",
"type": "table",
"provider": "Evolution",
"status": "active",
"min_bet": 10,
"max_bet": 1000,
"thumbnail": "/images/casino/roulette.jpg"
},
// More casino games...
]
}
Events
GET /events/list/:sportId
Get list of events for a specific sport
Auth Required
Permission: read_sports
URL Parameters:
| Parameter |
Type |
Required |
Description |
| sportId |
String |
Yes |
Sport ID |
Response Example:
{
"status": true,
"message": "Event list fetched successfully",
"sportId": "60d21b4667d0d8992e610c8d",
"sportName": "Cricket",
"rapidApiId": "4",
"data": [
{
"id": "12345678",
"name": "India vs Australia",
"start_time": "2023-08-20T10:00:00.000Z",
"status": "upcoming",
"competition": {
"id": "987654",
"name": "T20 World Cup"
}
},
// More events...
]
}
GET /events/markets/:eventId
Get markets available for a specific event
Auth Required
Permission: read_sports
URL Parameters:
| Parameter |
Type |
Required |
Description |
| eventId |
String |
Yes |
Event ID |
Response Example:
{
"status": true,
"message": "Event markets fetched successfully",
"eventId": "12345678",
"data": {
"markets": [
{
"id": "1.123456789",
"name": "Match Odds",
"selections": [
{
"id": "1",
"name": "India",
"price": 1.85
},
{
"id": "2",
"name": "Australia",
"price": 2.1
}
]
},
// More markets...
]
},
"selections": [
{
"market": "Match Odds",
"options": ["India", "Australia"]
},
// More selections...
]
}
GET /events/result/:eventId
Get result of a specific event
Auth Required
Permission: read_sports
URL Parameters:
| Parameter |
Type |
Required |
Description |
| eventId |
String |
Yes |
Event ID |
Response Example:
{
"status": true,
"message": "Event result fetched successfully",
"eventId": "60d21b4667d0d8992e610c8b",
"data": {
"home_score": 250,
"away_score": 248,
"winner": "India",
"status": "finished"
},
"settlement": {
"status": "processed",
"winners_paid": 125,
"total_bets": 356
}
}
POST /events/matches
Store a new match/event
Auth Required
Permission: create_sports
Request Body:
| Parameter |
Type |
Required |
Description |
| eventId |
String |
Yes |
Unique event identifier |
| matchDateTime |
Date |
Yes |
Start date and time of the event |
| name |
String |
Yes |
Event name |
| competitionId |
String |
Yes |
Competition ID |
| sportId |
String |
Yes |
Sport ID |
| active |
Boolean |
No |
Whether the event is active |
| inPlay |
Boolean |
No |
Whether the event is in play |
Response Example:
{
"status": true,
"message": "Match stored successfully",
"match": {
"_id": "60d21b4667d0d8992e610c8b",
"eventId": "12345678",
"name": "India vs Australia",
"matchDateTime": "2023-08-20T10:00:00.000Z",
"sportId": "60d21b4667d0d8992e610c8d",
"competitionId": "987654",
"active": true,
"inPlay": false
}
}
PATCH /events/:eventId
Update an existing event
Auth Required
Permission: update_sports
URL Parameters:
| Parameter |
Type |
Required |
Description |
| eventId |
String |
Yes |
Event ID |
Request Body:
| Parameter |
Type |
Required |
Description |
| name |
String |
No |
Event name |
| matchDateTime |
Date |
No |
Start date and time of the event |
| active |
Boolean |
No |
Whether the event is active |
| inPlay |
Boolean |
No |
Whether the event is in play |
Response Example:
{
"status": true,
"message": "Match updated successfully",
"match": {
"_id": "60d21b4667d0d8992e610c8b",
"eventId": "12345678",
"name": "India vs Australia - T20 Final",
"matchDateTime": "2023-08-20T11:00:00.000Z",
"sportId": "60d21b4667d0d8992e610c8d",
"competitionId": "987654",
"active": true,
"inPlay": true
}
}
PATCH /events/:eventId/status
Update event status
Auth Required
Permission: update_sports
URL Parameters:
| Parameter |
Type |
Required |
Description |
| eventId |
String |
Yes |
Event ID |
Request Body:
| Parameter |
Type |
Required |
Description |
| active |
Boolean |
Yes |
Whether the event is active |
Response Example:
{
"status": true,
"message": "Match status updated successfully",
"match": {
"_id": "60d21b4667d0d8992e610c8b",
"eventId": "12345678",
"name": "India vs Australia",
"active": false
}
}
Roles
GET /roles
Get list of all roles
Auth Required
Permission: read_roles
Response Example:
{
"roles": [
{
"_id": "60d21b4667d0d8992e610c86",
"name": "superadmin",
"level": 1,
"description": "Super Administrator with full control",
"permissions": ["read_users", "create_users", "update_users", "delete_users", ...]
},
{
"_id": "60d21b4667d0d8992e610c87",
"name": "admin",
"level": 2,
"description": "Administrator with most permissions",
"permissions": ["read_users", "create_users", "update_users", ...]
},
// More roles...
]
}
GET /roles/:id
Get role by ID
Auth Required
Permission: read_roles
URL Parameters:
| Parameter |
Type |
Required |
Description |
| id |
String |
Yes |
Role ID |
Response Example:
{
"role": {
"_id": "60d21b4667d0d8992e610c86",
"name": "superadmin",
"level": 1,
"description": "Super Administrator with full control",
"permissions": ["read_users", "create_users", "update_users", "delete_users", ...]
}
}
GET /roles/assignable/list
Get list of roles that the current user can assign to others
Auth Required
Response Example:
{
"message": "Assignable roles fetched successfully",
"userRole": {
"name": "admin",
"level": 2
},
"assignableRoles": [
{
"_id": "60d21b4667d0d8992e610c87",
"name": "agent",
"level": 3,
"description": "Agent with limited permissions",
"permissions": ["read_users", "create_users", ...]
},
{
"_id": "60d21b4667d0d8992e610c88",
"name": "user",
"level": 4,
"description": "Basic user",
"permissions": ["read_sports"]
}
]
}
GET /roles/hierarchy/info
Get complete role hierarchy information
Auth Required
Permission: read_roles
Response Example:
{
"message": "Role hierarchy fetched successfully",
"hierarchy": [
{
"_id": "60d21b4667d0d8992e610c86",
"name": "superadmin",
"level": 1,
"description": "Super Administrator",
"canAssignTo": [
{"_id": "60d21b4667d0d8992e610c87", "name": "admin", "level": 2},
{"_id": "60d21b4667d0d8992e610c88", "name": "agent", "level": 3},
{"_id": "60d21b4667d0d8992e610c89", "name": "user", "level": 4}
]
},
// More roles with their hierarchies...
]
}
POST /roles
Create a new role
Auth Required
Permission: create_roles
Request Body:
| Parameter |
Type |
Required |
Description |
| name |
String |
Yes |
Role name |
| level |
Number |
Yes |
Role level in hierarchy (lower number = higher authority) |
| description |
String |
No |
Role description |
| permissions |
Array |
No |
Array of permission IDs |
Response Example:
{
"message": "Role created successfully",
"role": {
"_id": "60d21b4667d0d8992e610c90",
"name": "manager",
"level": 3,
"description": "Manager with selected permissions",
"permissions": ["read_users", "create_users", "read_bets"]
}
}
PATCH /roles/:roleId
Update role details
Auth Required
Permission: update_roles
URL Parameters:
| Parameter |
Type |
Required |
Description |
| roleId |
String |
Yes |
Role ID |
Request Body:
| Parameter |
Type |
Required |
Description |
| name |
String |
No |
Role name |
| description |
String |
No |
Role description |
| level |
Number |
No |
Role level in hierarchy |
Response Example:
{
"message": "Role updated successfully",
"role": {
"_id": "60d21b4667d0d8992e610c90",
"name": "senior_manager",
"level": 3,
"description": "Senior Manager with advanced permissions"
}
}
PATCH /roles/:roleId/permissions
Update role permissions
Auth Required
Permission: manage_role_permissions
URL Parameters:
| Parameter |
Type |
Required |
Description |
| roleId |
String |
Yes |
Role ID |
Request Body:
| Parameter |
Type |
Required |
Description |
| permissions |
Array |
Yes |
Array of permission IDs |
Response Example:
{
"message": "Role permissions updated successfully",
"role": {
"_id": "60d21b4667d0d8992e610c90",
"name": "senior_manager",
"permissions": [
"read_users",
"create_users",
"update_users",
"read_bets",
"create_bets"
]
}
}
Permissions
GET /permissions
Get all permissions grouped by category
Response Example:
{
"permissions": {
"users": [
{
"_id": "60d21b4667d0d8992e610c91",
"name": "read_users",
"description": "View user information"
},
{
"_id": "60d21b4667d0d8992e610c92",
"name": "create_users",
"description": "Create new users"
},
// More user permissions...
],
"bets": [
{
"_id": "60d21b4667d0d8992e610c93",
"name": "read_bets",
"description": "View bet information"
},
// More bet permissions...
],
// More permission categories...
}
}
POST /permissions/add
Add a new permission
Auth Required
Request Body:
| Parameter |
Type |
Required |
Description |
| name |
String |
Yes |
Permission name (e.g., read_users) |
| description |
String |
Yes |
Permission description |
| category |
String |
Yes |
Permission category (e.g., users, bets) |
Response Example:
{
"message": "Permission created successfully",
"permission": {
"_id": "60d21b4667d0d8992e610c94",
"name": "view_detailed_stats",
"description": "Access detailed statistics and analytics",
"category": "dashboard"
}
}
Dashboard
GET /dashboard
Get dashboard statistics
Auth Required
Query Parameters:
| Parameter |
Type |
Required |
Description |
| white_label_id |
String |
Yes |
White label ID |
Response Example:
{
"users": 150,
"totalDeposit": 50000,
"totalWithdraw": 30000,
"totalBalance": 20000,
"whiteLabelCount": 3,
"total_deposit_request": 120,
"total_withdraw_request": 80,
"clientBalance": 15000,
"currentExposure": 5000
}
Market Status
GET /market-status
Get status of a specific market
Auth Required
Permission: read_market_status
Query Parameters:
| Parameter |
Type |
Required |
Description |
| market_id |
String |
Yes |
Market ID |
| white_label_id |
String |
Yes |
White label ID |
Response Example:
{
"message": "Market status retrieved successfully",
"marketStatus": {
"market_id": "1.123456789",
"white_label_id": "60d21b4667d0d8992e610c87",
"status": "active",
"createdAt": "2023-07-09T10:30:00.000Z",
"updatedAt": "2023-07-09T10:30:00.000Z"
}
}
GET /market-status/all
Get all market statuses with optional filters
Auth Required
Permission: read_market_status
Query Parameters:
| Parameter |
Type |
Required |
Description |
| white_label_id |
String |
No |
Filter by white label ID |
| status |
String |
No |
Filter by status (active/inactive/suspended) |
| page |
Number |
No |
Page number (default: 1) |
| limit |
Number |
No |
Items per page (default: 10) |
Response Example:
{
"message": "Market statuses retrieved successfully",
"marketStatuses": [
{
"_id": "60d21b4667d0d8992e610c95",
"market_id": "1.123456789",
"white_label_id": {
"_id": "60d21b4667d0d8992e610c87",
"name": "AceLiveBet"
},
"status": "active",
"createdAt": "2023-07-09T10:30:00.000Z",
"updatedAt": "2023-07-09T10:30:00.000Z"
},
// More market statuses...
],
"pagination": {
"currentPage": 1,
"totalPages": 5,
"totalItems": 45,
"hasNextPage": true,
"hasPrevPage": false
}
}
POST /market-status
Add a new market status
Auth Required
Permission: create_market_status
Request Body:
| Parameter |
Type |
Required |
Description |
| market_id |
String |
Yes |
Market ID |
| white_label_id |
String |
Yes |
White label ID |
| status |
String |
Yes |
Market status (active/inactive/suspended) |
Response Example:
{
"message": "Market status added successfully",
"marketStatus": {
"_id": "60d21b4667d0d8992e610c96",
"market_id": "1.123456789",
"white_label_id": "60d21b4667d0d8992e610c87",
"status": "active",
"createdAt": "2023-07-10T15:45:00.000Z",
"updatedAt": "2023-07-10T15:45:00.000Z"
}
}
PUT /market-status
Update an existing market status
Auth Required
Permission: update_market_status
Request Body:
| Parameter |
Type |
Required |
Description |
| market_id |
String |
Yes |
Market ID |
| white_label_id |
String |
Yes |
White label ID |
| status |
String |
Yes |
New market status |
Response Example:
{
"message": "Market status updated successfully",
"marketStatus": {
"market_id": "1.123456789",
"white_label_id": "60d21b4667d0d8992e610c87",
"status": "suspended",
"updatedAt": "2023-07-10T16:30:00.000Z"
}
}
DELETE /market-status
Delete a market status
Auth Required
Permission: delete_market_status
Request Body:
| Parameter |
Type |
Required |
Description |
| market_id |
String |
Yes |
Market ID |
| white_label_id |
String |
Yes |
White label ID |
Response Example:
{
"message": "Market status deleted successfully"
}
Tickets
GET /tickets
Get all support tickets
Auth Required
Permission: read_tickets
Response Example:
{
"tickets": [
{
"_id": "60d21b4667d0d8992e610c97",
"title": "Payment Issue",
"description": "My deposit is not showing in my account balance",
"user_id": "60d21b4667d0d8992e610c85",
"status": "open",
"priority": "high",
"createdAt": "2023-07-15T09:20:00.000Z",
"updatedAt": "2023-07-15T09:20:00.000Z"
},
// More tickets...
]
}
GET /tickets/:status
Get tickets by status
Auth Required
Permission: read_tickets
URL Parameters:
| Parameter |
Type |
Required |
Description |
| status |
String |
Yes |
Ticket status (open/in-progress/closed/resolved) |
Response Example:
{
"tickets": [
{
"_id": "60d21b4667d0d8992e610c97",
"title": "Payment Issue",
"description": "My deposit is not showing in my account balance",
"user_id": "60d21b4667d0d8992e610c85",
"status": "open",
"priority": "high",
"createdAt": "2023-07-15T09:20:00.000Z",
"updatedAt": "2023-07-15T09:20:00.000Z"
},
// More tickets with the specified status...
]
}
POST /tickets
Create a new support ticket
Auth Required
Permission: create_tickets
Request Body:
| Parameter |
Type |
Required |
Description |
| title |
String |
Yes |
Ticket title |
| description |
String |
Yes |
Detailed description of the issue |
| priority |
String |
No |
Ticket priority (low/medium/high) |
| category |
String |
No |
Issue category |
Response Example:
{
"message": "Ticket created successfully",
"ticket": {
"_id": "60d21b4667d0d8992e610c98",
"title": "Withdrawal Delay",
"description": "My withdrawal request has been pending for over 48 hours",
"user_id": "60d21b4667d0d8992e610c85",
"status": "open",
"priority": "high",
"category": "payment",
"createdAt": "2023-07-16T14:30:00.000Z",
"updatedAt": "2023-07-16T14:30:00.000Z"
}
}
PUT /tickets/update_status/:id
Update ticket status
Auth Required
Permission: update_tickets_status
URL Parameters:
| Parameter |
Type |
Required |
Description |
| id |
String |
Yes |
Ticket ID |
Request Body:
| Parameter |
Type |
Required |
Description |
| status |
String |
Yes |
New ticket status |
| remarks |
String |
No |
Additional notes or comments |
Response Example:
{
"_id": "60d21b4667d0d8992e610c98",
"title": "Withdrawal Delay",
"description": "My withdrawal request has been pending for over 48 hours",
"user_id": "60d21b4667d0d8992e610c85",
"status": "in-progress",
"remarks": "We are investigating the issue with the payment processor",
"priority": "high",
"category": "payment",
"updatedAt": "2023-07-16T15:45:00.000Z"
}