Schema reference.

The ULC record schema, written to JSON Schema Draft 2020-12, field by field. Each block below is a table of its fields with type, required status, constraints, and description; categorical fields link to thetaxonomy enum they draw from, and value composites (provenanced numbers, dual-unit measurements, file references) are documented once underCommon types. The machine file is served at /schema/ulc.json. This page documents 459 fields.

Record root

The top-level shape of a ULC record. Most fields are structural blocks documented in their own sections below; the index block, including the two computed views (the conformance level and the Product Achievements themes) and the restricted-substances flag, is computed by the builder, never authored.

FieldType and description
ulc_versionrequiredstringpatternThe ULC specification version this record conforms to. Required on every record.
record_idrequiredstringmin length 3; patternStable identifier for this record. Convention: `<manufacturer-slug>-<catalog-slug>-<scenario-slug>` with lowercase ASCII and hyphens. By repository convention matches the filename stem, regardless of whether the file is `.ulc` (canonical records) or `.ulc.json` (authoring templates). Must be unique within a manufacturer's namespace.
record_statusrequiredRecordStatus (enum)Commercial lifecycle status of the product this record describes.
record_status_as_ofstringformat dateCalendar date on which the record_status was last verified. ISO 8601 date (YYYY-MM-DD).
indexrequiredIndexDenormalized scan surface for AI agents, search indexers, and filter UIs. Every field is a projection of authoritative values from the deeper blocks below. GENERATED, NOT HAND-AUTHORED: produced deterministically by the `ulc build-index` reference CLI (see `tools/validator/`) from the deep blocks and stamped with `x-ulc-generated: true` plus a `builder_version` so consumers can detect stale indices. Manufacturers never type these values; their PIM export or ULC CLI writes them. Drift is prevented by construction, because the builder is a pure function of the deep blocks.
product_familyrequiredProductFamilyFamily-level identity and metadata shared by every ULC record derived from the same cutsheet. Populated once by the manufacturer's PIM and replicated into each record in the family.
configurationrequiredConfigurationThe specific photometric scenario this record represents. Identifies the tested axes and tested conditions that anchor the record's measurements.
applicabilityApplicabilityDeclares the range of orderable SKU configurations this record's measurements apply to. Covers axes where multiple order-code values share the same photometric record, with derivation rules for scaled values (CCT multipliers, per-foot scaling, voltage-independence rationale).
electricalElectricalElectrical measurements and nominal values at the luminaire input.
photometryPhotometryPhotometric measurements including total luminous flux, intensity distribution summary, zonal lumens, beam and field angles, UGR, and BUG classification when applicable.
colorimetryColorimetryColor measurements including nominal and measured CCT, Duv, CRI, and TM-30 color-rendition metrics.
alpha_opic_metricsAlphaOpicMetricsAlpha-opic and melanopic metrics per CIE S 026 and IES RP-46-23. Includes per-channel alpha-opic efficacies and the melanopic daylight efficacy ratio used for circadian metric calculation.
flicker_measurementsFlickerMeasurementsTemporal light artefact (TLA) measurements per LM-90-20 and metric values per CIE TN 006 and IEEE 1789.
outdoor_classificationOutdoorClassificationOutdoor luminaire classification per TM-15 (LCS and BUG), applicable only to outdoor fixtures.
exit_signExitSignExit-sign dataset, present on records whose `product_family.primary_category` is `exit_sign` (categories a and c). Carries the legend, illumination mode and technology, geometry, directional indicators, and the mode-specific photometrics (face luminance, face illuminance, contrast ratio, tritium rated life, photoluminescent charging illuminance). Optional and additive: an identity-only sign record with an empty `exit_sign` block is schema-valid and grades incomplete. Internally illuminated signs are powered products that also author the `emergency` block; unpowered modes (externally illuminated, self-luminous, photoluminescent) carry their power story in `illumination_mode` alone.
emergencyEmergencyEmergency-power dataset, authored by every product with an electrical emergency-power story: dedicated emergency luminaires (`primary_category: emergency_luminaire`), internally illuminated exit signs, combo exit/emergency units, and normal fixtures carrying a factory emergency-power option. `emergency_role` and `power_source` are required members. Not for UL 1994 photoluminescent egress-path-marking products, which are a different product class. See `exit_sign` for the sign half of a combo unit.
operating_pointOperatingPointDeclared operating conditions at which measured values were taken (input voltage, ambient temperature, drive current).
test_conditionsTestConditionsAdditional measurement-context metadata that qualifies attested values (stabilization method, nonstandard-condition flags, temperature monitoring point).
instrumentationInstrumentationEquipment and facility metadata for the laboratory that produced the measurements (goniometer type, photometric coordinate system, spectroradiometer).
corrections_appliedCorrectionsAppliedCorrections applied during measurement or data reduction (self-absorption, stray light, spectral mismatch, f1' correction).
uncertaintyUncertaintyReported measurement uncertainty values with coverage factor.
thermal_deratingThermalDeratingThermal performance curves relating case or ambient temperature to flux, efficacy, or color per LM-82-20.
lumen_maintenance_packagearray of LumenMaintenancePackageEntryPackage-level lumen maintenance per LM-80 and TM-21 for each LED package used in the luminaire. One luminaire may reference multiple packages.
lumen_maintenance_luminaireLumenMaintenanceLuminaireLuminaire-level lumen maintenance. Supports three frameworks: TM-28 projection (direct or combined extrapolation), CIE 97 Luminaire Maintenance Factor tables, or a bare manufacturer-rated claim with no cited method.
chromaticity_shift_projectionChromaticityShiftProjectionProjected chromaticity shift over luminaire life per TM-35.
sustainability_declarationSustainabilityDeclarationStructured sustainability attestation (Declare label and similar). Preserves the ingredient list, LBC Red List tier, expiration date, and document identifier.
compatible_accessoriesarray of CompatibleAccessoryMechanical accessories (junction boxes, plaster frames, mounting rings, canopies, conduits) that are compatible with this luminaire SKU but are ordered separately under their own catalog numbers. Accessories that do not change photometry are listed here rather than getting their own ULC records.
source_filesrequiredarray of SourceFilemin 0 itemsSource files from which this record derives its data. Each file is referenced by filename, optional URL, and SHA-256 content hash. Files are not embedded. The `source_files` key is part of the record envelope, so it is present on every record, but the array may be empty (`minItems` 0) for an incomplete record still being authored, and its entries are neither required nor graded. The graded core cutsheet item is the family-level pointer `product_family.cutsheet`; `source_files[]` is the integrity-tracked provenance manifest for whatever documents a record cites.
attestationsarray of AttestationExternal program attestations (listings, certifications, test-method conformance). Each attestation carries a program identifier, value type, and optional measured_quantities array listing the ULC field paths it covers. Attestations may be absolute, option-conditional, or case-by-case verification-required.
extensionsExtensionsTop-level escape hatch for values that do not fit the core schema. `manufacturer_specific` holds vendor-specific fields; `experimental` holds values under active review for future promotion into the main schema. Consumers should treat extensions as informational only.

ProductFamily

Cutsheet-level identity and metadata shared by every ULC record in the family.

FieldType and description
family_idrequiredstringpatternStable slug grouping all records from the same cutsheet.
family_display_namestring
family_descriptionstring
manufacturerrequiredobject
manufacturer.slugrequiredstring
manufacturer.display_namerequiredstring
manufacturer.parent_manufacturer_slugstringOptional parent company slug when the manufacturer is a subsidiary (for example Vode is a subsidiary of Lumenpulse).
catalog_linestring
catalog_modelrequiredstring
cutsheetFileReference
primary_categoryPrimaryCategory (enum)
secondary_functionarray of SecondaryFunction (enum)
indoor_outdoorIndoorOutdoor (enum)
technical_regionTechnicalRegion (enum)Market-region configuration of the fixture. Captures the voltage and frequency variant of the SKU family. Many product families ship parallel North American, European, and Japanese variants sharing optics and light engines but with different drivers and certifications; this field makes the market variant explicit for consumer filter UIs.
mounting_typesarray of MountingType (enum)
environment_ratingEnvironmentRating (enum)
shapeShape (enum)
orientationOrientation (enum)
shared_mechanicalobject
shared_mechanical.housing_materialHousingMaterial (enum)
shared_mechanical.lens_materialLensMaterial (enum)
shared_mechanical.reflector_materialstringMaterial of the internal reflector or darklight cone, when the optic uses one. Free-string to accommodate manufacturer-specific descriptions such as 'polymer, aluminum vaporized, silver, specular' (a typical architectural darklight reflector). A future revision may promote this to a closed enum.
shared_mechanical.finish_color_optionsarray of string
shared_mechanical.ip_ratingstringpattern
shared_mechanical.ik_ratingstringpattern
shared_mechanical.ambient_operating_rangeobjectDeclared ambient operating temperature range for the fixture. Dual-unit per spec: Celsius authoritative, Fahrenheit is the required derived companion.
shared_mechanical.ambient_operating_range.minDualUnitTemperature
shared_mechanical.ambient_operating_range.maxDualUnitTemperature
physical_dimensionsobjectLuminaire geometric and mass characteristics. All dimensional fields use the dual-unit SI-authoritative pattern via DualUnitLength and DualUnitMass. Not every field applies to every product category; authors populate only what the cutsheet publishes. The block is flexible by design so indoor recessed, pendant, pole-top outdoor, and linear products can each use the appropriate subset of slots.
physical_dimensions.overall_diameterDualUnitLengthOutside diameter of the luminaire for round fixtures.
physical_dimensions.overall_lengthDualUnitLengthOverall length for linear or rectangular fixtures.
physical_dimensions.overall_widthDualUnitLengthOverall width for rectangular or non-round fixtures.
physical_dimensions.overall_heightDualUnitLengthOverall height for pole-top, bollard, pendant, or wall-mount fixtures. For recessed fixtures, use recess_depth instead.
physical_dimensions.luminaire_massDualUnitMassMass of the luminaire as published on the cutsheet. For Pattern D linear fixtures where mass scales with length, populate linear_mass_per_foot instead or in addition.
physical_dimensions.linear_mass_per_footDualUnitMassPerLengthPer-length mass rate for linear fixtures where total mass scales with fixture length (typical of Pattern D products). Pairs with photometry.per_length_normalized.lumens_per_foot. Uses DualUnitMassPerLength, not DualUnitMass, because the quantity is a mass rate (kg per meter, lb per foot), not an absolute mass.
physical_dimensions.lens_widthDualUnitLengthWidth of the light-emitting lens or optical opening, when distinct from the overall luminaire width.
physical_dimensions.ceiling_apertureDualUnitLengthFor recessed fixtures, the diameter (or effective diameter) of the ceiling cut-out the fixture requires.
physical_dimensions.recess_depthDualUnitLengthFor recessed fixtures, the depth above the ceiling plane that the fixture housing occupies.
physical_dimensions.accommodated_ceiling_thickness_rangeobjectFor recessed fixtures, the minimum and maximum ceiling thickness the standard mounting hardware accommodates.
physical_dimensions.accommodated_ceiling_thickness_range.minDualUnitLength
physical_dimensions.accommodated_ceiling_thickness_range.maxDualUnitLength
physical_dimensions.connection_cable_lengthDualUnitLengthLength of an attached connection cable (pre-installed pigtail or tether) if the cutsheet publishes it.
physical_dimensions.driver_dimensionsobjectOverall dimensions of a remote or integral driver housing when the cutsheet publishes them.
physical_dimensions.driver_dimensions.lengthDualUnitLength
physical_dimensions.driver_dimensions.widthDualUnitLength
physical_dimensions.driver_dimensions.heightDualUnitLength
physical_dimensions.epaDualUnitAreaEffective Projected Area for pole-mounted outdoor fixtures under AASHTO 2013 wind-loading analysis. Uses DualUnitArea so SI (m2) and Imperial (ft2) are both required, matching the ULC dual-unit policy.
shared_warrantyobject
shared_warranty.term_yearsintegermin 0
shared_warranty.scopestring
shared_warranty.conditions_referencestring
shared_attestationsarray of AttestationAttestations that apply to every SKU in the family without qualification. SKU-specific or option-conditional attestations live in the top-level `attestations[]` array instead.
introduced_atstringformat date
end_of_life_program_urlstringformat uri

Configuration

The specific photometric scenario this record represents. Fields describe what was tested, not what the record's measurements apply to (that is the applicability block's job).

