API אחד מנפיק קפסולה מבודדת ועיוורת-תוכן לכל לקוח: מסמכים, חברים, הרשאות AI, ביקורת, שלילה, ומציג להטמעה. התחברו מהשרת שלכם בכמה קריאות. שמרו על המוצר שלכם, החליפו את שכבת הגישה.
כל קריאה היא בקשת Bearer מהשרת שלכם (לעולם לא מהדפדפן). קבלו מפתח בכתובת /capsule-api/register, מפתח סנדבוקס תקין ndp_test_… מונפק מיידית, אמתו את הדוא"ל שלכם כדי לשדרג אותו לסביבת ייצור.
// Node · Bun · Deno · Cloudflare Workers — zero dependencies
npm install @nodatachat/sdkמעדיפים HTTP גולמי? כל מתודת SDK ממופה אחת-לאחת לנקודת קצה REST (ראו את המדריך למטה), ה-SDK הוא סוכר תחבירי אופציונלי.
import { NoData } from '@nodatachat/sdk';
const nd = new NoData({ apiKey: 'ndp_…' });
// 1 · Mint a capsule (a customer's isolated workspace)
const cap = await nd.capsules.create({ handle: 'case-4471', display_name: 'Yossi Levy' });
// 2 · Seal a document in — a key per recipient, per-section classification
await cap.documents.add({
title: 'Policy',
sections: [
{ label: 'Summary', classification: 'public', text: 'Public summary.' },
{ label: 'Terms', classification: 'confidential', text: 'Confidential terms.' },
],
recipients: [{ email: 'client@acme.com', classifications: ['public'], code: 'blue-harbor' }],
});
// 3 · Grant a member access across the docs
await cap.members.add({ email: 'client@acme.com', classifications: ['public'], code: 'blue-harbor' });
// 4 · Let an AI agent read ONLY what you allow (denied sections never decrypt)
const g = await cap.ai.grant({ agent_name: 'claims-bot', classifications: ['public'] });
const read = await cap.ai.read({ agent_id: g.agent_id });
// 5 · Signed audit ledger — who opened, when, on which device
const ledger = await cap.audit.get();
// 6 · Kill-switch: crypto-shred + block the key. Every live link 410s.
await cap.revoke({ reason: 'offboarded' });אותו הדבר בcurl אחד כדי להתחיל:
API=https://nodatacapsule.com
curl -X POST "$API/api/v1/capsules" \
-H "Authorization: Bearer ndp_…" \
-H "content-type: application/json" \
-d '{"handle":"case-4471"}'
# → 201 { "capsule_id":"…", "status":"active" }הענקו לסוכן בעל שם סיווגים מוגדרים; בקריאה הוא מקבל בחזרה רק אותם. קטעים שנדחו לעולם אינם מפוענחים (מניעה כברירת מחדל), מסמכי אפס-ידע מדולגים, וכל קריאה נרשמת כגישת AI ביומן הביקורת.
const g = await cap.ai.grant({ agent_name: 'claims-bot', classifications: ['public'] });
const read = await cap.ai.read({ agent_id: g.agent_id });
// read.documents[].sections → 'public' only; 'confidential' is absent
await cap.ai.revoke(g.agent_id);הנפיקו אסימון קשור-מקור עבור אחד ממסמכי הקפסולה והציגו את המציג הלבן באתר שלכם. ה-bearer הגולמי לעולם אינו עוזב את המקור של NoData.
const { embed_url } = await cap.embed({
bearer: '<document bearer from documents.add>',
allowed_origin: 'https://portal.myfirm.com',
ttl_seconds: 3600,
});
// <iframe src={embed_url} />שגיאות מחזירות גוף JSON עם קוד error והודעה מועילה message. ב429 ה-SDK ממתין ומנסה שוב אוטומטית באמצעות Retry-After.