Быстрый старт для TypeScript
Обращайтесь к инфраструктурному API /platform/v1 с помощью генерируемого TypeScript-клиента @forestvpn/console-api.
@forestvpn/console-api — это генерируемый TypeScript-клиент для плоскости
/platform/v1: типизированные модели запросов и ответов прямо из того же
OpenAPI-документа, из которого построен справочник API.
Честно о распространении: пакет пока не опубликован в npm. Он
находится в packages/forestvpn/console-api репозитория ForestVPN как пакет
pnpm-воркспейса — вы используете его изнутри локальной копии.
Что понадобится
- Node.js 20+ и pnpm
- Локальная копия репозитория ForestVPN с выполненным
pnpm installв его корне - API-ключ проекта (
fvpn_v1_…) — см. API-ключи
1. Добавьте зависимость из воркспейса
Внутри воркспейса локальной копии подключите пакет через протокол workspace:
{
"dependencies": {
"@forestvpn/console-api": "workspace:*"
}
}2. Соберите dist клиента
Приложения используют собранный dist/ пакета, поэтому соберите его один раз
(и после каждой регенерации спецификации) локальным для пакета компилятором
TypeScript:
pnpm -C packages/forestvpn/console-api build3. Первый вызов: получите список API-ключей
import { Configuration, PlatformApiKeysApi } from "@forestvpn/console-api";
// Authenticate with a project API key (fvpn_v1_…) minted in the console.
// The key is project-bound: it only authenticates inside its own project.
export async function listApiKeys(apiKey: string, projectId: string) {
const api = new PlatformApiKeysApi(
new Configuration({
basePath: "https://api.fvpn.net",
accessToken: apiKey,
}),
);
const { data: keys } = await api.listPlatformApiKeys(projectId);
for (const key of keys) {
console.log(
`${key.name} (${key.key_prefix}) last used: ${key.last_used_at ?? "never"}`,
);
}
return keys;
}Два момента, на которые стоит обратить внимание:
- Аутентификация — это только ключ.
accessTokenотправляетAuthorization: Bearer fvpn_v1_…; без cookie, без сессии. - Идентификатор проекта задаётся явно. Каждая операция
/platform/v1принимает UUID проекта первым аргументом (он отправляется в заголовкеX-Project-Id). Сам ключ привязан к проекту, поэтому оба значения должны совпадать — несоответствие даёт401.
4. Запуск
Вызовите её с вашим ключом и идентификатором проекта — например, из
небольшого входного файла, запускаемого через tsx или скомпилированного с
помощью tsc:
import { listApiKeys } from "./first-call";
await listApiKeys(process.env.FVPN_API_KEY!, process.env.FVPN_PROJECT_ID!);Ожидаемый вывод: по строке на каждый ключ — имя, отображаемый префикс и время, когда ключ в последний раз аутентифицировал запрос.
Чем проверяется
scripts/quickstart-verify/ts-client.sh — собирает dist пакета и проверяет
типами сниппет с этой страницы против настоящего пакета при каждом прогоне
CI.
Быстрый старт для C ABI и Dart
Используйте чистый C-интерфейс клиента ForestVPN — один заголовок, одна разделяемая библиотека — из C или сгенерируйте Dart-привязки для Flutter.
Быстрый старт для Rust
Обращайтесь к инфраструктурному API /platform/v1 с помощью генерируемого Rust-крейта forestvpn-console-api-client.