FieldType and description
photometric_scenario_idrequiredstringIdentifier for the photometric scenario within the family. Typically a slug summarizing the tested axes.
catalog_numberstringThe specific manufacturer-assigned catalog number or order code this record represents. Populated by Pattern A manufacturers who publish one cutsheet per SKU. Pattern B manufacturers whose scenario covers a catalog pattern typically omit this field and rely on `applicability.applicable_catalog_pattern` plus `record_id` for identification.
scenario_labelstringHuman-readable description of the tested scenario.
tested_axesobjectAxes of the configurator that this scenario's measurement varies. Each axis names its manufacturer-label, optional ULC category mapping, and tested value.
tested_axes.distribution_codeobject
tested_axes.distribution_code.manufacturer_labelstring
tested_axes.distribution_code.distribution_typeDistributionType (enum)
tested_axes.distribution_code.outdoor_distribution_typeOutdoorDistributionType (enum)
tested_axes.light_engine_variantstring
tested_axes.output_tierobject
tested_axes.output_tier.manufacturer_labelstring
tested_axes.output_tier.tier_meaningstring
tested_axes.cri_tierCriTier (enum)
tested_axes.color_tunabilityColorTunabilityCapability (enum)
tested_conditionsobjectConditions fixed during the test that anchor this record's measurements.
tested_conditions.nominal_cct_at_testNominalCCT (enum)
tested_conditions.input_voltage_at_teststring
tested_conditions.mounting_at_testMountingType (enum)
tested_conditions.ambient_temperatureDualUnitTemperature
tested_conditions.case_temperatureDualUnitTemperature
source_ies_refstringReference to the IES file this scenario's photometry anchors to, if applicable. Matches a source_files entry.

