# Lexicons matching `app.gainforest`

**13** lexicon(s) found.

## app.gainforest.common.defs

Shared type definitions for biodiversity and environmental data collection

- **Lexicon Version:** 1

### uri (object)

Reference to external data via URI

**Properties:**

- `uri`: string (uri)
  URI to external resource
  Constraints: maxGraphemes: 1024

**Required:** uri

### audio (object)

Audio file for bioacoustics, soundscapes, field recordings, species calls

**Properties:**

- `file`: blob
  Audio up to 100MB. Supports WAV, MP3, M4A, AAC, FLAC, OGG, Opus, WebM, AIFF.

**Required:** file

### image (object)

Image file for photos, camera traps, drone stills, scanned documents

**Properties:**

- `file`: blob
  Image up to 20MB. Supports JPEG, PNG, WebP, HEIC (phones), TIFF (scientific), GIF, BMP, SVG.

**Required:** file

### video (object)

Video file for camera traps, drone footage, underwater video, behavioral observations

**Properties:**

- `file`: blob
  Video up to 100MB. Supports MP4, MOV, AVI, WebM, MKV, MPEG, 3GP.

**Required:** file

### dataFile (object)

Structured data file for observations, measurements, exports

**Properties:**

- `file`: blob
  Data file up to 50MB. Supports CSV, TSV, JSON, JSON-LD, XML, XLS, XLSX, ODS.

**Required:** file

### document (object)

Document file for reports, field notes, permits, publications

**Properties:**

- `file`: blob
  Document up to 20MB. Supports PDF, TXT, Markdown, HTML, RTF, DOC, DOCX.

**Required:** file

### gpsTrack (object)

GPS track file for transects, survey routes, patrol paths

**Properties:**

- `file`: blob
  GPS track up to 10MB. Supports GPX, KML, KMZ, GeoJSON.

**Required:** file

### richtext (object)

An object that contains the text and an object that defins and enables richtext formatting on the text.

**Properties:**

- `text`: string
  The text to be formatted
  Constraints: maxGraphemes: 10000
- `facets`: array
  Array of:
    - `item`: ref → app.bsky.richtext.facet

**Required:** text

### dateRange (object)

A date range for temporal queries

**Properties:**

- `endDate`: string
  ISO 8601 end date
  Constraints: maxGraphemes: 64
- `startDate`: string
  ISO 8601 start date
  Constraints: maxGraphemes: 64

**Required:** startDate

### geospatial (object)

Geospatial data file for maps, boundaries, habitat layers

**Properties:**

- `file`: blob
  Geospatial data up to 100MB. Supports GeoJSON, KML, KMZ, GeoPackage, Shapefile (zipped), GeoTIFF.

**Required:** file

### sensorData (object)

Sensor data file for environmental monitoring (temperature, humidity, light, etc.)

**Properties:**

- `file`: blob
  Sensor data up to 50MB. Supports CSV, JSON, TXT, NetCDF, HDF5.

**Required:** file

### geneticData (object)

Genetic/genomic data file for eDNA, barcoding, sequencing results

**Properties:**

- `file`: blob
  Genetic data up to 100MB. Supports FASTA, FASTQ, CSV, JSON.

**Required:** file

### spectrogram (object)

Spectrogram image - visual representation of audio frequency content

**Properties:**

- `file`: blob
  Spectrogram image up to 5MB

**Required:** file

### coordinatePair (object)

A simple lat/lon pair for lightweight location references

**Properties:**

- `lat`: string
  Decimal latitude
  Constraints: maxGraphemes: 32
- `lon`: string
  Decimal longitude
  Constraints: maxGraphemes: 32

**Required:** lat, lon

### imageThumbnail (object)

Small image for thumbnails and previews

**Properties:**

- `file`: blob
  Thumbnail image up to 1MB

**Required:** file

### speciesProfile (object)

Display-ready species profile for UI rendering

**Properties:**

- `genus`: string
  Taxonomic genus
  Constraints: maxGraphemes: 128
- `family`: string
  Taxonomic family
  Constraints: maxGraphemes: 128
- `kingdom`: string
  Taxonomic kingdom
  Constraints: maxGraphemes: 128
- `imageUrl`: string (uri)
  Representative species image URL
  Constraints: maxGraphemes: 512
- `commonName`: string
  Vernacular name of the species
  Constraints: maxGraphemes: 256
- `gbifTaxonKey`: string
  GBIF taxon key identifier
  Constraints: maxGraphemes: 64
- `thumbnailUrl`: string (uri)
  Small thumbnail image URL
  Constraints: maxGraphemes: 512
- `scientificName`: string
  Scientific (Latin) name of the species
  Constraints: maxGraphemes: 512
- `conservationStatus`: ref → #conservationStatus
  Conservation status information for this species

**Required:** scientificName

### externalReference (object)

A reference to an external system or database

**Properties:**

- `url`: string (uri)
  Direct URL to the record in the external system
  Constraints: maxGraphemes: 512
- `system`: string
  External system name
  Constraints: maxGraphemes: 128
- `identifier`: string
  Identifier in the external system
  Constraints: maxGraphemes: 256

**Required:** system, identifier

### conservationStatus (object)

IUCN and other conservation status information for a species or population

**Properties:**

- `iucnTaxonId`: string
  IUCN taxon identifier
  Constraints: maxGraphemes: 32
- `iucnCategory`: string
  IUCN Red List category code
  Constraints: maxGraphemes: 16
- `nativeStatus`: string
  Native status of the species in the observed region
  Constraints: maxGraphemes: 32
- `citesAppendix`: string
  CITES appendix listing
  Constraints: maxGraphemes: 8
- `nationalStatus`: string
  National or regional conservation status
  Constraints: maxGraphemes: 256
- `iucnAssessmentDate`: string
  Date of the IUCN assessment
  Constraints: maxGraphemes: 64

### indexedOrganization (object)

Reference to an indexed organization

**Properties:**

- `id`: string (uri)
  The URI of the organization
  Constraints: maxGraphemes: 2048
- `name`: string
  The name of the organization
  Constraints: maxGraphemes: 256

**Required:** id, name


---

## app.gainforest.dwc.defs

Shared type definitions for Darwin Core aligned biodiversity records

- **Lexicon Version:** 1

### sexEnum (string)

The sex of the biological individual(s) represented in the occurrence.

Constraints: maxGraphemes: 64

### geolocation (object)

A geographic point with uncertainty, following Darwin Core Location class

**Properties:**

- `geodeticDatum`: string
  The ellipsoid, geodetic datum, or spatial reference system. Recommended: 'EPSG:4326' (WGS84)
  Constraints: maxGraphemes: 64
- `decimalLatitude`: string
  Geographic latitude in decimal degrees (WGS84). Positive values north of the Equator, negative south. Range: -90 to 90.
  Constraints: maxGraphemes: 32
- `decimalLongitude`: string
  Geographic longitude in decimal degrees (WGS84). Positive values east of the Greenwich Meridian, negative west. Range: -180 to 180.
  Constraints: maxGraphemes: 32
- `coordinateUncertaintyInMeters`: integer
  Horizontal distance from the coordinates describing the smallest circle containing the whole location. Zero is not valid.
  Constraints: min: 1

**Required:** decimalLatitude, decimalLongitude

### plantTraits (object)

Functional plant traits from databases like TRY, Restor

**Properties:**

- `leafArea`: string
  Leaf area in cm²
  Constraints: maxGraphemes: 32
- `leafType`: string
  Leaf type of the plant
  Constraints: maxGraphemes: 32
- `seedMass`: string
  Seed mass in mg
  Constraints: maxGraphemes: 32
- `maxHeight`: string
  Maximum height in meters
  Constraints: maxGraphemes: 32
- `rootDepth`: string
  Root depth in meters
  Constraints: maxGraphemes: 32
- `growthForm`: string
  Growth form of the plant
  Constraints: maxGraphemes: 64
- `edibleParts`: array
  Edible parts of the plant (e.g., 'fruit', 'leaves', 'seeds')
  Constraints: maxLength: 10
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 64
- `traitSource`: string
  Source database for trait data (e.g., 'TRY', 'Restor', 'BIEN')
  Constraints: maxGraphemes: 256
- `woodDensity`: string
  Wood density in g/cm³
  Constraints: maxGraphemes: 32
- `economicUses`: array
  Economic uses of the plant (e.g., 'timber', 'medicine')
  Constraints: maxLength: 10
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 128
- `stemDiameter`: string
  Typical stem diameter in cm
  Constraints: maxGraphemes: 32
