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
SUBSCRIPTION Subscription platform access

Each format right has a status (PERMITTED or PROHIBITED), optional territory restrictions, and optional constraints via extensible metadata.

Examples

Digital-only distribution (ebook and subscription permitted, print prohibited):

{
  "format_rights": [
    {
      "format": "EBOOK",
      "status": "PERMITTED"
    },
    {
      "format": "SUBSCRIPTION",
      "status": "PERMITTED"
    },
    {
      "format": "PRINT",
      "status": "PROHIBITED"
    }
  ]
}

Subscription-only with US territory restriction:

{
  "format_rights": [
    {
      "format": "SUBSCRIPTION",
      "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
CREATE_DERIVATIVE 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": "CREATE_DERIVATIVE",
      "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

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"
  }
}

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

Immutability

Once content has been ingested with a contract, the association cannot be changed. If contract terms change, create a new contract version and re-import the relevant content with the new terms.

For example, a provider may not have allowed their content to be used by AI systems but now does. Rather than modifying the existing contract, create a new version that reflects the updated terms and re-ingest the affected 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.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": "SUBSCRIPTION",
      "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": "CREATE_DERIVATIVE",
      "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. Ensure these align with your legal team's understanding of the licenses before using them.