---
# System prepended metadata

title: JS Bundles Inputs - Outputs - Errors - Oddsium team

---

# JS Bundles Inputs - Outputs - Errors
## Bundle Operations Inputs
### Register Inputs
Provider
User
Callback

### Successful Register Outputs
Response

### Login
Provider
User
Callback

### Balance
Provider
User
Callback

### Get bet odds
Provider
User
Bet
Callback

### Place bet
Provider
User
Bet
Callback

### Bet history
Provider
User
Date
Callback

### Deposit
Provider
User
Callback

### Withdraw
Provider
User
Callback

### Stream
Provider
User
GameId
callback

### (Not implemented) Bonus

## Input Parameter Structures
### Provider
```swift=
static func request(_ request: [String: Any],
                        _ callback: JSValue,
                        _ operatorName: String)
    
static func formRequest(_ request: [String: Any],
                        _ callback: JSValue,
                        _ operatorName: String)
    
static func webRequest(_ url: String,
                       _ options: [String: Any],
                       _ callback: JSValue,
                       _ operatorName: String)
    
static func webView(_ url: String,
                    _ options: [String: Any],
                    _ callback: JSValue,
                    _ operatorName: String,
                    _ makedelay: Int)
    
static func clearCache(_ operatorName: String)

static func getCookies(_ operatorName: String) -> String
    
static func setParameter(_ operatorName: String, 
                         _ key: String, 
                         _ value: String)

static func getParameter(_ operatorName: String, 
                         _ key: String) -> String

static func clearParameter(_ operatorName: String, 
                           _ key: String)

static func clearAllParameters(_ operatorName: String)
    
static func openURL(_ url: String)

static func openBankID()

static func openPopup(_ key: String, 
                      _ date: String, 
                      _ callback: JSValue)

static func openTextInput(_ key: String, 
                          _ callback: JSValue)
```

### User 
An object containing the user information required for each function.
#### Register
```json= 
{ 
    "email": "helmutxl@gmail.com",
    "ssn": "123456789",
    "lastName": "Boman",
    "gender": "Male",
    "language": "swe",
    "defaultBetAmount": "1.0",
    "birthDate": "20 Oct 1972",
    "telephoneCode": "46",
    "mobileNumber": "767187133", 
    "currency": "SEK",
    "username": "username",
    "password": "mypassword",
    "title": "Mr",
    "firstName": "Stephen",
    "addressStreet": "1003 Moore Avenue",
    "addressCity": "Yardley",
    "addressZipCode": "19067",
    "addressState": "WV",
    "addressCountry": "Sweden",
    "deviceType": "2"
}

Note: The app stores months like so:
const appMonths = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
``` 
#### Other functions
All the functions except for register, expect this type of user
```json= 
{
    "username": "helmutxl",
    "ssn": "111111111",
    "password": "mypassword",
    "deviceType": "2"
}
```
### Bet
#### Bet Odds
```json= 
{
    "gameId": "226964871",
    "operatorTournamentId": "213131",
    "betSide": "723591978",
    "sportId": "1",
    "isLive": "true"
}
```
#### Place Bet
```json= 
{
    "gameId": "226964871",
    "operatorTournamentId": "213131",
    "betType": "2",
    "betSide": "723591978",
    "betAmount": "1.00",
    "odds": "1.00",
    "sportId": "1",
    "isLive": "true"
}
```

### Date
```json= 
{
    "dateFrom": "1989/05/18",
    "dateTo": "2021/05/15",
}
```

### GameId
```
"gameId": "string"
```

### Callback
Callback function provided by the mobile application for the bundle to return to upon completion.

### Response

#### Successful Response
The applications should be able to check only the `success` field in order to know whether the bundle requested and got and response needed from the operators. 
```json=
{
    "name": "RESPONSE",
    "success": "true",
    "data": {},
    "error": null,
    "statusCode": "200",
    "headers": {
        "Content-Type": "application/json"
    },
    "log": [
        {
            "name": "REQUEST",
            "url": "https://www.google.com",
            "options": {
                "method": "GET",
                "encoding": "json",
                "headers": {
                    "Accept": "*/*"
                }
            },
            "headers": {
                "Accept": "*/*"
            }
        }
    ] 
}
```
#### Failed Response
```json=
{
    "name": "RESPONSE",
    "success": "false",
    "data": null,
    "error": {
        "message": "Error Message",
        "function": "1",
        "type": "3"
    },
    "statusCode": "400",
    "headers": {
        "Content-Type": "application/json"
    },
    "log": [
        {
            "name": "REQUEST",
            "url": "https://www.google.com",
            "options": {
                "method": "GET",
                "encoding": "json",
                "headers": {
                    "Accept": "*/*"
                }
            },
            "headers": {
                "Accept": "*/*"
            }
        }
    ] 
}
```

### Data for successful responses
#### Register
```json=
{
    "username": "myUsername",
    "password": "myPassword"
}
```
#### Login
Empty data

