rustore 1.0.3 → 1.0.4
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/README.md +86 -1
- package/dist/api/apps.d.ts +126 -1
- package/dist/api/apps.d.ts.map +1 -1
- package/dist/api/apps.js +396 -9
- package/dist/api/apps.js.map +1 -1
- package/dist/api/catalog.d.ts +25 -0
- package/dist/api/catalog.d.ts.map +1 -1
- package/dist/api/catalog.js +41 -0
- package/dist/api/catalog.js.map +1 -1
- package/dist/api/payments-app.d.ts +40 -0
- package/dist/api/payments-app.d.ts.map +1 -1
- package/dist/api/payments-app.js +70 -0
- package/dist/api/payments-app.js.map +1 -1
- package/dist/api/payments.d.ts +37 -0
- package/dist/api/payments.d.ts.map +1 -1
- package/dist/api/payments.js +56 -0
- package/dist/api/payments.js.map +1 -1
- package/dist/bin.js +493 -2
- package/dist/bin.js.map +1 -1
- package/dist/commands/apps.d.ts +81 -1
- package/dist/commands/apps.d.ts.map +1 -1
- package/dist/commands/apps.js +361 -0
- package/dist/commands/apps.js.map +1 -1
- package/dist/commands/catalog.d.ts +31 -0
- package/dist/commands/catalog.d.ts.map +1 -0
- package/dist/commands/catalog.js +117 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/feedback.js +2 -2
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/payments-app.d.ts +50 -0
- package/dist/commands/payments-app.d.ts.map +1 -0
- package/dist/commands/payments-app.js +197 -0
- package/dist/commands/payments-app.js.map +1 -0
- package/dist/commands/payments.d.ts +42 -0
- package/dist/commands/payments.d.ts.map +1 -0
- package/dist/commands/payments.js +152 -0
- package/dist/commands/payments.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -1
- package/dist/config.js.map +1 -1
- package/dist/types.d.ts +445 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/README.en.md +0 -331
package/dist/api/apps.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app
|
|
6
6
|
*/
|
|
7
|
-
import { readFileSync } from 'node:fs';
|
|
7
|
+
import { readFileSync, existsSync, statSync } from 'node:fs';
|
|
8
8
|
import { RustoreApiClient } from './client.js';
|
|
9
9
|
import { getToken } from './auth.js';
|
|
10
10
|
/**
|
|
@@ -129,14 +129,66 @@ export class AppsApi extends RustoreApiClient {
|
|
|
129
129
|
const fileSizeMB = (fileBuffer.length / (1024 * 1024)).toFixed(2);
|
|
130
130
|
console.error(`[DEBUG] API Request: ${url} (uploading ${fileName}, size: ${fileSizeMB} MB)`);
|
|
131
131
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
132
|
+
// Проверяем, что файл существует и доступен для чтения
|
|
133
|
+
if (!existsSync(filePath)) {
|
|
134
|
+
throw new Error(`Файл не найден: ${filePath}`);
|
|
135
|
+
}
|
|
136
|
+
const fileStats = statSync(filePath);
|
|
137
|
+
if (process.env.DEBUG) {
|
|
138
|
+
console.error(`[DEBUG] File size: ${(fileStats.size / (1024 * 1024)).toFixed(2)} MB`);
|
|
139
|
+
console.error(`[DEBUG] File readable: ${fileStats.mode & 0o444 ? 'yes' : 'no'}`);
|
|
140
|
+
}
|
|
141
|
+
// Для больших файлов может потребоваться больше времени
|
|
142
|
+
// Используем AbortController с увеличенным таймаутом (30 минут для файлов до 5 ГБ)
|
|
143
|
+
const controller = new AbortController();
|
|
144
|
+
const timeoutId = setTimeout(() => controller.abort(), 30 * 60 * 1000); // 30 минут
|
|
145
|
+
let response;
|
|
146
|
+
try {
|
|
147
|
+
if (process.env.DEBUG) {
|
|
148
|
+
console.error(`[DEBUG] Starting fetch request to: ${url}`);
|
|
149
|
+
console.error(`[DEBUG] FormData entries count: ${formData instanceof FormData ? 'N/A (FormData)' : '0'}`);
|
|
150
|
+
}
|
|
151
|
+
response = await fetch(url, {
|
|
152
|
+
method: 'POST',
|
|
153
|
+
headers: {
|
|
154
|
+
'Public-Token': token,
|
|
155
|
+
// Не устанавливаем Content-Type - fetch установит автоматически с boundary
|
|
156
|
+
},
|
|
157
|
+
body: formData,
|
|
158
|
+
signal: controller.signal,
|
|
159
|
+
});
|
|
160
|
+
clearTimeout(timeoutId);
|
|
161
|
+
}
|
|
162
|
+
catch (fetchError) {
|
|
163
|
+
clearTimeout(timeoutId);
|
|
164
|
+
if (process.env.DEBUG) {
|
|
165
|
+
console.error(`[DEBUG] Fetch error details:`, {
|
|
166
|
+
name: fetchError instanceof Error ? fetchError.name : 'Unknown',
|
|
167
|
+
message: fetchError instanceof Error ? fetchError.message : String(fetchError),
|
|
168
|
+
stack: fetchError instanceof Error ? fetchError.stack : undefined,
|
|
169
|
+
cause: fetchError instanceof Error ? fetchError.cause : undefined,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
if (fetchError instanceof Error && fetchError.name === 'AbortError') {
|
|
173
|
+
throw new Error('Таймаут загрузки файла. Файл слишком большой или соединение прервано.');
|
|
174
|
+
}
|
|
175
|
+
// Более детальная информация об ошибке
|
|
176
|
+
const errorMessage = fetchError instanceof Error ? fetchError.message : String(fetchError);
|
|
177
|
+
const errorName = fetchError instanceof Error ? fetchError.name : 'UnknownError';
|
|
178
|
+
// Проверяем, является ли это сетевой ошибкой
|
|
179
|
+
if (errorName === 'TypeError' && errorMessage.includes('fetch failed')) {
|
|
180
|
+
throw new Error(`Ошибка сетевого соединения при загрузке файла.\n` +
|
|
181
|
+
`Детали: ${errorMessage}\n` +
|
|
182
|
+
`URL: ${url}\n` +
|
|
183
|
+
`Размер файла: ${(fileStats.size / (1024 * 1024)).toFixed(2)} MB\n` +
|
|
184
|
+
`Проверьте:\n` +
|
|
185
|
+
` 1. Интернет-соединение\n` +
|
|
186
|
+
` 2. Доступность API (https://public-api.rustore.ru)\n` +
|
|
187
|
+
` 3. Размер файла (максимальный размер может быть ограничен)\n` +
|
|
188
|
+
` 4. Токен авторизации (выполните 'rustore login' если необходимо)`);
|
|
189
|
+
}
|
|
190
|
+
throw new Error(`Ошибка загрузки файла (${errorName}): ${errorMessage}`);
|
|
191
|
+
}
|
|
140
192
|
// Получаем текст ответа для логирования и парсинга
|
|
141
193
|
const responseText = await response.text();
|
|
142
194
|
// Debug: логируем сырой ответ API
|
|
@@ -167,6 +219,341 @@ export class AppsApi extends RustoreApiClient {
|
|
|
167
219
|
throw new Error(`Ошибка парсинга ответа API: ${responseText}`);
|
|
168
220
|
}
|
|
169
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Отправить черновую версию приложения на модерацию
|
|
224
|
+
* POST /public/v1/application/{packageName}/version/{versionId}/commit
|
|
225
|
+
*
|
|
226
|
+
* Метод для отправки на модерацию черновика версии приложения.
|
|
227
|
+
* Перед отправкой убедитесь, что загружен хотя бы один основной APK-файл.
|
|
228
|
+
*
|
|
229
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
230
|
+
* @param versionId - ID версии (полученный из createDraftVersion)
|
|
231
|
+
* @param options - Параметры отправки (priorityUpdate - опциональный, от 0 до 5)
|
|
232
|
+
* @returns Информация об отправке на модерацию
|
|
233
|
+
*
|
|
234
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/send-draft-app-for-moderation
|
|
235
|
+
*/
|
|
236
|
+
async sendForModeration(packageName, versionId, options) {
|
|
237
|
+
const queryParams = new URLSearchParams();
|
|
238
|
+
if (options?.priorityUpdate !== undefined) {
|
|
239
|
+
queryParams.append('priorityUpdate', String(options.priorityUpdate));
|
|
240
|
+
}
|
|
241
|
+
const queryString = queryParams.toString();
|
|
242
|
+
const endpoint = queryString
|
|
243
|
+
? `/public/v1/application/${packageName}/version/${versionId}/commit?${queryString}`
|
|
244
|
+
: `/public/v1/application/${packageName}/version/${versionId}/commit`;
|
|
245
|
+
return this.post(endpoint);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Получить информацию о версии приложения
|
|
249
|
+
* GET /public/v1/application/{packageName}/version/{versionId}
|
|
250
|
+
*
|
|
251
|
+
* Метод позволяет получить детальную информацию о конкретной версии приложения.
|
|
252
|
+
*
|
|
253
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
254
|
+
* @param versionId - ID версии
|
|
255
|
+
* @returns Информация о версии приложения
|
|
256
|
+
*
|
|
257
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-version-info
|
|
258
|
+
*/
|
|
259
|
+
async getVersionInfo(packageName, versionId) {
|
|
260
|
+
const endpoint = `/public/v1/application/${packageName}/version/${versionId}`;
|
|
261
|
+
return this.get(endpoint);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Получить список версий приложения
|
|
265
|
+
* GET /public/v1/application/{packageName}/version
|
|
266
|
+
*
|
|
267
|
+
* Метод позволяет получить список всех версий приложения с поддержкой пагинации.
|
|
268
|
+
*
|
|
269
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
270
|
+
* @param options - Параметры запроса (continuationToken, pageSize и др.)
|
|
271
|
+
* @returns Список версий приложения
|
|
272
|
+
*
|
|
273
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-version-list
|
|
274
|
+
*/
|
|
275
|
+
async getVersionList(packageName, options) {
|
|
276
|
+
const endpoint = `/public/v1/application/${packageName}/version`;
|
|
277
|
+
// Формируем query параметры
|
|
278
|
+
const queryParams = new URLSearchParams();
|
|
279
|
+
if (options) {
|
|
280
|
+
Object.entries(options).forEach(([key, value]) => {
|
|
281
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
282
|
+
queryParams.append(key, String(value));
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
const queryString = queryParams.toString();
|
|
287
|
+
const finalEndpoint = queryString ? `${endpoint}?${queryString}` : endpoint;
|
|
288
|
+
return this.get(finalEndpoint);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Получить список тегов приложений
|
|
292
|
+
* GET /public/v1/application/tag
|
|
293
|
+
*
|
|
294
|
+
* Метод позволяет получить список доступных тегов для приложений.
|
|
295
|
+
* Теги используются при создании черновой версии (seoTagIds).
|
|
296
|
+
*
|
|
297
|
+
* @param options - Параметры запроса (continuationToken, pageSize и др.)
|
|
298
|
+
* @returns Список тегов приложений
|
|
299
|
+
*
|
|
300
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-app-tag-list
|
|
301
|
+
*/
|
|
302
|
+
async getAppTagList(options) {
|
|
303
|
+
const endpoint = '/public/v1/application/tag';
|
|
304
|
+
// Формируем query параметры
|
|
305
|
+
const queryParams = new URLSearchParams();
|
|
306
|
+
if (options) {
|
|
307
|
+
Object.entries(options).forEach(([key, value]) => {
|
|
308
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
309
|
+
queryParams.append(key, String(value));
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
const queryString = queryParams.toString();
|
|
314
|
+
const finalEndpoint = queryString ? `${endpoint}?${queryString}` : endpoint;
|
|
315
|
+
return this.get(finalEndpoint);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Загрузить AAB файл для версии приложения
|
|
319
|
+
* POST /public/v1/application/{packageName}/version/{versionId}/aab
|
|
320
|
+
*
|
|
321
|
+
* Метод позволяет загрузить AAB (Android App Bundle) файл для версии приложения.
|
|
322
|
+
* Аналогичен uploadApkFile, но для AAB формата.
|
|
323
|
+
*
|
|
324
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
325
|
+
* @param versionId - ID версии (полученный из createDraftVersion)
|
|
326
|
+
* @param filePath - Путь к AAB файлу
|
|
327
|
+
* @param options - Параметры загрузки (isMainApk - обязательный, servicesType - опциональный)
|
|
328
|
+
* @returns Информация о загруженном файле
|
|
329
|
+
*
|
|
330
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/apk-file-upload/file-upload-aab
|
|
331
|
+
*/
|
|
332
|
+
async uploadAabFile(packageName, versionId, filePath, options) {
|
|
333
|
+
// Формируем query параметры
|
|
334
|
+
const queryParams = new URLSearchParams();
|
|
335
|
+
queryParams.append('isMainApk', String(options.isMainApk));
|
|
336
|
+
if (options.servicesType) {
|
|
337
|
+
queryParams.append('servicesType', options.servicesType);
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
queryParams.append('servicesType', 'Unknown');
|
|
341
|
+
}
|
|
342
|
+
const endpoint = `/public/v1/application/${packageName}/version/${versionId}/aab?${queryParams.toString()}`;
|
|
343
|
+
// Читаем файл
|
|
344
|
+
const fileBuffer = readFileSync(filePath);
|
|
345
|
+
const fileName = filePath.split('/').pop() || 'app.aab';
|
|
346
|
+
// Создаём FormData для multipart/form-data запроса
|
|
347
|
+
const formData = new FormData();
|
|
348
|
+
const file = new File([fileBuffer], fileName, {
|
|
349
|
+
type: 'application/octet-stream', // AAB файлы обычно используют octet-stream
|
|
350
|
+
});
|
|
351
|
+
formData.append('file', file);
|
|
352
|
+
// Выполняем запрос с FormData
|
|
353
|
+
const token = await getToken();
|
|
354
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
355
|
+
if (process.env.DEBUG) {
|
|
356
|
+
const fileSizeMB = (fileBuffer.length / (1024 * 1024)).toFixed(2);
|
|
357
|
+
console.error(`[DEBUG] API Request: ${url} (uploading ${fileName}, size: ${fileSizeMB} MB)`);
|
|
358
|
+
}
|
|
359
|
+
// Проверяем, что файл существует и доступен для чтения
|
|
360
|
+
if (!existsSync(filePath)) {
|
|
361
|
+
throw new Error(`Файл не найден: ${filePath}`);
|
|
362
|
+
}
|
|
363
|
+
const fileStats = statSync(filePath);
|
|
364
|
+
if (process.env.DEBUG) {
|
|
365
|
+
console.error(`[DEBUG] File size: ${(fileStats.size / (1024 * 1024)).toFixed(2)} MB`);
|
|
366
|
+
}
|
|
367
|
+
// Для больших файлов может потребоваться больше времени
|
|
368
|
+
const controller = new AbortController();
|
|
369
|
+
const timeoutId = setTimeout(() => controller.abort(), 30 * 60 * 1000); // 30 минут
|
|
370
|
+
let response;
|
|
371
|
+
try {
|
|
372
|
+
response = await fetch(url, {
|
|
373
|
+
method: 'POST',
|
|
374
|
+
headers: {
|
|
375
|
+
'Public-Token': token,
|
|
376
|
+
},
|
|
377
|
+
body: formData,
|
|
378
|
+
signal: controller.signal,
|
|
379
|
+
});
|
|
380
|
+
clearTimeout(timeoutId);
|
|
381
|
+
}
|
|
382
|
+
catch (fetchError) {
|
|
383
|
+
clearTimeout(timeoutId);
|
|
384
|
+
if (fetchError instanceof Error && fetchError.name === 'AbortError') {
|
|
385
|
+
throw new Error('Таймаут загрузки файла. Файл слишком большой или соединение прервано.');
|
|
386
|
+
}
|
|
387
|
+
const errorMessage = fetchError instanceof Error ? fetchError.message : String(fetchError);
|
|
388
|
+
const errorName = fetchError instanceof Error ? fetchError.name : 'UnknownError';
|
|
389
|
+
if (errorName === 'TypeError' && errorMessage.includes('fetch failed')) {
|
|
390
|
+
throw new Error(`Ошибка сетевого соединения при загрузке файла.\n` +
|
|
391
|
+
`Детали: ${errorMessage}\n` +
|
|
392
|
+
`URL: ${url}\n` +
|
|
393
|
+
`Размер файла: ${(fileStats.size / (1024 * 1024)).toFixed(2)} MB`);
|
|
394
|
+
}
|
|
395
|
+
throw new Error(`Ошибка загрузки файла (${errorName}): ${errorMessage}`);
|
|
396
|
+
}
|
|
397
|
+
const responseText = await response.text();
|
|
398
|
+
if (process.env.DEBUG) {
|
|
399
|
+
console.error(`[DEBUG] API Response Status: ${response.status} ${response.statusText}`);
|
|
400
|
+
console.error(`[DEBUG] API Response Body:`, responseText);
|
|
401
|
+
}
|
|
402
|
+
if (!response.ok) {
|
|
403
|
+
let errorData;
|
|
404
|
+
try {
|
|
405
|
+
errorData = JSON.parse(responseText);
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
// Игнорируем ошибку парсинга
|
|
409
|
+
}
|
|
410
|
+
const errorMessage = errorData?.message ?? responseText;
|
|
411
|
+
throw new Error(`Ошибка API (${response.status}): ${errorMessage}`);
|
|
412
|
+
}
|
|
413
|
+
try {
|
|
414
|
+
return JSON.parse(responseText);
|
|
415
|
+
}
|
|
416
|
+
catch (parseError) {
|
|
417
|
+
if (process.env.DEBUG) {
|
|
418
|
+
console.error(`[DEBUG] Failed to parse JSON response:`, parseError);
|
|
419
|
+
}
|
|
420
|
+
throw new Error(`Ошибка парсинга ответа API: ${responseText}`);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Обновить черновую версию приложения
|
|
425
|
+
* PUT /public/v1/application/{packageName}/version/{versionId}
|
|
426
|
+
*
|
|
427
|
+
* Метод позволяет обновить информацию о черновой версии приложения.
|
|
428
|
+
*
|
|
429
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
430
|
+
* @param versionId - ID версии
|
|
431
|
+
* @param data - Данные для обновления черновой версии
|
|
432
|
+
* @returns Информация об обновлённой черновой версии
|
|
433
|
+
*
|
|
434
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/update-draft-version
|
|
435
|
+
*/
|
|
436
|
+
async updateDraftVersion(packageName, versionId, data) {
|
|
437
|
+
const endpoint = `/public/v1/application/${packageName}/version/${versionId}`;
|
|
438
|
+
return this.put(endpoint, data);
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Удалить черновую версию приложения
|
|
442
|
+
* DELETE /public/v1/application/{packageName}/version/{versionId}
|
|
443
|
+
*
|
|
444
|
+
* Метод позволяет удалить черновую версию приложения.
|
|
445
|
+
*
|
|
446
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
447
|
+
* @param versionId - ID версии
|
|
448
|
+
* @returns Результат удаления
|
|
449
|
+
*
|
|
450
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/delete-draft-version
|
|
451
|
+
*/
|
|
452
|
+
async deleteDraftVersion(packageName, versionId) {
|
|
453
|
+
const endpoint = `/public/v1/application/${packageName}/version/${versionId}`;
|
|
454
|
+
return this.delete(endpoint);
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Загрузить скриншоты для версии приложения
|
|
458
|
+
* POST /public/v1/application/{packageName}/version/{versionId}/screens
|
|
459
|
+
*
|
|
460
|
+
* Метод позволяет загрузить скриншоты приложения для разных типов устройств.
|
|
461
|
+
*
|
|
462
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
463
|
+
* @param versionId - ID версии
|
|
464
|
+
* @param filePaths - Массив путей к файлам скриншотов
|
|
465
|
+
* @param options - Параметры загрузки (deviceType - обязательный)
|
|
466
|
+
* @returns Информация о загруженных скриншотах
|
|
467
|
+
*
|
|
468
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/apk-screens-upload
|
|
469
|
+
*/
|
|
470
|
+
async uploadScreens(packageName, versionId, filePaths, options) {
|
|
471
|
+
const queryParams = new URLSearchParams();
|
|
472
|
+
queryParams.append('deviceType', options.deviceType);
|
|
473
|
+
const endpoint = `/public/v1/application/${packageName}/version/${versionId}/screens?${queryParams.toString()}`;
|
|
474
|
+
// Создаём FormData для multipart/form-data запроса
|
|
475
|
+
const formData = new FormData();
|
|
476
|
+
// Добавляем все файлы скриншотов
|
|
477
|
+
filePaths.forEach((filePath, index) => {
|
|
478
|
+
if (!existsSync(filePath)) {
|
|
479
|
+
throw new Error(`Файл не найден: ${filePath}`);
|
|
480
|
+
}
|
|
481
|
+
const fileBuffer = readFileSync(filePath);
|
|
482
|
+
const fileName = filePath.split('/').pop() || `screen_${index}.png`;
|
|
483
|
+
const file = new File([fileBuffer], fileName, {
|
|
484
|
+
type: 'image/png', // Предполагаем PNG, но можно определить по расширению
|
|
485
|
+
});
|
|
486
|
+
formData.append('files', file);
|
|
487
|
+
});
|
|
488
|
+
const token = await getToken();
|
|
489
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
490
|
+
if (process.env.DEBUG) {
|
|
491
|
+
console.error(`[DEBUG] API Request: ${url} (uploading ${filePaths.length} screens, deviceType: ${options.deviceType})`);
|
|
492
|
+
}
|
|
493
|
+
const controller = new AbortController();
|
|
494
|
+
const timeoutId = setTimeout(() => controller.abort(), 10 * 60 * 1000); // 10 минут
|
|
495
|
+
let response;
|
|
496
|
+
try {
|
|
497
|
+
response = await fetch(url, {
|
|
498
|
+
method: 'POST',
|
|
499
|
+
headers: {
|
|
500
|
+
'Public-Token': token,
|
|
501
|
+
},
|
|
502
|
+
body: formData,
|
|
503
|
+
signal: controller.signal,
|
|
504
|
+
});
|
|
505
|
+
clearTimeout(timeoutId);
|
|
506
|
+
}
|
|
507
|
+
catch (fetchError) {
|
|
508
|
+
clearTimeout(timeoutId);
|
|
509
|
+
if (fetchError instanceof Error && fetchError.name === 'AbortError') {
|
|
510
|
+
throw new Error('Таймаут загрузки скриншотов.');
|
|
511
|
+
}
|
|
512
|
+
const errorMessage = fetchError instanceof Error ? fetchError.message : String(fetchError);
|
|
513
|
+
throw new Error(`Ошибка загрузки скриншотов: ${errorMessage}`);
|
|
514
|
+
}
|
|
515
|
+
const responseText = await response.text();
|
|
516
|
+
if (process.env.DEBUG) {
|
|
517
|
+
console.error(`[DEBUG] API Response Status: ${response.status} ${response.statusText}`);
|
|
518
|
+
console.error(`[DEBUG] API Response Body:`, responseText);
|
|
519
|
+
}
|
|
520
|
+
if (!response.ok) {
|
|
521
|
+
let errorData;
|
|
522
|
+
try {
|
|
523
|
+
errorData = JSON.parse(responseText);
|
|
524
|
+
}
|
|
525
|
+
catch {
|
|
526
|
+
// Игнорируем ошибку парсинга
|
|
527
|
+
}
|
|
528
|
+
const errorMessage = errorData?.message ?? responseText;
|
|
529
|
+
throw new Error(`Ошибка API (${response.status}): ${errorMessage}`);
|
|
530
|
+
}
|
|
531
|
+
try {
|
|
532
|
+
return JSON.parse(responseText);
|
|
533
|
+
}
|
|
534
|
+
catch (parseError) {
|
|
535
|
+
if (process.env.DEBUG) {
|
|
536
|
+
console.error(`[DEBUG] Failed to parse JSON response:`, parseError);
|
|
537
|
+
}
|
|
538
|
+
throw new Error(`Ошибка парсинга ответа API: ${responseText}`);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Получить статус версии приложения
|
|
543
|
+
* GET /public/v1/application/{packageName}/version/{versionId}/status
|
|
544
|
+
*
|
|
545
|
+
* Метод позволяет получить статус модерации версии приложения.
|
|
546
|
+
*
|
|
547
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
548
|
+
* @param versionId - ID версии
|
|
549
|
+
* @returns Статус версии приложения
|
|
550
|
+
*
|
|
551
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-version-status
|
|
552
|
+
*/
|
|
553
|
+
async getVersionStatus(packageName, versionId) {
|
|
554
|
+
const endpoint = `/public/v1/application/${packageName}/version/${versionId}/status`;
|
|
555
|
+
return this.get(endpoint);
|
|
556
|
+
}
|
|
170
557
|
}
|
|
171
558
|
/**
|
|
172
559
|
* Экспортируемый экземпляр клиента для работы с приложениями
|
package/dist/api/apps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/api/apps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAWnC;;GAEG;AACH,MAAM,OAAO,OAAQ,SAAQ,gBAAgB;IAC3C;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,UAAU,CAAC,OAA2B;QAC1C,sEAAsE;QACtE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;QACjE,MAAM,YAAY,GAAG,cAAc,IAAI,wBAAwB,CAAC;QAEhE,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBAC1D,wDAAwD;oBACxD,mDAAmD;oBACnD,qEAAqE;oBACrE,8DAA8D;oBAC9D,4FAA4F;oBAC5F,oFAAoF;oBACpF,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC/E,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAE/E,OAAO,IAAI,CAAC,GAAG,CAAqB,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CACd,OAAsD;QAEtD,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,IAAI,iBAAqC,CAAC;QAE1C,GAAG,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAC,GAAG,OAAO,EAAE,iBAAiB,EAAC,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEvC,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACtD,CAAC,QAAQ,iBAAiB,EAAE;QAE5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,IAA+B;QAE/B,MAAM,QAAQ,GAAG,0BAA0B,WAAW,UAAU,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAA6B,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,aAAa,CACjB,WAAmB,EACnB,SAAiB,EACjB,QAAgB,EAChB,OAA6B;QAE7B,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,QAAQ,GAAG,0BAA0B,WAAW,YAAY,SAAS,QAAQ,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;QAE5G,cAAc;QACd,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;QAExD,mDAAmD;QACnD,gDAAgD;QAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,uDAAuD;QACvD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;YAC5C,IAAI,EAAE,yCAAyC;SAChD,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9B,8BAA8B;QAC9B,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;QAEzC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,KAAK,CACX,wBAAwB,GAAG,eAAe,QAAQ,WAAW,UAAU,MAAM,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,KAAK;gBACrB,2EAA2E;aAC5E;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE3C,kCAAkC;QAClC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CACX,gCAAgC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACzE,CAAC;YACF,OAAO,CAAC,KAAK,CACX,+BAA+B,EAC/B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAC/C,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,SAAwD,CAAC;YAE7D,IAAI,CAAC;gBACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YAED,MAAM,YAAY,GAAG,SAAS,EAAE,OAAO,IAAI,YAAY,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,MAAM,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAA0B,CAAC;QAC3D,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/api/apps.ts"],"names":[],"mappings":"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"}
|
package/dist/api/catalog.d.ts
CHANGED
|
@@ -5,10 +5,35 @@
|
|
|
5
5
|
* @see https://www.rustore.ru/help/work-with-rustore-api/api-catalog
|
|
6
6
|
*/
|
|
7
7
|
import { RustoreApiClient } from './client.js';
|
|
8
|
+
import type { GetProductsResponse, GetProductsOptions, GetProductResponse } from '../types.js';
|
|
8
9
|
/**
|
|
9
10
|
* Клиент для работы с продуктовым каталогом
|
|
10
11
|
*/
|
|
11
12
|
export declare class CatalogApi extends RustoreApiClient {
|
|
13
|
+
/**
|
|
14
|
+
* Получить список продуктов
|
|
15
|
+
* GET /public/v1/catalog/product
|
|
16
|
+
*
|
|
17
|
+
* Метод позволяет получить список всех продуктов с поддержкой пагинации.
|
|
18
|
+
*
|
|
19
|
+
* @param options - Параметры запроса (continuationToken, pageSize и др.)
|
|
20
|
+
* @returns Список продуктов
|
|
21
|
+
*
|
|
22
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-catalog/get-products
|
|
23
|
+
*/
|
|
24
|
+
getProducts(options?: GetProductsOptions): Promise<GetProductsResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Получить информацию о продукте
|
|
27
|
+
* GET /public/v1/catalog/product/{productId}
|
|
28
|
+
*
|
|
29
|
+
* Метод позволяет получить детальную информацию о конкретном продукте.
|
|
30
|
+
*
|
|
31
|
+
* @param productId - ID продукта
|
|
32
|
+
* @returns Информация о продукте
|
|
33
|
+
*
|
|
34
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-catalog/get-product
|
|
35
|
+
*/
|
|
36
|
+
getProduct(productId: number): Promise<GetProductResponse>;
|
|
12
37
|
}
|
|
13
38
|
/**
|
|
14
39
|
* Экспортируемый экземпляр клиента для работы с каталогом
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,UAAW,SAAQ,gBAAgB;IAC9C;;;;;;;;;;OAUG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB7E;;;;;;;;;;OAUG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAIjE;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
package/dist/api/catalog.js
CHANGED
|
@@ -9,6 +9,47 @@ import { RustoreApiClient } from './client.js';
|
|
|
9
9
|
* Клиент для работы с продуктовым каталогом
|
|
10
10
|
*/
|
|
11
11
|
export class CatalogApi extends RustoreApiClient {
|
|
12
|
+
/**
|
|
13
|
+
* Получить список продуктов
|
|
14
|
+
* GET /public/v1/catalog/product
|
|
15
|
+
*
|
|
16
|
+
* Метод позволяет получить список всех продуктов с поддержкой пагинации.
|
|
17
|
+
*
|
|
18
|
+
* @param options - Параметры запроса (continuationToken, pageSize и др.)
|
|
19
|
+
* @returns Список продуктов
|
|
20
|
+
*
|
|
21
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-catalog/get-products
|
|
22
|
+
*/
|
|
23
|
+
async getProducts(options) {
|
|
24
|
+
const endpoint = '/public/v1/catalog/product';
|
|
25
|
+
// Формируем query параметры
|
|
26
|
+
const queryParams = new URLSearchParams();
|
|
27
|
+
if (options) {
|
|
28
|
+
Object.entries(options).forEach(([key, value]) => {
|
|
29
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
30
|
+
queryParams.append(key, String(value));
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const queryString = queryParams.toString();
|
|
35
|
+
const finalEndpoint = queryString ? `${endpoint}?${queryString}` : endpoint;
|
|
36
|
+
return this.get(finalEndpoint);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Получить информацию о продукте
|
|
40
|
+
* GET /public/v1/catalog/product/{productId}
|
|
41
|
+
*
|
|
42
|
+
* Метод позволяет получить детальную информацию о конкретном продукте.
|
|
43
|
+
*
|
|
44
|
+
* @param productId - ID продукта
|
|
45
|
+
* @returns Информация о продукте
|
|
46
|
+
*
|
|
47
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-catalog/get-product
|
|
48
|
+
*/
|
|
49
|
+
async getProduct(productId) {
|
|
50
|
+
const endpoint = `/public/v1/catalog/product/${productId}`;
|
|
51
|
+
return this.get(endpoint);
|
|
52
|
+
}
|
|
12
53
|
}
|
|
13
54
|
/**
|
|
14
55
|
* Экспортируемый экземпляр клиента для работы с каталогом
|
package/dist/api/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAO7C;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,gBAAgB;IAC9C;;;;;;;;;;OAUG;IACH,KAAK,CAAC,WAAW,CAAC,OAA4B;QAC5C,MAAM,QAAQ,GAAG,4BAA4B,CAAC;QAE9C,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBAC1D,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE5E,OAAO,IAAI,CAAC,GAAG,CAAsB,aAAa,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,QAAQ,GAAG,8BAA8B,SAAS,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAqB,QAAQ,CAAC,CAAC;IAChD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -5,10 +5,50 @@
|
|
|
5
5
|
* @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions-app
|
|
6
6
|
*/
|
|
7
7
|
import { RustoreApiClient } from './client.js';
|
|
8
|
+
import type { GetInvoicesResponse, GetInvoicesOptions, GetPurchaseResponse, GetPurchaseListResponse, GetPurchaseListOptions } from '../types.js';
|
|
8
9
|
/**
|
|
9
10
|
* Клиент для работы с платежами (методы приложений)
|
|
10
11
|
*/
|
|
11
12
|
export declare class PaymentsAppApi extends RustoreApiClient {
|
|
13
|
+
/**
|
|
14
|
+
* Получить список счетов приложения
|
|
15
|
+
* GET /public/v1/application/{packageName}/invoice
|
|
16
|
+
*
|
|
17
|
+
* Метод позволяет получить список счетов для указанного приложения с поддержкой пагинации.
|
|
18
|
+
*
|
|
19
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
20
|
+
* @param options - Параметры запроса (continuationToken, pageSize и др.)
|
|
21
|
+
* @returns Список счетов
|
|
22
|
+
*
|
|
23
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions-app/get-invoices
|
|
24
|
+
*/
|
|
25
|
+
getInvoices(packageName: string, options?: GetInvoicesOptions): Promise<GetInvoicesResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Получить информацию о покупке
|
|
28
|
+
* GET /public/v1/application/{packageName}/purchase/{purchaseId}
|
|
29
|
+
*
|
|
30
|
+
* Метод позволяет получить детальную информацию о конкретной покупке.
|
|
31
|
+
*
|
|
32
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
33
|
+
* @param purchaseId - ID покупки
|
|
34
|
+
* @returns Информация о покупке
|
|
35
|
+
*
|
|
36
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions-app/get-purchase
|
|
37
|
+
*/
|
|
38
|
+
getPurchase(packageName: string, purchaseId: number): Promise<GetPurchaseResponse>;
|
|
39
|
+
/**
|
|
40
|
+
* Получить список покупок приложения
|
|
41
|
+
* GET /public/v1/application/{packageName}/purchase
|
|
42
|
+
*
|
|
43
|
+
* Метод позволяет получить список покупок для указанного приложения с поддержкой пагинации.
|
|
44
|
+
*
|
|
45
|
+
* @param packageName - Имя пакета приложения (например, com.example.app)
|
|
46
|
+
* @param options - Параметры запроса (continuationToken, pageSize и др.)
|
|
47
|
+
* @returns Список покупок
|
|
48
|
+
*
|
|
49
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions-app/get-purchase-list
|
|
50
|
+
*/
|
|
51
|
+
getPurchaseList(packageName: string, options?: GetPurchaseListOptions): Promise<GetPurchaseListResponse>;
|
|
12
52
|
}
|
|
13
53
|
/**
|
|
14
54
|
* Экспортируемый экземпляр клиента для работы с платежами приложений
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments-app.d.ts","sourceRoot":"","sources":["../../src/api/payments-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"payments-app.d.ts","sourceRoot":"","sources":["../../src/api/payments-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD;;;;;;;;;;;OAWG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,mBAAmB,CAAC;IAmB/B;;;;;;;;;;;OAWG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,CAAC;IAK/B;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;CAkBpC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|