Applicability

Declares the range of orderable SKU configurations this record's measurements apply to. This is the mechanism that lets one ULC record cover many orderable SKUs without duplication.

FieldType and description
applicable_catalog_patternstringOrder-code skeleton where `{AXIS}` placeholders mark axes covered by this record. Example: `AYAP-SR-{MOUNT}-HO-{CCT}-{CORD}-{FINISH}-{VOLT}-{OPTIONS}`.
fixed_axesobjectOrder-code axes that must match a fixed value for this record to apply.
covered_axesobjectOrder-code axes where multiple values share this record's photometry. Each entry lists the covered values and optionally a derivation rule (multiplier table, linear scaling, voltage-independence rationale).
excluded_combinationsarray of objectCombinations that are orderable elsewhere in the family but not covered by this record.
excluded_combinations[].axesrequiredobject
excluded_combinations[].reasonrequiredstring
applicable_sku_count_estimateintegermin 0Informational count of orderable SKUs this record covers. Not used for validation.

CoveredAxis

One order-code axis covered by a record's applicability block.

FieldType and description
valuesrequiredarray of stringOrder-code values for this axis that share the record's photometry.
rationalerequiredstringWhy these values share one record (for example `regulated driver renders voltage variance photometrically immaterial` or `finish is cosmetic`).
derivationDerivationRuleOptional derivation rule for values that are not photometrically identical to the baseline but derive from it by a disclosed method.
excludesarray of stringValues that are part of this axis's order-code menu but are NOT covered by this record.

DerivationRule

Manufacturer-declared rule for deriving per-axis values from a baseline measurement. Examples: CCT multiplier table (Selux), per-foot linear scaling (Vode), wattage-tier scaling, voltage step-down delta.

FieldType and description
methodrequiredstringNamed derivation method.
baseline_axis_valuestring
multiplier_tableobjectKeyed multiplier table when the method produces values by multiplying a baseline. Keys are axis values, values are multipliers relative to the baseline.
linear_rateobjectPer-unit rate for linear scaling (for example lumens per foot).
linear_rate.valuenumber
linear_rate.unitstring
referencestringCitation for where on the cutsheet the rule is published (for example `cutsheet_page_10_table`).
notestring

Electrical

Electrical quantities measured at the luminaire input.

FieldType and description
input_power_wProvenancedNumber
input_current_aProvenancedNumber
input_voltage_vProvenancedNumber
input_voltage_classstring
power_factorProvenancedNumber
thd_percentProvenancedNumber
driver_protocolDimmingProtocol (enum)
dimming_methodDimmingMethod (enum)Underlying electrical dimming method (CCR, PWM, or hybrid). Independent of `driver_protocol`, which is the signaling layer. Authors populate this when the cutsheet publishes the method; absent if the method is not declared.
dimming_range_percentobjectMinimum and maximum dim levels as percentages of full output. For example a 3%-100% dim range captures the common architectural driver range. `min` is the lowest stable output the fixture can sustain before turning off; `max` is full output. Both values are manufacturer-declared at this level; actual on-site dim behavior also depends on the dimmer or controller. Both `min` and `max` are required when this block is present so that partial ranges do not silently validate.
dimming_range_percent.minrequirednumber0 to 100
dimming_range_percent.maxrequirednumber0 to 100
dimming_curveDimmingCurve (enum)Optional dim-command-to-output mapping (logarithmic or linear). Independent of `dimming_method`; populate when the cutsheet or driver datasheet publishes it.
adaptive_lighting_modesarray of AdaptiveLightingMode (enum)Built-in adaptive control capabilities the luminaire provides (integrated photocell, motion sensing, scheduled dimming, networked control). Multiple values may apply. Populate when the driver protocol is controllable and the cutsheet declares these behaviors.
control_gear_typeControlGearType (enum)
led_module_power_wProvenancedNumberOptional LED-module-only input power (typically smaller than luminaire input due to driver losses). Useful when the cutsheet distinguishes module from luminaire.

Photometry

Luminous flux, intensity, beam geometry, efficacy, UGR, and BUG summary.