- `barkThickness`: string
  Bark thickness in mm
  Constraints: maxGraphemes: 32
- `dispersalMode`: string
  Primary seed dispersal mode
  Constraints: maxGraphemes: 64
- `pollinationMode`: string
  Primary pollination mode
  Constraints: maxGraphemes: 64
- `specificLeafArea`: string
  Specific leaf area in mm²/mg
  Constraints: maxGraphemes: 32
- `stemConduitDiameter`: string
  Stem conduit diameter in μm
  Constraints: maxGraphemes: 32

### taxonRankEnum (string)

The taxonomic rank of the most specific name in the scientificName.

Constraints: maxGraphemes: 64

### lifeHistoryEnum (string)

Life history strategy of the organism

Constraints: maxGraphemes: 32

### abundanceEstimate (object)

A structured abundance/density estimate

**Properties:**

- `date`: string
  Date of estimate (ISO 8601)
  Constraints: maxGraphemes: 64
- `unit`: string
  Unit of the estimate (e.g., 'individuals/ha', 'stems/ha', '% cover', 'relative abundance')
  Constraints: maxGraphemes: 64
- `value`: string
  Numeric value as string
  Constraints: maxGraphemes: 64
- `method`: string
  Estimation method
  Constraints: maxGraphemes: 256
- `confidence`: string
  Confidence interval or qualifier
  Constraints: maxGraphemes: 64

**Required:** value, unit

### basisOfRecordEnum (string)

The specific nature of the data record. Controlled vocabulary per Darwin Core.

Constraints: maxGraphemes: 64

### dublinCoreTypeEnum (string)

Dublin Core type vocabulary for the nature of the resource.

Constraints: maxGraphemes: 64

### taxonIdentification (object)

A taxonomic identification with provenance metadata

**Properties:**

- `gbifTaxonKey`: string
  GBIF backbone taxonomy key for the identified taxon
  Constraints: maxGraphemes: 64
- `identifiedBy`: string
  Person(s) who made the identification (pipe-delimited for multiple)
  Constraints: maxGraphemes: 512
- `dateIdentified`: string
  Date the identification was made (ISO 8601)
  Constraints: maxGraphemes: 64
- `identifiedByID`: string
  ORCID or other persistent identifier for the person(s) who identified (pipe-delimited)
  Constraints: maxGraphemes: 512
- `scientificName`: string
  The full scientific name including authorship and date
  Constraints: maxGraphemes: 512
- `identificationRemarks`: string
  Notes or comments about the identification
  Constraints: maxGraphemes: 2048
- `identificationQualifier`: string
  Uncertainty qualifier applied to the taxon name (e.g., 'cf. agrestis', 'aff. agrestis')
  Constraints: maxGraphemes: 256

**Required:** scientificName

### occurrenceStatusEnum (string)

Statement about the presence or absence of a taxon at a location.

Constraints: maxGraphemes: 64

### nomenclaturalCodeEnum (string)

The nomenclatural code under which the scientific name is constructed.

Constraints: maxGraphemes: 64

### establishmentMeansEnum (string)

Darwin Core establishment means — the process by which the organism came to be in a given place at a given time

Constraints: maxGraphemes: 64


---

## app.gainforest.dwc.event

A sampling event record aligned with Darwin Core Event class. Enables star-schema pattern where multiple occurrences reference a shared event context (location, protocol, effort).

- **Lexicon Version:** 1

### main (record)

A sampling or collecting event. Multiple dwc.occurrence records can reference the same event via eventRef, sharing location and protocol metadata.

**Record Key:** `tid`

**Properties:**

- `county`: string
  Second-level administrative division.
  Constraints: maxGraphemes: 256
- `country`: string
  The name of the country.
  Constraints: maxGraphemes: 128
- `eventID`: string
  An identifier for the event. Should be globally unique or unique within the dataset.
  Constraints: maxGraphemes: 256
- `habitat`: string
  A category or description of the habitat in which the event occurred (e.g., 'primary tropical rainforest', 'degraded pasture', 'riparian zone').
  Constraints: maxGraphemes: 512
- `siteRef`: string (at-uri)
  AT-URI reference to the organization site record.
- `humidity`: string
  Relative humidity percentage.
  Constraints: maxGraphemes: 16
- `locality`: string
  Specific locality description.
  Constraints: maxGraphemes: 1024
- `teamSize`: integer
  Number of people involved in the event.
  Constraints: min: 1
- `createdAt`: string (datetime)
  Timestamp of record creation in the ATProto PDS.
- `eventDate`: string
  The date or date range during which the event occurred. ISO 8601 format (e.g., '2024-03-15', '2024-03-15/2024-03-17').
  Constraints: maxGraphemes: 64
- `eventTime`: string
  The time or time range during which the event occurred. ISO 8601 format (e.g., '06:30:00', '06:30:00/09:00:00').
  Constraints: maxGraphemes: 64
- `moonPhase`: string
  Moon phase (relevant for nocturnal surveys).
  Constraints: maxGraphemes: 32
- `windSpeed`: string
  Wind speed during event.
  Constraints: maxGraphemes: 16
- `cloudCover`: string
  Cloud cover percentage.
  Constraints: maxGraphemes: 16
- `fieldNotes`: string
  Notes or a reference to notes taken in the field about the event.
  Constraints: maxGraphemes: 10000
- `locationID`: string
  Identifier for the location where the event occurred.
  Constraints: maxGraphemes: 256
- `projectRef`: string (at-uri)
  AT-URI reference to the organization info record.
- `recordedBy`: string
  Person(s) who conducted the event. Pipe-delimited for multiple people (e.g., 'Jane Smith | John Doe').
  Constraints: maxGraphemes: 512
- `visibility`: string
  Visibility conditions (e.g., 'clear', 'foggy', '10m underwater').
  Constraints: maxGraphemes: 32
- `waterLevel`: string
  Water level if aquatic survey (e.g., 'low', '2.3m').
  Constraints: maxGraphemes: 32
- `countryCode`: string
  ISO 3166-1 alpha-2 country code.
  Constraints: minLength: 2, maxLength: 2
- `temperature`: string
  Temperature in Celsius during event.
  Constraints: maxGraphemes: 16
- `completeness`: string
  Assessment of survey completeness (e.g., 'complete', 'partial - rain stopped survey', 'incomplete').
  Constraints: maxGraphemes: 64
- `eventRemarks`: string
  Comments or notes about the event.
  Constraints: maxGraphemes: 5000
- `municipality`: string
  Third-level administrative division.
  Constraints: maxGraphemes: 256
- `recordedByID`: string
  ORCID or other persistent identifiers for the recorder(s). Pipe-delimited for multiple IDs.
  Constraints: maxGraphemes: 512
- `equipmentUsed`: string
  Description of equipment used during the event.
  Constraints: maxGraphemes: 1024
- `geodeticDatum`: string
  The spatial reference system. Recommended: 'EPSG:4326'.
  Constraints: maxGraphemes: 64
- `parentEventID`: string
  An identifier for the broader event that this event is part of (e.g., a survey campaign that contains multiple transects).
  Constraints: maxGraphemes: 256
- `precipitation`: string
  Precipitation description (e.g., 'none', 'light rain', '5mm').
  Constraints: maxGraphemes: 32
- `stateProvince`: string
  First-level administrative division.
  Constraints: maxGraphemes: 256
- `parentEventRef`: string (at-uri)
  AT-URI reference to the parent app.gainforest.dwc.event record.
- `sampleSizeUnit`: string
  The unit of measurement for the sampleSizeValue (e.g., 'square meters', 'hectares', 'trap-nights').
  Constraints: maxGraphemes: 128
- `samplingEffort`: string
  The amount of effort expended during the event (e.g., '3 person-hours', '14 trap-nights', '2 km transect walked').
  Constraints: maxGraphemes: 256
- `weatherRemarks`: string
  General weather description.
  Constraints: maxGraphemes: 512
- `decimalLatitude`: string
  Geographic latitude in decimal degrees (WGS84). Range: -90 to 90.
  Constraints: maxGraphemes: 32
- `locationRemarks`: string
  Comments about the location.
  Constraints: maxGraphemes: 2048
- `sampleSizeValue`: string
  A numeric value for a measurement of the size of a sample in the event (e.g., '20', '0.25').
  Constraints: maxGraphemes: 64
- `decimalLongitude`: string
  Geographic longitude in decimal degrees (WGS84). Range: -180 to 180.
  Constraints: maxGraphemes: 32
