Contracts
The Content Lake is a publishing-oriented service. Every document ingested into the Content Lake must be associated with a contract. Contracts define who holds which rights, what can be done with the content, and how royalties are structured. This model ensures that rights, distribution rules, and compensation terms are always available alongside the content itself.
Why Every Document Needs a Contract
Even internal, non-commercial content needs a contract. The contract is a primary component of the ingestion process, not an afterthought. By requiring a contract at ingest time, the platform can enforce territorial restrictions, format permissions, and usage terms from the moment content enters the system. Without a contract, the platform cannot determine whether content may be distributed, translated, or used in derivative works.
Agents
Contracts involve multiple parties (agents), each with a defined role:
| Role | Description |
|---|---|
| Author | The content creator |
| Rights Holder | Entity that owns the intellectual property rights |
| Publisher | Entity responsible for publishing and distribution |
| Distributor | Entity that distributes content through specific channels |
Each agent has an identifier, name, email, and role. A contract can have multiple agents. Additional metadata can be attached to any agent via an extensible metadata field.
Territorial Rights
Territorial rights define where content can be distributed using ISO 3166-1 alpha-2 country codes.
- Worldwide -- a
worldwideflag grants rights globally, with optional exclusions - Specific territories -- list individual territory codes
- Verdicts -- each territorial right has a status:
PERMITTED,PROHIBITED, orCONDITIONAL
Examples
Worldwide rights with no restrictions:
Worldwide rights excluding China and India:
Single territory (United Kingdom only):
Format Rights
Format rights control which output formats are permitted.
| Format | Description |
|---|---|
| Physical print distribution | |
| EBOOK | Digital ebook formats |
| AUDIO | Audiobook formats |
| VIDEO | Video content |
| INTERACTIVE | Interactive/HTML experiences |
| COURSE | Course formats (SCORM) |
| CERTIFICATION | Certification products |
Each format right has a status (PERMITTED or PROHIBITED),
optional territory restrictions, and optional constraints via
extensible metadata.
Examples
Digital-only distribution (ebook permitted, print prohibited):
{
"format_rights": [
{
"format": "EBOOK",
"status": "PERMITTED"
},
{
"format": "PRINT",
"status": "PROHIBITED"
}
]
}
Course with US territory restriction:
Usage Terms
Usage terms are modelled after ONIX-PL and define how content can be used:
| Usage Type | Description |
|---|---|
| ACCESS | How content can be accessed (stream, download) |
| COPY | Whether content can be copied |
| DISTRIBUTE | Distribution permissions |
| Print permissions | |
| DISPLAY | Display permissions |
| LEND | Lending permissions |
| TRANSLATE | Translation permissions |
| DERIVE | Derivative work permissions |
Each usage term has a status (PERMITTED, PROHIBITED, or
CONDITIONAL), and can optionally specify:
- User types --
INDIVIDUAL,INSTITUTIONAL, orCOMMERCIAL - Purpose --
EDUCATIONAL,COMMERCIAL,PERSONAL, orRESEARCH - Method --
DOWNLOAD,STREAM,EMBED,VIEW_ONLINE, orAPI_ACCESS - Condition --
ATTRIBUTION_REQUIRED,DRM_REQUIRED,APPROVAL_REQUIRED, orGEOGRAPHIC_RESTRICTION - Quantity limit -- maximum number of permitted actions
- Exception -- free-text exception description
Example
A typical ebook usage terms configuration combining multiple terms:
{
"usage_terms": [
{
"usage_type": "ACCESS",
"status": "PERMITTED",
"user_types": ["INDIVIDUAL", "INSTITUTIONAL"],
"method": "DOWNLOAD"
},
{
"usage_type": "DISTRIBUTE",
"status": "PERMITTED",
"purpose": "COMMERCIAL"
},
{
"usage_type": "COPY",
"status": "PERMITTED",
"quantity_limit": 3
},
{
"usage_type": "TRANSLATE",
"status": "PROHIBITED"
},
{
"usage_type": "DERIVE",
"status": "CONDITIONAL",
"condition": "APPROVAL_REQUIRED"
}
]
}
Royalty Structure
Contracts define how content creators are compensated. Monetary amounts use micros (1,000,000 micros = 1.00 in the specified currency) and percentages use basis points (100 bps = 1%).
| Type | Description |
|---|---|
| FREE | No royalty -- open access or promotional |
| FIXED_FEE | One-time or recurring fixed payment |
| REVENUE_SHARE | Percentage of revenue |
| TIERED_REVENUE_SHARE | Percentage that changes at revenue thresholds |
| ADVANCE_PLUS_ROYALTY | Upfront advance, then percentage after earn-out |
| CHANNEL_BASED | Different rates per distribution channel |
Payment frequency can be MONTHLY, QUARTERLY, or ANNUALLY.
Examples
Revenue share at 15%:
{
"royalty": {
"type": "REVENUE_SHARE",
"currency": "GBP",
"revenue_share_bps": 1500,
"payment_frequency": "QUARTERLY"
}
}
Advance plus royalty (5,000 GBP advance, then 10% after earn-out):
{
"royalty": {
"type": "ADVANCE_PLUS_ROYALTY",
"currency": "GBP",
"advance_amount_micros": 5000000000,
"revenue_share_bps": 1000,
"payment_frequency": "QUARTERLY"
}
}
Channel-based (20% for direct sales, 10% for third-party distributors):
{
"royalty": {
"type": "CHANNEL_BASED",
"currency": "GBP",
"channels": [
{
"channel": "DIRECT",
"revenue_share_bps": 2000
},
{
"channel": "THIRD_PARTY",
"revenue_share_bps": 1000
}
],
"payment_frequency": "QUARTERLY"
}
}
Duration
| Field | Description |
|---|---|
effective_date |
When the contract takes effect |
expiry_date |
When the contract expires |
perpetual |
If true, no expiry |
auto_renew_months |
Automatic renewal period |
notice_period_days |
Required notice for termination |
continuing_access |
Post-expiry access terms |
Continuing Access
When a contract expires, continuing access terms can grant limited access for a defined period. This is common for institutional subscriptions. Continuing access specifies:
- Whether post-cancellation access is granted
- The access period in days
- Which formats remain available during the access period
- A human-readable description of the terms
Contract State Machine
DRAFT ──────▶ ACTIVE ──────▶ EXPIRED
│ │
│ ├──▶ SUSPENDED
│ │ │
│ │ ├──▶ ACTIVE
│ │ │
│ │ └──▶ TERMINATED
│ │
│ └──▶ TERMINATED
│
└──────▶ TERMINATED
| State | Description |
|---|---|
| DRAFT | Contract is being assembled |
| ACTIVE | Contract is in force |
| SUSPENDED | Temporarily paused (e.g. dispute) |
| EXPIRED | Reached expiry date |
| TERMINATED | Ended early or after suspension |
Valid transitions:
- DRAFT may move to ACTIVE or TERMINATED
- ACTIVE may move to SUSPENDED, EXPIRED, or TERMINATED
- SUSPENDED may move back to ACTIVE or to TERMINATED
- EXPIRED and TERMINATED are final states
Versioning and Addendums
Contracts are versioned. Every change to a contract produces a new version, preserving a complete history of how terms have evolved over time.
The most common way to update a contract is via an addendum. The workflow is:
- Upload the addendum document (PDF) to the contract service
- The service parses the addendum and creates a new contract version reflecting the updated terms
- Both the original contract document and the addendum are archived by the contract service
- The new version may change grants, rights, or royalty information
- Rights summaries are recomputed for all documents associated with the contract
Each version has a version ID and a timestamp. The platform always evaluates rights against the latest version, but previous versions remain accessible for audit and compliance purposes.
Source Documents
The contract service archives the original source documents (PDFs) that back each version. A contract starts with the original agreement, and each addendum adds to the archive. This means:
- The original contract PDF is always retained
- Each addendum PDF is stored alongside the version it created
- Source documents are immutable once archived
Example
A provider's original contract prohibits AI training. They later sign an addendum granting AI training rights. Rather than modifying the original contract, the addendum creates a new version with updated usage terms. Both the original agreement and the addendum PDF are archived, and the rights summary is recomputed for all associated documents.
Rights Checking
The platform precomputes a rights summary for each document based on its contract. This summary aggregates territorial rights, format rights, and usage terms into a single view that downstream services query at runtime.
When a service needs to check whether a document can be used in a specific context (territory, format, usage type), it queries the rights summary rather than parsing the full contract. The check evaluates dimensions in order:
- Duration -- is the contract active or in continuing access?
- Territory -- is the territory permitted?
- Format -- is the format permitted (including per-format territory overrides and continuing access restrictions)?
- Usage -- is the usage type permitted for the given user type, purpose, and method?
If any dimension is denied, the overall result is denied. If any dimension is conditional, the overall result is conditional with merged conditions. Rights verdicts are:
- PERMITTED -- the action is allowed
- PROHIBITED -- the action is not allowed
- CONDITIONAL -- allowed with restrictions (check the condition)
Permission Tags
Key contractual terms are stamped as tags on documents so they can be filtered at query time.
Derived Content
| Tag | Description |
|---|---|
contract/[allow,deny]/derive-content |
Allow or deny all derived content |
contract/[allow,deny]/derive-content/translation |
Translation into any language |
contract/[allow,deny]/derive-content/translation/[language] |
Translation into a specific language |
contract/[allow,deny]/derive-content/ai/training |
AI model training |
contract/[allow,deny]/derive-content/ai/inference |
AI inference (RAG, MCP) |
Product Restrictions
| Tag | Description |
|---|---|
contract/[allow,deny]/product/[manual,automation] |
Manual or automated product inclusion |
contract/[allow,deny]/product/format |
Like-for-like format use |
contract/[allow,deny]/product/format/[type] |
Specific format (newsletter, book, audio) |
When contract/deny/product/automation is set, the content will
not be automatically included in products. Features such as
automatically creating translated versions or alternative product
formats will not be available. This should only be used when
licensing restrictions are so ambiguous that there is no way to
confidently model content usage.
Distribution Restrictions
| Tag | Description |
|---|---|
contract/[allow,deny]/distribution/channel/[channel] |
Distribution channel (e.g. amazon, oreilly) |
contract/[allow,deny]/distribution/country/[country] |
Country-specific distribution |
contract/[allow,deny]/distribution/language/[language] |
Language-specific distribution |
Contract Events
Contract lifecycle events are published to the platform event bus:
contract.v1.created-- includes contract reference and associated document identifierscontract.v1.version_created-- published when a new contract version is created (e.g. via addendum)contract.v1.state_changed-- published when a contract transitions between lifecycle states (e.g. DRAFT to ACTIVE)contract.v1.rights_changed-- published when rights-affecting fields are modified (territorial, format, royalty, usage, or document associations)
Events are published per document, so a contract covering three documents will produce three events for each lifecycle change. Tags added or removed as a result of contract changes are reflected in the corresponding document tag events.
Worked Examples
Standard Book Deal
Author grants worldwide ebook rights at 15% revenue share, print rights UK-only, no audio. Three-year term with auto-renewal.
{
"agents": [
{
"role": "AUTHOR",
"name": "Jane Smith",
"email": "jane@example.com"
},
{
"role": "PUBLISHER",
"name": "Packt Publishing",
"email": "contracts@packt.com"
}
],
"territorial_rights": [
{
"worldwide": true,
"status": "PERMITTED"
}
],
"format_rights": [
{
"format": "EBOOK",
"status": "PERMITTED"
},
{
"format": "PRINT",
"status": "PERMITTED",
"territory_codes": ["GB"]
},
{
"format": "AUDIO",
"status": "PROHIBITED"
}
],
"usage_terms": [
{
"usage_type": "ACCESS",
"status": "PERMITTED",
"user_types": ["INDIVIDUAL", "INSTITUTIONAL"]
},
{
"usage_type": "DISTRIBUTE",
"status": "PERMITTED",
"purpose": "COMMERCIAL"
},
{
"usage_type": "TRANSLATE",
"status": "PROHIBITED"
}
],
"royalty": {
"type": "REVENUE_SHARE",
"currency": "GBP",
"revenue_share_bps": 1500,
"payment_frequency": "QUARTERLY"
},
"duration": {
"effective_date": "2025-01-01T00:00:00Z",
"expiry_date": "2028-01-01T00:00:00Z",
"auto_renew_months": 36,
"notice_period_days": 90
}
}
Open Access Title
Freely available content: perpetual, worldwide, all formats, no royalty.
{
"agents": [
{
"role": "AUTHOR",
"name": "Open Source Project",
"email": "oss@example.com"
}
],
"territorial_rights": [
{
"worldwide": true,
"status": "PERMITTED"
}
],
"format_rights": [
{
"format": "EBOOK",
"status": "PERMITTED"
},
{
"format": "PRINT",
"status": "PERMITTED"
},
{
"format": "AUDIO",
"status": "PERMITTED"
},
{
"format": "VIDEO",
"status": "PERMITTED"
},
{
"format": "INTERACTIVE",
"status": "PERMITTED"
},
{
"format": "COURSE",
"status": "PERMITTED"
},
{
"format": "CERTIFICATION",
"status": "PERMITTED"
}
],
"usage_terms": [
{
"usage_type": "ACCESS",
"status": "PERMITTED"
},
{
"usage_type": "COPY",
"status": "PERMITTED"
},
{
"usage_type": "DISTRIBUTE",
"status": "PERMITTED"
},
{
"usage_type": "TRANSLATE",
"status": "PERMITTED"
},
{
"usage_type": "DERIVE",
"status": "PERMITTED"
}
],
"royalty": {
"type": "FREE"
},
"duration": {
"perpetual": true
}
}
Expired Contract with Continuing Access
Institutional subscription expired, but one year of ebook access continues.
{
"agents": [
{
"role": "PUBLISHER",
"name": "Packt Publishing",
"email": "contracts@packt.com"
},
{
"role": "DISTRIBUTOR",
"name": "University Library Network",
"email": "licensing@uln.example.com"
}
],
"territorial_rights": [
{
"worldwide": true,
"status": "PERMITTED"
}
],
"format_rights": [
{
"format": "EBOOK",
"status": "PERMITTED"
},
{
"format": "VIDEO",
"status": "PERMITTED"
}
],
"usage_terms": [
{
"usage_type": "ACCESS",
"status": "PERMITTED",
"user_types": ["INSTITUTIONAL"],
"method": "VIEW_ONLINE"
}
],
"royalty": {
"type": "FIXED_FEE",
"currency": "GBP",
"fixed_amount_micros": 50000000000,
"payment_frequency": "ANNUALLY"
},
"duration": {
"effective_date": "2024-01-01T00:00:00Z",
"expiry_date": "2026-01-01T00:00:00Z",
"continuing_access": {
"post_cancellation_access": true,
"access_period_days": 365,
"permitted_formats": ["EBOOK"],
"description": "Ebook-only access for 12 months post-expiry"
}
}
}
During the continuing access period, only ebook access is available. Video access (which was permitted during the active contract) is denied until a new contract is established.
Default Contracts
Several default contracts are provided out of the box for common open-source and Creative Commons licenses. These pre-built contracts model the standard terms of each license as format rights, usage terms, and royalty structures. Ensure these align with your legal team's understanding of the licenses before using them.
Open-Source Software Licenses
| Contract | Identifier | Key Terms |
|---|---|---|
| MIT License | MIT |
Permissive; allows use, copy, modify, distribute with attribution |
| Apache License 2.0 | APACHE-2.0 |
Permissive; includes patent grant and attribution |
| GNU General Public License | GPL |
Copyleft; derivatives must use the same license |
| BSD 2-Clause | BSD-2-CLAUSE |
Permissive; attribution required |
| BSD 3-Clause | BSD-3-CLAUSE |
Permissive; attribution required, no endorsement |
Creative Commons Licenses
| Contract | Identifier | Commercial | Derivatives | Share-Alike |
|---|---|---|---|---|
| CC BY | CC-BY |
Yes | Yes | No |
| CC BY-SA | CC-BY-SA |
Yes | Yes | Yes |
| CC BY-NC | CC-BY-NC |
No | Yes | No |
| CC BY-NC-SA | CC-BY-NC-SA |
No | Yes | Yes |
| CC BY-ND | CC-BY-ND |
Yes | No | No |
| CC BY-NC-ND | CC-BY-NC-ND |
No | No | No |
| CC0 | CC0 |
Yes | Yes | No |
CC0 (Public Domain Dedication) waives all rights. Content ingested with a CC0 contract has no restrictions on use, distribution, or derivative works.
Attribution
All Creative Commons licenses except CC0 require
attribution. The contract service automatically sets the
ATTRIBUTION_REQUIRED condition on relevant usage terms
for these contracts.
Non-commercial licenses
Contracts using CC BY-NC, CC BY-NC-SA, or CC BY-NC-ND
restrict the COMMERCIAL purpose on usage terms. Ensure
your product use case is compatible before associating
content with these contracts.