#### Balance
```json=
{
    "total": "0.00",
    "withdrawable": "0.00",
    "betCredits": "0.00",
    "currencyCode": "USD",
}
```
#### Get bet odds
The numbers represent the ids of the odds for the specific selection
```json=
{
    "submarketId": {    
        "oddsId": {
            "odds": "1.50",
            "decimal": "1.00",
            "american": "-200",
            "fractional": "0.5/1"
        }
    }

}
```

#### Place bet
```json=
{
    "betReference" : "referenceId"
}
```

#### Bet history
Note: Bet History is called for any bets placed from the Oddsium app. It will **not** be called in regard to bets placed outside of the Oddsium app (for instance, a bet placed on the operator website will not be tracked within the app).

The application calls the betHistory function & provides parameters like so:
```
betHistory(provider, user, date, callback)
```
Provider, user & callback are self explanatory.

'date' is an object with dateTo & dateFrom keys. Each date is in DD/MM/YYYY format. The date's provided by the application cover the previous 2 week period. 
```
{"dateFrom":"08/02/2022","dateTo":"02/03/2022"}
```
dateFrom: The date of the oldest un-settled bet from the operator that has concluded.
dateTo: The date of the most recent un-settled bet from the operator that has concluded.

The applications expect a JSON response including the status & reference like so:

```json=
{
    "history": [
        {
            "betReference":"RS5024406510W",
            "betStatus":"1"
        },
        {
            "betReference":"RS5024406510E",
            "betStatus":"2"
        }
    ]
}

{ 
    "betStatusCodes" {
        open: '1',
        won: '2',
        lost: '3',
        cancelled: '4',
        void: '4'
    };
}
```

#### Deposit
Note: Deposit triggers a webView to allow the user to control navigation. Because we cede control to the user, we cannot use JavaScript to indicate when the operation is complete. The iOS & Android apps listen for the webView activity to close at which point a getBalance() request is called.

Empty data

#### Withdraw
Note: Withdraw triggers a webView to allow the user to control navigation. Because we cede control to the user, we cannot use JavaScript to indicate when the operation is complete. The iOS & Android apps listen for the webView activity to close at which point a getBalance() request is called.

Empty data

#### Stream
```json=
{
    "hlsLink": "https://example.com", 
    "m3u8Data": "", 
    "streamIsLive": "true"
}
```

#### (Not implemented) Bonus


### Error Types
```=
user: '0',
general: '1',
session: '2',
invalidCredentials: '3',
bankidInit: '4',
bankidCheck: '5',
token: '6',
depositLimit: '7',
matchId: '8',
oddsId: '9',
oddsType: '10',
preWebView: '11',
affiliate: '12',
createAccount: '13',
verifyAccount: '14',
userExist: '15',
oddsChange: '16',
tac: '17',
interval: '18',
oddsMissing: '19',
accountBlocked: '20',
sessionLimit: '21'
stakeTooLow: '22'
stakeTooHigh: '23'
notEnoughFunds: '24'
```

#### Operator Functions
```=
login: '1',
logout: '2',
balance: '3',
betHistory: '4',
betOdds: '5',
betOddsLive: '6',
placeBet: '7',
placeBetLive: '8',
deposit: '9',
withdraw: '10',
register: '11',
stream: '12'
```