- `samplingProtocol`: string
  The names of, references to, or descriptions of the methods used during the event (e.g., 'camera trap array', 'line transect distance sampling', 'audio point count 10-min').
  Constraints: maxGraphemes: 1024
- `waterTemperature`: string
  Water temperature in Celsius.
  Constraints: maxGraphemes: 16
- `monitoringFrequency`: string
  How often this type of event recurs (e.g., 'monthly', 'quarterly', 'annual', 'one-time').
  Constraints: maxGraphemes: 64
- `monitoringProgramme`: string
  Name of the monitoring programme (e.g., 'Annual Biodiversity Survey 2025').
  Constraints: maxGraphemes: 256
- `qualityControlNotes`: string
  Notes on data quality issues encountered during or after the event.
  Constraints: maxGraphemes: 2048
- `maximumElevationInMeters`: integer
  Upper limit of elevation range in meters above sea level.
- `minimumElevationInMeters`: integer
  Lower limit of elevation range in meters above sea level.
- `coordinateUncertaintyInMeters`: integer
  Uncertainty radius in meters around the coordinates.
  Constraints: min: 1

**Required:** eventID, eventDate, createdAt


---

## app.gainforest.dwc.measurement

Measurement or fact records aligned with the Darwin Core MeasurementOrFact class. Links to an occurrence via occurrenceRef. Supports three paths: floraMeasurement (typed fields for sessile organisms like trees, plants, corals), faunaMeasurement (typed fields for mobile organisms like mammals, birds, reptiles, fish), and genericMeasurement (flexible key-value array for anything else). All three paths bundle multiple measurements into a single record per occurrence, reducing PDS storage compared to one-record-per-measurement.

- **Lexicon Version:** 1

### main (record)

A bundle of measurements, facts, or characteristics about an occurrence. One record per occurrence, with all measurements grouped inside a typed result union.

**Record Key:** `tid`

**Properties:**

