Skip to content

KV Proxy API

Прямой низкоуровневый доступ к Cloudflare KV для администратора. Позволяет просматривать, редактировать и удалять ключи во всех namespaces.

Архитектура

KV API - это низкоуровневый прокси для работы с KV, используемый в админ-панели для просмотра всех ключей и манипуляции ими без группировки по интеграциям.

Admin UI (KV Management Page)
   |
   v
/api/core/kv (GET, PATCH, DELETE)
   |
   v
KVService (низкоуровневый доступ)
   |
   v
Cloudflare KV (все namespaces)

Доступные Namespaces

  • CACHE - KV namespace для кэширования и флагов

API Эндпоинты

GET /api/core/kv/namespaces

Получить список всех доступных KV namespaces.

Request:

http
GET /api/core/kv/namespaces
Authorization: Bearer <token>

Response (200 OK):

json
{
	"namespaces": [
		{
			"name": "CACHE",
			"id": "kv-id-123"
		}
	]
}

GET /api/core/kv/:namespace/keys

Получить список всех ключей в namespace с пагинацией.

Parameters:

  • :namespace - Название namespace (CACHE)

Query Parameters:

  • prefix (optional) - Фильтр по префиксу (например sofa:)
  • limit (optional) - Количество ключей (по умолчанию 100)
  • cursor (optional) - Cursor для пагинации

Request:

http
GET /api/core/kv/CACHE/keys?prefix=sofa:&limit=50
Authorization: Bearer <token>

Response (200 OK):

json
{
	"keys": [
		{ "name": "sofa:ratelimit:client123", "metadata": {} },
		{ "name": "sofa:cache:contact:456", "metadata": {} }
	],
	"list_complete": true,
	"cursor": "next-cursor"
}

GET /api/core/kv/:namespace/keys/:key

Получить значение ключа.

Parameters:

  • :namespace - Название namespace
  • :key - Base64-encoded ключ

Request:

http
GET /api/core/kv/CACHE/keys/c29mYTpyYXRlbGltaXQ6Y2xpZW50MTIz
Authorization: Bearer <token>

Response (200 OK):

json
{
	"value": { "count": 42 }
}

PATCH /api/core/kv/:namespace/keys/:key

Установить значение ключа.

Parameters:

  • :namespace - Название namespace
  • :key - Base64-encoded ключ

Request:

http
PATCH /api/core/kv/CACHE/keys/c29mYTpyYXRlbGltaXQ6Y2xpZW50MTIz
Authorization: Bearer <token>
Content-Type: application/json

{
  "value": "{\"count\": 42}",
  "ttl": 300
}

Response (200 OK):

json
{
	"success": true
}

DELETE /api/core/kv/:namespace/keys/:key

Удалить один ключ.

Parameters:

  • :namespace - Название namespace
  • :key - Base64-encoded ключ

Request:

http
DELETE /api/core/kv/CACHE/keys/c29mYTpyYXRlbGltaXQ6Y2xpZW50MTIz
Authorization: Bearer <token>

Response (200 OK):

json
{
	"success": true
}

DELETE /api/core/kv/:namespace/keys

Удалить все ключи с определённым префиксом.

Parameters:

  • :namespace - Название namespace

Query Parameters:

  • prefix (required) - Префикс для удаления (например sofa:)

Request:

http
DELETE /api/core/kv/CACHE/keys?prefix=sofa:
Authorization: Bearer <token>

Response (200 OK):

json
{
	"success": true
}

Пример использования

typescript
import axios from "axios";

const api = axios.create({
	baseURL: "http://localhost:3000/api",
	headers: {
		Authorization: `Bearer ${token}`
	}
});

async function manageKV() {
	// 1. Получить список namespaces
	const { data: namespaces } = await api.get("/core/kv/namespaces");
	console.log("Namespaces:", namespaces);

	// 2. Получить все ключи
	const { data: allKeys } = await api.get("/core/kv/CACHE/keys");
	console.log("All keys:", allKeys);

	// 3. Получить ключи с префиксом
	const { data: sofaKeys } = await api.get("/core/kv/CACHE/keys?prefix=sofa:");
	console.log("Sofa keys:", sofaKeys);

	// 4. Получить значение ключа
	const key = Buffer.from("sofa:ratelimit:client123").toString("base64");
	const { data: value } = await api.get(`/kv/CACHE/keys/${key}`);
	console.log("Value:", value);

	// 5. Установить значение
	await api.patch(`/core/kv/CACHE/keys/${key}`, {
		value: '{"count": 42}',
		ttl: 300
	});
	console.log("Set");

	// 6. Удалить один ключ
	await api.delete(`/core/kv/CACHE/keys/${key}`);
	console.log("Deleted single key");

	// 7. Удалить все ключи с префиксом
	await api.delete("/core/kv/CACHE/keys?prefix=sofa:");
	console.log("Deleted all sofa keys");
}

Дополнительно

  • Cache API - Управление KV (высокоуровневый с группировкой)
  • D1 Proxy API - Прямой доступ к D1
  • Secrets API - Управление секретами