Siirry sisältöön

Pikaopas

Tämä opas vie julkaistun mallin allekirjoitetuksi ja sinetöidyksi PDF:ksi. Se käyttää testiavainta, joten mitään ei laskuteta ja jokaiseen asiakirjaan tulee vesileima TEST.

  1. API-avaimet luodaan hallintapaneelissa kohdassa Asetukset › API-avaimet. Valitse tätä opasta varten Test: avain alkaa merkkijonolla bf_test_. Koko avain näytetään vain kerran; tallenna se ympäristömuuttujaan.

    Terminal window
    export BONA_FIDE_API_KEY=bf_test_…

    Jokainen pyyntö lähettää sen muodossa Authorization: Bearer … (tai x-api-key: …). Katso Todennus.

  2. Mallit suunnitellaan hallintapaneelissa (lataa PDF- tai Word-asiakirja ja sijoita kentät tai kirjoita malli asiakirjatilassa) ja julkaistaan sitten. Hae niiden luettelo saadaksesi tunnuksen:

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

    GET /v1/templates/{id}/versions/latest palauttaa version roles- ja fields-tiedot sekä sen variables-kentän JSON Scheman. Hallintapaneelin mallisivulla on myös Käytä API:ssa -paneeli, jossa on valmis pyyntö juuri sille versiolle.

  3. POST /v1/envelopes renderöi mallin muuttujillasi, lukitsee version ja aloittaa reitityksen. Anna yksi vastaanottaja roolia kohden (CC-roolit ovat valinnaisia). Lähetä Idempotency-Key, jotta uudelleenyritys ei voi lähettää kahdesti.

    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"
    }'

    Vastaus on 201 Created, ja siinä on kirjekuori:

    {
    "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 määrää, miten vastaanottajat tavoitetaan: email (oletus) lähettää jokaiselle vastaanottajalle allekirjoituslinkin sähköpostitse, kun on hänen vuoronsa; embedded ja none eivät lähetä sähköpostia, vaan avaat allekirjoitusistunnot itse (seuraava vaihe).

  4. Luo vastaanottajalle allekirjoitusistunto taustajärjestelmästäsi. Istunnot ovat lyhytikäisiä (ttlSeconds, 60–3600, oletus 600) ja kertakäyttöisiä.

    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"]
    }'

    Välitä palautettu token (bfs_…) sivullesi ja renderöi verkkokomponentti:

    <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- ja Vue-kääreet, tapahtumat ja tietoturvamalli: Upotettu allekirjoitus.

    Oletusarvoisella email_otp-vahvistuksella allekirjoittaja vahvistaa sähköpostiinsa lähetetyn kuusinumeroisen koodin ennen lähettämistä. Testitilassa sähköposti toimitetaan vain organisaatiosi jäsenille, joten käytä omaa osoitettasi testatessasi.

  5. Rekisteröi webhook-päätepiste kohdassa Asetukset › Webhookit (tai kutsulla POST /v1/webhook-endpoints) ja säilytä whsec_…-salaisuus. Kun viimeinen vastaanottaja allekirjoittaa, saat tapahtuman envelope.completed, jonka data.values sisältää kaikki muuttujat ja syötetyt arvot. Sinetöity PDF seuraa tapahtumalla 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);
    });

    Lataa sinetöity PDF (asiakirja valmistumistodistuksineen, aikaleimattuna):

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

    Täydellinen tapahtumaluettelo, uudelleenyritykset ja manuaalinen tarkistus: Webhookit.

Vaihda testiavain bf_live_-avaimeen. Tuotantotilan kirjekuorissa ei ole vesileimaa, sähköposti lähtee kaikille vastaanottajille ja valmiit kirjekuoret lasketaan pakettisi kiintiöön (Paketit ja rajat). Kaikki, mitä avain luo, saa sen tilan, sen luettelot näyttävät vain sen tilan, ja testikirjekuoret ilmoittavat vain testitilan webhook-päätepisteille, joten rekisteröi myös tuotantotilan päätepiste.