AceLiveBet API Documentation

Welcome to the official API documentation for AceLiveBet platform. This document outlines all available endpoints, their request parameters, and response formats.

Authentication
Users
Transactions
Bets
Sports
Events
Roles
Permissions
Dashboard
Market Status
Tickets

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"
}