
Security News
US Government Forces Anthropic to Pull Claude Fable Days After Launch
Anthropic says the directive cited national security concerns over a narrow jailbreak, but offered no specific technical details.
Командная строка для взаимодействия с RuStore API
--json) для удобной интеграции и обработки~/.rustore/config.jsonnpm install -g rustore
После установки используйте команду:
rustore --help
Вы можете использовать CLI без установки через npx:
npx rustore --help
npx rustore login --key-id <keyId> --key <privateKey>
npx rustore apps list
npm install rustore
Перед использованием CLI необходимо получить приватный ключ в RuStore Консоль.
# Авторизация с указанием keyId и приватного ключа
rustore login --key-id <keyId> --key <base64-ключ>
# Или короткая форма
rustore login -i <keyId> -k <base64-ключ>
Пример:
rustore login --key-id 123456 --key MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC...
# Показать информацию о текущей авторизации
rustore whoami
# Удалить токен (ключи остаются в конфиге)
rustore logout
# Получить список приложений
rustore apps list
# Получить все приложения (с пагинацией)
rustore apps list --all
# Вывести результат в формате JSON (удобно для скриптов и интеграций)
rustore apps list --json
# Комбинирование опций: получить все приложения в JSON формате
rustore apps list --all --json
# Фильтрация с JSON выводом
rustore apps list --app-name "MyApp" --json
rustore apps list --app-status PUBLISHED --json
# Создать черновую версию приложения
rustore apps create-draft --app-id 123456 --version-name "1.0.0" --version-code 1
# Создать черновую версию с JSON выводом
rustore apps create-draft --app-id 123456 --version-name "2.0.0" --version-code 2 --json
# Загрузить APK файл для версии (обязательно указать is-main-apk)
rustore apps upload-apk --package-name com.example.app --version-id 789 --file ./app-release.apk --is-main-apk true
# Загрузить APK файл с Huawei Mobile Services
rustore apps upload-apk --package-name com.example.app --version-id 789 --file ./app-release.apk --is-main-apk false --services-type HMS
# Загрузить APK файл с JSON выводом
rustore apps upload-apk --package-name com.example.app --version-id 789 --file ./app-release.apk --is-main-apk true --json
# Получить отзывы приложения
rustore feedback list --package-name com.example.app
# Получить все отзывы (с пагинацией)
rustore feedback list --package-name com.example.app --all
# Получить отзывы в JSON формате
rustore feedback list --package-name com.example.app --json
# Оставить ответ на отзыв
rustore feedback answer --package-name com.example.app --comment-id 123456 --text "Спасибо за отзыв!"
# Получить статус ответа на отзыв
rustore feedback status --package-name com.example.app --feedback-id 789
# Получить все ответы на отзывы
rustore feedback status --package-name com.example.app
# Изменить ответ на отзыв
rustore feedback update --package-name com.example.app --feedback-id 789 --text "Обновлённый ответ"
# Удалить ответ на отзыв
rustore feedback delete --package-name com.example.app --feedback-id 789
💡 Совет: Флаг --json полезен для:
jq или другие JSON-парсерыrustore apps list --json > apps.jsonCLI сохраняет конфигурацию в ~/.rustore/config.json:
{
"keyId": "ваш-key-id",
"privateKey": "ваш-приватный-ключ-base64",
"token": "jwe-токен",
"tokenExpiresAt": 1234567890
}
npm install
npm run build
npm start
# Запустить все тесты
npm test
# Тесты в watch режиме
npm run test:watch
# С покрытием
npm run test:coverage
Сборка проекта:
npm run build
Проверка типов:
npm run type-check
# или
./node_modules/.bin/tsc --noEmit
Запуск тестов:
npm test
Тестирование CLI локально:
# Запуск без установки (через tsx)
npm start -- login <keyId> --key <key>
# Или после сборки
node dist/bin.js whoami
Линтинг:
npm run lint
npm run lint:fix
npm run type-check
npm run lint
npm run lint:fix
API организовано по категориям, как в документации RuStore:
appsApi) - Загрузка и публикация приложений (общие методы)paymentsApi) - Работа с платежами и подписками (общие методы)paymentsAppApi) - Работа с платежами и подписками (методы приложений)catalogApi) - API для работы с продуктовым каталогомimport {login, appsApi, paymentsApi, catalogApi, feedbackApi} from 'rustore';
// Авторизация
await login('keyId', 'privateKey');
// Получить список приложений
const appsResponse = await appsApi.getAppList();
console.log(appsResponse.body.content);
// Получить все приложения (с автоматической пагинацией)
const allApps = await appsApi.getAllApps();
// Создать черновую версию приложения
const draftVersion = await appsApi.createDraftVersion(123456, {
versionName: '1.0.0',
versionCode: 1,
});
// Загрузить APK файл для версии
const uploadResult = await appsApi.uploadApkFile(
'com.example.app', // packageName вместо appId
draftVersion.body?.versionId || 789,
'./app-release.apk',
{
isMainApk: true, // обязательный параметр
servicesType: 'Unknown', // опциональный: 'HMS' или 'Unknown'
},
);
// Получить отзывы приложения
const feedbackResponse = await feedbackApi.getFeedback('com.example.app');
// Оставить ответ на отзыв
const answerResponse = await feedbackApi.createFeedbackAnswer('com.example.app', 123456, {
text: 'Спасибо за отзыв!',
});
// Получить статус ответа на отзыв
const statusResponse = await feedbackApi.getFeedbackAnswerStatus('com.example.app', 789);
// Использование других API категорий
// await paymentsApi.refund(...);
// await catalogApi.getProducts(...);
Статус реализации всех endpoints RuStore API. См. TODO_API_ENDPOINTS.md для подробной информации.
POST /public/auth/GET /public/v1/applicationPOST /public/v1/application/{packageName}/versionPOST /public/v1/application/{packageName}/version/{versionId}/apkPOST /public/v1/application/{packageName}/version/{versionId}/commitGET /public/v1/application/{packageName}/version/{versionId}GET /public/v1/application/{packageName}/versionGET /public/v1/application/tagPOST /public/v1/application/{packageName}/version/{versionId}/aabPUT /public/v1/application/{packageName}/version/{versionId}DELETE /public/v1/application/{packageName}/version/{versionId}POST /public/v1/application/{packageName}/version/{versionId}/screensGET /public/v1/application/{packageName}/version/{versionId}/statusGET /public/v1/application/{packageName}/feedbackPOST /public/v1/application/{packageName}/feedback/{commentId}/answerGET /public/v1/application/{packageName}/feedback/{feedbackId}PUT /public/v1/application/{packageName}/feedback/{feedbackId}DELETE /public/v1/application/{packageName}/feedback/{feedbackId}Base URL: https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions
GET /public/v1/payment/{paymentId}GET /public/v1/subscription/{subscriptionId}GET /public/v1/subscriptionPOST /public/v1/payment/refundPOST /public/v1/subscription/{subscriptionId}/cancelBase URL: https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions-app
GET /public/v1/application/{packageName}/invoiceGET /public/v1/application/{packageName}/purchase/{purchaseId}GET /public/v1/application/{packageName}/purchasePOST /public/v1/application/{packageName}/purchase/confirmPOST /public/v1/application/{packageName}/purchase/cancelBase URL: https://www.rustore.ru/help/work-with-rustore-api/api-catalog
GET /public/v1/catalog/productGET /public/v1/catalog/product/{productId}POST /public/v1/catalog/productPUT /public/v1/catalog/product/{productId}DELETE /public/v1/catalog/product/{productId}Легенда статусов:
Приоритеты реализации:
MIT
FAQs
CLI для работы с RuStore API
The npm package rustore receives a total of 3,594 weekly downloads. As such, rustore popularity was classified as popular.
We found that rustore demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Anthropic says the directive cited national security concerns over a narrow jailbreak, but offered no specific technical details.

Security News
A network of 152 Chrome live wallpaper extensions hid ad tracking and made extension-driven traffic look like Google search clicks.

Company News
Socket’s first CISO brings deep experience securing high-growth SaaS companies as open source supply chain threats accelerate.