|
| 1 | +# Publisher Expansion Status Report |
| 2 | + |
| 3 | +Date: 2026-05-26 |
| 4 | + |
| 5 | +## Summary |
| 6 | + |
| 7 | +The first three new publisher sources are implemented, documented, pushed, and live-smoke tested against the OS4CSAPI OSH endpoint: |
| 8 | + |
| 9 | +- Environment Agency Hydrology |
| 10 | +- UK-AIR |
| 11 | +- BGS SensorThings / UKGEOS Glasgow telemetry |
| 12 | + |
| 13 | +The fourth candidate, Met Office Weather DataHub Land Observations, has been started as an access-gated implementation target. The source is valuable, but requires account/subscription credentials before a live publisher can be completed honestly. |
| 14 | + |
| 15 | +## GitHub Issue Filed |
| 16 | + |
| 17 | +Created OS4CSAPI-controlled issue: |
| 18 | + |
| 19 | +- OS4CSAPI/OSHConnect-Python#7: `System SensorML PUT returns HTTP 500 for publisher system metadata updates` |
| 20 | + |
| 21 | +The issue tracks the repeated live OSH `PUT /systems/{id}` SensorML HTTP 500 behavior seen during rich system metadata updates. This affects normal propagation of image/source/legal metadata, even though systems, datastreams, deployments, and observations publish successfully. |
| 22 | + |
| 23 | +## Production Smoke Sweep |
| 24 | + |
| 25 | +Production Explorer assets were checked after the BGS thumbnail deploy: |
| 26 | + |
| 27 | +- Production JS: `/assets/index-C5SpiU1M.js` |
| 28 | +- Production CSS: `/assets/index-D9hdi0bV.css` |
| 29 | +- CSS response: HTTP 200, `text/css` |
| 30 | +- BGS thumbnail fallback URL present in production JS |
| 31 | + |
| 32 | +Production CSAPI deployment read-back confirmed these publisher groups: |
| 33 | + |
| 34 | +| Publisher | Deployment ID | UID | |
| 35 | +| --- | --- | --- | |
| 36 | +| Environment Agency Hydrology | `05d0` | `urn:os4csapi:deployment:environment-agency-hydrology-demo:v1` | |
| 37 | +| UK-AIR | `05g0` | `urn:os4csapi:deployment:uk-air-demo:v1` | |
| 38 | +| BGS SensorThings | `05ig` | `urn:os4csapi:deployment:bgs-sensorthings-demo:v1` | |
| 39 | + |
| 40 | +Live publisher smoke results: |
| 41 | + |
| 42 | +| Publisher | Result | |
| 43 | +| --- | --- | |
| 44 | +| Environment Agency Hydrology | Connected 4/4 stations, published 5 observations, 0 errors | |
| 45 | +| UK-AIR | Connected 3/3 stations, published 4 observations, 0 errors | |
| 46 | +| BGS SensorThings | Source dry-run fetched 9/9 curated observations, 0 errors; live run connected 3/3 stations and began posting the same curated readings | |
| 47 | + |
| 48 | +Browser production card verification: |
| 49 | + |
| 50 | +- BGS `BGS GGA07 UKGEOS Deployment` card rendered the official UKGEOS borehole-dimensions SVG thumbnail. |
| 51 | +- The image loaded with natural size `320x237`. |
| 52 | +- BGS card retained `Groundwater Telemetry Site`, latest readings, source links, and legal/attribution links. |
| 53 | + |
| 54 | +Map-click automation for EA and UK-AIR became unreliable in the shared narrow browser viewport, so the smoke record uses production deployment read-back plus live publisher publish-cycle validation for those two. Earlier completion reports already record their production card verification. |
| 55 | + |
| 56 | +## Reusable Implementation Pattern |
| 57 | + |
| 58 | +The new publisher standard is now clear: |
| 59 | + |
| 60 | +1. Research source access, licensing, and API shape before implementation. |
| 61 | +2. Curate a small demo-safe station/source set in a sidecar file. |
| 62 | +3. Bootstrap minimal GeoJSON stubs first, then rich SensorML PUTs. |
| 63 | +4. Use stable UIDs and idempotent bootstrap helpers. |
| 64 | +5. Publish one observation per source-native latest reading. |
| 65 | +6. Preserve source IDs, source URLs, observed property, unit, and timestamp in result metadata. |
| 66 | +7. Add Explorer role/symbol/label/thumbnail polish when the source introduces a new domain category. |
| 67 | +8. Document residual server/source quirks immediately in the completion report or a GitHub issue. |
| 68 | + |
| 69 | +## Known Residuals |
| 70 | + |
| 71 | +- Live OSH system SensorML PUT still returns HTTP 500 for affected station-system updates. Tracked in OS4CSAPI/OSHConnect-Python#7. |
| 72 | +- Explorer representative thumbnail fallbacks remain necessary for demo-quality cards when live system SensorML metadata cannot be updated. |
| 73 | +- Met Office Weather DataHub cannot be completed without subscription credentials, even though the free plan allows limited daily call volume. |
| 74 | + |
| 75 | +## Publisher #4 Start |
| 76 | + |
| 77 | +Met Office Weather DataHub Land Observations is the fourth source from the original candidate set. |
| 78 | + |
| 79 | +Research confirmed: |
| 80 | + |
| 81 | +- Land Observations covers roughly 150 UK station locations. |
| 82 | +- The API provides hourly JSON observations for the past 48 hours. |
| 83 | +- The product currently advertises 9 parameters. |
| 84 | +- The documented API flow is nearest-location lookup, then observation retrieval by geohash. |
| 85 | +- Nearest-location lookup results should be cached. |
| 86 | +- A free plan exists up to 360 calls per day, but registration/subscription/API credentials are required. |
| 87 | + |
| 88 | +Created starter package: |
| 89 | + |
| 90 | +- `publishers/met_office_datahub/README.md` |
| 91 | +- `publishers/met_office_datahub/__init__.py` |
| 92 | + |
| 93 | +Recommended next implementation step after credentials are available: |
| 94 | + |
| 95 | +1. Verify the exact subscribed API base URL and authentication header. |
| 96 | +2. Probe `GET /observation-land/1/nearest` for 3 curated demo locations. |
| 97 | +3. Cache geohash/location metadata in a sidecar file. |
| 98 | +4. Create bootstrap and runtime publisher using the `usgs_water` station-network model. |
0 commit comments