Components and Media
Understanding Components in CoCore
Components in CoCore represent the physical parts that make up a print job. Unlike JDF where components might be nested within product intents, CoCore components are directly attached to jobs and represent the actual printed pieces that will be produced.
Component Hierarchy
Job
├── Component (Physical print specifications)
│ ├── ComponentMedia (Substrate properties)
│ ├── ComponentLayout (Imposition and dimensions)
│ ├── ComponentColorInfo (Color specifications)
│ └── ComponentFileUsage (Links to File resources)
└── JobProduct (Intermediate manufacturing products)
- Printed sheets
- Folded signatures
- Gathered book blocksComponent Types
Component Kinds
graphql
enum PrintComponentKindEnum {
CONTENT # Main body/interior pages
COVER # Cover pages (front/back)
INSERT # Loose inserts or supplements
MAIN # The primary component when there's only one
JACKET # Dust jacket for hardcover books
ENVELOPE # Mailing envelope
LABEL # Labels or stickers
}Creating Components
Basic Component Creation
graphql
mutation CreateBasicComponent {
createComponent(input: {
jobId: "job-123"
kind: CONTENT
name: "Brochure Interior"
description: "8-page interior on silk stock"
}) {
result {
id
kind
name
job {
id
jobNumber
}
}
errors {
field
message
}
}
}Component with Media Specifications
graphql
mutation CreateComponentWithMedia {
createComponent(input: {
jobId: "job-456"
kind: COVER
name: "Premium Cover"
description: "4-page cover with spot UV"
# Media specifications
media: {
name: "Chorus Art Silk Cover"
externalId: "STOCK-CAS-350" # Your inventory code
# Media type and delivery
type: PAPER
kind: SHEET # or ROLL
unit: SHEET
# Dimensions
width: { value: 450, unit: MILLIMETER }
height: { value: 320, unit: MILLIMETER }
thickness: { value: 0.35, unit: MILLIMETER }
# Weight
weight: { value: 350, unit: GSM }
# Stock properties
stockType: COATED
stockBrand: "Chorus"
grade: 1 # Premium grade (1-5 scale)
# Surface properties
texture: SILK
opacity: OPAQUE
opacityLevel: 95.0 # Percentage
# Grain direction - critical for folding
grainDirection: LONG_GRAIN # or SHORT_GRAIN
# Printing constraints
imageableSide: BOTH # FRONT, BACK, or BOTH
printingTechnology: OFFSET # DIGITAL, INKJET, SCREEN, etc.
# Coating on each side
front: {
coating: SILK
glossValue: 35
brightness: 92
isoPaperSubstrate: PS1 # ISO 12647-2 substrate categories
}
back: {
coating: SILK
glossValue: 35
brightness: 92
isoPaperSubstrate: PS1
}
# Environmental properties
recycledPercentage: 30.0
# Availability status
status: AVAILABLE # or ON_ORDER, DISCONTINUED
}
}) {
result {
id
media {
name
type
weight { value, unit }
stockType
grainDirection
}
}
}
}Component with Layout Specifications
graphql
mutation CreateComponentWithLayout {
createComponent(input: {
jobId: "job-789"
kind: CONTENT
name: "Book Interior"
description: "240-page perfect bound book block"
# Layout specifications
layout: {
# Page count
pages: 240
# Printing sides
sides: TWO_SIDED_HEAD_TO_HEAD
# Options: ONE_SIDED, ONE_SIDED_BACK,
# TWO_SIDED_HEAD_TO_HEAD, TWO_SIDED_HEAD_TO_FOOT,
# TWO_SIDED_FOOT_TO_HEAD, TWO_SIDED_FOOT_TO_FOOT
# Orientation
orientation: PORTRAIT # or LANDSCAPE
# Finished (closed) dimensions after trimming
closedDimensions: {
width: { value: 6, unit: INCH }
height: { value: 9, unit: INCH }
}
# Open/spread dimensions
openDimensions: {
width: { value: 12, unit: INCH }
height: { value: 9, unit: INCH }
}
# Bleed specifications (beyond trim)
bleed: {
top: { value: 0.125, unit: INCH }
bottom: { value: 0.125, unit: INCH }
left: { value: 0.125, unit: INCH }
right: { value: 0.125, unit: INCH }
}
# Number up (imposition grid)
numberUps: {
rows: 2
columns: 2
}
# Folding schemes
preferredFoldingScheme: "F16-4" # 16-page signature, 4 folds
possibleFoldingSchemes: ["F16-4", "F8-3", "F4-2"]
# Spread type
spreadType: READER # or PRINTER
}
}) {
result {
id
layout {
pages
sides
closedDimensions {
width { value, unit }
height { value, unit }
}
numberUps {
rows
columns
}
}
}
}
}Component with Color Specifications
graphql
mutation CreateComponentWithColors {
createComponent(input: {
jobId: "job-123"
kind: COVER
name: "Premium Brochure Cover"
# Color specifications
colors: {
front: {
# Coatings applied (can be multiple)
coatings: [SPOT_UV, SOFT_TOUCH]
# Print standard
printStandard: FOGRA39 # or GRACOL, SWOP, etc.
# Colors in print order (first = closest to substrate)
colors: ["CYAN", "MAGENTA", "YELLOW", "BLACK", "PANTONE_286_C"]
}
back: {
coatings: [MATTE_VARNISH]
printStandard: FOGRA39
colors: ["BLACK"]
}
}
}) {
result {
id
colors {
front {
colors
coatings
printStandard
}
back {
colors
coatings
}
}
}
}
}Media Specifications
Media Enums
graphql
enum MediaTypeEnum {
BLANKER
CORRUGATED_BOARD
DISC
EMBOSSING_FOIL
END_BOARD
FILM
FOIL
GRAVURE_CYLINDER
IMAGE_SETTER_FILM
LAMINATING_FOIL
MAGNETIC_TAPE
MOUNTING_TAPE
OTHER
PAPER
PLATE
PROOF
RIBBON
SCREEN
SELF_ADHESIVE_PAPER
SHRINK_FOIL
SLEEVE
STEEL_BAND
STITCHING_WIRE
STRAPPING
TRANSPARENCY
VINYL
}
enum MediaStockTypeEnum {
BOND # Bond paper
BOOK # Book paper
BRISTOL # Bristol board
CARBONLESS # NCR paper
CAST_COATED # Cast coated stock
COATED # Standard coated
COVER # Cover stock
ENVELOPE # Envelope stock
GLOSS # High gloss
INDEX # Index stock
KRAFT # Kraft paper
LABEL # Label stock
LAID # Laid finish
LEDGER # Ledger paper
LINEN # Linen finish
MATTE # Matte finish
NEWSPRINT # Newspaper stock
OFFSET # Offset paper
OPAQUE # Opaque stock
PARCHMENT # Parchment
RECYCLED # Recycled paper
SILK # Silk/satin finish
SYNTHETIC # Synthetic material
TAG # Tag stock
TEXT # Text weight
TRANSLUCENT # Translucent
UNCOATED # Uncoated paper
VELLUM # Vellum finish
WOVE # Wove finish
}
enum MediaGrainDirectionEnum {
LONG_GRAIN # Grain parallel to long dimension
SHORT_GRAIN # Grain parallel to short dimension
NO_GRAIN # No grain direction (synthetic)
}
enum MediaImageableSideEnum {
FRONT # Only front side printable
BACK # Only back side printable
BOTH # Both sides printable
NEITHER # Not printable (e.g., separator sheets)
}File Management
Creating Files and Linking to Components
First, create a File resource:
graphql
mutation CreateFile {
createFile(input: {
filename: "annual_report_cover.pdf"
externalId: "FILE-2024-001"
path: "/storage/jobs/job-123/annual_report_cover.pdf"
mimeType: "application/pdf"
sizeBytes: 25165824
metadata: {
colorSpace: "CMYK"
resolution: 300
pages: 4
trimBox: "0 0 612 792"
bleedBox: "-9 -9 621 801"
}
status: READY # UPLOADING, PROCESSING, READY, ERROR
kind: ARTWORK # TEMPLATE, VARIABLE_DATA, PROOF, etc.
}) {
result {
id
filename
status
}
}
}Then link the file to a component:
graphql
mutation LinkFileToComponent {
createComponentFileUsage(input: {
componentId: "component-456"
fileId: "file-789"
# How this file is used
role: PRINT_READY # CONTENT, PROOF, IMPOSITION_PROOF, etc.
# Page selection
pageRange: "1-4" # or "1,3,5-8" for specific pages
# Processing notes
processingInstructions: "Apply spot UV to areas marked in separation"
remarks: "Customer approved version 3"
}) {
result {
id
component {
name
}
file {
filename
sizeBytes
}
role
pageRange
}
}
}Querying Components
Get Component with Full Details
graphql
query GetComponentDetails {
getComponent(id: "component-789") {
id
kind
name
description
# Parent job
job {
id
jobNumber
name
status
}
# Media specifications
media {
name
externalId
type
kind
unit
width { value, unit }
height { value, unit }
weight { value, unit }
thickness { value, unit }
stockType
stockBrand
grade
grainDirection
imageableSide
opacity
opacityLevel
texture
printingTechnology
recycledPercentage
status
front {
coating
glossValue
brightness
isoPaperSubstrate
}
back {
coating
glossValue
brightness
isoPaperSubstrate
}
}
# Layout specifications
layout {
pages
sides
orientation
closedDimensions {
width { value, unit }
height { value, unit }
}
openDimensions {
width { value, unit }
height { value, unit }
}
bleed {
top { value, unit }
bottom { value, unit }
left { value, unit }
right { value, unit }
}
numberUps {
rows
columns
}
spreadType
preferredFoldingScheme
possibleFoldingSchemes
}
# Color specifications
colors {
front {
colors
coatings
printStandard
}
back {
colors
coatings
printStandard
}
}
# File usage
componentFileUsages {
id
role
pageRange
remarks
processingInstructions
file {
id
filename
mimeType
sizeBytes
status
path
}
}
# Related operations
operations {
id
name
state
sequence
}
# Milestones
milestones {
id
name
status
completedAt
}
# Notes
notes {
id
content
createdAt
author {
name
}
}
}
}List Components with Filters
graphql
query FilterComponents {
listComponents(
filter: {
# By job
jobId: { eq: "job-123" }
# By type
kind: { in: [COVER, JACKET] }
# By name
name: { ilike: "%cover%" }
}
sort: [
{ field: CREATED_AT, order: DESC }
]
first: 20
) {
count
results {
id
kind
name
job {
jobNumber
name
}
media {
name
stockType
weight { value, unit }
}
layout {
pages
sides
}
}
endKeyset
}
}JobProducts - Manufacturing Intermediates
JobProducts represent physical items created during manufacturing that flow between operations.
Creating JobProducts
graphql
# After printing operation
mutation CreatePrintedSheets {
createJobProduct(input: {
jobId: "job-123"
componentId: "component-456" # Links to source component
name: "Printed Cover Sheets - Press Run 1"
metadata: {
quantity: 550
goodSheets: 500
wasteSheets: 50
pressId: "press-001"
operatorId: "operator-123"
timestamp: "2024-02-15T10:30:00Z"
}
}) {
result {
id
name
component {
kind
name
}
}
}
}
# After folding operation
mutation CreateFoldedSignatures {
createJobProduct(input: {
jobId: "job-123"
componentId: "component-789"
name: "16-page Folded Signatures"
metadata: {
quantity: 125
signatureScheme: "F16-4"
folderId: "folder-001"
}
}) {
result {
id
name
}
}
}Common Media Specifications
Business Card Stock
graphql
media: {
name: "16pt Coated Card Stock"
type: PAPER
kind: SHEET
weight: { value: 350, unit: GSM }
thickness: { value: 0.4, unit: MILLIMETER }
stockType: COATED
texture: SMOOTH
opacity: OPAQUE
grainDirection: LONG_GRAIN
}Book Text Paper
graphql
media: {
name: "60# Opaque Book"
type: PAPER
kind: ROLL # For web press
weight: { value: 90, unit: GSM }
stockType: UNCOATED
opacity: OPAQUE
opacityLevel: 94.0
grainDirection: LONG_GRAIN # Parallel to spine
printingTechnology: OFFSET
}Envelope Stock
graphql
media: {
name: "#10 White Wove Envelope"
type: PAPER
kind: SHEET
weight: { value: 90, unit: GSM }
stockType: WOVE
imageableSide: FRONT # Inside not printed
texture: SMOOTH
}Imposition Patterns
Standard Folding Schemes
- F4-2: 4-page, 2 folds (simple fold)
- F8-3: 8-page, 3 folds (letter fold)
- F16-4: 16-page, 4 folds (standard book signature)
- F32-5: 32-page, 5 folds (large signature)
Number-Up Configurations
graphql
# 2-up Business Cards (common for digital)
numberUps: {
rows: 2
columns: 1
}
# 8-up for efficiency
numberUps: {
rows: 4
columns: 2
}
# 16-up for large runs
numberUps: {
rows: 4
columns: 4
}Best Practices
1. Always Specify Grain Direction
Critical for folding and binding:
graphql
grainDirection: LONG_GRAIN # Parallel to fold/spine2. Include External IDs
Link to inventory and MIS systems:
graphql
externalId: "STOCK-INV-12345"3. Accurate Bleed Specifications
Different for different binding methods:
- Perfect binding: 3mm minimum
- Saddle stitch: 3-5mm standard
- Case binding: 15-20mm wrap
4. File Role Clarity
Use appropriate roles for files:
PRINT_READY: Final production filesCONTENT: Source contentPROOF: Customer approval versionsIMPOSITION_PROOF: Layout verification
5. Complete Color Information
Specify print standards and color order:
graphql
colors: {
front: {
printStandard: FOGRA39
colors: ["CYAN", "MAGENTA", "YELLOW", "BLACK", "PANTONE_286_C"]
}
}