bb-api-platforma 0.1.244 → 0.1.246

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.
@@ -1131,17 +1131,45 @@ export declare class BetBoosterOfficeApi {
1131
1131
  statusText: string;
1132
1132
  }>;
1133
1133
  /**
1134
- * Copies (clones) an existing betslip with the given list of odds items
1135
- * and returns updated betslip data from the server, including actual odds,
1136
- * limitations, and betslip type.
1134
+ * Клонирует существующий купон (betslip) по переданному списку позиций ставок
1135
+ * и возвращает обновлённые данные купона с сервера: актуальные коэффициенты,
1136
+ * лимиты и тип купона.
1137
1137
  *
1138
- * @param oddsList - Array of betslip odds items to clone.
1138
+ * @param oddsList - Массив позиций ставок (`TBetslipOddsList[]`), полученных
1139
+ * из ранее сформированного купона (например, из ответа `getBetslipOddsList`).
1140
+ * Каждый элемент содержит обязательные поля состояния (`ErrorMessage`, `Min`, `Max`,
1141
+ * `MinCurrencyUnit`, `IsRound`, `IsReinvested`, `MinAdd`, `MaxAdd`, `Odds`, `IsLive`)
1142
+ * и опциональные идентификаторы ставки (`LinesID`, `BetVarID`, `HandSize`, `Add1`, `Add2`).
1143
+ * Метод оборачивает массив в payload `{ Bets: oddsList, Culture: locale }` автоматически.
1139
1144
  *
1140
1145
  * @remarks
1141
1146
  * Endpoint: `POST /betting/CopyBetslip` (API v2)
1142
1147
  *
1143
1148
  * @example
1144
- * **Request payload:**
1149
+ * **Вызов метода:**
1150
+ * ```ts
1151
+ * const result = await api.cloneStoredBetslip([
1152
+ * {
1153
+ * ErrorMessage: 0,
1154
+ * Min: 0,
1155
+ * Max: 0,
1156
+ * MinCurrencyUnit: 0.01,
1157
+ * IsRound: false,
1158
+ * IsReinvested: false,
1159
+ * MinAdd: 0,
1160
+ * MaxAdd: 0,
1161
+ * Odds: 3.07,
1162
+ * IsLive: false,
1163
+ * LinesID: 2970079,
1164
+ * BetVarID: 1,
1165
+ * HandSize: null,
1166
+ * Add1: null,
1167
+ * Add2: null
1168
+ * }
1169
+ * ]);
1170
+ * ```
1171
+ *
1172
+ * **Формируемый payload (POST /betting/CopyBetslip):**
1145
1173
  * ```json
1146
1174
  * {
1147
1175
  * "Bets": [
@@ -1160,17 +1188,7 @@ export declare class BetBoosterOfficeApi {
1160
1188
  * "BetVarID": 1,
1161
1189
  * "HandSize": null,
1162
1190
  * "Add1": null,
1163
- * "Add2": null,
1164
- * "Score": "",
1165
- * "NameSport": "Football",
1166
- * "NameCountry": "Europe",
1167
- * "NameTurnir": "UEFA Champions League",
1168
- * "NameTeam1": "Real Madrid",
1169
- * "NameTeam2": "Bayern Munich",
1170
- * "DateEvent": "2026-04-07T22:00:00+03:00",
1171
- * "NameBetShort": "1",
1172
- * "NameBetLong": "Team 1 wins",
1173
- * "SportId": 5
1191
+ * "Add2": null
1174
1192
  * }
1175
1193
  * ],
1176
1194
  * "Culture": "en-US"
@@ -1208,4 +1226,106 @@ export declare class BetBoosterOfficeApi {
1208
1226
  status: number;
1209
1227
  statusText: string;
1210
1228
  }>;
1229
+ /**
1230
+ * Получает сохранённый купон по его идентификатору.
1231
+ *
1232
+ * @param savedCouponId - Уникальный числовой идентификатор сохранённого купона.
1233
+ * @returns Данные сохранённого купона.
1234
+ *
1235
+ * @remarks
1236
+ * Endpoint: `GET /portfolio/getcoupon/:savedCouponId` (NV20)
1237
+ *
1238
+ * @example
1239
+ * ```ts
1240
+ * // Запрос
1241
+ * const coupon = await api.getSavedCoupon(12345);
1242
+ *
1243
+ * // Ответ (строка с данными купона)
1244
+ * // "{ ... serialized coupon data ... }"
1245
+ * ```
1246
+ */
1247
+ getSavedCoupon(savedCouponId: number): Promise<{
1248
+ data: any;
1249
+ error: string | null;
1250
+ status: number;
1251
+ statusText: string;
1252
+ }>;
1253
+ /**
1254
+ * Создаёт новый сохранённый купон на основе переданных данных и списка кодов.
1255
+ *
1256
+ * @param couponData - Объект {@link I.ICouponRequest} с данными купона (коэффициенты, домен, партнёр и т.д.).
1257
+ * @param savedCodesList - Массив строковых кодов, привязываемых к купону.
1258
+ * @returns Результат создания купона.
1259
+ *
1260
+ * @remarks
1261
+ * Endpoint: `POST /portfolio/createcoupon` (NV20)
1262
+ *
1263
+ * @example
1264
+ * ```ts
1265
+ * // Payload запроса
1266
+ * const payload = {
1267
+ * data: {
1268
+ * odds: [
1269
+ * {
1270
+ * ErrorMessage: 0,
1271
+ * Min: 10,
1272
+ * Max: 1000,
1273
+ * MinCurrencyUnit: 1,
1274
+ * IsRound: false,
1275
+ * IsReinvested: false,
1276
+ * MinAdd: 0,
1277
+ * MaxAdd: 0,
1278
+ * Odds: 1.85,
1279
+ * IsLive: false,
1280
+ * LinesID: 456789,
1281
+ * BetVarID: 1,
1282
+ * NameSport: "Football",
1283
+ * NameTeam1: "Team A",
1284
+ * NameTeam2: "Team B",
1285
+ * NameBetShort: "1"
1286
+ * }
1287
+ * ],
1288
+ * domain: "example.com",
1289
+ * partner: "partner1"
1290
+ * },
1291
+ * codes: ["ABC123", "DEF456"]
1292
+ * };
1293
+ *
1294
+ * const result = await api.createSavedCoupon(payload.data, payload.codes);
1295
+ * ```
1296
+ */
1297
+ createSavedCoupon(couponData: I.ICouponRequest, savedCodesList: string[]): Promise<{
1298
+ data: any;
1299
+ error: string | null;
1300
+ status: number;
1301
+ statusText: string;
1302
+ }>;
1303
+ /**
1304
+ * Получает список сохранённых купонов по массиву кодов.
1305
+ *
1306
+ * @param savedCodesList - Массив строковых кодов для поиска соответствующих купонов.
1307
+ * @returns Массив найденных купонов.
1308
+ *
1309
+ * @remarks
1310
+ * Endpoint: `POST /portfolio/getcoupons` (NV20)
1311
+ *
1312
+ * @example
1313
+ * ```ts
1314
+ * // Payload запроса
1315
+ * const payload = {
1316
+ * codes: ["ABC123", "DEF456"]
1317
+ * };
1318
+ *
1319
+ * const coupons = await api.getCoupons(["ABC123", "DEF456"]);
1320
+ *
1321
+ * // Ответ — массив объектов купонов
1322
+ * // [{ id: 1, odds: [...], domain: "example.com", ... }, ...]
1323
+ * ```
1324
+ */
1325
+ getCoupons(savedCodesList: string[]): Promise<{
1326
+ data: any;
1327
+ error: string | null;
1328
+ status: number;
1329
+ statusText: string;
1330
+ }>;
1211
1331
  }
