product-light.schema.json¶
This schema validates one product in products[] in the Lens Light dataset.
It uses the same top-level block names as the Full dataset and retains only the fields needed by the existing web display.
Generation rules from Full¶
| Item checked | Rule for Light |
|---|---|
| Products | Retains every product from Full in the same order |
| Top-level fields | Does not change id in the lenses namespace, productType, or the product-type block name |
| Objects | May omit properties that are not needed |
| Values | Does not change any retained value or its type from Full |
| Arrays | Preserves source order and element count. Only the minimum-focus-distance and maximum-reproduction-ratio arrays may be reduced; the projection keeps the selected Full entries unchanged according to the rules below |
Light does not add values of its own or calculate new ranges or representative values.
The JSON Schema validates the structures permitted in Light.
hatch run validate also checks the relationship to Full.
Light is generated
Do not edit dist/z-mount-lenses.light.json directly.
If you change the retained fields, also check compatibility with the existing web display.
Full and Light examples¶
The following example uses lens.aperture from the NIKKOR Z 24-70mm f/2.8 S II to show how Light reduces the structure while preserving the same values.
Each code block is actual data containing only lens.aperture from the corresponding product.
Source: dist/z-mount-lenses.full.json
Excerpt: lens.aperture from product ID nikkor-z-24-to-70mm-f2p8-s-ii
Light retains the maximum aperture of 2.8 and its measurement conditions unchanged, while omitting the minimum aperture, diaphragm mechanism, and control mechanism.
Top-level fields¶
All seven common fields from id through physical are required.
In addition, the product contains exactly one lens, teleconverter, or pinhole block matching productType; the other two blocks are not permitted.
| Path | Type/value | Description |
|---|---|---|
id |
ID string | Slug-format ID shared with Full in the lenses namespace. Do not parse product information from this string |
productType |
lens / teleconverter / pinhole |
Same product type as Full |
identity |
object | Manufacturer ID, brand ID, and product name |
lifecycle |
lifecycle | Same product release announcement date and official status wording as Full |
officialProductPages |
object[] | Array retaining only the URL of each official product page |
mount |
mount | Same mount structure as Full, including official adapter information |
physical |
object | Dimensions, weight, and filter attachment methods |
lens |
object | Light lens specifications present when productType: "lens" |
teleconverter |
object | Light teleconverter specifications present when productType: "teleconverter" |
pinhole |
object | Light pinhole specifications present when productType: "pinhole" |
Retained common fields¶
All three fields directly under identity are required, and every officialProductPages[] entry requires url.
All three fields directly under physical are also required. When dimensionMeasurements or weightMeasurements is an array, it must contain at least one entry.
A filter interface contains only the size field selected by type. When sheetDimensionsMm for rear-gelatin is an object, both width and height are required.
| Path | Type/value | Description |
|---|---|---|
identity.manufacturerId |
ID string | Same manufacturer ID as Full |
identity.brandId |
ID string | Same brand ID as Full |
identity.productName |
string | Same official product name as Full |
officialProductPages[].url |
HTTP(S) URL | Each official product page URL from Full. Preserves array order and element count |
physical.dimensionMeasurements |
measurement[] or null |
Dimensions and measurement conditions from Full |
physical.weightMeasurements |
measurement[] or null |
Weights and measurement conditions from Full |
physical.filterInterfaces |
interface[] or null |
Filter attachment methods and dimensions. Omits host from Full |
physical.filterInterfaces[].type |
front-thread / rear-thread / drop-in / rear-gelatin |
Filter attachment method |
physical.filterInterfaces[].diameterMm |
positive number | Front or rear thread diameter in millimeters |
physical.filterInterfaces[].filterDiameterMm |
positive number | Drop-in filter diameter in millimeters |
physical.filterInterfaces[].sheetDimensionsMm |
object or null |
Rear gelatin filter dimensions |
physical.filterInterfaces[].sheetDimensionsMm.width |
positive number | Rear gelatin filter width in millimeters |
physical.filterInterfaces[].sheetDimensionsMm.height |
positive number | Rear gelatin filter height in millimeters |
Lens¶
The lens block retains an overview of the optical system and the presence information used by the web display.
The lens block requires focalLength, aperture, coverage, focus, stabilization, and specialized.
Within aperture, fNumber is required. An object-valued fNumber and any present tNumber require maximumAperture.
Each array-valued maximumAperture, minimumFocusDistances, or reproductionMagnifications must contain at least one entry.
The focus block requires autofocus, manualFocus, minimumFocusDistances, and reproductionMagnifications. When autofocus, manualFocus, or stabilization is an object, present is required.
| Path | Type/value | Description |
|---|---|---|
lens.focalLength |
focalLength or null |
Single focal length, zoom range, or interchangeable-component configuration from Full |
lens.aperture.fNumber |
object or null |
Published maximum aperture expressed as an f-number |
lens.aperture.fNumber.maximumAperture |
f-number measurement[] or null |
Nominal maximum-aperture f-number from Full |
lens.aperture.tNumber |
object | Nominal maximum aperture expressed as a T-stop for products to which T-stops apply |
lens.aperture.tNumber.maximumAperture |
T-stop measurement[] or null |
Nominal maximum-aperture T-stop from Full |
lens.coverage |
coverage | Same largest image format as Full |
lens.focus.autofocus |
object or null |
Confirmed autofocus status |
lens.focus.autofocus.present |
boolean | Presence or absence of autofocus confirmed in Full |
lens.focus.manualFocus |
object or null |
Confirmed manual-focus status |
lens.focus.manualFocus.present |
boolean | Presence or absence of manual focus confirmed in Full |
lens.focus.minimumFocusDistances |
focus distance[] or null |
Elements with the shortest distanceM in Full. Values remain unchanged, and all ties are retained in their original order |
lens.focus.reproductionMagnifications |
reproduction ratio[] or null |
Elements with the highest reproduction ratio in Full. Values remain unchanged, and all ties are retained in their original order |
lens.stabilization |
object or null |
Confirmed in-lens stabilization status |
lens.stabilization.present |
boolean | Presence or absence of in-lens stabilization confirmed in Full |
lens.specialized.<category> |
{} |
Presence marker for any cinema, anamorphic, fisheye, macro, reflex, movements, probe, or builtInTeleconverter category present in Full |
Teleconverter¶
All five fields in teleconverter are required.
When compatibleLensIds is an array, it must contain at least one ID and cannot contain duplicates.
| Path | Type/value | Description |
|---|---|---|
teleconverter.coverage |
coverage | Same largest image format as Full |
teleconverter.magnification |
positive number | Same nominal magnification as Full |
teleconverter.apertureLossStops |
nonnegative number | Same aperture loss in stops as Full |
teleconverter.supportsAutofocus |
boolean or null |
Same autofocus support with a compatible lens as Full |
teleconverter.compatibleLensIds |
ID[] or null |
Same compatible lens IDs as Full |
Pinhole¶
All three fields in pinhole are required.
When imagingModes is an array, it must contain at least one entry.
| Path | Type/value | Description |
|---|---|---|
pinhole.coverage |
coverage | Same largest image format as Full |
pinhole.focalLength |
object or null |
Same fixed focal length or variable range as Full |
pinhole.imagingModes |
mode[] or null |
Same imaging modes, f-numbers, and aperture information as Full |
The Light pinhole specifications do not retain pinhole.anglesOfView from Full.
Related pages¶
- product-full: corresponding product structure in Full
- dataset-light: Light distribution metadata
- Lens and related optical product field reference: comparison of actual Full and Light data