Skip to main content

Legal Documents

Legal documents manage privacy policies, terms of service, cookie consent configurations, and other legal content. They follow a hierarchical structure: Documents contain Groups, which contain Items.

Endpoints

Documents

MethodPathPermissionDescription
GET/sites/{site_id}/legal?page&per_pageReadList legal documents (paginated)
GET/legal/{id}ReadGet legal document by ID
GET/sites/{site_id}/legal/by-slug/{slug}ReadGet legal document by slug (with localizations)
GET/sites/{site_id}/legal/cookie-consentReadGet cookie consent with full structure
POST/sites/{site_id}/legalAuthorCreate a legal document
PUT/legal/{id}AuthorUpdate a legal document
DELETE/legal/{id}AuthorSoft delete a legal document

Groups

MethodPathPermissionDescription
GET/legal/{document_id}/groupsReadGet groups for a legal document
POST/legal/{doc_id}/groupsReadCreate a consent group
PUT/legal/groups/{id}ReadUpdate a consent group
DELETE/legal/groups/{id}ReadDelete a consent group

Items

MethodPathPermissionDescription
GET/legal/groups/{group_id}/itemsReadGet items for a group
POST/legal/groups/{group_id}/itemsReadCreate a consent item
PUT/legal/items/{id}ReadUpdate a consent item
DELETE/legal/items/{id}ReadDelete a consent item

The cookie consent endpoint returns the full nested structure needed to render a consent banner:

curl -H "X-API-Key: oy_live_abc123..." \
https://your-domain.com/api/v1/sites/{site_id}/legal/cookie-consent

Response 200 OK

{
"id": "doc-uuid",
"cookie_name": "cookie_consent",
"document_type": "CookieConsent",
"groups": [
{
"id": "group-uuid",
"cookie_name": "necessary",
"display_order": 0,
"is_required": true,
"default_enabled": true,
"items": [
{
"id": "item-uuid",
"name": "Session Cookie",
"provider": "Forja",
"purpose": "User session management"
}
]
}
]
}

Returns a legal document with its localizations, useful for rendering imprint or privacy policy pages:

curl -H "X-API-Key: oy_live_abc123..." \
https://your-domain.com/api/v1/sites/{site_id}/legal/by-slug/privacy-policy