@@ -2153,17 +2153,45 @@ export class BetBoosterOfficeApi {
2153
2153
  return this.responseHandlerDataData(data, status, statusText);
2154
2154
  }
2155
2155
  /**
2156
- * Copies (clones) an existing betslip with the given list of odds items
2157
- * and returns updated betslip data from the server, including actual odds,
2158
- * limitations, and betslip type.
2156
+ * Клонирует существующий купон (betslip) по переданному списку позиций ставок
2157
+ * и возвращает обновлённые данные купона с сервера: актуальные коэффициенты,
2158
+ * лимиты и тип купона.
2159
2159
  *
2160
- * @param oddsList - Array of betslip odds items to clone.
2160
+ * @param oddsList - Массив позиций ставок (`TBetslipOddsList[]`), полученных
2161
+ * из ранее сформированного купона (например, из ответа `getBetslipOddsList`).
2162
+ * Каждый элемент содержит обязательные поля состояния (`ErrorMessage`, `Min`, `Max`,
2163
+ * `MinCurrencyUnit`, `IsRound`, `IsReinvested`, `MinAdd`, `MaxAdd`, `Odds`, `IsLive`)
2164
+ * и опциональные идентификаторы ставки (`LinesID`, `BetVarID`, `HandSize`, `Add1`, `Add2`).
2165
+ * Метод оборачивает массив в payload `{ Bets: oddsList, Culture: locale }` автоматически.
2161
2166
  *
2162
2167
  * @remarks
2163
2168
  * Endpoint: `POST /betting/CopyBetslip` (API v2)
2164
2169
  *
2165
2170
  * @example
2166
- * **Request payload:**
2171
+ * **Вызов метода:**
2172
+ * ```ts
2173
+ * const result = await api.cloneStoredBetslip([
2174
+ * {
2175
+ * ErrorMessage: 0,
2176
+ * Min: 0,
2177
+ * Max: 0,
2178
+ * MinCurrencyUnit: 0.01,
2179
+ * IsRound: false,
2180
+ * IsReinvested: false,
2181
+ * MinAdd: 0,
2182
+ * MaxAdd: 0,
2183
+ * Odds: 3.07,
2184
+ * IsLive: false,
2185
+ * LinesID: 2970079,
2186
+ * BetVarID: 1,
2187
+ * HandSize: null,
2188
+ * Add1: null,
2189
+ * Add2: null
2190
+ * }
2191
+ * ]);
2192
+ * ```
2193
+ *
2194
+ * **Формируемый payload (POST /betting/CopyBetslip):**
2167
2195
  * ```json
2168
2196
  * {
2169
2197
  * "Bets": [
@@ -2182,17 +2210,7 @@ export class BetBoosterOfficeApi {
2182
2210
  * "BetVarID": 1,
2183
2211
  * "HandSize": null,
2184
2212
  * "Add1": null,
2185
- * "Add2": null,
2186
- * "Score": "",
2187
- * "NameSport": "Football",
2188
- * "NameCountry": "Europe",
2189
- * "NameTurnir": "UEFA Champions League",
2190
- * "NameTeam1": "Real Madrid",
2191
- * "NameTeam2": "Bayern Munich",
2192
- * "DateEvent": "2026-04-07T22:00:00+03:00",
2193
- * "NameBetShort": "1",
2194
- * "NameBetLong": "Team 1 wins",
2195
- * "SportId": 5
2213
+ * "Add2": null
2196
2214
  * }
2197
2215
  * ],
2198
2216
  * "Culture": "en-US"
@@ -2233,5 +2251,111 @@ export class BetBoosterOfficeApi {
2233
2251
  const { data, status, statusText } = await this.request(url).POST(payload).exec();
2234
2252
  return this.responseHandlerDataData(data, status, statusText);
2235
2253
  }
2254
+ /**
2255
+ * Получает сохранённый купон по его идентификатору.
2256
+ *
2257
+ * @param savedCouponId - Уникальный числовой идентификатор сохранённого купона.
2258
+ * @returns Данные сохранённого купона.
2259
+ *
2260
+ * @remarks
2261
+ * Endpoint: `GET /portfolio/getcoupon/:savedCouponId` (NV20)
2262
+ *
2263
+ * @example
2264
+ * ```ts
2265
+ * // Запрос
2266
+ * const coupon = await api.getSavedCoupon(12345);
2267
+ *
2268
+ * // Ответ (строка с данными купона)
2269
+ * // "{ ... serialized coupon data ... }"
2270
+ * ```
2271
+ */
2272
+ async getSavedCoupon(savedCouponId) {
2273
+ const url = this.url(`/portfolio/getcoupon/${savedCouponId}`, api.NV20);
2274
+ const { data, status, statusText } = await this.request(url).exec();
2275
+ return this.responseHandlerDataData(data, status, statusText);
2276
+ }
2277
+ /**
2278
+ * Создаёт новый сохранённый купон на основе переданных данных и списка кодов.
2279
+ *
2280
+ * @param couponData - Объект {@link I.ICouponRequest} с данными купона (коэффициенты, домен, партнёр и т.д.).
2281
+ * @param savedCodesList - Массив строковых кодов, привязываемых к купону.
2282
+ * @returns Результат создания купона.
2283
+ *
2284
+ * @remarks
2285
+ * Endpoint: `POST /portfolio/createcoupon` (NV20)
2286
+ *
2287
+ * @example
2288
+ * ```ts
2289
+ * // Payload запроса
2290
+ * const payload = {
2291
+ * data: {
2292
+ * odds: [
2293
+ * {
2294
+ * ErrorMessage: 0,
2295
+ * Min: 10,
2296
+ * Max: 1000,
2297
+ * MinCurrencyUnit: 1,
2298
+ * IsRound: false,
2299
+ * IsReinvested: false,
2300
+ * MinAdd: 0,
2301
+ * MaxAdd: 0,
2302
+ * Odds: 1.85,
2303
+ * IsLive: false,
2304
+ * LinesID: 456789,
2305
+ * BetVarID: 1,
2306
+ * NameSport: "Football",
2307
+ * NameTeam1: "Team A",
2308
+ * NameTeam2: "Team B",
2309
+ * NameBetShort: "1"
2310
+ * }
2311
+ * ],
2312
+ * domain: "example.com",
2313
+ * partner: "partner1"
2314
+ * },
2315
+ * codes: ["ABC123", "DEF456"]
2316
+ * };
2317
+ *
2318
+ * const result = await api.createSavedCoupon(payload.data, payload.codes);
2319
+ * ```
2320
+ */
2321
+ async createSavedCoupon(couponData, savedCodesList) {
2322
+ const url = this.url(`/portfolio/createcoupon`, api.NV20);
2323
+ const payload = {
2324
+ data: couponData,
2325
+ codes: savedCodesList,
2326
+ };
2327
+ const { data, status, statusText } = await this.request(url).POST(payload).exec();
2328
+ return this.responseHandlerDataData(data, status, statusText);
2329
+ }
2330
+ /**
2331
+ * Получает список сохранённых купонов по массиву кодов.
2332
+ *
2333
+ * @param savedCodesList - Массив строковых кодов для поиска соответствующих купонов.
2334
+ * @returns Массив найденных купонов.
2335
+ *
2336
+ * @remarks
2337
+ * Endpoint: `POST /portfolio/getcoupons` (NV20)
2338
+ *
2339
+ * @example
2340
+ * ```ts
2341
+ * // Payload запроса
2342
+ * const payload = {
2343
+ * codes: ["ABC123", "DEF456"]
2344
+ * };
2345
+ *
2346
+ * const coupons = await api.getCoupons(["ABC123", "DEF456"]);
2347
+ *
2348
+ * // Ответ — массив объектов купонов
2349
+ * // [{ id: 1, odds: [...], domain: "example.com", ... }, ...]
2350
+ * ```
2351
+ */
2352
+ async getCoupons(savedCodesList) {
2353
+ const url = this.url(`/portfolio/getcoupons`, api.NV20);
2354
+ const payload = {
2355
+ codes: savedCodesList,
2356
+ };
2357
+ const { data, status, statusText } = await this.request(url).POST(payload).exec();
2358
+ return this.responseHandlerDataData(data, status, statusText);
2359
+ }
2236
2360
  }