FieldType and description
total_luminous_flux_lmProvenancedNumber
led_module_luminous_flux_lmProvenancedNumberOptional LED-module-only flux (upstream of luminaire optics). Paired with led_module_power_w when the cutsheet distinguishes module from luminaire.
luminaire_efficacy_lm_per_wProvenancedNumber
maximum_intensity_cdProvenancedNumber
center_beam_intensity_cdProvenancedNumber
beam_angle_degProvenancedNumber
field_angle_degProvenancedNumber
cutoff_angle_from_horizontal_degProvenancedNumberThe angle above horizontal beyond which no direct light escapes the fixture. An architectural glare-control specification typical of downlights and indirect architectural fixtures. Distinct from the deprecated IES cutoff classification (which is an outdoor four-class scheme). A value of 40 means no direct light is emitted above 40 degrees from horizontal.
beam_familyBeamFamily (enum)
optical_radiation_bandOpticalRadiationBand (enum)
distribution_typeDistributionType (enum)
symmetry_typeSymmetryType (enum)
photometric_coordinate_systemPhotometricCoordinateSystem (enum)
luminous_opening_shapeLuminousOpeningShape (enum)
emission_faceEmissionFace (enum)
spacing_criterionProvenancedNumber
ugr_4h_8hProvenancedNumberUnified Glare Rating for the CIE 4H/8H reference room geometry. Published by manufacturers of interior architectural fixtures for European glare assessments.
ugr_4h_8h_bound_operatorComparisonOperator (enum)When present, indicates the UGR value is a declared bound rather than a specific measured value. Pairs with `ugr_4h_8h`. Use `lte` for manufacturer claims of the form 'UGR as low as X' where X is the best achievable value across the fixture's supported optics or dimming configurations. Absence means the UGR value is a specific point estimate at the tested scenario.
zonal_lumensarray of objectLuminous flux summed over zonal angle bands (for example 0-30, 0-40, 0-60, 0-90, 90-180 degrees).
zonal_lumens[].zone_labelrequiredstring
zonal_lumens[].lumensrequiredProvenancedNumber
per_length_normalizedobjectFor linear products, per-unit-length photometric values that scale with fixture length.
per_length_normalized.lumens_per_footProvenancedNumber
per_length_normalized.lumens_per_meterProvenancedNumber
per_length_normalized.watts_per_footProvenancedNumber
per_length_normalized.watts_per_meterProvenancedNumber
per_length_normalized.reference_lengthDualUnitLength
declared_by_cctarray of objectManufacturer-declared photometric values at CCTs other than the tested baseline, derived via a CCT multiplier table or similar rule. See applicability.covered_axes.CCT for the derivation context.
declared_by_cct[].cctrequiredNominalCCT (enum)
declared_by_cct[].lumensProvenancedNumber
declared_by_cct[].efficacy_lm_per_wProvenancedNumber
declared_by_lengtharray of objectManufacturer-declared photometric values at fixture lengths other than the tested baseline, derived via linear per-foot (or per-meter) scaling. See applicability.covered_axes.length for the derivation context. Used by Pattern D linear products (for example Vode Nexa linear pendants with published lm/ft and W/ft rates). Each entry declares a specific length via DualUnitLength and the length-scaled quantities at that length. Pairs with per_length_normalized, which carries the per-unit-length rates themselves.
declared_by_length[].lengthrequiredDualUnitLength
declared_by_length[].lumensProvenancedNumber
declared_by_length[].input_power_wProvenancedNumber
declared_by_length[].efficacy_lm_per_wProvenancedNumber

Colorimetry

Color metrics including CCT, Duv, CRI, and TM-30 color rendition.

FieldType and description
nominal_cct_kNominalCCT (enum)
measured_cct_kProvenancedNumber
duvProvenancedNumber
chromaticity_xProvenancedNumber
chromaticity_yProvenancedNumber
sdcm_stepProvenancedNumber
cri_raProvenancedNumber
cri_r9ProvenancedNumber
cri_per_samplearray of objectOptional per-sample CIE 13 CRI values (R1 through R15).
cri_per_sample[].sample_indexrequiredinteger1 to 15
cri_per_sample[].valuerequiredProvenancedNumber
tm_30object
tm_30.rfProvenancedNumber
tm_30.rgProvenancedNumber
tm_30.reference_illuminant_typeReferenceIlluminantType (enum)TM-30 reference illuminant regime. Derivable by definition from the test-source CCT (the reference illuminant CCT equals the test-source CCT), so it is an explicitness/interop convenience rather than an independently authored value.
tm_30.pvf_codestringpatternPreference/Vividness/Fidelity two-character code per TM-30-24: a letter (P / V / F) identifying the design-intent axis, followed by a level digit (1-3). Example values: `P2`, `V1`, `F3`. A single PVF code expresses the highest-priority design intent level achieved.
tm_30.rf_h_per_binarray of objectLocal chroma shift / hue shift / local fidelity per hue bin (16 bins).
tm_30.rf_h_per_bin[].bininteger1 to 16
tm_30.rf_h_per_bin[].rf_hProvenancedNumber

AlphaOpicMetrics

Per CIE S 026 and IES RP-46-23. Melanopic DER (MDER) is the most commonly published value on cutsheets.

FieldType and description
reference_illuminantobjectconst "d65"Reference illuminant for alpha-opic DER calculations. Per CIE S 026, always D65.
standard_observerobjectconst "cie_1931_2_degree"Colorimetric observer used. Per CIE S 026, always the CIE 1931 2-degree standard observer.
melanopic_derProvenancedNumberMelanopic Daylight Efficacy Ratio (MDER / gamma_mel,v,D65). Multiplied by photopic illuminance to compute MEDI (Melanopic Equivalent Daylight Illuminance).
per_channelarray of objectAlpha-opic efficacy of luminous radiation per photoreceptor channel.
per_channel[].channelrequiredAlphaOpicChannel (enum)
per_channel[].efficacyrequiredProvenancedNumber

FlickerMeasurements

TLA metrics per LM-90-20, CIE TN 006, and IEEE 1789. Values may be measured scalars or manufacturer-rated upper bounds.

FieldType and description
metricsarray of object
metrics[].metricrequiredFlickerMetric (enum)
metrics[].valueProvenancedNumber
metrics[].bound_operatorComparisonOperator (enum)Used when the manufacturer declares an upper bound (`<=`) rather than a specific measured value.
risk_levelFlickerRiskLevel (enum)
test_chamber_typeFlickerTestChamberType (enum)
dimming_type_at_testFlickerDimmingType (enum)
photodetector_correctionFlickerPhotodetectorSpectralCorrection (enum)
sampling_classFlickerSamplingClass (enum)
waveform_file_formatFlickerWaveformFileFormat (enum)

OutdoorClassification

TM-15 LCS and BUG classification for outdoor luminaires.

FieldType and description
bug_ratingobject
bug_rating.brequiredinteger0 to 5
bug_rating.urequiredinteger0 to 5
bug_rating.grequiredinteger0 to 5
outdoor_distribution_typeOutdoorDistributionType (enum)
longitudinal_distribution_rangeLongitudinalDistributionRange (enum)
legacy_cutoffLegacyCutoffClassification (enum)
lcs_zonal_lumensarray of objectLuminous flux per LCS zone per TM-15.
lcs_zonal_lumens[].zonerequiredstring
lcs_zonal_lumens[].lumensrequiredProvenancedNumber

ExitSign

