Enregistrer un consentement hors ligne
Toutes les personnes concernées n'ont pas de clé d'accès. Une personne âgée qui
signe un formulaire sur papier ne passera jamais par le flux d'approbation par
demande de consentement. Pour ce cas, il existe
une voie distincte : l'entreprise consigne un consentement à partir d'un
PDF signé à la main, sous la portée attest. Le résultat est un consentement
attesté par l'entreprise qui s'applique exactement comme un consentement signé
par le citoyen.
Il vous faut une clé à portée attest.
Consigner le consentement
Vous partez d'un PDF signé à la main et de la version publiée de la divulgation
sous laquelle la personne a consenti. Le SDK hache le PDF localement (SHA-256);
par défaut, seul le pdfSha256 quitte votre machine. Les octets bruts ne
partent qu'avec une mise en dépôt explicite.
const m = await agreely.manualConsents.record({
customerId: "cust_8812",
documentVersionId: "doc_v3", // the PUBLISHED disclosure version signed under
effectiveDate: "2026-01-01",
validUntil: "2031-01-01",
items: [{ category: "Phone number", purpose: "Billing" }],
evidence: {
pdfSha256: Agreely.hashPdf(bytes), // "0x"+sha256, hashed LOCALLY, required
// pdf: base64Pdf, // optional: only with an explicit upload
},
});
m.assurance; // "company_attested"
m.consentRefs; // one 0x ref per cell; m.anchored is false at record time
$m = $agreely->manualConsents()->record([
'customerId' => 'cust_8812',
'documentVersionId' => 'doc_v3',
'effectiveDate' => '2026-01-01',
'validUntil' => '2031-01-01',
'items' => [['category' => 'Phone number', 'purpose' => 'Billing']],
'evidence' => [
'pdfSha256' => Agreely::hashPdf($bytes), // "0x"+sha256, LOCAL, required
// 'pdf' => $base64Pdf, // optional opt-in upload
],
]);
$m->assurance; // "company_attested"
$m->consentRefs; // one 0x ref per cell
agreely manual-consent create \
--customer cust_8812 --document-version doc_v3 \
--effective-date 2026-01-01 --valid-until 2031-01-01 \
--item "Phone number:Billing" \
--pdf ./signed-consent.pdf --json
# the hash alone is sent; add --upload to also escrow the raw bytescurl -sS https://api.agreely.ca/v1/manual-consents \
-H "Authorization: Bearer $AGREELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "cust_8812",
"documentVersionId": "doc_v3",
"effectiveDate": "2026-01-01",
"validUntil": "2031-01-01",
"items": [{"category":"Phone number","purpose":"Billing"}],
"evidence": {"pdfSha256":"0x…"}
}'La réponse porte consentId, merkleRoot, un consentRefs (un 0x-hex par
cellule), assurance: "company_attested" et anchored: false (l'ancrage se produit
ensuite, de façon asynchrone). Agreely.hashPdf est statique et n'appelle aucun
réseau; elle produit exactement la forme attendue par evidence.pdfSha256.
Il s'applique à l'identique
Un consentement attesté par l'entreprise et un consentement signé par le citoyen
autorisent de façon identique à /v1/check. Seul le palier d'assurance
diffère : une vérification renverra
assurance: "company_attested" au lieu de "citizen_signed". Le code qui protège
une fonctionnalité n'a rien à changer.
Lier plus tard le consentement au citoyen
L'entreprise peut émettre un lien de réclamation à usage unique pour que la personne concernée, plus tard, rattache ce consentement hors ligne à son propre identifiant décentralisé.
const link = await agreely.manualConsents.createClaimLink({
customerId: "cust_8812",
reference: "order-4471", // optional
});
// { claimUrl, token, expiresAt } - single-use
À la CLI : agreely manual-consent claim-link --customer cust_8812 --reference order-4471.
La limite honnête
Un consentement attesté ne prouve pas qu'un humain a signé
Un consentement company_attested prouve que l'entreprise atteste détenir un PDF signé dont le hachage correspond à ce qui a été enregistré. Il ne prouve pas qu'un humain a bel et bien signé le document, ni qui l'a signé : il n'y a pas d'assertion par clé d'accès de la personne concernée. C'est une voie légitime pour les cas sans clé d'accès, mais son palier d'assurance est plus faible que celui d'un consentement signé par le citoyen, et c'est pourquoi le champ assurance le nomme explicitement partout.
Ensuite
- Demandes de consentement : la voie signée par le citoyen, et le contexte côté entreprise du consentement hors ligne.
- Portail citoyen : ce que voit la personne concernée lorsqu'elle réclame et confirme son consentement.
- Vérifier un reçu : un reçu
company_attestedse vérifie entièrement hors ligne.