2237
2361
  // @workspace /doc в комментарии приведи полный пример payload из I.IConfirmWithdrawalOrderPayload
package/dist/Types.d.ts CHANGED
@@ -1866,6 +1866,55 @@ export type TBetslipResponse = {
1866
1866
  };
1867
1867
  BetslipType: EBetslipType;
1868
1868
  };
1869
+ /** Одна позиция ставки в купоне */
1870
+ export interface ICouponOdd {
1871
+ ErrorMessage: number;
1872
+ Min: number;
1873
+ Max: number;
1874
+ MinCurrencyUnit: number;
1875
+ IsRound: boolean;
1876
+ IsReinvested: boolean;
1877
+ MinAdd: number;
1878
+ MaxAdd: number;
1879
+ Odds: number;
1880
+ IsLive: boolean;
1881
+ Amount?: number;
1882
+ LinesID?: number;
1883
+ HandSize?: number | null;
1884
+ BetVarID?: number;
1885
+ Add1?: number | null;
1886
+ Add2?: number | null;
1887
+ Score?: string;
1888
+ OddsOld?: number;
1889
+ HandSizeOld?: number;
1890
+ NameSport?: string;
1891
+ NameCountry?: string;
1892
+ NameTurnir?: string;
1893
+ NameTeam1?: string;
1894
+ NameTeam2?: string;
1895
+ PriceNum?: number;
1896
+ /** Дата события в формате ISO 8601 с часовым поясом, например "2026-04-07T22:00:00+03:00" */
1897
+ DateEvent?: string;
1898
+ NameBetShort?: string;
1899
+ NameBetLong?: string;
1900
+ Comment?: string;
1901
+ SportId?: number;
1902
+ DateEventLive?: string | null;
1903
+ BonusType?: number;
1904
+ BetIdentifier?: string | null;
1905
+ }
1906
+ /** Входящий запрос на сохранение купона */
1907
+ export interface ICouponRequest {
1908
+ odds: ICouponOdd[];
1909
+ domain: string;
1910
+ partner: string;
1911
+ id?: number;
1912
+ code?: string;
1913
+ }
1914
+ export type ICreateCouponRequest = {
1915
+ data: ICouponRequest;
1916
+ codes?: string[] | null | undefined;
1917
+ };
1869
1918
  export {};
1870
1919
  /**
1871
1920
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bb-api-platforma",
3
- "version": "0.1.244",
3
+ "version": "0.1.246",
4
4
  "description": "API module for BetBooster Platform",
5
5
  "productName": "BetBooster Platform API",
6
6
  "author": "Tomy Bet <tomybet.com@gmail.com>",
@@ -9,7 +9,7 @@
9
9
  "types": "dist/BetBoosterApi.min.d.ts",
10
10
  "type": "module",
11
11
  "scripts": {
12
- "release": "pwsh ./release.ps1",
12
+ "release": "pwsh -File .\\release.ps1",
13
13
  "build": "rimraf ./dist && tsc --project tsconfig.build.json",
14
14
  "build:compress": "npm run build && terser --compress --mangle --source-map \"url='BetBoosterApi.min.js.map'\" --output dist/BetBoosterApi.min.js dist/BetBoosterApi.js",
15
15
  "build:types": "dts-bundle-generator -o dist/BetBoosterApi.min.d.ts src/BetBoosterApi.ts",