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 |
| Course | Yes | Yes | SCORM |
| Certification | Yes | Yes | — |
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, Course, and Certification support 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 toversion=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
| 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 |
Yes | Yes | |
| ePub | .epub |
Yes | Yes |
| Print (InDesign) | .indd |
Yes | No |
| Print (PDF) | .pdf |
Yes | Yes |
| Audiobook | .m4b |
No | Yes |
| Video | .mp4 |
No | Yes |
| Course (SCORM) | .zip |
No | Yes |
Formats are configurable — each format carries a configuration object that controls how the output is produced. Two products using the same format can produce very different outputs depending on their configuration.
Digital Format Configuration
Digital formats (PDF, ePub) support DRM configuration:
| Option | Values | Description |
|---|---|---|
drm |
none, watermark, adobe_drm |
Digital rights management strategy |
watermark_text |
string | Custom watermark text (when drm=watermark) |
A product can offer the same format both with and without DRM — for example, a DRM-free PDF for direct sales and a DRM-protected PDF for third-party distribution.
Print Configuration
Print formats (PDF or InDesign) require detailed physical specifications. The print configuration controls how the book is manufactured.
Trim Size
The trim size is the final dimensions of the printed book after pages are cut. Common sizes:
| Name | Dimensions |
|---|---|
| Pocketbook | 108 x 175 mm (4.25 x 6.875 in) |
| Digest | 140 x 216 mm (5.5 x 8.5 in) |
| A5 | 148 x 210 mm (5.83 x 8.27 in) |
| Royal | 156 x 234 mm (6.14 x 9.21 in) |
| US Trade | 152 x 229 mm (6 x 9 in) |
| Crown Quarto | 189 x 246 mm (7.44 x 9.68 in) |
| A4 | 210 x 297 mm (8.27 x 11.69 in) |
| US Letter | 216 x 279 mm (8.5 x 11 in) |
| Square | 216 x 216 mm (8.5 x 8.5 in) |
Binding
| Option | Description |
|---|---|
PAPERBACK |
Perfect-bound softcover |
HARDCOVER |
Case-bound hardcover |
COIL_BOUND |
Coil/spiral binding |
SADDLE_STITCH |
Stapled binding (thin books) |
Paperback books require a minimum of 32 interior pages. Hardcover books require a minimum of 24 interior pages. Coil-bound and saddle-stitch books do not require spine calculations.
Interior
| Option | Values | Description |
|---|---|---|
ink |
BW_STANDARD, BW_PREMIUM, COLOR_STANDARD, COLOR_PREMIUM |
Ink type |
paper |
UNCOATED_WHITE_60, UNCOATED_CREAM_60, COATED_WHITE_80 |
Paper stock |
color_space |
RGB, CMYK, GRAYSCALE |
Document colour space |
Standard black and white on uncoated paper suits text-heavy books (novels, technical references). Premium colour on coated white paper is appropriate for photo books, visual guides, and full-bleed designs.
Bleed and Margins
| Option | Type | Description |
|---|---|---|
bleed_mm |
number | Bleed margin in mm (typically 3.175 mm / 0.125 in) |
safety_margin_mm |
number | Safety margin inside trim edge (typically 12.7 mm / 0.5 in) |
gutter_mm |
number | Additional inside margin for binding side |
full_bleed |
boolean | Whether content extends to the page edge |
Books with graphics or colour that extend to the page edge require full bleed. The bleed area is printed oversized and then trimmed to the final size. Books with distinct white margins around the body do not need bleed.
Gutter size depends on page count — thicker books need wider gutters so content near the spine remains readable.
Cover
| Option | Values | Description |
|---|---|---|
cover_finish |
MATTE, GLOSSY |
Cover lamination finish |
cover_stock |
string | Cover paper weight/type |
spine_width_mm |
number | Calculated from page count and paper stock |
barcode |
boolean | Whether to reserve space for an ISBN barcode |
Spine width is calculated from the page count and paper
stock. Paperback spine width follows the formula:
(pages / 17.48) + 1.524 mm. Hardcover spine widths are
looked up from a reference table.
Roadmap
Formats
- More book formats (ePub 2)