Module

Rendering

What the output must support

Rendering states the targets, capabilities, fallbacks, and overrides. An adapter compares this list with what it can actually do. Missing a required capability is a reported gap, not a quiet substitution.

Use this module when You need to say which platforms, features, or fidelity levels the result depends on.

Keep in mind. A fallback must say what it changes. “Close enough” is not a fallback.

Raw schema:/schema/1.0/modules/rendering.schema.json · https://visualspec.dev/schema/1.0/modules/rendering.schema.json

How to read a definition.The paragraphs say what to write and why. “Exact constraints” opens the schema keywords (type, pattern, bounds) for people checking a validator. A sample at the bottom of each definition is the smallest JSON that shows the required shape. Values such as $ref inside a sample point at another definition. They are not fields you copy into a document.

capability

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include name and level.

You may omit fallback and reason. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
namerequiredtaxonomy

This is not a new shape. It reuses taxonomy from the common module. Open that definition for the fields you can write.

levelrequired"required" | "preferred" | "optional" | "unsupported"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "required"
  • "preferred"
  • "optional"
  • "unsupported"
fallbackobject

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You may omit strategy, description, assetRef, motionRef, and capability. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
strategy"omit" | "approximate" | "substitute" | "rasterize" | "flatten"

Pick one of the 5 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "omit"
  • "approximate"
  • "substitute"
  • "rasterize"
  • "flatten"
descriptionstring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
assetRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

motionRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

capabilitytaxonomy

This is not a new shape. It reuses taxonomy from the common module. Open that definition for the fields you can write.

reasonstring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

capabilityJSON
{  "name": {    "$ref": "common#taxonomy"  },  "level": "required"}

target

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include id and platform.

13 other fields are optional. Include one only when you have a real value for it.

Exact constraints
type
object
additional properties
forbidden
idrequiredid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

platformrequiredtaxonomy

This is not a new shape. It reuses taxonomy from the common module. Open that definition for the fields you can write.

widthinteger

Write a whole number.

The number must be at least 1.

Exact constraints
type
integer
minimum
1
heightinteger

Write a whole number.

The number must be at least 1.

Exact constraints
type
integer
minimum
1
pixelDensitynumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
colorSpace"srgb" | "display-p3" | "rec2020" | "linear"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "srgb"
  • "display-p3"
  • "rec2020"
  • "linear"
colorSpaceFallback"srgb" | "display-p3" | "rec2020" | "linear"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "srgb"
  • "display-p3"
  • "rec2020"
  • "linear"
frameRatenumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
aspectRationumber

Write a number. Decimals are allowed.

Exact constraints
type
number
exclusive minimum
0
quality"draft" | "preview" | "production" | "lossless"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "draft"
  • "preview"
  • "production"
  • "lossless"
formatstring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
capabilitiesarray<capability>

Write a list. Each item follows the shape described under items.

Exact constraints
type
array
itemscapability

This is not a new shape. It reuses capability from the rendering module. Open that definition for the fields you can write.

profileRefsarray<taxonomy>

Write a list. Each item follows the shape described under items.

Each item in the list must be different. Duplicates are invalid.

Exact constraints
type
array
unique items
true
itemstaxonomy

This is not a new shape. It reuses taxonomy from the common module. Open that definition for the fields you can write.

transparentboolean

Write true or false.

Exact constraints
type
boolean
extensionsextensions

This is not a new shape. It reuses extensions from the common module. Open that definition for the fields you can write.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

targetJSON
{  "id": {    "$ref": "common#id"  },  "platform": {    "$ref": "common#taxonomy"  }}

rendering

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You may omit targets, capabilities, quality, deterministic, seed, fallbackPolicy, background, and extensions. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
targetsarray<target>

Write a list. Each item follows the shape described under items.

The list needs at least 1 item.

Exact constraints
type
array
min items
1
itemstarget

This is not a new shape. It reuses target from the rendering module. Open that definition for the fields you can write.

capabilitiesarray<capability>

Write a list. Each item follows the shape described under items.

Exact constraints
type
array
itemscapability

This is not a new shape. It reuses capability from the rendering module. Open that definition for the fields you can write.

quality"draft" | "preview" | "production" | "lossless"

Pick one of the 4 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "draft"
  • "preview"
  • "production"
  • "lossless"
deterministicboolean

Write true or false.

Exact constraints
type
boolean
seedinteger

Write a whole number.

The number must be at least 0.

Exact constraints
type
integer
minimum
0
fallbackPolicy"explicit-only" | "report-and-approximate" | "error"

Pick one of the 3 listed values. Any other value is invalid. The list is closed on purpose so tools agree on the same words.

Exact constraints
Allowed values
  • "explicit-only"
  • "report-and-approximate"
  • "error"
backgroundcolor

This is not a new shape. It reuses color from the appearance module. Open that definition for the fields you can write.

extensionsextensions

This is not a new shape. It reuses extensions from the common module. Open that definition for the fields you can write.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

renderingJSON
{  "targets": [    {      "$ref": "rendering#target"    }  ],  "capabilities": [],  "quality": "draft",  "deterministic": true}

override

Write an object. Only the fields named below are allowed. Unknown fields are rejected so a typo cannot hide inside the document.

You must include platform, targetRef, and reason.

You may omit layout, appearance, accessibility, componentRef, motionRef, capabilities, and extensions. Leave a field out when you have nothing to say. Do not invent a placeholder.

Exact constraints
type
object
additional properties
forbidden
platformrequiredtaxonomy

This is not a new shape. It reuses taxonomy from the common module. Open that definition for the fields you can write.

targetRefrequiredid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

reasonrequiredstring

Write a text value.

An empty string is not allowed.

Exact constraints
type
string
min length
1
layoutlayout

This is not a new shape. It reuses layout from the layout module. Open that definition for the fields you can write.

appearanceappearance

This is not a new shape. It reuses appearance from the appearance module. Open that definition for the fields you can write.

accessibilityaccessibility

This is not a new shape. It reuses accessibility from the accessibility module. Open that definition for the fields you can write.

componentRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

motionRefid

This is not a new shape. It reuses id from the common module. Open that definition for the fields you can write.

capabilitiesarray<capability>

Write a list. Each item follows the shape described under items.

Exact constraints
type
array
itemscapability

This is not a new shape. It reuses capability from the rendering module. Open that definition for the fields you can write.

extensionsextensions

This is not a new shape. It reuses extensions from the common module. Open that definition for the fields you can write.

Smallest example

Required fields only, with placeholder values. Replace them with the real intent.

overrideJSON
{  "platform": {    "$ref": "common#taxonomy"  },  "targetRef": {    "$ref": "common#id"  },  "reason": "example"}