Skip to content

Product Types

Product types define what kind of content a product represents and what capabilities are available.

Available Types

Type Legacy Content Lake Formats
Book Yes Yes PDF, ePub, InDesign
Video Course Yes No MP4
Audiobook Yes No M4B
Interactive No Yes HTML

Legacy-only types (Video Course, Audiobook) have distributable assets that cannot currently be assembled from Content Lake documents. Content Lake-only types (Interactive) exist only as assembled experiences. Book supports both models.

Version Pinning

When attaching a Content Lake document to a product, the attachment includes a version specifier:

  • version=latest — the product tracks the latest Content Lake version. When the Content Lake document is updated, the product automatically reflects the new content.
  • version=<id> — the product is pinned to a specific Content Lake version. Updates to the source document are ignored until someone explicitly re-pins.

The product-level concurrent flag controls the default:

  • concurrent=true — new attachments default to version=latest.
  • concurrent=false — new attachments require an explicit version ID.
graph LR
    subgraph "Product: Go Microservices"
        A["Ch 1 — Doc A v3 (pinned)"]
        B["Ch 2 — Doc B v7 (pinned)"]
        C["Ch 3 — Doc C latest (override)"]
    end

A single product can mix pinned and latest-tracking documents. This is useful when most chapters are stable but one chapter covers a rapidly evolving topic.

Re-pinning

Re-pinning updates a document attachment from one version to another. This emits a packt.products.content.v1.updated event so downstream consumers know the product's content has changed.

Product Lifecycle

DRAFT ──────▶ REVIEW ──────▶ APPROVED ──────▶ PUBLISHED
  │                             │                  │
  │                             │                  ▼
  │                             │              RETIRED
  │                             │
  ▼                             ▼
                WITHDRAWN
State Description
DRAFT Initial state. Metadata is being assembled
REVIEW Submitted for editorial or compliance review
APPROVED Review passed. Ready for publication
PUBLISHED Live and available to downstream consumers
RETIRED End-of-life. No longer available
WITHDRAWN Pulled from availability (from any active state)

RETIRED and WITHDRAWN are terminal states. All state transitions emit lifecycle events on the products EventBridge bus.

Product Metadata

Identifiers

Each product has a platform-generated ID (UUIDv7). Products that are distributed externally also carry ISBNs — one per format. ISBNs are assigned during the lifecycle, not at creation.

Core Fields

Field Type Required Description
title string Yes Product title
subtitle string No Product subtitle
description string Yes Plain text description
authors string[] Yes Ordered author names
publication_date date No Scheduled or actual date
edition integer No Edition number
language string Yes ISO 639-1 code
page_count integer No Generated for CL-backed

Pricing

Pricing is defined per product with a base price and optional territory overrides.

Field Type Description
base_price integer Price in micros (1,000,000 = 1.00)
base_currency string ISO 4217 currency code
territory_prices map Territory code to price object

Territory prices are independent — each territory specifies its own amount and currency. There is no automatic currency conversion.

Available Formats

For Content Lake-backed products, formats are determined by product type. For legacy products, the format is whatever was uploaded.

Format Extension CL Generation Legacy
PDF .pdf Yes Yes
ePub .epub Yes Yes
Print (InDesign) .indd Yes No
Audiobook .m4b No Yes
Video .mp4 No Yes

Roadmap

  • More book formats (ePub 2)
  • Courses (SCORM)