The exit-sign product data for records whose primary_category is exit_sign (categories a and c). Every field is optional; grading, not schema, drives completeness, so an identity-only sign record with an empty exit_sign block is schema-valid. illumination_mode is the conditional driver for the sign profile (see ExitSignIlluminationMode). Legend geometry uses DualUnitLength (SI authoritative); code minimums such as the NFPA 101 / IBC 6-inch letter height live in field descriptions, not schema constraints, because ULC records what a product is and leaves conformance to the authority having jurisdiction.

FieldType and description
illumination_modeExitSignIlluminationMode (enum)How the legend is illuminated; the sign profile's conditional driver.
illumination_technologyExitSignIlluminationTechnology (enum)The self-emitting technology within the illumination mode (descriptive granularity, not gated).
legend_textstringThe legend text, for example "EXIT". Free text so non-English legends are representable.
legend_colorLegendColor (enum)Legend color; NFPA 101 and local codes govern the required color.
legend_heightDualUnitLengthLetter height. Code context: NFPA 101 / IBC set a 6-inch (about 152 mm) minimum for illuminated signs; recorded here as product data, not as a conformance assertion.
stroke_widthDualUnitLengthLegend stroke width. Code context: NFPA 101 / IBC set a minimum stroke (for example 3/4 inch, about 19 mm) for externally illuminated signs.
letter_widthDualUnitLengthLegend letter width, an externally-illuminated-sign geometry detail (IBC 1013.6.1 context).
letter_spacingDualUnitLengthSpacing between legend letters, an externally-illuminated-sign geometry detail (IBC 1013.6.1 context).
face_countExitSignFaceCount (enum)How many faces carry a legend.
directional_indicatorarray of ExitSignDirectionalIndicator (enum)Directional chevrons on the sign face (NFPA 101). Declare ["none"] explicitly when the sign carries no chevron; "none" is mutually exclusive with any real direction.
rated_viewing_distance_ftRatedViewingDistance (enum)The UL 924-marked rated viewing distance in feet (string bin, NominalCCT convention). Independent of letter height, never derived from it.
sign_face_luminance_cd_per_m2ProvenancedNumberMeasured luminance of the illuminated legend face, in cd/m2. Primary photometric datum for photoluminescent and self-luminous signs (the study's roughly 0.06 fL floor); fL is not stored (SI authoritative).
face_illuminance_lxProvenancedNumberIlluminance on the legend face for externally illuminated signs, in lux. Code context: the 5 fc figure is about 54 lx (IBC 1013.6.1 / NFPA 101).
contrast_ratioProvenancedNumberLegend-to-background contrast ratio for externally illuminated signs (NFPA 101 context: at least 0.5). Unit "ratio".
tritium_rated_life_yearsnumbermin 0Rated life of a self-luminous tritium sign, in years (catalog tier such as 10, 15, or 20; NRC 10 CFR 31.5 governs the sealed source and its disposal path). A bare number.
min_charging_illuminance_lxProvenancedNumberMinimum ambient illuminance required to charge a photoluminescent sign, in lux (UL 924 context).

Emergency

The emergency-power data for products with an electrical emergency-power story (UL 924 context). emergency_role and power_source are required members: the block is meaningless without them. Authored by dedicated emergency luminaires, internally illuminated exit signs, combo exit/emergency units, and normal fixtures with a factory emergency-power option. An externally-illuminated combo sign authors the block (its heads are battery-powered) but its face has no powered-face story, so power_source is not a core field for it and its battery depth surfaces as optional enrichment rather than a standard gate. Not for UL 1994 photoluminescent egress-path-marking products, which are a different product class.

FieldType and description
emergency_rolerequiredEmergencyRole (enum)What emergency function this block describes (required).
power_sourcerequiredEmergencyPowerSource (enum)How the product is energized during a utility power loss (required).
battery_duration_minProvenancedNumberRated emergency run time on integral battery, in minutes (the code-anchored figure is 90 minutes, a rated value).
battery_chemistryBatteryChemistry (enum)Integral battery chemistry.
self_testEmergencySelfTestCapability (enum)Self-test capability class (UL 924 defines the required test cadence).
emergency_lumen_output_lmProvenancedNumberDistinct emergency-mode luminous output, in lumens, for products whose emergency mode differs from their normal mode (combo and emergency-power-option units).
emergency_input_power_wProvenancedNumberDistinct emergency-mode input power draw, in watts.
remote_head_capacityobjectCapacity to drive remote emergency heads: how many heads and the total connected load. Optional and ungated (whether a unit supports remote heads is not derivable from other fields).
remote_head_capacity.headsintegermin 0Number of remote heads supported.
remote_head_capacity.total_load_wnumbermin 0Total connected remote-head load, in watts.
photometry_referenceFileReferenceThe emergency-mode photometric file (IES), referenced by hash. May also appear in source_files[].

OperatingPoint

Declared operating conditions at which measured values were taken.

FieldType and description
input_voltage_vProvenancedNumber
input_frequency_hzProvenancedNumber
drive_current_maProvenancedNumber
ambient_temperatureDualUnitTemperature
case_temperature_monitoring_pointTemperatureMonitoringPoint (enum)
case_temperatureDualUnitTemperature
dut_operating_modeDutOperatingMode (enum)

TestConditions

Context qualifying attested values.

FieldType and description
stabilization_methodStabilizationMethod (enum)
nonstandard_condition_flagsarray of NonstandardConditionFlag (enum)
photometry_methodPhotometryMethod (enum)
photometry_basisPhotometryBasis (enum)
negative_intensity_handlingNegativeIntensityHandling (enum)
file_generation_typeFileGenerationType (enum)

Instrumentation

Laboratory equipment and accreditation.

FieldType and description
goniometer_typeGoniometerType (enum)
measurement_regimeMeasurementRegime (enum)
laboratory_certificationLaboratoryCertification (enum)
laboratory_accreditation_schemeLaboratoryAccreditationScheme (enum)
laboratory_namestring
laboratory_report_idstring

CorrectionsApplied

Corrections performed during measurement or data reduction.

FieldType and description
self_absorption_correctedboolean
stray_light_correctedboolean
spectral_mismatch_correctedboolean
f1_prime_valueProvenancedNumber
notesstring

Uncertainty

Reported expanded uncertainty values with coverage factor per GUM conventions.

FieldType and description
coverage_factor_knumber
expanded_uncertainty_total_flux_percentProvenancedNumber
expanded_uncertainty_input_power_percentProvenancedNumber
expanded_uncertainty_cct_kProvenancedNumber
expanded_uncertainty_efficacy_percentProvenancedNumber

ThermalDerating

Flux, efficacy, and color shift vs. case or ambient temperature per LM-82-20.

FieldType and description
thermal_control_methodThermalControlMethod (enum)
curvesarray of object
curves[].temperature_axisTemperatureAxis (enum)
curves[].temperature_points_carray of numberTemperature sample points in degrees Celsius. Standards-native Celsius exception to the dual-unit rule: LM-82-20 and equivalent standards publish these arrays in Celsius only, and this field mirrors the source data verbatim. Consumers needing Fahrenheit convert at read time.
curves[].flux_values_normalizedarray of number
curves[].efficacy_values_lm_per_warray of number
curves[].cct_shift_points_karray of number

LumenMaintenancePackageEntry

Per-package LM-80 data and TM-21 projection. A luminaire using multiple LED packages has one entry per distinct package.

FieldType and description
package_identifierstring
tested_product_typeTestedProductType (enum)
flux_maintenance_quantityFluxMaintenanceQuantity (enum)
flux_maintenance_thresholdFluxMaintenanceThreshold (enum)
tm_21_projection_hoursProvenancedNumber
projection_reliabilityProjectionReliability (enum)
tm_21_interpolation_typeTM21InterpolationType (enum)
test_hoursProvenancedNumber
test_temperature_cProvenancedNumber
drive_current_maProvenancedNumber

LumenMaintenanceLuminaire

Framework-aware block. The framework field selects which sub-block applies. Multiple frameworks may coexist if the cutsheet publishes more than one.

FieldType and description
declaration_frameworkLumenMaintenanceDeclarationFramework (enum)
tm_28object
tm_28.projection_methodLumenMaintenanceProjectionMethod (enum)
tm_28.projection_basisProjectionBasis (enum)
tm_28.tm_28_projection_hoursProvenancedNumber
tm_28.projection_reliabilityProjectionReliability (enum)
tm_28.test_hoursProvenancedNumber
cie_97_lmf_tableobjectLuminaire Maintenance Factor values the manufacturer declares for their fixture across the four standardized CIE 97 ambient cleanliness categories (pure / clean / normal / dirty) at the three standardized cleaning intervals (1 / 2 / 3 years). These are NOT site-specific installation inputs: they are reference categories defined by CIE 97 so manufacturers can publish comparable LMF data. This field therefore describes a declared capability of the fixture (rubric filter 2), not project or installation context. Specifiers pick the row that matches their installation conditions when computing project-specific maintenance factors downstream.
cie_97_lmf_table.lmf_by_cleanliness_and_intervalarray of objectArray of LMF values keyed by the CIE 97 reference conditions. The manufacturer supplies one entry per (interval, cleanliness) combination they publish; typical cutsheets publish all 12.
cie_97_lmf_table.lmf_by_cleanliness_and_interval[].cleaning_interval_yearsrequiredinteger1 to 3
cie_97_lmf_table.lmf_by_cleanliness_and_interval[].ambient_cleanlinessrequiredAmbientCleanliness (enum)
cie_97_lmf_table.lmf_by_cleanliness_and_interval[].lmfrequirednumber0 to 1
cie_97_lmf_table.llmf_by_hoursarray of objectLamp Lumen Maintenance Factor by operating hours.
cie_97_lmf_table.llmf_by_hours[].hoursrequiredinteger
cie_97_lmf_table.llmf_by_hours[].llmfnumber0 to 1
cie_97_lmf_table.llmf_by_hours[].lsfnumber0 to 1
manufacturer_rated_claimobjectBare manufacturer claim like `L70 > 50,000h` or `L80 > 60,000h` with no cited method. Present when declaration_framework is `manufacturer_rated_claim`.
manufacturer_rated_claim.claim_typeFluxMaintenanceThreshold (enum)Maintenance threshold being claimed (L70, L80, L90, L95).
manufacturer_rated_claim.claimed_hoursProvenancedNumber
manufacturer_rated_claim.failure_percentProvenancedNumberClaimed cumulative failure rate at the claimed hours (for example `0.1%` failure at 50,000 hours).

ChromaticityShiftProjection

Per TM-35.

FieldType and description
shift_metricChromaticityShiftMetric (enum)
shift_thresholdChromaticityShiftThreshold (enum)
shift_modeChromaticityShiftMode (enum)
projected_hoursProvenancedNumber
tm_35_editionTM35Edition (enum)

SustainabilityDeclaration

Structured representation of a Declare label or similar sustainability attestation.

FieldType and description
declaration_typeSustainabilityDeclarationType (enum)Which sustainability program the declaration belongs to.
document_idstring
original_issue_datestringformat date
expiration_datestringformat date
final_assembly_locationstring
life_expectancy_yearsnumbermin 0
end_of_life_optionsarray of string
recyclable_percentnumber0 to 100
ingredient_listarray of object
ingredient_list[].material_namerequiredstring
ingredient_list[].lbc_red_list_statusIngredientRedListStatus (enum)
ingredient_list[].notesstring
lbc_criteria_complianceboolean
voc_contentstring
interior_performancestring
responsible_sourcingstring

CompatibleAccessory

Mechanical accessory (junction box, plaster frame, mounting ring, canopy, conduit) compatible with this luminaire but ordered separately. Accessories that alter fixture photometry are modeled as separate ULC records and referenced via their own record_id instead of this block.

FieldType and description
accessory_catalog_numberrequiredstring
display_namestring
descriptionstring
accessory_typeAccessoryType (enum)
massDualUnitMass
changes_photometrybooleandefault falseTrue when the accessory changes fixture photometry. Accessories with changes_photometry=true should also have their own ULC record linked via `accessorized_record_ref`.
accessorized_record_refstring
is_compatible_with_this_skubooleandefault trueWhether the accessory is compatible with the specific SKU configuration this record represents. Default true. Set to false when the cutsheet explicitly excludes the accessory from the record's SKU (for example when a junction box does not fit the shortest length variant of a linear fixture). Consumers filtering accessory compatibility should respect this flag before presenting the accessory as orderable alongside this SKU.
incompatibility_reasonstringFree-text explanation of why is_compatible_with_this_sku is false. Required when is_compatible_with_this_sku is false; should be omitted otherwise.

SourceFile

One source file that contributes data to this ULC record.

FieldType and description
file_typerequiredSourceFileType (enum)
referencerequiredFileReference
photometry_formatPhotometryFormat (enum)

Attestation

An attestation claim against this ULC record. An attestation may be absolute (applies always), option-conditional (applies when specific order-code options are selected), or case-by-case (requires per-project manufacturer verification). The measured_quantities array lists ULC field paths the attestation covers so consumers can verify coverage.

FieldType and description
attestation_idstringStable identifier for this attestation within the record (for example `lm79_selux_aya_sr_ho`). Used as the target of `provenance.attestation_ref` from individual values.
programrequiredAttestationProgram (enum)
statusAttestationStatus (enum)
value_typerequiredRegulatoryValueType (enum)
issued_datestringformat date
valid_untilstringformat date
listing_numberstring
test_laboratorystring
test_report_idstring
standard_revisionstring
list_datestringformat datePublication date of the substance/candidate list revision a list-versioned badge was assessed against (for example a REACH SVHC candidate list update, a California Prop 65 list revision, or a conflict-minerals 3TG reporting period). Optional; pairs with `list_version` to make a list claim precise without exposing the list text.
list_versionstringVersion or revision label of the substance/candidate list a list-versioned badge was assessed against (for example the REACH SVHC candidate list revision identifier). Optional.
measured_quantitiesarray of stringJSON paths of ULC fields this attestation covers. Each covered field's `provenance.attestation_ref` is expected to reference this attestation's `attestation_id`.
applicabilityobjectOrder-code conditions under which this attestation applies (for option-conditional attestations like Chicago Plenum requiring the CPP option).
applicability.required_order_code_optionsarray of string
applicability.required_constraintsobject
verificationobjectFor case-by-case attestations (BAA, BABA, and similar), declares that manufacturer confirmation is required before a consumer can propagate the claim downstream.
verification.typerequiredAttestationVerificationType (enum)
verification.contact_referencestring
verification.notesstring
source_document_refFileReference
issuing_authoritystringNamed operator of the program, for programs run by more than one operator (for example the several EPD program operators). Optional descriptive data; it never affects the computed achievement state.
sustainability_metricobjectOptional quantitative payload for a sustainability attestation, hanging off the attestation so the numbers inherit its status, evidence, and expiry. `ceam_score` is the TM66 CEAM design score (0 to 4). `embodied_carbon_kgco2e` is a declared embodied-carbon figure; when it is present, `embodied_carbon_scope` and `embodied_carbon_functional_unit` are required so the number is never ambiguous about its life-cycle boundary or its declared unit. `c2c_overall_level` carries a Cradle to Cradle overall rating. `method_variant` records a regional or method sub-variant (for example a TM65 national annex such as TM65NA).
sustainability_metric.ceam_scorenumber0 to 4
sustainability_metric.embodied_carbon_kgco2enumberDeclared embodied-carbon figure in kilograms of CO2 equivalent (kg CO2e). Standards-native single-unit exception to the dual-unit rule: EPD / ISO 14025, TM65, and TM66 publish embodied carbon in kg CO2e only, with no Imperial companion used in life-cycle-assessment practice, so ULC records it SI-native (the same treatment as the cd/m2 luminance and LM-82 Celsius exceptions). The required embodied_carbon_scope and embodied_carbon_functional_unit fix the life-cycle boundary and the declared unit basis, so the single number is unambiguous.
sustainability_metric.embodied_carbon_scopeEmbodiedCarbonScope (enum)
sustainability_metric.embodied_carbon_functional_unitstring
sustainability_metric.c2c_overall_levelCircularityTier (enum)
sustainability_metric.method_variantstring

Extensions

Escape hatch for values outside the core schema. Treated as informational by validators.

FieldType and description
manufacturer_specificobjectVendor-specific fields keyed by manufacturer slug.
experimentalobjectFields under active review for promotion into the main schema.

AchievementTheme

One theme's computed state inside `index.achievements.themes`. GENERATED, NOT HAND-AUTHORED. `state` is the theme's achievement state. `programs` lists the qualifying AttestationProgram tokens found in the ledger for this theme, deduplicated and sorted. `source_attestation_ids` lists the `attestation_id` values of contributing attestations (best-effort, since `attestation_id` is optional on an attestation). `evidence_present` is true when at least one contributing attestation carries an attached, non-disqualified evidence document. `best_metric_ref` names the `attestation_id` whose `sustainability_metric` best represents the theme; it is omitted when no qualifying metric exists.

FieldType and description
staterequiredAchievementState (enum)
programsrequiredarray of AttestationProgram (enum)
source_attestation_idsrequiredarray of string
evidence_presentrequiredboolean
best_metric_refstring

Index

Generated summary view. Every field projects from an authoritative deep-block value. The builder (`ulc build-index`, under `tools/validator/`) is the single source of these projections; manufacturers never hand-author them. Selection policies the builder applies: (1) `nominal_cct_k` = `configuration.tested_conditions.nominal_cct_at_test`; (2) `nominal_total_lumens` = `photometry.total_luminous_flux_lm.value` at the tested baseline, not `declared_by_cct` derivatives; (3) `nominal_input_power_w` = `electrical.input_power_w.value`; (4) `primary_category` = `product_family.primary_category`; (5) `source_file_types_present` = deduplicated sorted list of `source_files[].file_type` values; (6) other fields follow analogous rules documented in the builder's source. Consumers reading `x-ulc-generated: true` can treat the index as trustworthy; absence or a stale `builder_version` is the signal to re-run the builder.

FieldType and description
x-ulc-generatedrequiredobjectconst trueMarker asserting this index was produced by the canonical builder. Always true in valid records; absence is the signal that the index was hand-edited or predates a builder revision.
builder_versionrequiredstringpatternSemver of the builder that produced this index. Consumers compare against the current builder version to detect stale indices.
conformance_levelrequiredConformanceLevel (enum)The conformance grade this record achieves: one of the three grades (core, standard, full) or the incomplete floor. GENERATED, NOT HAND-AUTHORED: the reference builder computes it from the record's populated fields (applying the conditional rubric: directional categories require a beam angle, pure RGB/RGBA fixtures with no white channel skip CRI, outdoor-site products require BUG at standard, and so on) and stamps it here like every other index value. `incomplete` is the floor, below core: a record that has not yet met a core requirement. Because it is a builder projection, a hand-tampered value fails the build-parity check just like any other index field, so the grade a record claims is the grade its data actually achieves.
manufacturer_slugrequiredstring
catalog_modelrequiredstring
catalog_numberstring
display_namestring
primary_categoryPrimaryCategory (enum)
secondary_functionarray of SecondaryFunction (enum)
indoor_outdoorIndoorOutdoor (enum)
mounting_typesarray of MountingType (enum)
environment_ratingEnvironmentRating (enum)
nominal_cct_kNominalCCT (enum)
nominal_total_lumensnumbermin 0
nominal_input_power_wnumbermin 0
nominal_cri_ranumber0 to 100
nominal_efficacy_lm_per_wnumbermin 0
primary_distributionDistributionType (enum)
outdoor_distributionOutdoorDistributionType (enum)
beam_familyBeamFamily (enum)
color_tunabilityColorTunabilityCapability (enum)
dimming_protocolsarray of DimmingProtocol (enum)
ip_ratingstringpattern
ik_ratingstringpattern
bug_ratingstringpatternShort string form of BUG (for example `B1-U0-G1`). Computed from `outdoor_classification.bug_rating` when present.
ugr_4h_8hnumber
attestation_programsarray of AttestationProgram (enum)Flat array of every AttestationProgram value claimed anywhere in the record (shared_attestations, attestations[], and sustainability_declaration declaration types that correspond to an external certified program). Deduplicated. Lets consumers filter by certification without walking all attestation records. Manufacturer-self-operated sustainability declaration types that are not certified external programs (for example `manufacturer_recycle_program`) intentionally do not contribute an entry here; they appear only in the `sustainability_declaration.declaration_type` field and are filterable from there when needed.
search_keywordsarray of stringOptional free-text tokens the manufacturer wants indexed. Populated by the builder from `product_family.family_display_name`, `product_family.catalog_line`, and `configuration.scenario_label`, then deduplicated and sorted for deterministic output. Future builder versions may ingest additional manufacturer-tagged fields; the exact set is a builder-version policy, not a schema-level contract.
source_file_types_presentarray of SourceFileType (enum)Deduplicated sorted list of `source_files[].file_type` values. Lets AI agents and retrieval systems quickly determine which source formats (PDF, IES, LDT, TM-33, ULD, GLDF) exist for this record without walking the full `source_files` array.
achievementsrequiredobjectProduct Achievements view: per-theme third-party program qualifications computed from the record's Master Ledger, orthogonal to `conformance_level`. GENERATED, NOT HAND-AUTHORED. `themes` carries seven fixed theme keys, of which six are `required`, each an AchievementTheme; the container is open (no `additionalProperties` bar) so future themes add without breaking consumers. `documented_count` is the factual count of themes at the `documented` state; it is the only sanctioned rollup, and there is deliberately no weighted or overall achievement grade.
achievements.themesrequiredobjectThe seven fixed achievement themes, all emitted by the reference builder.
achievements.themes.embodied_carbonrequiredAchievementTheme
achievements.themes.circularityrequiredAchievementTheme
achievements.themes.material_healthrequiredAchievementTheme
achievements.themes.energyrequiredAchievementTheme
achievements.themes.dark_skyrequiredAchievementTheme
achievements.themes.emergencyrequiredAchievementTheme
achievements.themes.domestic_contentAchievementTheme
achievements.documented_countrequiredintegermin 0
restricted_substances_declaredrequiredarray of AttestationProgram (enum)Restricted-substances programs declared anywhere in the record's Master Ledger (RoHS, REACH, Prop 65, and similar). GENERATED, NOT HAND-AUTHORED. Deduplicated and sorted. Surfaced as a compliance flag beside achievements, never inside them: restricted-substances compliance is a legal floor, not a prestige achievement. An empty array means nothing was declared.

Common types

ProvenancedNumber

A single numeric value with its unit, regulatory value type, and provenance. Used for single-unit quantities (lumens, watts, CRI, Duv, candela, efficacy).

FieldType and description
valuerequirednumber
unitstring
value_typerequiredRegulatoryValueType (enum)
provenanceProvenance

DualUnitLength

Length value with mandatory SI (mm) and Imperial (in) representations. SI is authoritative per the ULC spec; the Imperial representation is the required derived companion.

FieldType and description
mmrequirednumbermin 0
inrequirednumbermin 0
value_typeRegulatoryValueType (enum)
provenanceProvenance

DualUnitMass

Mass value with mandatory SI (kg) and Imperial (lb) representations.

FieldType and description
kgrequirednumbermin 0
lbrequirednumbermin 0
value_typeRegulatoryValueType (enum)
provenanceProvenance

DualUnitTemperature

Temperature value with mandatory Celsius and Fahrenheit representations.

FieldType and description
crequirednumber
frequirednumber
value_typeRegulatoryValueType (enum)
provenanceProvenance

DualUnitArea

Area value with mandatory SI (square meters) and Imperial (square feet) representations. Used for Effective Projected Area (EPA) on pole-mounted outdoor fixtures. SI is authoritative; Imperial is the required derived companion.

FieldType and description
m2requirednumbermin 0
ft2requirednumbermin 0
value_typeRegulatoryValueType (enum)
provenanceProvenance

DualUnitMassPerLength

Linear mass rate (mass per unit length) with mandatory SI (kg per meter) and Imperial (lb per foot) representations. Used for linear fixtures where total mass scales with fixture length. Distinct from DualUnitMass, which represents an absolute mass. SI is authoritative; Imperial is the required derived companion.

FieldType and description
kg_per_mrequirednumbermin 0
lb_per_ftrequirednumbermin 0
value_typeRegulatoryValueType (enum)
provenanceProvenance

Provenance

Traceability metadata attached to an individual field value. Every extracted, derived, or computed value should carry provenance so consumers can verify how each number was produced.

FieldType and description
sourcerequiredProvenanceSource (enum)Origin of the value.
methodrequiredProvenanceMethod (enum)How the value was produced from its source.
confidencenumber0 to 1Optional confidence score in the range [0, 1] when the value was inferred or extracted with uncertainty.
conflict_notesstringOptional note recording a disagreement between two sources for the same value.
attestation_refstringReference to an attestation record's test ID when the value is anchored to a specific lab attestation. Expected on fields with value_type `measured`, so a measured quantity can be traced to its lab attestation.
base_attestation_refstringReference to the base measured attestation from which this value was derived by simulation, extended photometry, or scaling.
simulation_toolstringName and version of the optical simulation tool, when method is `optical_simulation`.
extension_methodstringThe specific extension rule applied, when method is `extended_photometry` or `scaled`.

FileReference

Reference to a source file by filename, optional URL, and mandatory SHA-256 content hash. The hash is the integrity anchor; URLs may rot.

FieldType and description
filenamerequiredstring
urlstringformat uri
sha256requiredstringpattern
revision_labelstring
revision_datestringformat date