Документація DCP Protocol
Інтегруйте Zero-Knowledge шифрування у свій продукт через простий REST API або SDK. Ви працюєте з високорівневим інтерфейсом — encrypt / decrypt — а вся криптографія лишається всередині DCP.
Огляд
DCP Protocol надає шифрування як сервіс. Ваш застосунок надсилає дані, отримує envelope (зашифрований контейнер) і зберігає його. Щоб отримати дані назад — передаєте envelope у decrypt.
- Zero-Knowledge за замовчуванням — DCP оперує зашифрованими даними; відкритий текст не зберігається.
- AES-256-GCM — індустрійний стандарт шифрування з контролем цілісності.
- Ізоляція за клієнтом — envelope, створений під вашим ключем, може розшифрувати лише ваш ключ.
- Простий інтерфейс — два виклики:
encryptіdecrypt. Решта — деталі всередині DCP.
Швидкий старт
Три кроки до першого зашифрованого запиту.
1. Отримайте API-ключ
Ключ має формат dcp_sk_…. Отримати його можна в панелі DCP (розділ API Keys) або замовивши доступ. Зберігайте ключ на сервері — не у клієнтському коді браузера.
2. Зашифруйте дані
# Замініть dcp_sk_... на ваш ключ curl -X POST https://dcprotocol.link/api/v1/encrypt \ -H "X-API-Key: dcp_sk_ВАШ_КЛЮЧ" \ -H "Content-Type: application/json" \ -d '{"plaintext":"Привіт, DCP!"}'
У відповідь ви отримаєте payload — це і є envelope. Збережіть його.
3. Розшифруйте назад
curl -X POST https://dcprotocol.link/api/v1/decrypt \ -H "X-API-Key: dcp_sk_ВАШ_КЛЮЧ" \ -H "Content-Type: application/json" \ -d '{"bundle": <envelope з кроку 2> }'
Аутентифікація
Кожен запит до API вимагає заголовок X-API-Key з вашим ключем.
X-API-Key: dcp_sk_ВАШ_КЛЮЧ
| Формат ключа | dcp_sk_ + випадковий рядок |
| Заголовок | X-API-Key |
| Де зберігати | На сервері / у секретах. Ніколи не вбудовуйте у публічний фронтенд. |
| Ротація | Створюйте новий ключ і відкликайте старий у панелі API Keys. |
demo/demo та ендпоінт /token більше не діють. Використовуйте лише /api/v1/* з X-API-Key.API Reference
Шифрує рядок і повертає envelope.
Тіло запиту
| Поле | Тип | Опис |
|---|---|---|
plaintext | string | Обов'язкове. Текст для шифрування (до 200 000 символів). |
aad | object | Необов'язкове. Додатковий контекст (напр. {"purpose":"note"}), прив'язується до envelope. |
Приклад
const res = await fetch("https://dcprotocol.link/api/v1/encrypt", { method: "POST", headers: { "X-API-Key": process.env.DCP_API_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ plaintext: "secret data" }) }); const { payload } = await res.json(); // payload = envelope, збережіть його
Відповідь 200
{
"ok": true,
"payload": { /* envelope — непрозорий контейнер, зберігайте цілком */ }
}decrypt.Приймає envelope і повертає відкритий текст.
Тіло запиту
| Поле | Тип | Опис |
|---|---|---|
bundle | object | Обов'язкове. Envelope, отриманий з encrypt (передайте без змін). |
Приклад
const res = await fetch("https://dcprotocol.link/api/v1/decrypt", { method: "POST", headers: { "X-API-Key": process.env.DCP_API_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ bundle: savedEnvelope }) }); const { plaintext } = await res.json();
Відповідь 200
{ "ok": true, "plaintext": "secret data" }403.Коди помилок
| Код | Значення | Причина |
|---|---|---|
| 400 | Bad Request | Немає/некоректний plaintext або bundle, непідтримувана версія envelope. |
| 401 | Unauthorized | Відсутній або некоректний заголовок X-API-Key. |
| 403 | Forbidden | Спроба розшифрувати envelope чужого клієнта (tenant mismatch). |
| 429 | Too Many Requests | Перевищено ліміт запитів. Зачекайте і повторіть. |
| 502 | Upstream Error | Тимчасова проблема шифрувального сервісу. Повторіть запит. |
Тіло помилки: { "error": "опис" }.
Ліміти
- Розмір
plaintext— до 200 000 символів на запит. - Rate limit — на IP та на ключ (при перевищенні
429). Для вищих лімітів — тариф Pro/Enterprise.
SDK
Офіційний SDK інкапсулює виклики API. Доступні для Web/Node.js, а також Python, Go, Rust.
Встановлення
npm install @humanscode/dcp-sdk
Використання
import { DCP } from "@humanscode/dcp-sdk"; const dcp = new DCP({ apiUrl: "https://dcprotocol.link", apiKey: process.env.DCP_API_KEY }); // Шифрування const { payload } = await dcp.encrypt("secret data"); // ... збережіть payload у своїй БД ... // Розшифрування const { plaintext } = await dcp.decrypt(payload);
DCP_API_KEY у змінних середовища (server-side). SDK автоматично додає заголовок X-API-Key.Підтримка
Потрібен доступ, вищі ліміти або допомога з інтеграцією?