Skip to content

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 worldwide flag grants rights globally, with optional exclusions
  • Specific territories -- list individual territory codes
  • Verdicts -- each territorial right has a status: PERMITTED, PROHIBITED, or CONDITIONAL

Examples

Worldwide rights with no restrictions:

{
  "worldwide": true,
  "excluded_territories": [],
  "status": "PERMITTED"
}

Worldwide rights excluding China and India:

{
  "worldwide": true,
  "excluded_territories": ["CN", "IN"],
  "status": "PERMITTED"
}

Single territory (United Kingdom only):

{
  "territory_codes": ["GB"],
  "status": "PERMITTED"
}

Format Rights

Format rights control which output formats are permitted.

Format Description
PRINT 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:

{
  "format_rights": [
    {
      "format": "COURSE",
      "status": "PERMITTED",
      "territory_codes": ["US"]
    }
  ]
}

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 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, or COMMERCIAL
  • Purpose -- EDUCATIONAL, COMMERCIAL, PERSONAL, or RESEARCH
  • Method -- DOWNLOAD, STREAM, EMBED, VIEW_ONLINE, or API_ACCESS
  • Condition -- ATTRIBUTION_REQUIRED, DRM_REQUIRED, APPROVAL_REQUIRED, or GEOGRAPHIC_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:

  1. Upload the addendum document (PDF) to the contract service
  2. The service parses the addendum and creates a new contract version reflecting the updated terms
  3. Both the original contract document and the addendum are archived by the contract service
  4. The new version may change grants, rights, or royalty information
  5. 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:

  1. Duration -- is the contract active or in continuing access?
  2. Territory -- is the territory permitted?
  3. Format -- is the format permitted (including per-format territory overrides and continuing access restrictions)?
  4. 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 identifiers
  • contract.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.