privacy

What this deployment holds about a person, and everything it holds about one.

With fz, into the venture manifest

fz add privacy

With cargo

cargo add cratefield-module-privacy

fz runs inside your venture repository, linked against its own harness. About fz

What it is

privacy.

The module knows no venture's schema. Every table it reads was declared by another module through Module::personal_data, so a new module is covered the day it is composed rather than the day someone remembers to update an export script. Erasure is two steps, and the subject comes from the signed token rather than from the request, so a caller cannot erase someone else.

Ports

Database · Signer

Routes

/v1/privacy

  • GET/v1/privacy/manifest

    Which tables hold personal data, and why

  • POST/v1/privacy/export

    Everything held about one subject

  • POST/v1/privacy/erase

    admin tokenBegin erasure

  • POST/v1/privacy/erase/confirm

    Complete it, subject from the signed token

Before you compose it

Published and composable by hand today, but fz build cannot yet select it: the manifest's built-in catalogue lags the curated list (harness #451). Compose it directly in your venture until that lands.

History

Changelog.

From the crate’s CHANGELOG.md in the harness, as of 0c5560b. 5 versions recorded, newest first. Every published version is on crates.io.

  1. 0.3.3

    crates.ioReleaseDiff

    Other

    • updated the following local packages: cratefield-core
  2. 0.3.2

    crates.ioReleaseDiff

    Other

    • updated the following local packages: cratefield-core
3 earlier versions 0.2.1 to 0.3.1
  1. 0.3.1

    crates.ioReleaseDiff

    Other

    • serve the CF08 provider protocol from a harness deployment, and apply the account provider last (#792)

    Added

    • (provider server) Privacy::serve_provider, so a deployment can answer the same signed protocol it calls out on: POST /v1/privacy/provider/{export,erase/plan,erase/apply} over this composition's own declarations, with the HMAC as the authorisation rather than ADMIN_TOKEN, and no routes at all where it was not opted in (#656).
    • HttpProvider::account(), marking the provider that holds the identity so it is applied last — unmarked providers in registration order, then the marked ones — in all three loops (#656).
  2. 0.3.0

    crates.ioReleaseDiff

    Changed

    • Breaking: requires cratefield-core 0.8 (was 0.7), and so a minor rather than a patch bump: a venture still on core 0.7 does not pick this release up through a caret requirement and end up with two copies of core (#712).

    Added

    • import-supabase inspect a Supabase project read-only and write the migration report (#658) (#697)
  3. 0.2.1

    crates.ioRelease

    Other

    • updated the following local packages: cratefield-core

Coverage comes from what modules declare, not from a list someone maintains.