bb-api-platforma 0.1.243 → 0.1.245
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BetBoosterApi.d.ts +239 -9
- package/dist/BetBoosterApi.js +246 -9
- package/dist/BetBoosterApi.min.d.ts +330 -11
- package/dist/BetBoosterApi.min.js +1 -1
- package/dist/BetBoosterApi.min.js.map +1 -1
- package/dist/BetBoosterOfficeApi.d.ts +180 -0
- package/dist/BetBoosterOfficeApi.js +187 -0
- package/dist/Types.d.ts +99 -2
- package/package.json +2 -2
package/dist/BetBoosterApi.d.ts
CHANGED
|
@@ -1268,16 +1268,66 @@ export declare class BetBoosterApi {
|
|
|
1268
1268
|
statusText: string;
|
|
1269
1269
|
}>;
|
|
1270
1270
|
/**
|
|
1271
|
-
*
|
|
1271
|
+
* Поиск премятч-событий через NV20 API.
|
|
1272
1272
|
*
|
|
1273
|
-
*
|
|
1274
|
-
*
|
|
1275
|
-
*
|
|
1276
|
-
*
|
|
1277
|
-
* @param
|
|
1278
|
-
* @param options
|
|
1279
|
-
* @param options.
|
|
1280
|
-
* @
|
|
1273
|
+
* Из `searchString` автоматически удаляются однобуквенные слова и слова,
|
|
1274
|
+
* содержащие только цифры. Это поведение можно обойти, передав
|
|
1275
|
+
* `options.searchString` — тогда будет использована переданная строка как есть.
|
|
1276
|
+
*
|
|
1277
|
+
* @param searchString - Строка поискового запроса.
|
|
1278
|
+
* @param options - Необязательные параметры для уточнения поиска.
|
|
1279
|
+
* @param options.searchString - Если передан, заменяет `searchString` без фильтрации.
|
|
1280
|
+
* @param options.LIMIT - Пагинация результатов. По умолчанию `{ from: 0, size: 30 }`.
|
|
1281
|
+
* @param options.negativeString - Исключает результаты, содержащие указанную строку.
|
|
1282
|
+
* @param options.sportId - Фильтр по ID вида спорта. Может быть числом или массивом чисел.
|
|
1283
|
+
* @param options.tournamentId - Фильтр по ID турнира. Может быть числом или массивом чисел.
|
|
1284
|
+
* @returns Промис с результатами поиска или `null` при ошибке запроса.
|
|
1285
|
+
*
|
|
1286
|
+
* @remarks
|
|
1287
|
+
* **Endpoint:** `POST /stats/pm/search` (NV20)
|
|
1288
|
+
*
|
|
1289
|
+
* @example
|
|
1290
|
+
* ```typescript
|
|
1291
|
+
* // Простой поиск
|
|
1292
|
+
* const results = await api.searchPrematchEventsNv20('Arsenal');
|
|
1293
|
+
*
|
|
1294
|
+
* // Поиск с фильтром по одному виду спорта и турниру
|
|
1295
|
+
* const results = await api.searchPrematchEventsNv20('Arsenal', {
|
|
1296
|
+
* sportId: 1,
|
|
1297
|
+
* tournamentId: 127,
|
|
1298
|
+
* LIMIT: { from: 0, size: 10 }
|
|
1299
|
+
* });
|
|
1300
|
+
*
|
|
1301
|
+
* // Поиск с фильтром по нескольким видам спорта и турнирам
|
|
1302
|
+
* const results = await api.searchPrematchEventsNv20('Arsenal', {
|
|
1303
|
+
* sportId: [1, 2],
|
|
1304
|
+
* tournamentId: [127, 255, 512]
|
|
1305
|
+
* });
|
|
1306
|
+
* ```
|
|
1307
|
+
*
|
|
1308
|
+
* @example
|
|
1309
|
+
* ```json
|
|
1310
|
+
* // Payload запроса
|
|
1311
|
+
* {
|
|
1312
|
+
* "locale": "uk",
|
|
1313
|
+
* "searchString": "Arsenal",
|
|
1314
|
+
* "LIMIT": { "from": 0, "size": 30 },
|
|
1315
|
+
* "sportId": [1, 2],
|
|
1316
|
+
* "tournamentId": 127
|
|
1317
|
+
* }
|
|
1318
|
+
*
|
|
1319
|
+
* // Ответ
|
|
1320
|
+
* {
|
|
1321
|
+
* "searchString": "Arsenal",
|
|
1322
|
+
* "from": 0,
|
|
1323
|
+
* "size": 30,
|
|
1324
|
+
* "total": 2,
|
|
1325
|
+
* "results": [
|
|
1326
|
+
* { "eventId": 12345, "name": "Arsenal - Chelsea", ... },
|
|
1327
|
+
* { "eventId": 12346, "name": "Arsenal - Liverpool", ... }
|
|
1328
|
+
* ]
|
|
1329
|
+
* }
|
|
1330
|
+
* ```
|
|
1281
1331
|
*/
|
|
1282
1332
|
searchPrematchEventsNv20(searchString: string, options?: I.RedisPrematchSearchParams): Promise<{
|
|
1283
1333
|
data: any;
|
|
@@ -1921,4 +1971,184 @@ export declare class BetBoosterApi {
|
|
|
1921
1971
|
status: number;
|
|
1922
1972
|
statusText: string;
|
|
1923
1973
|
}>;
|
|
1974
|
+
/**
|
|
1975
|
+
* Copies (clones) an existing betslip with the given list of odds items
|
|
1976
|
+
* and returns updated betslip data from the server, including actual odds,
|
|
1977
|
+
* limitations, and betslip type.
|
|
1978
|
+
*
|
|
1979
|
+
* @param oddsList - Array of betslip odds items to clone.
|
|
1980
|
+
*
|
|
1981
|
+
* @remarks
|
|
1982
|
+
* Endpoint: `POST /betting/CopyBetslip` (API v2)
|
|
1983
|
+
*
|
|
1984
|
+
* @example
|
|
1985
|
+
* **Request payload:**
|
|
1986
|
+
* ```json
|
|
1987
|
+
* {
|
|
1988
|
+
* "Bets": [
|
|
1989
|
+
* {
|
|
1990
|
+
* "ErrorMessage": 0,
|
|
1991
|
+
* "Min": 0,
|
|
1992
|
+
* "Max": 0,
|
|
1993
|
+
* "MinCurrencyUnit": 0.01,
|
|
1994
|
+
* "IsRound": false,
|
|
1995
|
+
* "IsReinvested": false,
|
|
1996
|
+
* "MinAdd": 0,
|
|
1997
|
+
* "MaxAdd": 0,
|
|
1998
|
+
* "Odds": 3.07,
|
|
1999
|
+
* "IsLive": false,
|
|
2000
|
+
* "LinesID": 2970079,
|
|
2001
|
+
* "BetVarID": 1,
|
|
2002
|
+
* "HandSize": null,
|
|
2003
|
+
* "Add1": null,
|
|
2004
|
+
* "Add2": null,
|
|
2005
|
+
* "Score": "",
|
|
2006
|
+
* "NameSport": "Football",
|
|
2007
|
+
* "NameCountry": "Europe",
|
|
2008
|
+
* "NameTurnir": "UEFA Champions League",
|
|
2009
|
+
* "NameTeam1": "Real Madrid",
|
|
2010
|
+
* "NameTeam2": "Bayern Munich",
|
|
2011
|
+
* "DateEvent": "2026-04-07T22:00:00+03:00",
|
|
2012
|
+
* "NameBetShort": "1",
|
|
2013
|
+
* "NameBetLong": "Team 1 wins",
|
|
2014
|
+
* "SportId": 5
|
|
2015
|
+
* }
|
|
2016
|
+
* ],
|
|
2017
|
+
* "Culture": "en-US"
|
|
2018
|
+
* }
|
|
2019
|
+
* ```
|
|
2020
|
+
*
|
|
2021
|
+
* **Response:**
|
|
2022
|
+
* ```json
|
|
2023
|
+
* {
|
|
2024
|
+
* "Ok": true,
|
|
2025
|
+
* "Error": null,
|
|
2026
|
+
* "Data": {
|
|
2027
|
+
* "Bets": [
|
|
2028
|
+
* {
|
|
2029
|
+
* "LinesID": 2970079,
|
|
2030
|
+
* "Odds": 3.07,
|
|
2031
|
+
* "OddsOld": 3.05,
|
|
2032
|
+
* "ErrorMessage": 0,
|
|
2033
|
+
* "IsLive": false
|
|
2034
|
+
* }
|
|
2035
|
+
* ],
|
|
2036
|
+
* "Limitations": {
|
|
2037
|
+
* "Min": null,
|
|
2038
|
+
* "Max": null,
|
|
2039
|
+
* "MaxOddForMulty": 250
|
|
2040
|
+
* },
|
|
2041
|
+
* "BetslipType": 0
|
|
2042
|
+
* }
|
|
2043
|
+
* }
|
|
2044
|
+
* ```
|
|
2045
|
+
*/
|
|
2046
|
+
cloneStoredBetslip(oddsList: I.TBetslipOddsList[]): Promise<{
|
|
2047
|
+
data: I.TBetslipResponse | null;
|
|
2048
|
+
error: string | null;
|
|
2049
|
+
status: number;
|
|
2050
|
+
statusText: string;
|
|
2051
|
+
}>;
|
|
2052
|
+
/**
|
|
2053
|
+
* Получает сохранённый купон по его идентификатору.
|
|
2054
|
+
*
|
|
2055
|
+
* @param savedCouponId - Уникальный числовой идентификатор сохранённого купона.
|
|
2056
|
+
* @returns Данные сохранённого купона.
|
|
2057
|
+
*
|
|
2058
|
+
* @remarks
|
|
2059
|
+
* Endpoint: `GET /portfolio/getcoupon/:savedCouponId` (NV20)
|
|
2060
|
+
*
|
|
2061
|
+
* @example
|
|
2062
|
+
* ```ts
|
|
2063
|
+
* // Запрос
|
|
2064
|
+
* const coupon = await api.getSavedCoupon(12345);
|
|
2065
|
+
*
|
|
2066
|
+
* // Ответ (строка с данными купона)
|
|
2067
|
+
* // "{ ... serialized coupon data ... }"
|
|
2068
|
+
* ```
|
|
2069
|
+
*/
|
|
2070
|
+
getSavedCoupon(savedCouponId: number): Promise<{
|
|
2071
|
+
data: any;
|
|
2072
|
+
error: string | null;
|
|
2073
|
+
status: number;
|
|
2074
|
+
statusText: string;
|
|
2075
|
+
}>;
|
|
2076
|
+
/**
|
|
2077
|
+
* Создаёт новый сохранённый купон на основе переданных данных и списка кодов.
|
|
2078
|
+
*
|
|
2079
|
+
* @param couponData - Объект {@link I.ICouponRequest} с данными купона (коэффициенты, домен, партнёр и т.д.).
|
|
2080
|
+
* @param savedCodesList - Массив строковых кодов, привязываемых к купону.
|
|
2081
|
+
* @returns Результат создания купона.
|
|
2082
|
+
*
|
|
2083
|
+
* @remarks
|
|
2084
|
+
* Endpoint: `POST /portfolio/createcoupon` (NV20)
|
|
2085
|
+
*
|
|
2086
|
+
* @example
|
|
2087
|
+
* ```ts
|
|
2088
|
+
* // Payload запроса
|
|
2089
|
+
* const payload = {
|
|
2090
|
+
* data: {
|
|
2091
|
+
* odds: [
|
|
2092
|
+
* {
|
|
2093
|
+
* ErrorMessage: 0,
|
|
2094
|
+
* Min: 10,
|
|
2095
|
+
* Max: 1000,
|
|
2096
|
+
* MinCurrencyUnit: 1,
|
|
2097
|
+
* IsRound: false,
|
|
2098
|
+
* IsReinvested: false,
|
|
2099
|
+
* MinAdd: 0,
|
|
2100
|
+
* MaxAdd: 0,
|
|
2101
|
+
* Odds: 1.85,
|
|
2102
|
+
* IsLive: false,
|
|
2103
|
+
* LinesID: 456789,
|
|
2104
|
+
* BetVarID: 1,
|
|
2105
|
+
* NameSport: "Football",
|
|
2106
|
+
* NameTeam1: "Team A",
|
|
2107
|
+
* NameTeam2: "Team B",
|
|
2108
|
+
* NameBetShort: "1"
|
|
2109
|
+
* }
|
|
2110
|
+
* ],
|
|
2111
|
+
* domain: "example.com",
|
|
2112
|
+
* partner: "partner1"
|
|
2113
|
+
* },
|
|
2114
|
+
* codes: ["ABC123", "DEF456"]
|
|
2115
|
+
* };
|
|
2116
|
+
*
|
|
2117
|
+
* const result = await api.createSavedCoupon(payload.data, payload.codes);
|
|
2118
|
+
* ```
|
|
2119
|
+
*/
|
|
2120
|
+
createSavedCoupon(couponData: I.ICouponRequest, savedCodesList: string[]): Promise<{
|
|
2121
|
+
data: any;
|
|
2122
|
+
error: string | null;
|
|
2123
|
+
status: number;
|
|
2124
|
+
statusText: string;
|
|
2125
|
+
}>;
|
|
2126
|
+
/**
|
|
2127
|
+
* Получает список сохранённых купонов по массиву кодов.
|
|
2128
|
+
*
|
|
2129
|
+
* @param savedCodesList - Массив строковых кодов для поиска соответствующих купонов.
|
|
2130
|
+
* @returns Массив найденных купонов.
|
|
2131
|
+
*
|
|
2132
|
+
* @remarks
|
|
2133
|
+
* Endpoint: `POST /portfolio/getcoupons` (NV20)
|
|
2134
|
+
*
|
|
2135
|
+
* @example
|
|
2136
|
+
* ```ts
|
|
2137
|
+
* // Payload запроса
|
|
2138
|
+
* const payload = {
|
|
2139
|
+
* codes: ["ABC123", "DEF456"]
|
|
2140
|
+
* };
|
|
2141
|
+
*
|
|
2142
|
+
* const coupons = await api.getCoupons(["ABC123", "DEF456"]);
|
|
2143
|
+
*
|
|
2144
|
+
* // Ответ — массив объектов купонов
|
|
2145
|
+
* // [{ id: 1, odds: [...], domain: "example.com", ... }, ...]
|
|
2146
|
+
* ```
|
|
2147
|
+
*/
|
|
2148
|
+
getCoupons(savedCodesList: string[]): Promise<{
|
|
2149
|
+
data: any;
|
|
2150
|
+
error: string | null;
|
|
2151
|
+
status: number;
|
|
2152
|
+
statusText: string;
|
|
2153
|
+
}>;
|
|
1924
2154
|
}
|
package/dist/BetBoosterApi.js
CHANGED
|
@@ -2606,16 +2606,66 @@ export class BetBoosterApi {
|
|
|
2606
2606
|
return this.responseHandlerData(data, status, statusText);
|
|
2607
2607
|
}
|
|
2608
2608
|
/**
|
|
2609
|
-
*
|
|
2609
|
+
* Поиск премятч-событий через NV20 API.
|
|
2610
2610
|
*
|
|
2611
|
-
*
|
|
2612
|
-
*
|
|
2613
|
-
*
|
|
2614
|
-
*
|
|
2615
|
-
* @param
|
|
2616
|
-
* @param options
|
|
2617
|
-
* @param options.
|
|
2618
|
-
* @
|
|
2611
|
+
* Из `searchString` автоматически удаляются однобуквенные слова и слова,
|
|
2612
|
+
* содержащие только цифры. Это поведение можно обойти, передав
|
|
2613
|
+
* `options.searchString` — тогда будет использована переданная строка как есть.
|
|
2614
|
+
*
|
|
2615
|
+
* @param searchString - Строка поискового запроса.
|
|
2616
|
+
* @param options - Необязательные параметры для уточнения поиска.
|
|
2617
|
+
* @param options.searchString - Если передан, заменяет `searchString` без фильтрации.
|
|
2618
|
+
* @param options.LIMIT - Пагинация результатов. По умолчанию `{ from: 0, size: 30 }`.
|
|
2619
|
+
* @param options.negativeString - Исключает результаты, содержащие указанную строку.
|
|
2620
|
+
* @param options.sportId - Фильтр по ID вида спорта. Может быть числом или массивом чисел.
|
|
2621
|
+
* @param options.tournamentId - Фильтр по ID турнира. Может быть числом или массивом чисел.
|
|
2622
|
+
* @returns Промис с результатами поиска или `null` при ошибке запроса.
|
|
2623
|
+
*
|
|
2624
|
+
* @remarks
|
|
2625
|
+
* **Endpoint:** `POST /stats/pm/search` (NV20)
|
|
2626
|
+
*
|
|
2627
|
+
* @example
|
|
2628
|
+
* ```typescript
|
|
2629
|
+
* // Простой поиск
|
|
2630
|
+
* const results = await api.searchPrematchEventsNv20('Arsenal');
|
|
2631
|
+
*
|
|
2632
|
+
* // Поиск с фильтром по одному виду спорта и турниру
|
|
2633
|
+
* const results = await api.searchPrematchEventsNv20('Arsenal', {
|
|
2634
|
+
* sportId: 1,
|
|
2635
|
+
* tournamentId: 127,
|
|
2636
|
+
* LIMIT: { from: 0, size: 10 }
|
|
2637
|
+
* });
|
|
2638
|
+
*
|
|
2639
|
+
* // Поиск с фильтром по нескольким видам спорта и турнирам
|
|
2640
|
+
* const results = await api.searchPrematchEventsNv20('Arsenal', {
|
|
2641
|
+
* sportId: [1, 2],
|
|
2642
|
+
* tournamentId: [127, 255, 512]
|
|
2643
|
+
* });
|
|
2644
|
+
* ```
|
|
2645
|
+
*
|
|
2646
|
+
* @example
|
|
2647
|
+
* ```json
|
|
2648
|
+
* // Payload запроса
|
|
2649
|
+
* {
|
|
2650
|
+
* "locale": "uk",
|
|
2651
|
+
* "searchString": "Arsenal",
|
|
2652
|
+
* "LIMIT": { "from": 0, "size": 30 },
|
|
2653
|
+
* "sportId": [1, 2],
|
|
2654
|
+
* "tournamentId": 127
|
|
2655
|
+
* }
|
|
2656
|
+
*
|
|
2657
|
+
* // Ответ
|
|
2658
|
+
* {
|
|
2659
|
+
* "searchString": "Arsenal",
|
|
2660
|
+
* "from": 0,
|
|
2661
|
+
* "size": 30,
|
|
2662
|
+
* "total": 2,
|
|
2663
|
+
* "results": [
|
|
2664
|
+
* { "eventId": 12345, "name": "Arsenal - Chelsea", ... },
|
|
2665
|
+
* { "eventId": 12346, "name": "Arsenal - Liverpool", ... }
|
|
2666
|
+
* ]
|
|
2667
|
+
* }
|
|
2668
|
+
* ```
|
|
2619
2669
|
*/
|
|
2620
2670
|
async searchPrematchEventsNv20(searchString, options = {}) {
|
|
2621
2671
|
var _a;
|
|
@@ -3465,4 +3515,191 @@ export class BetBoosterApi {
|
|
|
3465
3515
|
const urlApk = this.url(`${handledPath}/${filename}`, api.DIRECT);
|
|
3466
3516
|
return this.responseHandlerDataData(urlApk, status, statusText);
|
|
3467
3517
|
}
|
|
3518
|
+
/**
|
|
3519
|
+
* Copies (clones) an existing betslip with the given list of odds items
|
|
3520
|
+
* and returns updated betslip data from the server, including actual odds,
|
|
3521
|
+
* limitations, and betslip type.
|
|
3522
|
+
*
|
|
3523
|
+
* @param oddsList - Array of betslip odds items to clone.
|
|
3524
|
+
*
|
|
3525
|
+
* @remarks
|
|
3526
|
+
* Endpoint: `POST /betting/CopyBetslip` (API v2)
|
|
3527
|
+
*
|
|
3528
|
+
* @example
|
|
3529
|
+
* **Request payload:**
|
|
3530
|
+
* ```json
|
|
3531
|
+
* {
|
|
3532
|
+
* "Bets": [
|
|
3533
|
+
* {
|
|
3534
|
+
* "ErrorMessage": 0,
|
|
3535
|
+
* "Min": 0,
|
|
3536
|
+
* "Max": 0,
|
|
3537
|
+
* "MinCurrencyUnit": 0.01,
|
|
3538
|
+
* "IsRound": false,
|
|
3539
|
+
* "IsReinvested": false,
|
|
3540
|
+
* "MinAdd": 0,
|
|
3541
|
+
* "MaxAdd": 0,
|
|
3542
|
+
* "Odds": 3.07,
|
|
3543
|
+
* "IsLive": false,
|
|
3544
|
+
* "LinesID": 2970079,
|
|
3545
|
+
* "BetVarID": 1,
|
|
3546
|
+
* "HandSize": null,
|
|
3547
|
+
* "Add1": null,
|
|
3548
|
+
* "Add2": null,
|
|
3549
|
+
* "Score": "",
|
|
3550
|
+
* "NameSport": "Football",
|
|
3551
|
+
* "NameCountry": "Europe",
|
|
3552
|
+
* "NameTurnir": "UEFA Champions League",
|
|
3553
|
+
* "NameTeam1": "Real Madrid",
|
|
3554
|
+
* "NameTeam2": "Bayern Munich",
|
|
3555
|
+
* "DateEvent": "2026-04-07T22:00:00+03:00",
|
|
3556
|
+
* "NameBetShort": "1",
|
|
3557
|
+
* "NameBetLong": "Team 1 wins",
|
|
3558
|
+
* "SportId": 5
|
|
3559
|
+
* }
|
|
3560
|
+
* ],
|
|
3561
|
+
* "Culture": "en-US"
|
|
3562
|
+
* }
|
|
3563
|
+
* ```
|
|
3564
|
+
*
|
|
3565
|
+
* **Response:**
|
|
3566
|
+
* ```json
|
|
3567
|
+
* {
|
|
3568
|
+
* "Ok": true,
|
|
3569
|
+
* "Error": null,
|
|
3570
|
+
* "Data": {
|
|
3571
|
+
* "Bets": [
|
|
3572
|
+
* {
|
|
3573
|
+
* "LinesID": 2970079,
|
|
3574
|
+
* "Odds": 3.07,
|
|
3575
|
+
* "OddsOld": 3.05,
|
|
3576
|
+
* "ErrorMessage": 0,
|
|
3577
|
+
* "IsLive": false
|
|
3578
|
+
* }
|
|
3579
|
+
* ],
|
|
3580
|
+
* "Limitations": {
|
|
3581
|
+
* "Min": null,
|
|
3582
|
+
* "Max": null,
|
|
3583
|
+
* "MaxOddForMulty": 250
|
|
3584
|
+
* },
|
|
3585
|
+
* "BetslipType": 0
|
|
3586
|
+
* }
|
|
3587
|
+
* }
|
|
3588
|
+
* ```
|
|
3589
|
+
*/
|
|
3590
|
+
async cloneStoredBetslip(oddsList) {
|
|
3591
|
+
const url = this.url(`/betting/CopyBetslip`, api.LBC);
|
|
3592
|
+
const payload = {
|
|
3593
|
+
Bets: oddsList,
|
|
3594
|
+
Culture: this.locale,
|
|
3595
|
+
};
|
|
3596
|
+
const { data, status, statusText } = await this.request(url).POST(payload).exec();
|
|
3597
|
+
return this.responseHandlerDataData(data, status, statusText);
|
|
3598
|
+
}
|
|
3599
|
+
/**
|
|
3600
|
+
* Получает сохранённый купон по его идентификатору.
|
|
3601
|
+
*
|
|
3602
|
+
* @param savedCouponId - Уникальный числовой идентификатор сохранённого купона.
|
|
3603
|
+
* @returns Данные сохранённого купона.
|
|
3604
|
+
*
|
|
3605
|
+
* @remarks
|
|
3606
|
+
* Endpoint: `GET /portfolio/getcoupon/:savedCouponId` (NV20)
|
|
3607
|
+
*
|
|
3608
|
+
* @example
|
|
3609
|
+
* ```ts
|
|
3610
|
+
* // Запрос
|
|
3611
|
+
* const coupon = await api.getSavedCoupon(12345);
|
|
3612
|
+
*
|
|
3613
|
+
* // Ответ (строка с данными купона)
|
|
3614
|
+
* // "{ ... serialized coupon data ... }"
|
|
3615
|
+
* ```
|
|
3616
|
+
*/
|
|
3617
|
+
async getSavedCoupon(savedCouponId) {
|
|
3618
|
+
const url = this.url(`/portfolio/getcoupon/:${savedCouponId}`, api.NV20);
|
|
3619
|
+
const { data, status, statusText } = await this.request(url).exec();
|
|
3620
|
+
return this.responseHandlerDataData(data, status, statusText);
|
|
3621
|
+
}
|
|
3622
|
+
/**
|
|
3623
|
+
* Создаёт новый сохранённый купон на основе переданных данных и списка кодов.
|
|
3624
|
+
*
|
|
3625
|
+
* @param couponData - Объект {@link I.ICouponRequest} с данными купона (коэффициенты, домен, партнёр и т.д.).
|
|
3626
|
+
* @param savedCodesList - Массив строковых кодов, привязываемых к купону.
|
|
3627
|
+
* @returns Результат создания купона.
|
|
3628
|
+
*
|
|
3629
|
+
* @remarks
|
|
3630
|
+
* Endpoint: `POST /portfolio/createcoupon` (NV20)
|
|
3631
|
+
*
|
|
3632
|
+
* @example
|
|
3633
|
+
* ```ts
|
|
3634
|
+
* // Payload запроса
|
|
3635
|
+
* const payload = {
|
|
3636
|
+
* data: {
|
|
3637
|
+
* odds: [
|
|
3638
|
+
* {
|
|
3639
|
+
* ErrorMessage: 0,
|
|
3640
|
+
* Min: 10,
|
|
3641
|
+
* Max: 1000,
|
|
3642
|
+
* MinCurrencyUnit: 1,
|
|
3643
|
+
* IsRound: false,
|
|
3644
|
+
* IsReinvested: false,
|
|
3645
|
+
* MinAdd: 0,
|
|
3646
|
+
* MaxAdd: 0,
|
|
3647
|
+
* Odds: 1.85,
|
|
3648
|
+
* IsLive: false,
|
|
3649
|
+
* LinesID: 456789,
|
|
3650
|
+
* BetVarID: 1,
|
|
3651
|
+
* NameSport: "Football",
|
|
3652
|
+
* NameTeam1: "Team A",
|
|
3653
|
+
* NameTeam2: "Team B",
|
|
3654
|
+
* NameBetShort: "1"
|
|
3655
|
+
* }
|
|
3656
|
+
* ],
|
|
3657
|
+
* domain: "example.com",
|
|
3658
|
+
* partner: "partner1"
|
|
3659
|
+
* },
|
|
3660
|
+
* codes: ["ABC123", "DEF456"]
|
|
3661
|
+
* };
|
|
3662
|
+
*
|
|
3663
|
+
* const result = await api.createSavedCoupon(payload.data, payload.codes);
|
|
3664
|
+
* ```
|
|
3665
|
+
*/
|
|
3666
|
+
async createSavedCoupon(couponData, savedCodesList) {
|
|
3667
|
+
const url = this.url(`/portfolio/createcoupon`, api.NV20);
|
|
3668
|
+
const payload = {
|
|
3669
|
+
data: couponData,
|
|
3670
|
+
codes: savedCodesList,
|
|
3671
|
+
};
|
|
3672
|
+
const { data, status, statusText } = await this.request(url).POST(payload).exec();
|
|
3673
|
+
return this.responseHandlerDataData(data, status, statusText);
|
|
3674
|
+
}
|
|
3675
|
+
/**
|
|
3676
|
+
* Получает список сохранённых купонов по массиву кодов.
|
|
3677
|
+
*
|
|
3678
|
+
* @param savedCodesList - Массив строковых кодов для поиска соответствующих купонов.
|
|
3679
|
+
* @returns Массив найденных купонов.
|
|
3680
|
+
*
|
|
3681
|
+
* @remarks
|
|
3682
|
+
* Endpoint: `POST /portfolio/getcoupons` (NV20)
|
|
3683
|
+
*
|
|
3684
|
+
* @example
|
|
3685
|
+
* ```ts
|
|
3686
|
+
* // Payload запроса
|
|
3687
|
+
* const payload = {
|
|
3688
|
+
* codes: ["ABC123", "DEF456"]
|
|
3689
|
+
* };
|
|
3690
|
+
*
|
|
3691
|
+
* const coupons = await api.getCoupons(["ABC123", "DEF456"]);
|
|
3692
|
+
*
|
|
3693
|
+
* // Ответ — массив объектов купонов
|
|
3694
|
+
* // [{ id: 1, odds: [...], domain: "example.com", ... }, ...]
|
|
3695
|
+
* ```
|
|
3696
|
+
*/
|
|
3697
|
+
async getCoupons(savedCodesList) {
|
|
3698
|
+
const url = this.url(`/portfolio/getcoupons`, api.NV20);
|
|
3699
|
+
const payload = {
|
|
3700
|
+
codes: savedCodesList,
|
|
3701
|
+
};
|
|
3702
|
+
const { data, status, statusText } = await this.request(url).POST(payload).exec();
|
|
3703
|
+
return this.responseHandlerDataData(data, status, statusText);
|
|
3704
|
+
}
|
|
3468
3705
|
}
|