app.gainforest.common.defs
Schema Diff
+242 -21
1
1
{
2
2
"id": "app.gainforest.common.defs",
3
3
"defs": {
4
4
"uri": {
5
5
"type": "object",
6
6
"required": [
7
7
"uri"
8
8
],
9
9
"properties": {
10
10
"uri": {
11
11
"type": "string",
12
12
"format": "uri",
13
-
"description": "URI to external data",
13
+
"description": "URI to external resource",
14
14
"maxGraphemes": 1024
15
15
}
16
16
},
17
-
"description": "Object containing a URI to external data"
17
+
"description": "Reference to external data via URI"
18
+
},
19
+
"audio": {
20
+
"type": "object",
21
+
"required": [
22
+
"file"
23
+
],
24
+
"properties": {
25
+
"file": {
26
+
"type": "blob",
27
+
"accept": [
28
+
"audio/wav",
29
+
"audio/x-wav",
30
+
"audio/mpeg",
31
+
"audio/mp3",
32
+
"audio/mp4",
33
+
"audio/x-m4a",
34
+
"audio/aac",
35
+
"audio/flac",
36
+
"audio/x-flac",
37
+
"audio/ogg",
38
+
"audio/opus",
39
+
"audio/webm",
40
+
"audio/aiff",
41
+
"audio/x-aiff"
42
+
],
43
+
"maxSize": 104857600,
44
+
"description": "Audio up to 100MB. Supports WAV, MP3, M4A, AAC, FLAC, OGG, Opus, WebM, AIFF."
45
+
}
46
+
},
47
+
"description": "Audio file for bioacoustics, soundscapes, field recordings, species calls"
48
+
},
49
+
"image": {
50
+
"type": "object",
51
+
"required": [
52
+
"file"
53
+
],
54
+
"properties": {
55
+
"file": {
56
+
"type": "blob",
57
+
"accept": [
58
+
"image/jpeg",
59
+
"image/jpg",
60
+
"image/png",
61
+
"image/webp",
62
+
"image/heic",
63
+
"image/heif",
64
+
"image/tiff",
65
+
"image/tif",
66
+
"image/gif",
67
+
"image/bmp",
68
+
"image/svg+xml"
69
+
],
70
+
"maxSize": 20971520,
71
+
"description": "Image up to 20MB. Supports JPEG, PNG, WebP, HEIC (phones), TIFF (scientific), GIF, BMP, SVG."
72
+
}
73
+
},
74
+
"description": "Image file for photos, camera traps, drone stills, scanned documents"
75
+
},
76
+
"video": {
77
+
"type": "object",
78
+
"required": [
79
+
"file"
80
+
],
81
+
"properties": {
82
+
"file": {
83
+
"type": "blob",
84
+
"accept": [
85
+
"video/mp4",
86
+
"video/quicktime",
87
+
"video/x-msvideo",
88
+
"video/webm",
89
+
"video/x-matroska",
90
+
"video/mpeg",
91
+
"video/3gpp",
92
+
"video/3gpp2"
93
+
],
94
+
"maxSize": 104857600,
95
+
"description": "Video up to 100MB. Supports MP4, MOV, AVI, WebM, MKV, MPEG, 3GP."
96
+
}
97
+
},
98
+
"description": "Video file for camera traps, drone footage, underwater video, behavioral observations"
99
+
},
100
+
"dataFile": {
101
+
"type": "object",
102
+
"required": [
103
+
"file"
104
+
],
105
+
"properties": {
106
+
"file": {
107
+
"type": "blob",
108
+
"accept": [
109
+
"text/csv",
110
+
"text/tab-separated-values",
111
+
"application/json",
112
+
"application/ld+json",
113
+
"application/xml",
114
+
"text/xml",
115
+
"application/vnd.ms-excel",
116
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
117
+
"application/vnd.oasis.opendocument.spreadsheet"
118
+
],
119
+
"maxSize": 52428800,
120
+
"description": "Data file up to 50MB. Supports CSV, TSV, JSON, JSON-LD, XML, XLS, XLSX, ODS."
121
+
}
122
+
},
123
+
"description": "Structured data file for observations, measurements, exports"
18
124
},
125
+
"document": {
126
+
"type": "object",
127
+
"required": [
128
+
"file"
129
+
],
130
+
"properties": {
131
+
"file": {
132
+
"type": "blob",
133
+
"accept": [
134
+
"application/pdf",
135
+
"text/plain",
136
+
"text/markdown",
137
+
"text/html",
138
+
"application/rtf",
139
+
"application/msword",
140
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
141
+
],
142
+
"maxSize": 20971520,
143
+
"description": "Document up to 20MB. Supports PDF, TXT, Markdown, HTML, RTF, DOC, DOCX."
144
+
}
145
+
},
146
+
"description": "Document file for reports, field notes, permits, publications"
147
+
},
148
+
"gpsTrack": {
149
+
"type": "object",
150
+
"required": [
151
+
"file"
152
+
],
153
+
"properties": {
154
+
"file": {
155
+
"type": "blob",
156
+
"accept": [
157
+
"application/gpx+xml",
158
+
"application/vnd.google-earth.kml+xml",
159
+
"application/vnd.google-earth.kmz",
160
+
"application/geo+json",
161
+
"application/json"
162
+
],
163
+
"maxSize": 10485760,
164
+
"description": "GPS track up to 10MB. Supports GPX, KML, KMZ, GeoJSON."
165
+
}
166
+
},
167
+
"description": "GPS track file for transects, survey routes, patrol paths"
168
+
},
19
169
"largeBlob": {
20
170
"type": "object",
21
171
"required": [
22
172
"blob"
23
173
],
24
174
"properties": {
25
175
"blob": {
26
176
"type": "blob",
27
177
"accept": [
28
178
"*/*"
29
179
],
30
180
"maxSize": 104857600,
31
-
"description": "Blob to external data (up to 100MB)"
181
+
"description": "Any file up to 100MB"
32
182
}
33
183
},
34
-
"description": "Object containing a blob to external data"
184
+
"description": "Generic blob up to 100MB (fallback for any file type)"
35
185
},
36
186
"smallBlob": {
37
187
"type": "object",
38
188
"required": [
39
189
"blob"
40
190
],
41
191
"properties": {
42
192
"blob": {
43
193
"type": "blob",
44
194
"accept": [
45
195
"*/*"
46
196
],
47
197
"maxSize": 10485760,
48
-
"description": "Blob to external data (up to 10MB)"
198
+
"description": "Any file up to 10MB"
199
+
}
200
+
},
201
+
"description": "Generic blob up to 10MB (fallback for any file type)"
202
+
},
203
+
"geospatial": {
204
+
"type": "object",
205
+
"required": [
206
+
"file"
207
+
],
208
+
"properties": {
209
+
"file": {
210
+
"type": "blob",
211
+
"accept": [
212
+
"application/geo+json",
213
+
"application/json",
214
+
"application/vnd.google-earth.kml+xml",
215
+
"application/vnd.google-earth.kmz",
216
+
"application/geopackage+sqlite3",
217
+
"application/x-shapefile",
218
+
"application/zip",
219
+
"image/tiff",
220
+
"image/geotiff"
221
+
],
222
+
"maxSize": 104857600,
223
+
"description": "Geospatial data up to 100MB. Supports GeoJSON, KML, KMZ, GeoPackage, Shapefile (zipped), GeoTIFF."
49
224
}
50
225
},
51
-
"description": "Object containing a blob to external data"
226
+
"description": "Geospatial data file for maps, boundaries, habitat layers"
52
227
},
53
-
"largeImage": {
228
+
"sensorData": {
54
229
"type": "object",
55
230
"required": [
56
-
"image"
231
+
"file"
57
232
],
58
233
"properties": {
59
-
"image": {
234
+
"file": {
60
235
"type": "blob",
61
236
"accept": [
237
+
"text/csv",
238
+
"application/json",
239
+
"text/plain",
240
+
"application/x-netcdf",
241
+
"application/x-hdf5"
242
+
],
243
+
"maxSize": 52428800,
244
+
"description": "Sensor data up to 50MB. Supports CSV, JSON, TXT, NetCDF, HDF5."
245
+
}
246
+
},
247
+
"description": "Sensor data file for environmental monitoring (temperature, humidity, light, etc.)"
248
+
},
249
+
"geneticData": {
250
+
"type": "object",
251
+
"required": [
252
+
"file"
253
+
],
254
+
"properties": {
255
+
"file": {
256
+
"type": "blob",
257
+
"accept": [
258
+
"text/x-fasta",
259
+
"application/x-fasta",
260
+
"text/x-fastq",
261
+
"application/x-fastq",
262
+
"text/plain",
263
+
"text/csv",
264
+
"application/json"
265
+
],
266
+
"maxSize": 104857600,
267
+
"description": "Genetic data up to 100MB. Supports FASTA, FASTQ, CSV, JSON."
268
+
}
269
+
},
270
+
"description": "Genetic/genomic data file for eDNA, barcoding, sequencing results"
271
+
},
272
+
"spectrogram": {
273
+
"type": "object",
274
+
"required": [
275
+
"file"
276
+
],
277
+
"properties": {
278
+
"file": {
279
+
"type": "blob",
280
+
"accept": [
281
+
"image/png",
62
282
"image/jpeg",
63
283
"image/jpg",
64
-
"image/png",
65
284
"image/webp"
66
285
],
67
-
"maxSize": 10485760,
68
-
"description": "Image (up to 10MB)"
286
+
"maxSize": 5242880,
287
+
"description": "Spectrogram image up to 5MB"
69
288
}
70
289
},
71
-
"description": "Object containing a large image"
290
+
"description": "Spectrogram image - visual representation of audio frequency content"
72
291
},
73
-
"smallImage": {
292
+
"imageThumbnail": {
74
293
"type": "object",
75
294
"required": [
76
-
"image"
295
+
"file"
77
296
],
78
297
"properties": {
79
-
"image": {
298
+
"file": {
80
299
"type": "blob",
81
300
"accept": [
82
301
"image/jpeg",
83
302
"image/jpg",
84
303
"image/png",
85
304
"image/webp"
86
305
],
87
-
"maxSize": 5242880,
88
-
"description": "Image (up to 5MB)"
306
+
"maxSize": 1048576,
307
+
"description": "Thumbnail image up to 1MB"
89
308
}
90
309
},
91
-
"description": "Object containing a small image"
310
+
"description": "Small image for thumbnails and previews"
92
311
},
93
312
"indexedOrganization": {
94
313
"type": "object",
95
314
"required": [
96
315
"id",
97
316
"name"
98
317
],
99
318
"properties": {
100
319
"id": {
101
320
"type": "string",
102
321
"format": "uri",
103
322
"description": "The URI of the organization"
104
323
},
105
324
"name": {
106
325
"type": "string",
107
326
"description": "The name of the organization"
108
327
}
109
-
}
328
+
},
329
+
"description": "Reference to an indexed organization"
110
330
}
111
331
},
112
332
"$type": "com.atproto.lexicon.schema",
113
-
"lexicon": 1
333
+
"lexicon": 1,
334
+
"description": "Shared type definitions for biodiversity and environmental data collection"
114
335
}