বিষয়বস্তুতে যান

কুইকস্টার্ট

এই ধাপে ধাপে নির্দেশিকা একটি প্রকাশিত টেমপ্লেট থেকে শুরু করে একটি স্বাক্ষরিত, সিল করা PDF পর্যন্ত নিয়ে যায়। এতে একটি টেস্ট কী ব্যবহার করা হয়, তাই কোনো কিছুর বিল হয় না এবং প্রতিটি নথিতে TEST ওয়াটারমার্ক থাকে।

  1. API কী ড্যাশবোর্ডে, সেটিংস › API কী-তে তৈরি করা হয়। এই নির্দেশিকার জন্য 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 ফেরত দেয়। ড্যাশবোর্ডে টেমপ্লেটের পৃষ্ঠায় একটি 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. সেটিংস › ওয়েবহুক-এ (অথবা POST /v1/webhook-endpoints দিয়ে) একটি ওয়েবহুক এন্ডপয়েন্ট নিবন্ধন করুন এবং 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"

    ইভেন্টের পুরো তালিকা, রিট্রাই এবং ম্যানুয়াল যাচাই: ওয়েবহুক।

টেস্ট কী-এর বদলে একটি bf_live_ কী ব্যবহার করুন। লাইভ খামে ওয়াটারমার্ক থাকে না, ইমেইল যেকোনো প্রাপকের কাছে যায়, এবং সম্পন্ন খাম আপনার প্ল্যানের হিসাবে গোনা হয় (প্ল্যান ও সীমা)। একটি কী যা কিছু তৈরি করে, সেগুলো ওই কী-এর মোডেই থাকে, এর তালিকায় শুধু সেই মোডই দেখা যায়, আর টেস্ট খাম শুধু টেস্ট মোডের ওয়েবহুক এন্ডপয়েন্টকে জানায়, তাই একটি লাইভ এন্ডপয়েন্টও নিবন্ধন করুন।