مواد پر جائیں

فوری آغاز

یہ رہنمائی ایک شائع شدہ ٹیمپلیٹ کو دستخط شدہ، سیل شدہ PDF تک لے جاتی ہے۔ اس میں ٹیسٹ کلید استعمال ہوتی ہے، اس لیے کسی چیز کا بل نہیں بنتا اور ہر دستاویز پر TEST کا واٹر مارک ہوتا ہے۔

  1. API کیز ڈیش بورڈ میں Settings › API keys کے تحت بنائی جاتی ہیں۔ اس رہنمائی کے لیے Test منتخب کریں: کلید bf_test_ سے شروع ہوتی ہے۔ پوری کلید صرف ایک بار دکھائی جاتی ہے؛ اسے انوائرمنٹ ویری ایبل کے طور پر محفوظ کر لیں۔

    Terminal window
    export BONA_FIDE_API_KEY=bf_test_…

    ہر درخواست اسے Authorization: Bearer … (یا x-api-key: …) کے طور پر بھیجتی ہے۔ دیکھیں توثیق۔

  2. ٹیمپلیٹس ڈیش بورڈ میں ڈیزائن کیے جاتے ہیں (PDF یا Word دستاویز اپ لوڈ کر کے فیلڈز لگائیں، یا اسے Document موڈ میں لکھیں) اور پھر شائع کیے جاتے ہیں۔ id حاصل کرنے کے لیے ان کی فہرست منگوائیں:

    Terminal window
    curl https://api.bonafidesign.com/v1/templates \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY"

    GET /v1/templates/{id}/versions/latest ورژن کے roles، fields اور اس کے variables کا JSON Schema واپس کرتا ہے۔ ڈیش بورڈ میں ٹیمپلیٹ کے صفحے پر Use in API پینل بھی ہے جس میں بالکل اسی ورژن کے لیے تیار شدہ درخواست موجود ہوتی ہے۔

  3. POST /v1/envelopes آپ کے ویری ایبلز کے ساتھ ٹیمپلیٹ رینڈر کرتا ہے، ورژن کو مقرر کر دیتا ہے اور روٹنگ شروع کرتا ہے۔ ہر کردار کے لیے ایک وصول کنندہ دیں (CC کردار اختیاری ہیں)۔ Idempotency-Key بھیجیں تاکہ دوبارہ کوشش سے لفافہ دو بار نہ جائے۔

    Terminal window
    curl https://api.bonafidesign.com/v1/envelopes \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: onboarding-8841" \
    -d '{
    "template": "tpl_…",
    "version": "latest",
    "variables": {
    "client": { "name": "Acme Robotics, Inc." },
    "effective_date": "2026-10-13"
    },
    "recipients": [
    { "role": "client", "name": "Jane Doe", "email": "jane@acme.dev" }
    ],
    "delivery": "embedded",
    "externalId": "user_8841",
    "dedupeOn": "external_id"
    }'

    جواب لفافے کے ساتھ 201 Created ہوتا ہے:

    {
    "id": "env_8Gm2kQ4rT1",
    "organization": "org_…",
    "template": "tpl_…",
    "templateVersion": 3,
    "status": "sent",
    "seal": "not_started",
    "testMode": true,
    "recipients": [
    {
    "id": "rcp_5Jw0pLs9Xe",
    "role": "client",
    "name": "Jane Doe",
    "email": "jane@acme.dev",
    "order": 1,
    "status": "sent",
    "verification": "email_otp",
    "completedAt": null
    }
    ],
    "documentHash": "9f2c…",
    "sealedDocumentHash": null,
    "externalId": "user_8841",
    "metadata": {},
    "createdAt": "2026-10-13T13:58:04.512Z",
    "completedAt": null
    }

    delivery طے کرتا ہے کہ وصول کنندگان تک کیسے پہنچا جائے: email (ڈیفالٹ) ہر وصول کنندہ کو اس کی باری آنے پر دستخط کا لنک ای میل کرتا ہے؛ embedded اور none کوئی ای میل نہیں بھیجتے، اور دستخط کے سیشنز آپ خود کھولتے ہیں (اگلا مرحلہ)۔

  4. اپنے بیک اینڈ سے وصول کنندہ کے لیے دستخط کا سیشن بنائیں۔ سیشنز مختصر مدت کے ہوتے ہیں (ttlSeconds، 60 سے 3600، ڈیفالٹ 600) اور صرف ایک بار استعمال ہوتے ہیں۔

    Terminal window
    curl https://api.bonafidesign.com/v1/envelopes/env_8Gm2kQ4rT1/sessions \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "recipient": "rcp_5Jw0pLs9Xe",
    "mode": "embedded",
    "allowedOrigins": ["https://app.example.com"]
    }'

    واپس ملنے والا token (bfs_…) اپنے صفحے کو دیں اور ویب کمپوننٹ رینڈر کریں:

    <script type="module" src="https://js.bonafidesign.com/v1"></script>
    <bf-signing session="bfs_…"></bf-signing>
    <script>
    document.querySelector('bf-signing')
    .addEventListener('completed', (e) => console.log('signed', e.detail.envelope));
    </script>

    React اور Vue ریپرز، ایونٹس اور سیکیورٹی ماڈل: ایمبیڈڈ دستخط۔

    ڈیفالٹ email_otp تصدیق کے ساتھ دستخط کنندہ جمع کرانے سے پہلے اپنی ای میل پر بھیجے گئے چھ ہندسوں کے کوڈ کی تصدیق کرتا ہے۔ ٹیسٹ موڈ میں ای میل صرف آپ کی تنظیم کے اراکین کو پہنچائی جاتی ہے، اس لیے ٹیسٹنگ کے دوران اپنا ایڈریس استعمال کریں۔

  5. Settings › Webhooks میں (یا POST /v1/webhook-endpoints کے ذریعے) ایک webhook اینڈ پوائنٹ رجسٹر کریں اور whsec_… سیکرٹ محفوظ رکھیں۔ جب آخری وصول کنندہ دستخط کرتا ہے تو آپ کو envelope.completed موصول ہوتا ہے، جس میں ہر ویری ایبل اور ٹائپ کی گئی ویلیو data.values میں ہوتی ہے۔ سیل شدہ PDF envelope.sealed کے ساتھ آتی ہے۔

    import express from 'express';
    import { Webhook } from 'standardwebhooks';
    const wh = new Webhook(process.env.BONA_FIDE_WEBHOOK_SECRET!);
    const app = express();
    app.post('/hooks/bona-fide', express.raw({ type: 'application/json' }), async (req, res) => {
    const event = wh.verify(req.body, req.headers as Record<string, string>) as { type: string; data: any };
    if (event.type === 'envelope.completed') await saveValues(event.data.envelope.id, event.data.values);
    if (event.type === 'envelope.sealed') await fetchSealedPdf(event.data.envelope.id);
    res.sendStatus(204);
    });

    سیل شدہ PDF ڈاؤن لوڈ کریں (دستاویز، اس کے تکمیل کے سرٹیفکیٹ کے ساتھ، ٹائم اسٹیمپ شدہ):

    Terminal window
    curl -o signed.pdf "https://api.bonafidesign.com/v1/envelopes/env_8Gm2kQ4rT1/document?version=sealed" \
    -H "Authorization: Bearer $BONA_FIDE_API_KEY"

    ایونٹس کی مکمل فہرست، ری ٹرائز اور دستی تصدیق: Webhooks۔

ٹیسٹ کلید کو bf_live_ کلید سے بدل دیں۔ لائیو لفافوں پر واٹر مارک نہیں ہوتا، ای میل کسی بھی وصول کنندہ کو جاتی ہے، اور مکمل لفافے آپ کے پلان میں شمار ہوتے ہیں (پلانز اور حدود)۔ کلید جو کچھ بناتی ہے وہ اسی کا موڈ اختیار کرتا ہے، اس کی فہرستیں صرف وہی موڈ دکھاتی ہیں، اور ٹیسٹ لفافے صرف ٹیسٹ موڈ کے webhook اینڈ پوائنٹس کو مطلع کرتے ہیں، اس لیے ایک لائیو اینڈ پوائنٹ بھی رجسٹر کریں۔