full diff

app.gainforest.ac.audio

gainforest.earth +20 −2
From
bafyreihhiocqerm4umqa5wvcgs27jmcydybpvcejmq46bohexleoowzroy indexed 2026-04-29 14:33 UTC View this version
To
bafyreigavot2lg2ov27ku3ui5hd5ghyptdp567qpyn3jco3ulw5h2vh46y indexed 2026-07-26 20:13 UTC View this version

Compatibility

breaking 1 breaking change, 4 non-breaking changes.

Breaking changes (1)
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "app.gainforest.ac.audio:body", src: "app.gainforest.ac.audio:body", tgt: "app.gainforest.ac.audio:body.blob", kind: "prop", name: Some("blob") }
Non-breaking changes (4)
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.ac.audio:body.accessUri" }
  • AddedVertex AddedVertex { vertex_id: "app.gainforest.ac.audio:body.variantLiteral" }
  • AddedEdge AddedEdge { src: "app.gainforest.ac.audio:body", tgt: "app.gainforest.ac.audio:body.accessUri", kind: "prop", name: Some("accessUri") }
  • AddedEdge AddedEdge { src: "app.gainforest.ac.audio:body", tgt: "app.gainforest.ac.audio:body.variantLiteral", kind: "prop", name: Some("variantLiteral") }

Migration guidance

Added

  • AddedVertex { vertex_id: "app.gainforest.ac.audio:body.accessUri" }
  • AddedVertex { vertex_id: "app.gainforest.ac.audio:body.variantLiteral" }

Notes

  • Breaking: RequiredEdgeRemoved { vertex_id: "app.gainforest.ac.audio:body", src: "app.gainforest.ac.audio:body", tgt: "app.gainforest.ac.audio:body.blob", kind: "prop", name: Some("blob") }
  • Non-breaking: AddedEdge { src: "app.gainforest.ac.audio:body", tgt: "app.gainforest.ac.audio:body.accessUri", kind: "prop", name: Some("accessUri") }
  • Non-breaking: AddedEdge { src: "app.gainforest.ac.audio:body", tgt: "app.gainforest.ac.audio:body.variantLiteral", kind: "prop", name: Some("variantLiteral") }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "description": "An audio recording record with technical metadata and optional links to occurrence, deployment, and site records.",
