# Get legal consent

Canonical page: https://docs.ovok.com/api/me/consent/get-legal-consent

`GET /v1/me/consent/legal`

Returns the signed-in practitioner's legal consent: which terms they accepted, when, and whether the acceptance is still active. Use it on app load to decide whether to ask for the terms again.

**Auth:** Bearer token for a practitioner session (the profile must be a `Practitioner`). The caller's access policy must grant `Consent:read` and `Consent:search` (a project admin who holds no access policy skips this check).
**Scope:** The caller's practitioner profile in the caller's project (from the token).

## Behaviour

- `legal` is `null` when the practitioner has never accepted the terms in this project.
- `status` is `active` or `revoked`. Publishing new terms revokes every acceptance on an older version with `revokedReason: "tos-updated"`; withdrawing revokes it with `revokedReason: "withdrawn"`. Both reasons are `null` while the consent is active.
- `revokedAt` is when the revoke happened, or for `tos-updated` when the new terms were published.
- `termsUrl` is the terms page the practitioner accepted. It is `null` unless it is an `http(s)` URL or an app-relative path.
- `termsUpdatedAt` is when the accepted terms were last updated, `null` when that is not known.
- The published terms version is the one of the root project of your project tree: a child project follows its parent's terms.
- Answers are cached for a rolling day. Any consent write by the practitioner and any publish of new terms refreshes them right away.


## Example

```bash
curl -X GET 'https://api.sandbox.ovok.com/v1/me/consent/legal' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk'
```

```json
{
  "legal": {
    "consentId": "c3499c27-2973-0a7f-807e-fb8676a92dcb",
    "status": "revoked",
    "termsUrl": "https://app.example.com/legal/terms-and-conditions",
    "termsUpdatedAt": "2026-09-01T08:00:00.000Z",
    "acceptedAt": "2026-09-02T07:30:00.000Z",
    "revokedAt": "2026-10-01T09:00:00.000Z",
    "revokedReason": "tos-updated"
  }
}
```
