SDKs
Публичные клиентские SDK для плоскости Runtime (runtime.<domain>).
Management / Vendor Console API этими пакетами не покрываются.
Матрица совместимости, координаты пакетов, language floors и ссылки на examples: Матрица совместимости SDK.
Локальная проверка lease (скачать JWKS → проверить JWS → применить claims): Проверка доверия (JWKS) · snippets в Быстром старте для разработчика.
Ответ validate может содержать densified featureGrants. Используйте их только
после доверенного allow; не soft-allow возможности при deny/degraded или при
сбое signature trust.
.NET, JavaScript/TypeScript, Java, Go, Rust и C++ SDK собираются как 0.1.0-preview.1; Python — как 0.1.0a1.
Публикация на nuget.org, npmjs, Maven Central, PyPI, proxy.golang.org / version-tag, crates.io и vcpkg/Conan закрыта gate — до намеренного релиза ставьте пакет из локального/CI артефакта (или pin @main / replace / path).
Доступно
| Язык | Пакет | Статус | Исходники | Примеры |
|---|---|---|---|---|
| .NET | MyHoreca.Licensing.Sdk | Preview 0.1.0-preview.1 (net10.0) | igorpooh1978/myhoreca-licensing-sdk-dotnet | QuickStart |
| JavaScript / TypeScript | @myhoreca/licensing-sdk | Preview 0.1.0-preview.1 (Node 20+ / современные браузеры) | igorpooh1978/myhoreca-licensing-sdk-js | quickstart |
| Python | myhoreca-licensing-sdk | Alpha 0.1.0a1 (Python 3.11+) | igorpooh1978/myhoreca-licensing-sdk-python | quickstart |
| Java | com.myhoreca:licensing-sdk | Preview 0.1.0-preview.1 (Java 17+) | igorpooh1978/myhoreca-licensing-sdk-java | quickstart |
| Go | github.com/igorpooh1978/myhoreca-licensing-sdk-go | Preview 0.1.0-preview.1 (Go 1.23+) | igorpooh1978/myhoreca-licensing-sdk-go | quickstart |
| Rust | myhoreca-licensing-sdk | Preview 0.1.0-preview.1 (Rust 1.86+) | igorpooh1978/myhoreca-licensing-sdk-rust | quickstart |
| C++ | myhoreca-licensing-sdk | Preview 0.1.0-preview.1 (C++20 / CMake 3.20+) | igorpooh1978/myhoreca-licensing-sdk-cpp | quickstart |
.NET Quick Start
Репозиторий (Apache-2.0): myhoreca-licensing-sdk-dotnet
Changelog: CHANGELOG.md
Совместимость: COMPATIBILITY.md
Установка (preview)
Пока nuget.org не открыт, соберите пакет из исходников или скачайте CI artifact:
git clone https://github.com/igorpooh1978/myhoreca-licensing-sdk-dotnet.git
cd myhoreca-licensing-sdk-dotnet
pwsh ./tools/pack.ps1
# → artifacts/nuget/MyHoreca.Licensing.Sdk.0.1.0-preview.1.nupkg
Подключите локальный feed / PackageReference к этому nupkg в приложении.
Не считайте CI artifact стабильным публичным registry.
Минимальный пример
using MyHoreca.Licensing.Sdk;
var client = LicensingClient.Create(new LicensingClientOptions
{
BaseUrl = new Uri("https://runtime.example"),
TenantId = tenantId,
// LicenseKey = "...", // опционально — не логировать
});
var activated = await client.ActivateAsync(licenseId, cancellationToken);
var validated = await client.ValidateAsync(new ValidateRequest
{
LicenseId = licenseId,
LeaseToken = activated.LeaseToken
}, cancellationToken);
if (validated.IsAllowed) { /* выдать фичу после server decision */ }
// Локальное доверие: JWKS (внутри SDK) → Compact JWS → claims
var verified = await client.VerifyLeaseAsync(
activated.LeaseToken!,
new LeaseVerificationOptions { ExpectedAudience = "myhoreca.runtime" },
cancellationToken);
if (!verified.IsAccepted) { /* deny — см. Проверка доверия (JWKS) */ }
Также доступны: RefreshLeaseAsync, RegisterDeviceAsync. Narrative: Проверка доверия (JWKS).
Runnable-пример: examples/QuickStart
(задайте MYHORECA_RUNTIME_BASE_URL, MYHORECA_TENANT_ID, MYHORECA_LICENSE_ID).
Поверхность Runtime (v1)
| Операция | API SDK |
|---|---|
| Activate | ActivateAsync |
| Validate | ValidateAsync |
| Refresh lease | RefreshLeaseAsync |
| Register device | RegisterDeviceAsync |
| JWKS / verify lease | VerifyLeaseAsync |
JavaScript / TypeScript Quick Start
Репозиторий (Apache-2.0): myhoreca-licensing-sdk-js
Changelog: CHANGELOG.md
Совместимость: COMPATIBILITY.md
Установка (preview)
Пока npmjs не открыт, соберите пакет из исходников или скачайте CI artifact:
git clone https://github.com/igorpooh1978/myhoreca-licensing-sdk-js.git
cd myhoreca-licensing-sdk-js
pnpm install
pnpm pack:local
# → artifacts/npm/myhoreca-licensing-sdk-0.1.0-preview.1.tgz
Подключите локальную / file-зависимость на этот tarball (или file:../myhoreca-licensing-sdk-js при разработке).
Не считайте CI artifact стабильным публичным registry.
Публикация на npmjs закрыта gate — см. NPM-PUBLISH.md.
После намеренного релиза на npmjs:
pnpm add @myhoreca/licensing-sdk
Минимальный пример
import { createLicensingClient } from "@myhoreca/licensing-sdk";
const client = createLicensingClient({
baseUrl: "https://runtime.example",
tenantId,
// licenseKey: "...", // опционально — не логировать
});
const activated = await client.activate(licenseId);
const validated = await client.validate({
licenseId,
leaseToken: activated.leaseToken,
});
if (validated.isAllowed) {
/* выдать фичу после server decision */
}
// Локальное доверие: JWKS (внутри SDK) → Compact JWS → claims
const verified = await client.verifyLease(activated.leaseToken!, {
expectedAudience: "myhoreca.runtime",
});
if (!verified.isAccepted) {
/* deny — см. Проверка доверия (JWKS) */
}
Также доступны: refreshLease, registerDevice. Narrative: Проверка доверия (JWKS).
Runnable-пример: examples/quickstart
(задайте MYHORECA_RUNTIME_BASE_URL, MYHORECA_TENANT_ID, MYHORECA_LICENSE_ID).
Поверхность Runtime (v1)
| Операция | API SDK |
|---|---|
| Activate | activate |
| Validate | validate |
| Refresh lease | refreshLease |
| Register device | registerDevice |
| JWKS / verify lease | verifyLease / verifyLeaseToken |
Python Quick Start
Репозиторий (Apache-2.0): myhoreca-licensing-sdk-python
Changelog: CHANGELOG.md
Совместимость: COMPATIBILITY.md
Установка (alpha)
Пока PyPI не открыт, установите из исходников или из собранного wheel:
git clone https://github.com/igorpooh1978/myhoreca-licensing-sdk-python.git
cd myhoreca-licensing-sdk-python
python -m pip install -e .
# или pack:
python -m pip install build
python scripts/pack.py
# → artifacts/pypi/myhoreca_licensing_sdk-0.1.0a1-py3-none-any.whl
python -m pip install artifacts/pypi/myhoreca_licensing_sdk-0.1.0a1-py3-none-any.whl
Не считайте CI artifact стабильным публичным registry.
Публикация на PyPI закрыта gate — см. PYPI-PUBLISH.md.
После намеренного релиза на PyPI:
python -m pip install myhoreca-licensing-sdk
Минимальный пример
from myhoreca_licensing_sdk import (
LicensingClientOptions,
ValidateRequest,
create_licensing_client,
)
client = create_licensing_client(
LicensingClientOptions(
base_url="https://runtime.example",
tenant_id=tenant_id,
# license_key="...", # опционально — не логировать
)
)
try:
activated = await client.activate(license_id)
validated = await client.validate(
ValidateRequest(license_id=license_id, lease_token=activated.lease_token)
)
if validated.is_allowed:
... # выдать фичу
finally:
await client.aclose()
Также доступны: refresh_lease, verify_lease / verify_lease_token (локальная ES256 через JWKS),
register_device, и sync facade create_licensing_client_sync (не вызывать из уже запущенного event loop).
Runnable-пример: examples/quickstart
(задайте MYHORECA_RUNTIME_BASE_URL, MYHORECA_TENANT_ID, MYHORECA_LICENSE_ID).
Поверхность Runtime (v1)
| Операция | API SDK |
|---|---|
| Activate | activate |
| Validate | validate |
| Refresh lease | refresh_lease |
| Register device | register_device |
| JWKS / verify lease | verify_lease / verify_lease_token |
Java Quick Start
Репозиторий (Apache-2.0): myhoreca-licensing-sdk-java
Changelog: CHANGELOG.md
Совместимость: COMPATIBILITY.md
Установка (preview)
Пока Maven Central не открыт, соберите пакет из исходников или скачайте CI artifact:
git clone https://github.com/igorpooh1978/myhoreca-licensing-sdk-java.git
cd myhoreca-licensing-sdk-java
pwsh ./tools/pack.ps1
# → artifacts/maven/com/myhoreca/licensing-sdk/0.1.0-preview.1/
./gradlew publishToMavenLocal
Подключите зависимость com.myhoreca:licensing-sdk:0.1.0-preview.1 из Maven Local (или file-based Maven repo на artifacts/maven).
Не считайте CI artifact стабильным публичным registry.
Публикация на Maven Central закрыта gate — см. MAVEN-PUBLISH.md.
После намеренного релиза в Maven Central:
<dependency>
<groupId>com.myhoreca</groupId>
<artifactId>licensing-sdk</artifactId>
<version>0.1.0-preview.1</version>
</dependency>
Минимальный пример
try (var client = LicensingClient.create(
LicensingClientOptions.builder()
.baseUrl("https://runtime.example")
.tenantId(tenantId)
// .licenseKey("...") // опционально — не логировать
.build())) {
var activated = client.activate(licenseId);
var validated = client.validate(ValidateRequest.builder()
.licenseId(licenseId)
.leaseToken(activated.getLeaseToken())
.build());
if (validated.isAllowed()) {
/* выдать фичу */
}
}
Также доступны: refreshLease, verifyLease (локальная ES256 через JWKS), registerDevice.
Runnable-пример: examples/quickstart
(задайте MYHORECA_RUNTIME_BASE_URL, MYHORECA_TENANT_ID, MYHORECA_LICENSE_ID).
Поверхность Runtime (v1)
| Операция | API SDK |
|---|---|
| Activate | activate |
| Validate | validate |
| Refresh lease | refreshLease |
| Register device | registerDevice |
| JWKS / verify lease | verifyLease / LeaseVerifier |
Go Quick Start
Репозиторий (Apache-2.0): myhoreca-licensing-sdk-go
Changelog: CHANGELOG.md
Совместимость: COMPATIBILITY.md
Установка (preview)
Пока публичный version-tag / proxy.golang.org не открыт, клонируйте и пакуйте из исходников (или pin @main / replace при разработке):
git clone https://github.com/igorpooh1978/myhoreca-licensing-sdk-go.git
cd myhoreca-licensing-sdk-go
pwsh ./tools/pack.ps1
# → artifacts/module/github.com/igorpooh1978/myhoreca-licensing-sdk-go/@v/v0.1.0-preview.1.zip
Не считайте CI artifact стабильным публичным module proxy.
Публикация version-tag / proxy.golang.org закрыта gate — см. MODULE-PUBLISH.md.
После намеренного tagged-релиза:
go get github.com/igorpooh1978/myhoreca-licensing-sdk-go@v0.1.0-preview.1
Минимальный пример
client, err := licensing.NewClient(licensing.Options{
BaseURL: "https://runtime.example",
TenantID: &tenantID,
// LicenseKey: "...", // опционально — не логировать
})
if err != nil { /* … */ }
defer client.Close()
activated, err := client.Activate(ctx, licenseID)
if err != nil { /* … */ }
validated, err := client.Validate(ctx, licensing.ValidateRequest{
LicenseID: &licenseID,
LeaseToken: activated.LeaseToken,
})
if err != nil { /* … */ }
if validated.Allowed() { /* выдать фичу */ }
Также доступны: RefreshLease, VerifyLease (локальная ES256 через JWKS), RegisterDevice.
Runnable-пример: examples/quickstart
(задайте MYHORECA_RUNTIME_BASE_URL, MYHORECA_TENANT_ID, MYHORECA_LICENSE_ID).
Поверхность Runtime (v1)
| Операция | API SDK |
|---|---|
| Activate | Activate / ActivateRequest |
| Validate | Validate |
| Refresh lease | RefreshLease |
| Register device | RegisterDevice |
| JWKS / verify lease | VerifyLease / VerifyLeaseOffline |
Rust Quick Start
Репозиторий (Apache-2.0): myhoreca-licensing-sdk-rust
Changelog: CHANGELOG.md
Совместимость: COMPATIBILITY.md
Установка (preview)
Пока crates.io не открыт, клонируйте и пакуйте из исходников (или path / git dependency при разработке). В Cargo.toml остаётся publish = false:
git clone https://github.com/igorpooh1978/myhoreca-licensing-sdk-rust.git
cd myhoreca-licensing-sdk-rust
pwsh ./tools/pack.ps1
# → artifacts/crate/myhoreca-licensing-sdk/myhoreca-licensing-sdk-0.1.0-preview.1.crate
В Cargo.toml приложения (пример path pin):
myhoreca-licensing-sdk = { path = "../myhoreca-licensing-sdk-rust" }
Не считайте CI artifact стабильным публичным registry.
Публикация на crates.io закрыта gate — см. CRATES-PUBLISH.md.
После намеренного релиза на crates.io:
myhoreca-licensing-sdk = "0.1.0-preview.1"
Минимальный пример
use myhoreca_licensing_sdk::{LicensingClient, Options, ValidateRequest};
let client = LicensingClient::new(Options {
base_url: "https://runtime.example".into(),
tenant_id: Some(tenant_id),
// license_key: Some("...".into()), // опционально — не логировать
..Default::default()
})?;
let activated = client.activate(license_id).await?;
let validated = client
.validate(ValidateRequest {
license_id: Some(license_id),
lease_token: Some(activated.lease_token.clone()),
..Default::default()
})
.await?;
if validated.is_allowed() { /* выдать фичу */ }
Также доступны: refresh_lease, verify_lease / verify_lease_offline (локальная ES256 через JWKS), register_device.
Runnable-пример: examples/quickstart
(задайте MYHORECA_RUNTIME_BASE_URL, MYHORECA_TENANT_ID, MYHORECA_LICENSE_ID).
Поверхность Runtime (v1)
| Операция | API SDK |
|---|---|
| Activate | activate / activate_request |
| Validate | validate |
| Refresh lease | refresh_lease |
| Register device | register_device |
| JWKS / verify lease | verify_lease / verify_lease_offline |
C++ Quick Start
Репозиторий (Apache-2.0): myhoreca-licensing-sdk-cpp
Changelog: CHANGELOG.md
Совместимость: COMPATIBILITY.md
Установка (preview)
Пока vcpkg / Conan не открыты, клонируйте и собирайте из исходников (или локальный CMake install / pack artifact при разработке):
git clone https://github.com/igorpooh1978/myhoreca-licensing-sdk-cpp.git
cd myhoreca-licensing-sdk-cpp
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
pwsh ./tools/pack.ps1
# → artifacts/cmake-package/myhoreca-licensing-sdk/myhoreca-licensing-sdk-0.1.0-preview.1-*.zip
В CMakeLists.txt приложения (пример add_subdirectory / path pin):
add_subdirectory(../myhoreca-licensing-sdk-cpp sdk EXCLUDE_FROM_ALL)
target_link_libraries(app PRIVATE myhoreca::licensing)
Не считайте CI artifact стабильным публичным registry.
Публикация vcpkg / Conan закрыта gate — см. REGISTRY-PUBLISH.md.
После намеренного релиза в registry:
find_package(myhoreca-licensing-sdk CONFIG REQUIRED)
target_link_libraries(app PRIVATE myhoreca::licensing)
Минимальный пример
#include <myhoreca/licensing/client.hpp>
auto client = myhoreca::licensing::LicensingClient::Create({
.baseUrl = "https://runtime.example",
.tenantId = tenantId,
// .licenseKey = "...", // опционально — не логировать
});
auto activated = client->Activate(licenseId);
auto validated = client->Validate({
.licenseId = licenseId,
.leaseToken = activated.leaseToken,
});
if (validated.IsAllowed()) { /* выдать фичу */ }
Также доступны: RefreshLease, VerifyLease / VerifyLeaseOffline (локальная ES256 через JWKS), RegisterDevice.
Runnable-пример: examples/quickstart
(задайте MYHORECA_RUNTIME_BASE_URL, MYHORECA_TENANT_ID, MYHORECA_LICENSE_ID).
Поверхность Runtime (v1)
| Операция | API SDK |
|---|---|
| Activate | Activate / ActivateRequest |
| Validate | Validate |
| Refresh lease | RefreshLease |
| Register device | RegisterDevice |
| JWKS / verify lease | VerifyLease / VerifyLeaseOffline |
Правила
- Ставьте пакеты только из официального публичного репозитория / одобренного registry после релиза.
- Не вшивайте private signing keys, license keys и секреты
platform.jsonв приложения и примеры docs. - Runtime-клиенты должны ходить на
runtime.<domain>, а не на hostname Management UI. - Используйте типизированные ошибки / diagnostics; не логируйте lease token и device digest.
См. Выберите свой путь для ролей вендора и интегратора.