#### Error Type by Operator Function
```json=
{
    "login": {
        "general": {
            "value": "1"
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "invalidCredentials": {
            "value": "3"
            "description": "Authentication of credentials failed",
            "resolution": "Contact operator support",
            "internal": false
        },
        "accountBlocked": {
            "value": "20",
            "description": "Account blocked by the operator",
            "resolution": "Check operator's site",
            "internal": false
        },
        "sessionLimit": {
            "value": "21",
            "description": "Limit on responsible gambling session limit couldn't be set",
            "resolution": "Implement setting of responsible gaming limits on the bundle",
            "internal": true
        },
        "tac": {
            "value": "17",
            "description": "Terms and conditions not accepted",
            "resolution": "Implement acceptance of TaC on the bundle",
            "internal": true
        },
        "depositLimit": {
            "value": "7",
            "description": "Limit on deposit couldn't be set",
            "resolution": "Implement setting of limits on the bundle",
            "internal": true
        },
        "token": {
            "value": "6",
            "description": "Error acquiring one or more required tokens during the login process",
            "resolution": "Refer to bundle login function and response chain for more information",
            "internal": true
        },
        "bankidInit": {
            "value": "6",
            "description": "bank id initialization error", 
            "resolution": "User SSN might be have wrong format",
            "internal": true
        },
        "bankidCheck": {
            "value": "6",
            "description": "error when checking bank id status",
            "resolution": "",
            "internal": true
        }
    },
    "logout": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "session": {
            "value": "2",
            "description": "The user's session has expired",
            "resolution": "Perform a login request to establish a new session",
            "internal": true
        }
    },
    "balance": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "session": {
            "value": "2",
            "description": "The user's session has expired",
            "resolution": "Perform a login request to establish a new session",
            "internal": true
        }
    },
    "betHistory": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "session": {
            "value": "2",
            "description": "The user's session has expired",
            "resolution": "Perform a login request to establish a new session",
            "internal": true
        }
    },
    "betOdds/betOddsLive"": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "session": {
            "value": "2",
            "description": "The user's session has expired",
            "resolution": "Perform a login request to establish a new session",
            "internal": true
        },
        "oddsMissing": {
            "value": "19",
            "description": "No odds were found for the match",
            "resolution": "No odds currently available for the selected match",
            "internal": false
        },
        "matchId": {
            "value": "8",
            "description": "No match was found for the provided match id",
            "resolution": "Check the match id",
            "internal": true
        }
    },
    "placeBet": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "session": {
            "value": "2",
            "description": "The user's session has expired",
            "resolution": "Perform a login request to establish a new session",
            "internal": true
        },
        "oddsChange": {
            "value": "16",
            "description": "The odds for the selected wager have changed by > .01",
            "resolution": "Try again with current odds",
            "internal": false
        },
        "oddsMissing": {
            "value": "19",
            "description": "No odds were found for the selection provided",
            "resolution": "Check the selection id",
            "internal": true
        },
        "matchId": {
            "value": "8",
            "description": "No match was found for the provided match id",
            "resolution": "Check the match id",
            "internal": true
        },
        "oddsId": {
            "value": "9",
            "description": "The selection id is not valid",
            "resolution": "Check the selection id",
            "internal": true
        },
        "oddsType": {
            "value": "10",
            "description": "Odds type for the provided selection is not equal to that of the operator's selection",
            "resolution": "Check the selection id",
            "internal": true
        },
        "stakeTooLow": {
            "value": "22",
            "description": "The amount of money (stake) wagered for the bet is too low",
            "resolution": "The user must increase his or her stake",
            "internal": false
        },
        "stakeTooHigh": {
            "value": "23",
            "description": "The amount of money (stake) wagered for the bet is too high",
            "resolution": "The user must decrease his or her stake",
            "internal": false
        },
        "notEnoughFunds": {
            "value": "",
            "description": "Not enough funds are available to place the bet",
            "resolution": "Deposit more money",
            "internal": false
        },
    },
    "placeBetLive": {
            "general": {
                "value": "7",
                "description": "Unknown error",
                "resolution": "Good luck",
                "internal": false
            },
            "session": {
            "value": "2",
            "description": "The user's session has expired",
            "resolution": "Perform a login request to establish a new session",
            "internal": true
        },
            "oddsChange": {
                "value": "16",
                "description": "The odds for the selected wager have changed by > .01",
                "resolution": "Try again with current odds",
                "internal": false
            },
            "oddsMissing": {
                "value": "19",
                "description": "No odds were found for the selection provided",
                "resolution": "Check the selection id",
                "internal": true
            },
            "matchId": {
                "value": "8",
                "description": "No match was found for the provided match id",
                "resolution": "Check the match id",
                "internal": true
            },
            "oddsId": {
                "value": "9",
                "description": "The selection id is not valid",
                "resolution": "Check the selection id",
                "internal": true
            },
            "oddsType": {
                "value": "10",
                "description": "Odds type for the provided selection is not equal to that of the operator's selection",
                "resolution": "Check the selection id",
                "internal": true
            },
            "stakeTooLow": {
                "value": "22",
                "description": "The amount of money (stake) wagered for the bet is too low",
                "resolution": "The user must increase his or her stake",
                "internal": false
            },
            "stakeTooHigh": {
                "value": "23",
                "description": "The amount of money (stake) wagered for the bet is too high",
                "resolution": "The user must decrease his or her stake",
                "internal": false
            },
            "notEnoughFunds": {
                "value": "",
                "description": "Not enough funds are available to place the bet",
                "resolution": "Deposit more money",
                "internal": false
            },
        },
    "deposit": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "invalidCredentials": {
            "value": "3"
            "description": "Authentication of credentials failed",
            "resolution": "Contact operator support",
            "internal": false
        }
    },
    "withdraw": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "invalidCredentials": {
            "value": "3"
            "description": "Authentication of credentials failed",
            "resolution": "Contact operator support",
            "internal": false
        }
    },
    "register": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "bankidInit": {
            "value": "4",
            "description": "Bank id initialization error",
            "resolution": "Check ssn or fix functionality on bundle",
            "internal": false
        },
        "bankidCheck": {
            "value": "5",
            "description": "Error when checking bank id status",
            "resolution": "Check if user has bank id or fix functionality on bundle",
            "internal": false
        },
        "userExist": {
            "value": "15",
            "description": "User already have an existing account",
            "resolution": "Use different user",
            "internal": false
        },
        "affiliate": {
            "value": "12",
            "description": "Error getting affiliate cookie/id or affiliate link error",
            "resolution": "Fix affiliate link on the bundle",
            "internal": true
        }
    },
    "stream": {
        "general": {
            "value": "7",
            "description": "Unknown error",
            "resolution": "Good luck",
            "internal": false
        },
        "session": {
            "value": "2",
            "description": "The user's session has expired",
            "resolution": "Perform a login request to establish a new session",
            "internal": true
        },
        "matchId": {
            "value": "8",
            "description": "No stream was found for the provided match id",
            "resolution": "Check the match id",
            "internal": true
        },
    }
}
```