Summary
When a system is created or updated via PUT /systems/{id} with a SensorML body containing a documents array, the Go server accepts the request (HTTP 200/201) but silently drops the documents field. Subsequent GET /systems/{id}?resultFormat=sml responses contain identifiers, classifiers, contacts, and position — but no documents array at all.
This breaks any client that depends on SensorML document references (photos, datasheets, manuals, specification links).
Steps to Reproduce
- POST/PUT a system with SensorML containing a
documents array:
{
"type": "PhysicalSystem",
"uid": "urn:example:system:test",
"name": "Test System",
"documents": [
{
"role": "http://dbpedia.org/resource/Photograph",
"name": "Station Hardware Photo",
"link": {
"href": "https://www.example.com/images/station.jpg",
"type": "image/jpeg"
}
},
{
"role": "http://www.opengis.net/def/role/OGC/0/specificationDocument",
"name": "Station Datasheet",
"link": {
"href": "https://www.example.com/docs/station_spec.pdf",
"type": "application/pdf"
}
}
]
}
- GET the system back with
?resultFormat=sml
- Observe: the
documents field is completely absent from the response
Actual Result
{
"type": "PhysicalSystem",
"uid": "urn:os4csapi:system:ndbc:station:41009:buoyfeed",
"name": "Buoy 41009 Feed",
"identifiers": [...],
"classifiers": [...],
"contacts": [...],
"position": {...}
// ← documents field is MISSING
}
Expected Result
{
"type": "PhysicalSystem",
"uid": "urn:os4csapi:system:ndbc:station:41009:buoyfeed",
"name": "Buoy 41009 Feed",
"identifiers": [...],
"classifiers": [...],
"contacts": [...],
"position": {...},
"documents": [
{
"role": "http://dbpedia.org/resource/Photograph",
"name": "Station Hardware Photo",
"link": {
"href": "https://www.ndbc.noaa.gov/images/stations/41009.jpg",
"type": "image/jpeg"
}
}
]
}
Impact
- CSAPI Explorer (and any SensorML-aware client) uses
documents to extract system thumbnail photos, datasheets, and external reference links
- All 37 systems on the Go server are missing their photo thumbnails despite the publisher sending correct SensorML with
documents on bootstrap
- This affects every system type (NDBC, CO-OPS, USGS, NWS, ISS, etc.)
Likely Location
The Go server's SensorML model struct probably doesn't include a Documents field, so the JSON unmarshaller silently drops it on ingest. Alternatively the serializer omits it on output.
Relevant SensorML spec reference: OGC SensorML 2.1, AbstractProcess → documentation / DocumentList
Environment
- Server version: connected-systems-go (latest main)
- Deployment: Oracle VM at
129.80.248.53:8282, Caddy route /csapi-go/*
- Confirmed on: 2026-04-17
Related Issues
Summary
When a system is created or updated via
PUT /systems/{id}with a SensorML body containing adocumentsarray, the Go server accepts the request (HTTP 200/201) but silently drops thedocumentsfield. SubsequentGET /systems/{id}?resultFormat=smlresponses containidentifiers,classifiers,contacts, andposition— but nodocumentsarray at all.This breaks any client that depends on SensorML document references (photos, datasheets, manuals, specification links).
Steps to Reproduce
documentsarray:{ "type": "PhysicalSystem", "uid": "urn:example:system:test", "name": "Test System", "documents": [ { "role": "http://dbpedia.org/resource/Photograph", "name": "Station Hardware Photo", "link": { "href": "https://www.example.com/images/station.jpg", "type": "image/jpeg" } }, { "role": "http://www.opengis.net/def/role/OGC/0/specificationDocument", "name": "Station Datasheet", "link": { "href": "https://www.example.com/docs/station_spec.pdf", "type": "application/pdf" } } ] }?resultFormat=smldocumentsfield is completely absent from the responseActual Result
{ "type": "PhysicalSystem", "uid": "urn:os4csapi:system:ndbc:station:41009:buoyfeed", "name": "Buoy 41009 Feed", "identifiers": [...], "classifiers": [...], "contacts": [...], "position": {...} // ← documents field is MISSING }Expected Result
{ "type": "PhysicalSystem", "uid": "urn:os4csapi:system:ndbc:station:41009:buoyfeed", "name": "Buoy 41009 Feed", "identifiers": [...], "classifiers": [...], "contacts": [...], "position": {...}, "documents": [ { "role": "http://dbpedia.org/resource/Photograph", "name": "Station Hardware Photo", "link": { "href": "https://www.ndbc.noaa.gov/images/stations/41009.jpg", "type": "image/jpeg" } } ] }Impact
documentsto extract system thumbnail photos, datasheets, and external reference linksdocumentson bootstrapLikely Location
The Go server's SensorML model struct probably doesn't include a
Documentsfield, so the JSON unmarshaller silently drops it on ingest. Alternatively the serializer omits it on output.Relevant SensorML spec reference: OGC SensorML 2.1,
AbstractProcess → documentation/DocumentListEnvironment
129.80.248.53:8282, Caddy route/csapi-go/*Related Issues
?uid=query parameter is silently ignored — server returns all resources unfiltered #7 —?uid=filter silently ignored