Пакет @raidboss/platform-sdk для web и React Native.

TypeScript / Web — @raidboss/platform-sdk

Установка из Git (как обычно для продуктовых приложений)

npm install github:ivanbalandin/RaidBossPlatform#main:packages/platform-sdk
{
  "dependencies": {
    "@raidboss/platform-sdk": "github:ivanbalandin/RaidBossPlatform#main:packages/platform-sdk"
  }
}

Закрепить версию — тег или commit:

"@raidboss/platform-sdk": "github:ivanbalandin/RaidBossPlatform#sdk-ts-v0.1.0:packages/platform-sdk"

Приватный репозиторий — SSH:

"@raidboss/platform-sdk": "git+ssh://git@github.com:ivanbalandin/RaidBossPlatform.git#main:packages/platform-sdk"

При npm install из Git (полный пакет) скрипт prepare собирает dist/ через tsc.
В Docker monorepo deps (только package.json) сборка пропускается.

Установка из path (локальная разработка)

{
  "dependencies": {
    "@raidboss/platform-sdk": "file:../RaidBossPlatform/packages/platform-sdk"
  }
}
import {
  RaidBossPlatformClient,
  createRaidBossClient,
  RaidBossPlatformError,
} from "@raidboss/platform-sdk";

Создание клиента

const platform = new RaidBossPlatformClient({
  apiUrl: "YOUR_API_URL",
  applicationCode: "YOUR_APP_CODE",
  publicKey: "YOUR_PUBLIC_KEY",
  getAccessToken: async () => tokenOrNull,
});

Методы

МетодAuthPublic keyЗаметки
getPaywall(code?)нетрекомендуетсяПо умолчанию main
registerUser({ platform, display_name, avatar_url, timezone, acquisition_source })даПосле login/signup; не апгрейдит версии юр. доков
getMyConsents / acceptConsentsдаПроверка и явное принятие новых версий
updateUserProfile({ display_name, avatar_url, timezone })даПосле смены имени/аватара в приложении
registerDevice(...)даСтабильный UUID installation_iduser_devices / «Устройства active»
getMyEntitlements()даСнимок + codes
hasEntitlement(code)даУдобный хелпер
hasAnyEntitlement(codes)да
createPayment(...)дануженТолько платные
syncPayment(payment_id)даСверка после return
checkout(...)дануженАлиас
activateLicenseKey(...)даАктивация ключа
listDevices / revokeDeviceдаУстройства
getConfig / getFeaturesconfig: нет / features: даRemote
getApplicationBrandingнетнуженИконка и сайт приложения
getBanner / listBannersнетнуженHTML-баннеры приложения
getSiteBanner / listSiteBannersнетнуженБаннеры CMS-сайта
trackEvent / trackEventsдаАналитика; с installation_id+platform — heartbeat устройства
createSupportTicketдануженЗаявка в helpdesk
uploadSupportAttachmentдануженСкрин / видео / лог
listMySupportTickets / getSupportTicket / replyToSupportTicketдаМои заявки
getCmsSite / listCmsBlogPosts / …нетнуженCMS Site на лендинге
isFreePrice(price) staticДетект free

Free

if (RaidBossPlatformClient.isFreePrice(price)) {
  // не вызывать createPayment
}

Ошибка API при попытке оплаты free: free_plan_offline.