Submit consent evidence (public)
multipart/form-data: selfie (image/jpeg|png|webp, ≤8 MB), audio (audio/webm|mp4|ogg|mpeg|wav — video/webm is accepted for webm containers, ≤20 MB), accepted = "true", optional audioDurationMs. The selfie must show exactly one face and the audio must match the frozen statement (verified synchronously); only then are both stored and the request turned given. Limits: RATE_EVIDENCE_PER_LINK (default 10 per hour) and RATE_EVIDENCE_PER_IP (default 30 per hour).
token*stringthe opaque token from the link
16 <= length <= 4096Consent given
application/json- response
success*truetruedata*curl -X POST 'http://localhost:3000/consent-requests/stringstringstri/evidence'{ "success": true, "data": { "status": "given", "givenAt": "2019-08-24T14:15:22Z", "protectionLink": "string" }}Consent request (public) GET
What the dependent sees: who is asking, what will be accessed, the statement to read. Records that the link was opened. Limits: RATE_CONSENT_READ_PER_LINK / _PER_IP (default 120 and 600 per 10 min), shared with Minha proteção.
Decline the consent request (public) POST
Closes the pending request as `declined`. The guardian is told that it happened and when (event `consent.declined`, notification `consent.declined`) — never which choice was made. A new link cannot be sent for CONSENT_RESEND_COOLDOWN_HOURS (default 24). Idempotent: declining again answers the first decline. Limits: RATE_CONSENT_WRITE_PER_LINK (default 10 per hour) and RATE_CONSENT_WRITE_PER_IP (default 30 per hour).
