🌾 idp-pii-simulator jurisdiction: XX plane: idp

Local/edge simulator of the farmer.online IdP + PII data plane — synthetic data only, NOT production.

Issuer: https://idp-dev.farmer.online · Keys: /.well-known/jwks.json · Health: /health

MethodPathPurpose
GET/healthliveness + jurisdiction
GET/.well-known/jwks.jsonpublic signing keys (JWKS)
POST/logindev: mint a self access token {farmer_id}
POST/oauth2/tokenmint an access token {client_id, scope, subject?}
POST/v1/consentgrant consent {farmer_id, purpose, fields[]}
POST/v1/consent/checkevaluate consent decision
POST/v1/consent/:consent_id/revokerevoke a consent
POST/v1/objectionrecord an Art.21 objection
POST/v1/subject-state/:farmer_idset erasure/restriction/freeze

Plaintext PII exists only in the browser. Encrypt with a per-field DEK, wrap via /v1/keys/wrap, tokenize, then read back via detokenize + consent-gated ECDH unwrap. See the README and client/farmer-sdk.ts.