API-ключи
Выпустите привязанный к проекту API-ключ fvpn_v1_ в консоли, сделайте первый аутентифицированный вызов /platform/v1 и управляйте жизненным циклом ключа.
API-ключи — это учётные данные для взаимодействия сервер-сервер в плоскости
/platform/v1: единый секрет fvpn_v1_…, который вы отправляете как
Bearer-токен. Ключи:
- привязаны к проекту — ключ аутентифицирует только внутри проекта, в
котором был выпущен; сочетание его с любым другим
X-Project-Idдаёт401; - хранятся в виде хеша — платформа хранит SHA-256-хеш, а не сам секрет;
- показываются ровно один раз — открытый секрет появляется в ответе на выпуск (или ротацию) и больше никогда не может быть получен.
1. Выпустите ключ в консоли
В консоли откройте свой проект и перейдите в Platform →
Settings → API keys (/console/p/{project}/platform/settings/api-keys).
Создайте ключ, дайте ему узнаваемое имя (ci-deploy, billing-sync) и
скопируйте секрет из одноразового показа — как только вы его закроете,
видимым останется только отображаемый префикс (fvpn_v1_ab12…cd34).
Предпочитаете API? Та же операция — это POST /platform/v1/api-keys с
Bearer-токеном вашей сессии консоли:
curl -X POST https://api.fvpn.net/platform/v1/api-keys \
-H "Authorization: Bearer $STAFF_TOKEN" \
-H "X-Project-Id: $FVPN_PROJECT_ID" \
-H "Content-Type: application/json" \
-d '{"name":"ci-deploy"}'Ответ несёт скрытую запись о ключе плюс одноразовый секрет:
{
"key": {
"id": "8b9c1a2e-…",
"name": "ci-deploy",
"key_prefix": "fvpn_v1_ab12…cd34",
"created_at": "2026-07-08T09:00:00Z",
"last_used_at": null
},
"secret": "fvpn_v1_<96 hex characters>"
}Сохраните секрет сейчас — он показывается ровно один раз.
2. Первый аутентифицированный вызов
Используйте ключ везде, где принимается Bearer-токен /platform/v1:
curl https://api.fvpn.net/platform/v1/api-keys \
-H "Authorization: Bearer $FVPN_API_KEY" \
-H "X-Project-Id: $FVPN_PROJECT_ID"200 со скрытым списком ключей проекта подтверждает работу всего сценария
целиком. Тот же вызов в каждом SDK — это первый пример любого
быстрого старта.
3. Жизненный цикл ключа
| Операция | Эндпоинт | Примечания |
|---|---|---|
| Список | GET /platform/v1/api-keys | Только скрытые записи — key_prefix, никогда сам секрет |
| Ротация | POST /platform/v1/api-keys/{id}/rotate | Новый секрет возвращается один раз; старый секрет сразу даёт 401 |
| Отзыв | DELETE /platform/v1/api-keys/{id} | Немедленно — ключ мгновенно перестаёт аутентифицировать |
Последнее использование отслеживается. Поле last_used_at каждой записи
фиксирует, когда ключ в последний раз аутентифицировал запрос (обновляется не
чаще раза в минуту на ключ, поэтому устойчивый трафик не перегружает запись
частой записью). Следите за ним, чтобы находить устаревшие ключи, которые
стоит отозвать, — и меняйте ключи по собственному графику; ротация задумана
как рутина, а не аварийная процедура.
Справочник
Полные формы запросов и ответов — в сгенерированном
справочнике API в разделе platform-api-keys. Сценарий выпуск →
вызов → отзыв на этой странице выполняется дословно скриптом
scripts/quickstart-verify/api-key-auth.sh в репозитории.