66 "key": "tid",
77 "record": {
88 "properties": {
9 "accessUri": {
10 "description": "URI to the original full-resolution audio resource (e.g. object storage URL). When present, the PDS blob is a compressed variant and this points to the archival original. Aligns with AC ac:accessURI.",
11 "format": "uri",
12 "maxGraphemes": 2048,
13 "type": "string"
14 },
915 "blob": {
10 "description": "The audio file blob stored on the PDS.",
16 "description": "The audio file blob stored on the PDS. May be a compressed preview variant when the archival original is referenced via accessUri. At least one of blob or accessUri should be present.",
1117 "ref": "app.gainforest.common.defs#audio",
1218 "type": "ref"
1319 },
1420 "createdAt": {
1521 "description": "Timestamp of record creation in the ATProto PDS.",
1622 "format": "datetime",
1723 "type": "string"
1824 },
1925 "deploymentRef": {
2026 "description": "AT-URI of the ac.deployment record describing the recording device setup (device model, gain, location, schedule, etc.).",
2127 "format": "at-uri",
2228 "type": "string"
2329 },
2430 "description": {
2531 "description": "A longer human-readable description of the audio recording content.",
2632 "ref": "app.gainforest.common.defs#richtext",
2733 "type": "ref"
2834 },
2935 "license": {
3036 "description": "License for this recording (e.g., CC-BY-4.0, CC0-1.0). Aligns with AC dcterms:rights.",
3137 "maxGraphemes": 256,
3238 "type": "string"
3339 },
3440 "metadata": {
3541 "description": "Technical audio metadata (codec, sample rate, duration, frequency bounds, etc.).",
3642 "ref": "#metadata",
3743 "type": "ref"
3844 },
3945 "name": {
4046 "description": "A short human-readable name or label for this audio recording.",
4147 "maxGraphemes": 256,
4248 "type": "string"
4349 },
4450 "occurrenceRef": {
4551 "description": "AT-URI of the dwc.occurrence record this audio is evidence for. Use when this recording documents a specific species detection or biodiversity observation.",
4652 "format": "at-uri",
4753 "type": "string"
4854 },
4955 "recordedBy": {
5056 "description": "Name of the person or agent who made the recording. Aligns with AC dc:creator. For automated deployments, this is the person who deployed the device.",
5157 "maxGraphemes": 512,
5258 "type": "string"
5359 },
5460 "siteRef": {
5561 "description": "AT-URI of the organization site record where this audio was captured.",
5662 "format": "at-uri",
5763 "type": "string"
5864 },
5965 "spectrogram": {
6066 "description": "Spectrogram image of the recording (visual frequency-time representation).",
6167 "ref": "app.gainforest.common.defs#spectrogram",
6268 "type": "ref"
6369 },
6470 "tags": {
6571 "description": "Freeform tags for the recording (e.g., 'dawn-chorus', 'rain', 'chainsaw', 'anthropogenic-noise'). Aligns with AC ac:tag.",
6672 "items": {
6773 "maxGraphemes": 64,
6874 "type": "string"
6975 },
7076 "maxLength": 20,
7177 "type": "array"
7278 },
7379 "thumbnail": {
7480 "description": "Thumbnail image for display in list views.",
7581 "ref": "app.gainforest.common.defs#imageThumbnail",
7682 "type": "ref"
83 },
84 "variantLiteral": {
85 "description": "AC variant describing the quality/size of the PDS blob relative to the archival original. Aligns with AC ac:variant.",
86 "knownValues": [
87 "Thumbnail",
88 "Lower Quality",
89 "Medium Quality",
90 "Good Quality",
91 "Best Quality",
92 "Offline"
93 ],
94 "maxGraphemes": 64,
95 "type": "string"
7796 }
7897 },
7998 "required": [
80 "blob",
8199 "metadata",
82100 "createdAt"
83101 ],
84102 "type": "object"
85103 },
86104 "type": "record"
87105 },
88106 "metadata": {
89107 "description": "Technical audio metadata. These are properties of the audio file itself, not the recording context (location, weather, device). Aligns with AC Resource Creation Vocabulary and Music Ontology terms.",
90108 "properties": {
91109 "bitDepth": {
92110 "description": "Bits per sample (e.g., 16, 24, 32).",
93111 "maximum": 64,
94112 "minimum": 8,
95113 "type": "integer"
96114 },
97115 "channels": {
98116 "description": "Number of audio channels (1 = mono, 2 = stereo).",
99117 "minimum": 1,
100118 "type": "integer"
101119 },
102120 "codec": {
103121 "description": "Audio codec (e.g., 'PCM', 'FLAC', 'MP3', 'AAC').",
104122 "maxGraphemes": 32,
105123 "type": "string"
106124 },
107125 "duration": {
108126 "description": "Duration of the recording in seconds (e.g., '300.0').",
109127 "maxGraphemes": 32,
110128 "type": "string"
111129 },
112130 "fileFormat": {
113131 "description": "File format (e.g., 'WAV', 'FLAC', 'MP3'). Aligns with AC dc:format.",
114132 "maxGraphemes": 32,
115133 "type": "string"
116134 },
117135 "fileSizeBytes": {
118136 "description": "File size in bytes.",
119137 "minimum": 0,
120138 "type": "integer"
121139 },
122140 "filterHighPassHz": {
123141 "description": "High-pass filter cutoff frequency in Hz applied during or after recording. Aligns with AC ac:filterHighPass.",
124142 "minimum": 0,
125143 "type": "integer"
126144 },
127145 "filterLowPassHz": {
128146 "description": "Low-pass filter cutoff frequency in Hz applied during or after recording. Aligns with AC ac:filterLowPass.",
129147 "minimum": 0,
130148 "type": "integer"
131149 },
132150 "maxFrequencyHz": {
133151 "description": "Highest frequency present in the recording in Hz. Aligns with AC ac:freqHigh.",
134152 "minimum": 0,
135153 "type": "integer"
136154 },
137155 "minFrequencyHz": {
138156 "description": "Lowest frequency present in the recording in Hz. Aligns with AC ac:freqLow.",
139157 "minimum": 0,
140158 "type": "integer"
141159 },
142160 "recordedAt": {
143161 "description": "Date and time the audio was captured (start of recording). Aligns with AC xmp:CreateDate.",
144162 "format": "datetime",
145163 "type": "string"
146164 },
147165 "sampleRate": {
148166 "description": "Sample rate in Hz (e.g., 44100, 48000, 384000 for ultrasonic). Aligns with AC mo:sample_rate.",
149167 "minimum": 1,
150168 "type": "integer"
151169 },
152170 "signalToNoiseRatio": {
153171 "description": "Signal-to-noise ratio in dB.",
154172 "maxGraphemes": 32,
155173 "type": "string"
156174 }
157175 },
158176 "required": [
159177 "channels",
160178 "duration",
161179 "sampleRate",
162180 "recordedAt"
163181 ],
164182 "type": "object"
165183 }
166184 },
167185 "description": "Generic audio resource record aligned with the TDWG Audiovisual Core standard (http://www.tdwg.org/standards/638). Represents a single audio recording (field recording, soundscape, species call) with its technical metadata. Links to a dwc.occurrence as evidence and optionally to an ac.deployment describing the recording device setup. Does not carry location, weather, habitat, or device fields — those belong on dwc.event, dwc.occurrence, or ac.deployment respectively.",
168186 "id": "app.gainforest.ac.audio",
169187 "lexicon": 1
170188}

Compare other versions