- `result`: union → union[#floraMeasurement, #faunaMeasurement, #genericMeasurement]
  The typed measurement payload. Use floraMeasurement for sessile organisms (trees, plants, corals, sponges), faunaMeasurement for mobile organisms (mammals, birds, reptiles, amphibians, fish, insects), or genericMeasurement as a flexible fallback.
- `createdAt`: string (datetime)
  Timestamp of record creation in the ATProto PDS.
- `measuredBy`: string
  Person(s) who performed the measurements. Pipe-delimited for multiple.
  Constraints: maxGraphemes: 512
- `measuredByID`: string
  ORCID or other persistent identifier(s) for the measurer(s). Pipe-delimited for multiple.
  Constraints: maxGraphemes: 512
- `occurrenceID`: string
  The occurrenceID of the linked occurrence record (for cross-system interoperability with GBIF/DwC-A exports).
  Constraints: maxGraphemes: 256
- `occurrenceRef`: string (at-uri)
  AT-URI reference to the app.gainforest.dwc.occurrence record these measurements belong to.
- `measurementDate`: string
  Date the measurements were taken. ISO 8601 format.
  Constraints: maxGraphemes: 64
- `measurementMethod`: string
  General protocol or method used (e.g., 'ForestGEO standard protocol', 'mist-net examination').
  Constraints: maxGraphemes: 1024
- `measurementRemarks`: string
  Comments or notes about the measurement session.
  Constraints: maxGraphemes: 5000

**Required:** occurrenceRef, result, createdAt

### faunaMeasurement (object)

Typed measurements for mobile organisms: mammals, birds, reptiles, amphibians, fish, insects, and other animals. Covers morphometrics, health assessments, reproductive measurements, and individual marking data. All numeric values stored as strings. Field descriptions include expected units for DwC-A export mapping.

**Properties:**

- `tagId`: string
  Ear tag, flipper tag, fin tag, or wing tag identifier.
  Constraints: maxGraphemes: 128
- `tagType`: string
  Type of tag or mark applied.
  Constraints: maxGraphemes: 64
- `bodyMass`: string
  Body mass in grams.
  Constraints: maxGraphemes: 32
- `fatScore`: string
  Subcutaneous fat deposit score (0-8 scale, birds).
  Constraints: maxGraphemes: 8
- `pitTagId`: string
  Passive Integrated Transponder (microchip) number.
  Constraints: maxGraphemes: 128
- `wingspan`: string
  Full wingspan tip-to-tip in millimeters (birds, bats).
  Constraints: maxGraphemes: 32
- `billDepth`: string
  Depth of bill at base or gonys in millimeters (birds).
  Constraints: maxGraphemes: 32
- `broodSize`: integer
  Number of surviving young.
  Constraints: min: 0
- `earLength`: string
  Ear length from notch to tip in millimeters (mammals).
  Constraints: maxGraphemes: 32
- `groupSize`: integer
  Total size of social group observed (herd, flock, pod, colony).
  Constraints: min: 1
- `bandNumber`: string
  Metal or color band/ring number (birds).
  Constraints: maxGraphemes: 128
- `billLength`: string
  Culmen length in millimeters (birds).
  Constraints: maxGraphemes: 32
- `clutchSize`: integer
  Number of eggs in nest (birds, reptiles).
  Constraints: min: 0
- `forkLength`: string
  Fork length (snout to fork of caudal fin) in millimeters (fish).
  Constraints: maxGraphemes: 32
- `litterSize`: integer
  Number of offspring in litter (mammals).
  Constraints: min: 0
- `nestHeight`: string
  Height of nest above ground in meters.
  Constraints: maxGraphemes: 32
- `tailLength`: string
  Tail length in millimeters.
  Constraints: maxGraphemes: 32
- `wingLength`: string
  Flattened wing chord length in millimeters (birds).
  Constraints: maxGraphemes: 32
- `totalLength`: string
  Total body length in millimeters (tip of snout/bill to tail tip).
  Constraints: maxGraphemes: 32
- `tarsusLength`: string
  Tarsometatarsus length in millimeters (birds).
  Constraints: maxGraphemes: 32
- `carapaceWidth`: string
  Straight carapace width in millimeters (turtles/tortoises).
  Constraints: maxGraphemes: 32
- `forearmLength`: string
  Forearm length in millimeters. Standard measurement for bats.
  Constraints: maxGraphemes: 32
- `injuryPresent`: boolean
  Whether visible injuries exist.
- `carapaceLength`: string
  Straight carapace length in millimeters (turtles/tortoises).
  Constraints: maxGraphemes: 32
- `headBodyLength`: string
  Head-body length excluding tail in millimeters.
  Constraints: maxGraphemes: 32
- `hindFootLength`: string
  Hind foot length in millimeters (mammals).
  Constraints: maxGraphemes: 32
- `shoulderHeight`: string
  Height at shoulder in millimeters (large mammals).
  Constraints: maxGraphemes: 32
- `standardLength`: string
  Standard length (snout to caudal fin base) in millimeters (fish).
  Constraints: maxGraphemes: 32
- `geneticSampleId`: string
  Identifier of tissue, hair, or feather sample collected for genetic analysis.
  Constraints: maxGraphemes: 128
- `markDescription`: string
  Description of natural marks, scars, or unique identifying features.
  Constraints: maxGraphemes: 512
- `recaptureStatus`: string
  Whether this is a new capture or recapture.
  Constraints: maxGraphemes: 16
- `snoutVentLength`: string
  Snout-vent length (SVL) in millimeters. Standard body measurement for reptiles and amphibians.
  Constraints: maxGraphemes: 32
- `ectoparasiteLoad`: string
  Ectoparasite assessment.
  Constraints: maxGraphemes: 32
- `injuryDescription`: string
  Description of injuries (scars, wounds, missing limbs, broken wing).
  Constraints: maxGraphemes: 512
- `bodyConditionIndex`: string
  Calculated condition index (mass/length ratio or regression residual).
  Constraints: maxGraphemes: 32
- `bodyConditionScore`: string
  Standardized body condition score (scale varies by taxon: 1-5 or 1-9).
  Constraints: maxGraphemes: 16
- `diseaseDescription`: string
  Description of disease signs (mange, lesions, tumors, fungal infection, avian pox, chytrid).
  Constraints: maxGraphemes: 512
- `diseaseSignsPresent`: boolean
  Whether signs of disease are visible.
- `pectoralMuscleScore`: string
  Pectoral muscle score (0-3 scale, birds).
  Constraints: maxGraphemes: 8
- `colorBandCombination`: string
  Description of color band arrangement (e.g., 'Red/White left, Blue/Metal right').
  Constraints: maxGraphemes: 256
- `additionalMeasurements`: array
  Additional measurements not covered by the typed fields above.
  Constraints: maxLength: 50
  Array of:
    - `item`: ref → #measurementEntry

### floraMeasurement (object)

Typed measurements for sessile organisms: trees, woody plants, herbs, grasses, corals, sponges, lichens, and other non-mobile life forms. All numeric values stored as strings. Field descriptions include expected units for DwC-A export mapping.

**Properties:**

- `dbh`: string
  Diameter at breast height in centimeters. The core measurement in all tree inventories (ForestGEO, NFI, RAINFOR).
  Constraints: maxGraphemes: 32
- `girth`: string
  Circumference of trunk at breast height in centimeters. Alternative to DBH (convertible via pi).
  Constraints: maxGraphemes: 32
- `basalArea`: string
  Cross-sectional area of trunk at breast height in square centimeters.
  Constraints: maxGraphemes: 32
- `phenology`: string
  Current phenological state.
  Constraints: maxGraphemes: 64
- `stemCount`: integer
  Number of stems for multi-stemmed individuals.
  Constraints: min: 1
- `crownDepth`: string
  Vertical extent of crown in meters (total height minus height to crown base).
  Constraints: maxGraphemes: 32
- `damageType`: string
  Type of damage observed (e.g., 'broken crown', 'leaning', 'uprooted', 'hollow', 'scarred', 'stripped bark').
  Constraints: maxGraphemes: 256
- `decayClass`: string
  Decay classification for dead trees (1-5 scale per ForestGEO/FIA protocols).
  Constraints: maxGraphemes: 8
- `growthForm`: string
  Growth form classification of the organism.
  Constraints: maxGraphemes: 64
- `damageCause`: string
  Cause of damage.
  Constraints: maxGraphemes: 128
- `healthScore`: string
  Numeric health or vigor score (protocol-dependent scale).
  Constraints: maxGraphemes: 16
- `totalHeight`: string
  Total height from ground to highest living point in meters.
  Constraints: maxGraphemes: 32
- `woodDensity`: string
  Specific gravity of wood (dry mass / green volume) in grams per cubic centimeter.
  Constraints: maxGraphemes: 32
- `colonyHeight`: string
  Height of colony from base to apex in centimeters.
  Constraints: maxGraphemes: 32
- `crownDieback`: string
  Percentage of crown showing dieback.
  Constraints: maxGraphemes: 16
- `estimatedAge`: string
  Estimated age of the organism in years (from rings, radiocarbon, or allometry).
  Constraints: maxGraphemes: 32
- `basalDiameter`: string
  Diameter at ground level or just above root flare in centimeters. Standard for shrubs and multi-stemmed plants.
  Constraints: maxGraphemes: 32
- `carbonContent`: string
  Estimated carbon stored in kilograms of carbon (typically 47-50% of dry biomass).
  Constraints: maxGraphemes: 32
- `crownDiameter`: string
  Average crown diameter in meters (typically mean of multiple radial measurements).
  Constraints: maxGraphemes: 32
- `crownPosition`: string
  Canopy position relative to neighbors.
  Constraints: maxGraphemes: 32
- `leafAreaIndex`: string
  Leaf area index: total one-sided leaf area per unit ground area (m²/m²).
  Constraints: maxGraphemes: 32
- `buttressHeight`: string
  Height of buttress roots above ground in meters. Common in tropical trees.
  Constraints: maxGraphemes: 32
- `colonyDiameter`: string
  Maximum colony diameter in centimeters (corals, sponges).
  Constraints: maxGraphemes: 32
- `vitalityStatus`: string
  Overall vitality status of the organism.
  Constraints: maxGraphemes: 32
- `bleachingStatus`: string
  Coral bleaching status.
  Constraints: maxGraphemes: 32
- `floweringStatus`: string
  Current flowering/reproductive state.
  Constraints: maxGraphemes: 32
- `colonyMorphology`: string
  Colony growth form.
  Constraints: maxGraphemes: 64
- `depthBelowSurface`: string
  Depth of the organism below water surface in meters.
  Constraints: maxGraphemes: 32
- `abovegroundBiomass`: string
  Estimated aboveground biomass in kilograms, derived from allometric equations.
  Constraints: maxGraphemes: 32
- `belowgroundBiomass`: string
  Estimated belowground (root) biomass in kilograms.
  Constraints: maxGraphemes: 32
- `canopyCoverPercent`: string
  Percentage of ground covered by the canopy of this individual.
  Constraints: maxGraphemes: 16
- `heightToFirstBranch`: string
  Height from ground to first major living branch (bole length) in meters.
  Constraints: maxGraphemes: 32
- `dbhMeasurementHeight`: string
  Height above ground where DBH was measured, in meters. Important when measured above buttress or irregularity. Default is 1.3m.
  Constraints: maxGraphemes: 32
- `additionalMeasurements`: array
  Additional measurements not covered by the typed fields above.
  Constraints: maxLength: 50
  Array of:
    - `item`: ref → #measurementEntry
- `liveTissueCoverPercent`: string
  Percentage of colony surface with live tissue.
  Constraints: maxGraphemes: 16
- `annualDiameterIncrement`: string
  Annual radial growth measured via dendrometer bands or core samples in millimeters per year.
  Constraints: maxGraphemes: 32
- `heightMeasurementMethod`: string
  Method used for height measurement.
  Constraints: maxGraphemes: 128
- `biomassAllometricEquation`: string
  Reference to the allometric equation used for biomass estimation (e.g., 'Chave et al. 2014').
  Constraints: maxGraphemes: 512

### measurementEntry (object)

A single measurement fact, aligned with one row of the Darwin Core MeasurementOrFact extension. Used in additionalMeasurements arrays and in genericMeasurement.

**Properties:**

- `measurementType`: string
  The nature of the measurement (e.g., 'DBH', 'tree height', 'canopy cover', 'tail length', 'soil pH').
  Constraints: maxGraphemes: 256
- `measurementUnit`: string
  The units for the value (e.g., 'cm', 'm', 'kg', '%', 'degrees Celsius').
  Constraints: maxGraphemes: 64
- `measurementValue`: string
  The value of the measurement (e.g., '45.2', 'present', 'blue').
  Constraints: maxGraphemes: 1024
- `measurementMethod`: string
  Method or instrument used to determine this specific measurement.
  Constraints: maxGraphemes: 512
- `measurementRemarks`: string
  Notes about this specific measurement.
  Constraints: maxGraphemes: 1024
- `measurementAccuracy`: string
  Potential error (e.g., '0.5 cm', '5%').
  Constraints: maxGraphemes: 128

**Required:** measurementType, measurementValue

### genericMeasurement (object)

Flexible measurement container for organisms that do not fit the flora/fauna split, or for legacy compatibility. Contains an array of key-value measurement entries.

**Properties:**

- `measurements`: array
  Array of individual measurements, each with type, value, and optional unit.
  Constraints: maxLength: 100
  Array of:
    - `item`: ref → #measurementEntry

**Required:** measurements


---

## app.gainforest.dwc.occurrence

A single biodiversity occurrence record aligned with Simple Darwin Core (TDWG Standard 450, version 2023-09-13). Represents one organism or group of organisms at a particular place and time.

- **Lexicon Version:** 1

### main (record)

A biodiversity occurrence record following the Simple Darwin Core standard. Each record represents one occurrence of an organism at a location and time.

**Record Key:** `tid`

**Properties:**

- `sex`: string
  The sex of the biological individual(s).
  Constraints: maxGraphemes: 64, enum: [male, female, hermaphrodite]
- `tags`: array
  Keywords / tags for the occurrence record.
  Array of:
    - `item`: string
      A keyword / tag for the occurrence record.
      Constraints: maxGraphemes: 64
- `class`: string
  The full scientific name of the class.
  Constraints: maxGraphemes: 128
- `genus`: string
  The full scientific name of the genus.
  Constraints: maxGraphemes: 128
- `order`: string
  The full scientific name of the order.
  Constraints: maxGraphemes: 128
- `county`: string
  The full, unabbreviated name of the next smaller administrative region than stateProvince.
  Constraints: maxGraphemes: 256
- `dcType`: string
  The Dublin Core type class that best describes the resource (dc:type).
  Constraints: maxGraphemes: 64, enum: [PhysicalObject, StillImage, MovingImage, Sound, Text, Event, Dataset]
- `family`: string
  The full scientific name of the family.
  Constraints: maxGraphemes: 128
- `phylum`: string
  The full scientific name of the phylum or division.
  Constraints: maxGraphemes: 128
- `country`: string
  The name of the country or major administrative unit.
  Constraints: maxGraphemes: 128
- `eventID`: string
  Identifier for the sampling event. Can be used to group occurrences from the same event.
  Constraints: maxGraphemes: 256
- `habitat`: string
  A description of the habitat in which the event occurred (e.g., 'tropical rainforest', 'mangrove swamp', 'montane cloud forest').
  Constraints: maxGraphemes: 512
- `kingdom`: string
  The full scientific name of the kingdom (e.g., 'Animalia', 'Plantae', 'Fungi').
  Constraints: maxGraphemes: 128
- `license`: string
  A legal document giving official permission to do something with the record. Recommended: a Creative Commons URI (e.g., 'http://creativecommons.org/licenses/by/4.0/').
  Constraints: maxGraphemes: 512
- `siteRef`: string (at-uri)
  AT-URI reference to the site record where this occurrence was observed.
- `behavior`: string
  The behavior shown by the subject at the time of occurrence (e.g., 'foraging', 'nesting', 'roosting').
  Constraints: maxGraphemes: 256
- `eventRef`: string (at-uri)
  AT-URI reference to an app.gainforest.dwc.event record (for star-schema linkage).
- `locality`: string
  The specific description of the place (e.g., '500m upstream of bridge on Rio Pará').
  Constraints: maxGraphemes: 1024
- `createdAt`: string (datetime)
  Timestamp of record creation in the ATProto PDS.
- `eventDate`: string
  The date or date-time (or interval) during which the occurrence was recorded. ISO 8601 format (e.g., '2024-03-15', '2024-03-15T10:30:00Z', '2024-03/2024-06').
  Constraints: maxGraphemes: 64
- `eventTime`: string
  The time of the event. ISO 8601 format (e.g., '14:30:00', '14:30:00+02:00').
  Constraints: maxGraphemes: 64
- `lifeStage`: string
  The age class or life stage at the time of occurrence (e.g., 'adult', 'juvenile', 'larva', 'seedling', 'sapling').
  Constraints: maxGraphemes: 128
- `taxonRank`: string
  The taxonomic rank of the most specific name in scientificName.
  Constraints: maxGraphemes: 64, enum: [kingdom, phylum, class, order, family, subfamily, genus, subgenus, species, subspecies, variety, form]
- `datasetRef`: string (at-uri)
  AT-URI reference to a dataset record this occurrence belongs to.
- `fieldNotes`: string
  Notes or reference to notes taken in the field about the event.
  Constraints: maxGraphemes: 10000
- `locationID`: string
  Identifier for the location (e.g., a reference to a named site).
  Constraints: maxGraphemes: 256
- `projectRef`: string (at-uri)
  AT-URI reference to the organization info record for the project this occurrence belongs to.
- `recordedBy`: string
  Person(s) responsible for recording the occurrence in the field. Pipe-delimited for multiple (e.g., 'Jane Smith | John Doe').
  Constraints: maxGraphemes: 512
- `references`: string (uri)
  A related resource that is referenced, cited, or otherwise pointed to by the record (URL).
- `countryCode`: string
  The standard code for the country (ISO 3166-1 alpha-2).
  Constraints: minLength: 2, maxLength: 2
- `datasetName`: string
  The name identifying the dataset from which the record was derived.
  Constraints: maxGraphemes: 256
- `plantTraits`: ref → app.gainforest.dwc.defs#plantTraits
  Functional plant traits from databases like TRY and Restor. Only applicable to flora occurrences.
- `gbifTaxonKey`: string
  GBIF backbone taxonomy key for the identified taxon. Retained for backward compatibility with existing GainForest workflows.
  Constraints: maxGraphemes: 64
- `identifiedBy`: string
  Person(s) who assigned the taxon to the occurrence. Pipe-delimited for multiple.
  Constraints: maxGraphemes: 512
- `municipality`: string
  The full, unabbreviated name of the next smaller administrative region than county.
  Constraints: maxGraphemes: 256
- `occurrenceID`: string
  A globally unique identifier for the occurrence record. Recommended: a persistent URI (e.g., DOI, LSID, or UUID-based URI).
  Constraints: maxGraphemes: 256
- `recordedByID`: string
  Persistent identifier(s) (e.g., ORCID) of the person(s) who recorded. Pipe-delimited for multiple.
  Constraints: maxGraphemes: 512
- `rightsHolder`: string
  Person or organization owning or managing rights over the resource.
  Constraints: maxGraphemes: 256
- `thumbnailUrl`: string (uri)
  URL to a thumbnail image for display in lists and cards.
- `audioEvidence`: ref → app.gainforest.common.defs#audio
  Audio evidence (bioacoustics, soundscape, species call, field recording, etc.).
- `basisOfRecord`: string
  The specific nature of the data record. Must be one of the Darwin Core class names.
  Constraints: maxGraphemes: 64, enum: [HumanObservation, MachineObservation, PreservedSpecimen, LivingSpecimen, FossilSpecimen, MaterialSample, MaterialEntity, MaterialCitation]
- `geodeticDatum`: string
  The spatial reference system for the coordinates. Recommended: 'EPSG:4326' (WGS84).
  Constraints: maxGraphemes: 64
- `imageEvidence`: ref → app.gainforest.common.defs#image
  Image evidence (photo, camera trap, drone still, scanned specimen, etc.).
- `stateProvince`: string
  The name of the next smaller administrative region than country.
  Constraints: maxGraphemes: 256
- `videoEvidence`: ref → app.gainforest.common.defs#video
  Video evidence (camera trap, drone footage, underwater video, behavioral observation, etc.).
- `collectionCode`: string
  The name, acronym, or code identifying the collection or dataset from which the record was derived.
  Constraints: maxGraphemes: 256
- `dateIdentified`: string
  The date on which the identification was made. ISO 8601 format.
  Constraints: maxGraphemes: 64
- `identifiedByID`: string
  Persistent identifier(s) (e.g., ORCID) of the person(s) who identified. Pipe-delimited.
  Constraints: maxGraphemes: 512
- `samplingEffort`: string
  The amount of effort expended during the event (e.g., '2 trap-nights', '30 minutes', '10 km transect').
  Constraints: maxGraphemes: 256
- `scientificName`: string
  The full scientific name, with authorship and date if known (e.g., 'Centropyge flavicauda Fraser-Brunner 1933').
  Constraints: maxGraphemes: 512
- `vernacularName`: string
  A common or vernacular name for the taxon.
  Constraints: maxGraphemes: 256
- `associatedMedia`: string
  Identifiers (URIs) of media associated with the occurrence. Pipe-delimited for multiple.
  Constraints: maxGraphemes: 2048
- `decimalLatitude`: string
  Geographic latitude in decimal degrees (WGS84). Positive values are north of the Equator. Range: -90 to 90.
  Constraints: maxGraphemes: 32
- `individualCount`: integer
  The number of individuals present at the time of the occurrence.
  Constraints: min: 0
- `institutionCode`: string
  The name or acronym of the institution having custody of the object(s) or information in the record.
  Constraints: maxGraphemes: 256
- `locationRemarks`: string
  Comments about the location.
  Constraints: maxGraphemes: 2048
- `speciesImageUrl`: string (uri)
  URL to a representative species image.
- `specificEpithet`: string
  The name of the species epithet of the scientificName.
  Constraints: maxGraphemes: 128
- `taxonomicStatus`: string
  The status of the use of the scientificName (e.g., 'accepted', 'synonym', 'doubtful').
  Constraints: maxGraphemes: 64
- `decimalLongitude`: string
  Geographic longitude in decimal degrees (WGS84). Positive values are east of the Greenwich Meridian. Range: -180 to 180.
  Constraints: maxGraphemes: 32
- `occurrenceStatus`: string
  Statement about the presence or absence of a taxon at a location.
  Constraints: maxGraphemes: 64, enum: [present, absent]
- `organismQuantity`: string
  A number or enumeration value for the quantity of organisms (e.g., '27', '12.5', 'many').
  Constraints: maxGraphemes: 64
- `samplingProtocol`: string
  The method or protocol used during the event (e.g., 'camera trap', 'point count', 'mist net', '20m x 20m plot survey', 'acoustic monitoring').
  Constraints: maxGraphemes: 1024
- `verbatimLocality`: string
  The original textual description of the place as provided by the recorder.
  Constraints: maxGraphemes: 1024
- `dynamicProperties`: string
  Additional structured data as a valid JSON string (per Simple DwC Section 7.1). Example: '{"iucnStatus":"vulnerable","canopyCover":"85%"}'. Should be flattened to a single line with no non-printing characters.
  Constraints: maxGraphemes: 10000
- `nomenclaturalCode`: string
  The nomenclatural code under which the scientificName is constructed.
  Constraints: maxGraphemes: 64, enum: [ICZN, ICN, ICNP, ICTV, BioCode]
- `occurrenceRemarks`: string
  Comments or notes about the occurrence.
  Constraints: maxGraphemes: 5000
- `conservationStatus`: ref → app.gainforest.common.defs#conservationStatus
  Conservation status information including IUCN category, CITES listing, and native/invasive status.
- `associatedSequences`: string
  Identifiers (URIs) of genetic sequence information associated with the occurrence. Pipe-delimited for multiple.
  Constraints: maxGraphemes: 2048
- `dataGeneralizations`: string
  A description of actions taken to make the data less specific or complete (e.g., 'coordinates rounded to nearest 0.1 degree').
  Constraints: maxGraphemes: 1024
- `informationWithheld`: string
  A description of what information is withheld from this record and why (e.g., 'coordinates generalized to protect endangered species').
  Constraints: maxGraphemes: 1024
- `monitoringProgramme`: string
  Name of the monitoring programme under which this occurrence was recorded.
  Constraints: maxGraphemes: 256
- `spectrogramEvidence`: ref → app.gainforest.common.defs#spectrogram
  Spectrogram image showing frequency analysis of audio recording.
- `associatedReferences`: string
  Identifiers (URIs) of literature associated with the occurrence. Pipe-delimited for multiple.
  Constraints: maxGraphemes: 2048
- `higherClassification`: string
  A complete list of taxa names terminating at the rank immediately superior to the taxon. Pipe-delimited (e.g., 'Animalia|Chordata|Mammalia|Rodentia|Ctenomyidae|Ctenomys').
  Constraints: maxGraphemes: 1024
- `infraspecificEpithet`: string
  The name of the lowest or terminal infraspecific epithet.
  Constraints: maxGraphemes: 128
- `maximumDepthInMeters`: integer
  The greater depth of a range of depth below the local surface (in meters).
  Constraints: min: 0
- `minimumDepthInMeters`: integer
  The lesser depth of a range of depth below the local surface (in meters).
  Constraints: min: 0
- `organismQuantityType`: string
  The type of quantification system used for organismQuantity (e.g., 'individuals', '% biomass', 'stems/ha').
  Constraints: maxGraphemes: 128
- `associatedOccurrences`: string
  Identifiers of other occurrences associated with this one (e.g., parasite-host). Pipe-delimited.
  Constraints: maxGraphemes: 2048
- `identificationRemarks`: string
  Comments or notes about the identification.
  Constraints: maxGraphemes: 2048
- `reproductiveCondition`: string
  The reproductive condition at the time of occurrence (e.g., 'flowering', 'fruiting', 'budding', 'pregnant').
  Constraints: maxGraphemes: 128
- `identificationQualifier`: string
  A brief phrase or standard term qualifying the identification (e.g., 'cf. agrestis', 'aff. agrestis').
  Constraints: maxGraphemes: 256
- `previousIdentifications`: string
  Previous assignments of names to the occurrence. Pipe-delimited.
  Constraints: maxGraphemes: 2048
- `maximumElevationInMeters`: integer
  The upper limit of the range of elevation (in meters above sea level).
- `minimumElevationInMeters`: integer
  The lower limit of the range of elevation (in meters above sea level).
- `scientificNameAuthorship`: string
  The authorship information for the scientific name (e.g., 'Fraser-Brunner 1933').
  Constraints: maxGraphemes: 256
- `coordinateUncertaintyInMeters`: integer
  Horizontal distance (meters) from the given coordinates describing the smallest circle containing the whole location.
  Constraints: min: 1

**Required:** basisOfRecord, scientificName, eventDate, createdAt


---

## app.gainforest.evaluator.defs

Shared type definitions for decentralized evaluator services. Evaluators attach structured, typed evaluation data to records (a more sophisticated evolution of the labeler pattern).

- **Lexicon Version:** 1

### methodInfo (object)

Provenance metadata describing the method used to produce an evaluation.

**Properties:**

- `name`: string
  Human-readable name of the method or model (e.g., 'GainForest BioClassifier').
  Constraints: maxGraphemes: 256
- `version`: string
  Version string of the method or model (e.g., '2.1.0').
  Constraints: maxGraphemes: 64
- `references`: array
  URIs to papers, documentation, or repositories describing this method.
  Constraints: maxLength: 10
  Array of:
    - `item`: string (uri)
- `modelCheckpoint`: string
  Identifier for the specific model checkpoint used (e.g., date or hash).
  Constraints: maxGraphemes: 128

**Required:** name

### subjectRef (object)

Reference to a target record that is being evaluated.

**Properties:**

- `cid`: string (cid)
  CID pinning the exact version of the target record.
- `uri`: string (at-uri)
  AT-URI of the target record.

**Required:** uri

### qualityFlag (object)

A single data quality flag indicating an issue with a specific field.

**Properties:**

- `field`: string
  The field name that has the quality issue.
  Constraints: maxGraphemes: 64
- `issue`: string
  Description of the quality issue.
  Constraints: maxGraphemes: 256
- `severity`: string
  Severity level of the quality issue.
  Constraints: maxGraphemes: 64

**Required:** field, issue

### candidateTaxon (object)

A candidate taxon identification with confidence score and rank.

**Properties:**

- `rank`: integer
  Rank position among candidates (1 = best match).
  Constraints: min: 1
- `genus`: string
  Genus of the candidate taxon.
  Constraints: maxGraphemes: 128
- `family`: string
  Family of the candidate taxon.
  Constraints: maxGraphemes: 128
- `kingdom`: string
  Kingdom of the candidate taxon.
  Constraints: maxGraphemes: 128
- `confidence`: integer
  Confidence score (0-1000, where 1000 = 100.0%).
  Constraints: min: 0, max: 1000
- `gbifTaxonKey`: string
  GBIF backbone taxonomy key for the candidate.
  Constraints: maxGraphemes: 64
- `scientificName`: string
  Full scientific name of the candidate taxon.
  Constraints: maxGraphemes: 512

**Required:** scientificName, confidence, rank

### speciesIdResult (object)

AI or human species recognition result with ranked candidate identifications.

**Properties:**

- `remarks`: string
  Additional notes about the species identification.
  Constraints: maxGraphemes: 2048
- `candidates`: array
  Ranked list of candidate species identifications.
  Constraints: maxLength: 20
  Array of:
    - `item`: ref → #candidateTaxon
- `inputFeature`: string
  Which feature of the subject record was used as input (e.g., 'mediaEvidence').
  Constraints: maxGraphemes: 64

**Required:** candidates

### dataQualityResult (object)

Data quality assessment result with per-field quality flags.

**Properties:**

- `flags`: array
  List of quality issues found in the record.
  Constraints: maxLength: 50
  Array of:
    - `item`: ref → #qualityFlag
- `remarks`: string
  Additional notes about the quality assessment.
  Constraints: maxGraphemes: 2048
- `completenessScore`: integer
  Overall completeness score (0-1000, where 1000 = 100.0%).
  Constraints: min: 0, max: 1000

**Required:** flags

### measurementResult (object)

Derived measurements produced by an evaluator from source data (e.g., remote sensing metrics).

**Properties:**

- `remarks`: string
  Additional notes about the measurements.
  Constraints: maxGraphemes: 2048
- `measurements`: array
  List of derived measurements.
  Constraints: maxLength: 20
  Array of:
    - `item`: ref → #derivedMeasurement

**Required:** measurements

### bioacousticsResult (object)

Result of audio-based species detection.

**Properties:**

- `remarks`: string
  Additional notes about the bioacoustics analysis.
  Constraints: maxGraphemes: 2048
- `detections`: array
  Detected species/sounds within the audio recording.
  Constraints: maxLength: 100
  Array of:
    - `item`: ref → #bioacousticsDetection
- `soundscapeIndex`: string
  Acoustic diversity index value.
  Constraints: maxGraphemes: 32
- `totalDurationAnalyzedSeconds`: string
  Total audio duration analyzed in seconds.
  Constraints: maxGraphemes: 32

**Required:** detections

### derivedMeasurement (object)

A single measurement derived by an evaluator from source data.

**Properties:**

- `measurementType`: string
  The nature of the measurement (e.g., 'canopy cover', 'NDVI', 'tree height').
  Constraints: maxGraphemes: 256
- `measurementUnit`: string
  The units for the measurement value (e.g., '%', 'm', 'kg').
  Constraints: maxGraphemes: 64
- `measurementValue`: string
  The value of the measurement.
  Constraints: maxGraphemes: 1024
- `measurementMethod`: string
  Description of the method used to obtain the measurement.
  Constraints: maxGraphemes: 1024

**Required:** measurementType, measurementValue

### verificationResult (object)

Expert verification result for a previous identification or evaluation.

**Properties:**

- `status`: string
  Verification status: confirmed, rejected, or uncertain.
  Constraints: maxGraphemes: 64
- `remarks`: string
  Notes about the verification decision.
  Constraints: maxGraphemes: 2048
- `verifiedBy`: string
  Name of the person who performed the verification.
  Constraints: maxGraphemes: 256
- `verifiedByID`: string
  Persistent identifier (e.g., ORCID) of the verifier.
  Constraints: maxGraphemes: 256
- `suggestedCorrections`: string
  Suggested corrections if the original identification was rejected or uncertain.
  Constraints: maxGraphemes: 5000

**Required:** status

### deforestationResult (object)

Deforestation/land-use change detection result.

**Properties:**

- `remarks`: string
  Additional notes about the deforestation detection.
  Constraints: maxGraphemes: 2048
- `changeType`: string
  Type of land-use change detected.
  Constraints: maxGraphemes: 64
- `baselineDate`: string
  ISO 8601 date of baseline comparison.
  Constraints: maxGraphemes: 64
- `detectionDate`: string
  ISO 8601 date of detection.
  Constraints: maxGraphemes: 64
- `satelliteSource`: string
  Satellite data source (e.g., 'Sentinel-2', 'Landsat-8', 'Planet').
  Constraints: maxGraphemes: 128
- `changePercentage`: string
  Percentage of monitored area affected.
  Constraints: maxGraphemes: 16
- `areaAffectedHectares`: string
  Area affected by the change in hectares.
  Constraints: maxGraphemes: 32

**Required:** changeType

### classificationResult (object)

Generic categorical classification result (e.g., conservation priority, habitat type).

**Properties:**

- `value`: string
  The assigned classification value (e.g., 'critical', 'tropical-rainforest').
  Constraints: maxGraphemes: 256
- `remarks`: string
  Additional notes about the classification.
  Constraints: maxGraphemes: 2048
- `category`: string
  The classification category (e.g., 'conservation-priority', 'habitat-type').
  Constraints: maxGraphemes: 128

**Required:** category, value

### bioacousticsDetection (object)

A single detection within an audio recording.

**Properties:**

- `soundType`: string
  Type of sound detected.
  Constraints: maxGraphemes: 64
- `commonName`: string
  Common name of the identified species.
  Constraints: maxGraphemes: 256
- `confidence`: integer
  Confidence score (0-1000, where 1000 = 100.0%).
  Constraints: min: 0, max: 1000
- `endTimeSeconds`: string
  End time in seconds from recording start.
  Constraints: maxGraphemes: 16
- `maxFrequencyHz`: integer
  Upper frequency bound of detection in Hz.
  Constraints: min: 0
- `minFrequencyHz`: integer
  Lower frequency bound of detection in Hz.
  Constraints: min: 0
- `scientificName`: string
  Identified species scientific name.
  Constraints: maxGraphemes: 512
- `startTimeSeconds`: string
  Start time in seconds from recording start.
  Constraints: maxGraphemes: 16

**Required:** startTimeSeconds, endTimeSeconds

### carbonEstimationResult (object)

Carbon stock or sequestration estimation.

**Properties:**

- `unit`: string
  Unit of the estimated value (e.g., 'tCO2e', 'tC/ha', 'tCO2e/year').
  Constraints: maxGraphemes: 32
- `value`: string
  Estimated carbon value.
  Constraints: maxGraphemes: 32
- `remarks`: string
  Additional notes about the carbon estimation.
  Constraints: maxGraphemes: 2048
- `methodology`: string
  Estimation methodology used.
  Constraints: maxGraphemes: 512
- `uncertainty`: string
  Uncertainty range (e.g., '±15%').
  Constraints: maxGraphemes: 32
- `estimationType`: string
  Type of carbon estimation.
  Constraints: maxGraphemes: 64

**Required:** estimationType, value, unit


---

## app.gainforest.evaluator.evaluation

An evaluation record published by an evaluator in their own repo. Contains structured, typed results about a target record (or batch of records). Discovered by AppViews via the atproto-accept-evaluators HTTP header pattern.

- **Lexicon Version:** 1

### main (record)

A single evaluation produced by an evaluator service. Exactly one of 'subject' (single target) or 'subjects' (batch) must be provided.

**Record Key:** `tid`

**Properties:**

- `neg`: boolean
  If true, this is a negation/withdrawal of a previous evaluation (like label negation).
- `method`: ref → app.gainforest.evaluator.defs#methodInfo
  Method/model provenance for this specific evaluation (overrides service-level method if set).
- `result`: union → union[app.gainforest.evaluator.defs#speciesIdResult, app.gainforest.evaluator.defs#dataQualityResult, app.gainforest.evaluator.defs#verificationResult, app.gainforest.evaluator.defs#classificationResult, app.gainforest.evaluator.defs#measurementResult, app.gainforest.evaluator.defs#bioacousticsResult, app.gainforest.evaluator.defs#deforestationResult, app.gainforest.evaluator.defs#carbonEstimationResult]
  The typed evaluation result. The $type field determines which result schema is used.
- `subject`: ref → app.gainforest.evaluator.defs#subjectRef
  Single target record being evaluated. Use this OR subjects, not both.
- `subjects`: array
  Batch evaluation: multiple target records sharing the same result. Use this OR subject, not both.
  Constraints: maxLength: 100
  Array of:
    - `item`: ref → app.gainforest.evaluator.defs#subjectRef
- `createdAt`: string (datetime)
  Timestamp of when this evaluation was produced.
- `confidence`: integer
  Overall confidence in this evaluation (0-1000, where 1000 = 100.0%).
  Constraints: min: 0, max: 1000
- `supersedes`: string (at-uri)
  AT-URI of a previous evaluation record that this one supersedes (e.g., model re-run with improved version).
- `evaluationType`: string
  Identifier for the type of evaluation (must match one declared in the evaluator's service record).
  Constraints: maxGraphemes: 64
- `dynamicProperties`: string
  Additional structured data as a JSON string. Escape hatch for experimental result types before they are formalized into the union.
  Constraints: maxGraphemes: 10000

**Required:** evaluationType, createdAt


---

## app.gainforest.evaluator.service

Declaration record published at rkey 'self' to register an account as an evaluator service. Analogous to app.bsky.labeler.service for labelers.

- **Lexicon Version:** 1

### main (record)

An evaluator service declaration. Publish at /app.gainforest.evaluator.service/self to declare this account as an evaluator.

**Record Key:** `literal:self`

**Properties:**

- `policies`: ref → #evaluatorPolicies
  The evaluator's policies including supported evaluation types and access model.
- `createdAt`: string (datetime)
  Timestamp of when this evaluator service was declared.

**Required:** policies, createdAt

### evaluatorPolicies (object)

Policies declaring what this evaluator does and how it operates.

**Properties:**

- `accessModel`: string
  Whether this evaluator requires user subscription ('subscription') or processes all matching records ('open').
  Constraints: maxGraphemes: 64
- `evaluationTypes`: array
  List of evaluation type identifiers this evaluator produces (e.g., 'species-id', 'data-quality').
  Constraints: maxLength: 20
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 64
- `subjectCollections`: array
  NSIDs of record collections this evaluator can evaluate (e.g., 'app.gainforest.dwc.occurrence').
  Constraints: maxLength: 20
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 128
- `evaluationTypeDefinitions`: array
  Detailed definitions for each evaluation type, including human-readable descriptions.
  Constraints: maxLength: 20
  Array of:
    - `item`: ref → #evaluationTypeDefinition

**Required:** evaluationTypes

### evaluationTypeLocale (object)

Localized name and description for an evaluation type.

**Properties:**

- `lang`: string
  Language code (BCP-47, e.g., 'en', 'pt-BR').
  Constraints: maxGraphemes: 16
- `name`: string
  Short human-readable name for this evaluation type.
  Constraints: maxGraphemes: 128
- `description`: string
  Longer description of what this evaluation type does.
  Constraints: maxGraphemes: 2048

**Required:** lang, name, description

### evaluationTypeDefinition (object)

Definition of a single evaluation type produced by this evaluator.

**Properties:**

- `method`: ref → app.gainforest.evaluator.defs#methodInfo
  Default method info for this evaluation type (can be overridden per-evaluation).
- `locales`: array
  Human-readable names and descriptions in various languages.
  Constraints: maxLength: 20
  Array of:
    - `item`: ref → #evaluationTypeLocale
- `identifier`: string
  The evaluation type identifier (must match an entry in evaluationTypes).
  Constraints: maxGraphemes: 64
- `resultType`: string
  The lexicon reference for the result type (e.g., 'app.gainforest.evaluator.defs#speciesIdResult').
  Constraints: maxGraphemes: 128

**Required:** identifier, resultType


---

## app.gainforest.evaluator.subscription

A subscription record published by a user in their own repo to request evaluations from a specific evaluator service. The evaluator detects subscriptions via Jetstream and processes matching records. Deleting this record unsubscribes.

- **Lexicon Version:** 1

### main (record)

User subscription to an evaluator service. Published by the user (not the evaluator) to declare they want evaluations.

**Record Key:** `tid`

**Properties:**

- `createdAt`: string (datetime)
  Timestamp of when this subscription was created.
- `evaluator`: string (did)
  DID of the evaluator service to subscribe to.
- `collections`: array
  Which of the user's record collections should be evaluated (NSIDs). Must be a subset of the evaluator's subjectCollections. If omitted, all supported collections are evaluated.
  Constraints: maxLength: 20
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 128
- `evaluationTypes`: array
  Which evaluation types the user wants. If omitted, all types the evaluator supports are applied.
  Constraints: maxLength: 20
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 64

**Required:** evaluator, createdAt


---

## app.gainforest.organization.defaultSite

- **Lexicon Version:** 1

### main (record)

A declaration of the default site for an organization

**Record Key:** `literal:self`

**Properties:**

- `site`: string (at-uri)
  The reference to the default site record in the PDS
- `createdAt`: string (datetime)
  The date and time of the creation of the record

**Required:** site, createdAt


---

## app.gainforest.organization.getIndexedOrganizations

- **Lexicon Version:** 1

### main (query)

Get all organizations to view initially on map

**Parameters:**


**Output (application/json):**

- `organizations`: array
  Array of:
    - `item`: ref → app.gainforest.common.defs#indexedOrganization


---

## app.gainforest.organization.info

- **Lexicon Version:** 1

### main (record)

A declaration of an organization or project

**Record Key:** `literal:self`

**Properties:**

- `logo`: ref → org.hypercerts.defs#smallImage
  Logo for the organization
- `email`: string
  Contact email for the organization
  Constraints: maxGraphemes: 256
- `country`: string
  The country of the organization or project in two letter code (ISO 3166-1 alpha-2)
  Constraints: minLength: 2, maxLength: 2
- `website`: string (uri)
  The website of the organization or project
  Constraints: maxGraphemes: 512
- `teamSize`: integer
  Number of team members in the organization
  Constraints: min: 1
- `createdAt`: string (datetime)
  The date and time of the creation of the record
- `discordId`: string
  Discord server ID for the organization
  Constraints: maxGraphemes: 64
- `startDate`: string (datetime)
  The start date of the organization or project
- `stripeUrl`: string (uri)
  Donation link for the organization
  Constraints: maxGraphemes: 512
- `coverImage`: ref → org.hypercerts.defs#smallImage
  Cover image for the organization
- `objectives`: array
  The objectives of the organization or project
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 64, enum: [Conservation, Research, Education, Community, Other]
- `visibility`: string
  The visibility of the organization or project in the Green Globe
  Constraints: maxGraphemes: 32, enum: [Public, Unlisted]
- `dataLicense`: string
  Default license for data published by the organization
  Constraints: maxGraphemes: 256
- `displayName`: string
  The name of the organization or project
  Constraints: minLength: 8, maxLength: 255
- `foundedYear`: integer
  Year the organization was founded
  Constraints: min: 1900, max: 2100
- `socialLinks`: array
  Social media links for the organization
  Constraints: maxLength: 10
  Array of:
    - `item`: ref → #socialLink
- `ecosystemTypes`: array
  Types of ecosystems the organization works in
  Constraints: maxLength: 10
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 128
- `dataDownloadUrl`: string (uri)
  URL to download the organization's data
  Constraints: maxGraphemes: 512
- `longDescription`: ref → pub.leaflet.pages.linearDocument
  The long description of the organization or project in richtext
- `dataDownloadInfo`: string
  Description of available data downloads
  Constraints: maxGraphemes: 1024
- `shortDescription`: ref → app.gainforest.common.defs#richtext
  The description of the organization or project
- `focusSpeciesGroups`: array
  Species groups the organization focuses on
  Constraints: maxLength: 20
  Array of:
    - `item`: string
      Constraints: maxGraphemes: 64
- `fundingSourcesDescription`: string
  Description of the organization's funding sources
  Constraints: maxGraphemes: 2048

**Required:** displayName, shortDescription, longDescription, objectives, country, visibility, createdAt

### socialLink (object)

A social media link for an organization

**Properties:**

- `url`: string (uri)
  The URL of the social media profile or page
  Constraints: maxGraphemes: 512
- `platform`: string
  The social media platform
  Constraints: maxGraphemes: 64

**Required:** platform, url


---

## app.gainforest.organization.layer

- **Lexicon Version:** 1

### main (record)

A declaration of a layer for an organization

**Record Key:** `tid`

**Properties:**

- `uri`: string (uri)
  The URI of the layer
  Constraints: maxGraphemes: 2048
- `name`: string
  The name of the site
  Constraints: maxGraphemes: 256
- `type`: string
  The type of the layer
  Constraints: maxGraphemes: 64, enum: [geojson_points, geojson_points_trees, geojson_line, choropleth, choropleth_shannon, raster_tif, tms_tile, heatmap, contour, satellite_overlay]
- `unit`: string
  Unit of measurement for the layer data (e.g., 'species/ha', 'kg C/m²', 'mm/year')
  Constraints: maxGraphemes: 64
- `bounds`: string
  Bounding box as 'west,south,east,north'
  Constraints: maxGraphemes: 128
- `legend`: array
  Legend entries for the layer
  Constraints: maxLength: 20
  Array of:
    - `item`: ref → #legendEntry
- `opacity`: string
  Default opacity (0-1 as string, e.g., '0.7')
  Constraints: maxGraphemes: 8
- `siteRef`: string (at-uri)
  AT-URI reference to the site this layer belongs to
- `category`: string
  Layer category for grouping in UI (e.g., 'Biodiversity', 'Land Cover', 'Climate', 'Infrastructure')
  Constraints: maxGraphemes: 128
- `dataDate`: string
  Date of the data (ISO 8601)
  Constraints: maxGraphemes: 64
- `maxValue`: string
  Maximum value in the data range
  Constraints: maxGraphemes: 32
- `minValue`: string
  Minimum value in the data range
  Constraints: maxGraphemes: 32
- `createdAt`: string (datetime)
  The date and time of the creation of the record
- `isDefault`: boolean
  Whether this layer should be shown by default
- `thumbnail`: ref → app.gainforest.common.defs#imageThumbnail
  Preview thumbnail for the layer
- `colorScale`: string
  Named color scale for continuous data
  Constraints: maxGraphemes: 64
- `dataSource`: string
  Attribution/source of the layer data
  Constraints: maxGraphemes: 512
- `description`: string
  The description of the layer
  Constraints: maxGraphemes: 2048
- `propertyKey`: string
  GeoJSON property key to use for choropleth coloring (e.g., 'species_richness')
  Constraints: maxGraphemes: 128
- `tileMaxZoom`: integer
  Maximum zoom level
  Constraints: min: 0, max: 22
- `tileMinZoom`: integer
  Minimum zoom level
  Constraints: min: 0, max: 22
- `tilePattern`: string
  URL pattern for TMS tiles (e.g., 'https://tiles.example.com/{z}/{x}/{y}.png')
  Constraints: maxGraphemes: 512
- `displayOrder`: integer
  Ordering priority for display
  Constraints: min: 0

**Required:** name, type, uri, createdAt

### legendEntry (object)

A single entry in a layer legend

**Properties:**

- `color`: string
  Color for this legend entry (e.g., '#FF5733')
  Constraints: maxGraphemes: 16
- `label`: string
  Display label for this legend entry
  Constraints: maxGraphemes: 128
- `value`: string
  Optional value associated with this legend entry
  Constraints: maxGraphemes: 64

**Required:** label, color


---
