Skip to content

Latest commit

 

History

History
153 lines (119 loc) · 4.91 KB

File metadata and controls

153 lines (119 loc) · 4.91 KB

BinomoAPI Function Test Results

Test Summary

  • Total Tests: 12
  • Passed: 6 ✅ (50%)
  • Failed: 6 ❌ (50%)

✅ Working Functions

1. Login

  • Function: BinomoAPI.login(email, password)
  • Status: Fully Working
  • Result: Successfully authenticates and retrieves auth token
  • Balance: Captures balance during login process ($8000 demo balance)

2. API Instance Creation

  • Function: BinomoAPI.create_from_login()
  • Status: Fully Working
  • Result: Successfully creates API instance from login response

3. Get Available Assets

  • Function: api.get_available_assets()
  • Status: Fully Working
  • Result: Returns 52 available trading assets
  • Examples: ADA/USD, BSV/USDT, LTC/USDT, Crypto IDX, AUD/NZD

4. Get Asset RIC

  • Function: api.get_asset_ric(asset_name)
  • Status: Fully Working
  • Result: Successfully maps asset names to RIC codes
  • Examples:
    • AUD/NZD → AUD/NZD-AFX
    • Bitcoin → XBT/USD

5. Get Balance (Legacy) ✅ (Partially)

  • Function: api.Getbalance()
  • Status: Works with fallback to login balance
  • Result: $8000 demo balance (captured during login)
  • Note: Direct balance calls fail due to session issues

6. Cleanup

  • Function: api.close()
  • Status: Fully Working
  • Result: Successfully closes WebSocket connections and cleans up

❌ Non-Working Functions (Authentication Issues)

1. WebSocket Connection

  • Function: api.connect()
  • Error: HTTP 401 - server rejected WebSocket connection
  • Cause: Authentication token not accepted by WebSocket server

2. Get Balance (Modern)

  • Function: api.get_balance()
  • Error: Invalid authentication token
  • Cause: Session authentication issue

3. Place CALL Option

  • Function: api.place_call_option()
  • Error: HTTP 401 - WebSocket connection rejected
  • Cause: Requires WebSocket connection for trading

4. Place PUT Option

  • Function: api.place_put_option()
  • Error: HTTP 401 - WebSocket connection rejected
  • Cause: Requires WebSocket connection for trading

5. Legacy CALL Method

  • Function: api.Call()
  • Error: HTTP 401 - WebSocket connection rejected
  • Cause: Requires WebSocket connection for trading

6. Legacy PUT Method

  • Function: api.Put()
  • Error: HTTP 401 - WebSocket connection rejected
  • Cause: Requires WebSocket connection for trading

Key Findings

Working Features

  1. Authentication: Login works perfectly
  2. Asset Information: Can retrieve all available assets and their RIC codes
  3. Basic API Setup: Instance creation and cleanup work
  4. Balance Access: Available through login response ($8000 demo balance)

Authentication Issue

  • Root Cause: Session authentication is only valid during the login process
  • Impact: All real-time features (WebSocket, live balance, trading) fail with HTTP 401
  • Workaround: Balance is captured during login and available via login_response.balance

Recommended Usage Pattern

from BinomoAPI import BinomoAPI
import asyncio
import os
import dotenv

dotenv.load_dotenv()

async def main():
    # 1. LOGIN (Works ✅)
    login_response = BinomoAPI.login(
        os.getenv("email"), 
        os.getenv("password")
    )
    
    # 2. GET BALANCE FROM LOGIN (Works ✅)
    if hasattr(login_response, 'balance'):
        balance_dollars = login_response.balance / 100
        print(f"Demo Balance: ${balance_dollars}")
    
    # 3. CREATE API INSTANCE (Works ✅)
    api = BinomoAPI.create_from_login(
        login_response=login_response,
        device_id=login_response.user_id,
        demo=True
    )
    
    # 4. GET AVAILABLE ASSETS (Works ✅)
    assets = api.get_available_assets()
    print(f"Available assets: {len(assets)}")
    
    # 5. GET ASSET RIC (Works ✅)
    ric = api.get_asset_ric("EUR/USD")
    print(f"EUR/USD RIC: {ric}")
    
    # 6. CLEANUP (Works ✅)
    await api.close()

if __name__ == "__main__":
    asyncio.run(main())

Next Steps for Full Functionality

To enable trading and real-time features, the API would need:

  1. Session Authentication Fix: Resolve the HTTP 401 issues with WebSocket connections
  2. Token Refresh: Implement token refresh mechanism for persistent sessions
  3. Alternative Endpoints: Find HTTP-based trading endpoints that don't require WebSocket
  4. Session Persistence: Better handling of authentication state across API calls

Current Usable Features

The API currently provides:

  • ✅ User authentication
  • ✅ Account balance ($8000 demo)
  • ✅ Asset discovery (52 trading instruments)
  • ✅ Asset RIC mapping
  • ✅ Proper session management and cleanup

This gives you access to account information and trading instrument data, which covers the basic functionality for account monitoring and asset research.