Datasets API
These routes cover raster registration, CSW-assisted ingestion, metadata repair, thumbnails, and point-query helpers.
Listing and Catalog Inspection
| Method | Path | Purpose | Auth |
|---|---|---|---|
GET | /datasets | list datasets with pagination and search filters | yes |
POST | /datasets/csw-search | query a CSW catalogue with a structured JSON payload and paginated response | no |
GET | /datasets/duplicates | find duplicate datasets by hash, identifier, or source linkage | yes |
GET | /datasets/hyspex-missing-variants | report HySpex identifiers missing RGB or Z variants | yes |
Registry Maintenance
| Method | Path | Purpose | Auth |
|---|---|---|---|
POST | /datasets/rehash | recompute SHA-256 hashes for all registered datasets | yes |
POST | /datasets/prune-missing | remove manifest entries whose source files are gone | yes |
POST | /datasets/resync | rebuild the manifest from files on disk and optionally refresh CSW metadata | yes |
DELETE | /thumbnails | clear cached thumbnail files and memory entries | yes |
Dataset Registration
| Method | Path | Purpose | Auth |
|---|---|---|---|
POST | /datasets | upload a GeoTIFF with multipart form data | yes |
POST | /datasets/from-string | register a GeoTIFF that already exists in a mounted runtime path | yes |
POST | /datasets/nbs-sentinel-quicklook-csw | query the NBS Sentinel CSW by identifier, detect platform, register quicklook GeoTIFFs, and return combined WMS/WFS service metadata | no |
POST | /datasets/nbs-sentinel-nc-csw | compatibility route for Sentinel CSW records: for S1 it prefers direct quicklook GeoTIFF registration and automatically falls back to SAFE processing when quicklooks are missing; non-S1 records keep the NC flow | no |
POST | /datasets/nbs-sentinel-safe-csw | query the NBS Sentinel CSW by identifier and prepare or submit SAFE-based Sentinel pipelines using mounted local archives: S1 amplitude quicklooks or S2 RGB product combinations | no |
POST | /datasets/sentinel-csw | resolve one Sentinel record from CSW and register discovered GeoTIFFs | no |
POST | /datasets/hyspex-csw | build or optionally submit an nc-to-geotiff job from a HySpex CSW child record | yes |
POST | /datasets/hyspex-csw-parent | synchronously resolve and queue child jobs from one HySpex parent record | yes |
POST | /datasets/from-point-cloud-config | create a GeoTIFF from point-cloud config and register it | delegated async route also exists |
POST | /datasets/from-nc-config | alias for point-cloud config conversion workflow | delegated async route also exists |
Dataset Inspection and Derived Assets
| Method | Path | Purpose | Auth |
|---|---|---|---|
GET | /datasets/{dataset_id}/sample | sample raster values at one lon/lat | no |
GET | /datasets/{dataset_id}/extent.geojson | return the dataset footprint as GeoJSON | no |
GET | /datasets/{dataset_id}/thumbnail.png | return a generated thumbnail PNG | no |
DELETE | /datasets/{dataset_id} | remove the dataset and optionally its terrain assets | yes |
POST | /datasets/{dataset_id}/seed-mapcache | queue cache seeding for one dataset | no |
POST | /thumbnails/generate | pre-generate and cache thumbnail images for one or more datasets | no |
NetCDF and OPeNDAP Point Queries
| Method | Path | Purpose | Auth |
|---|---|---|---|
POST | /datasets/{dataset_id}/query-point | query one point against the dataset-linked NetCDF source | no |
POST | /datasets/{dataset_id}/query-points | batch query points against the dataset-linked NetCDF source | no |
POST | /datasets/query-point | query one point against an arbitrary NetCDF URL | no |
POST | /datasets/query-points | batch query points against an arbitrary NetCDF URL | no |
NBS Sentinel route responses include a profile object derived from the detected platform. Profiles can provide per-platform metadata defaults and point-query variable defaults. The built-in S1 family profile currently defaults SAFE fallback preparation and dataset-linked point queries to Amplitude_VH and Amplitude_VV when the caller does not supply variables explicitly.
Structured CSW Search
POST /datasets/csw-search accepts a typed JSON body and builds an AND-combined FES filter from whichever fields are present.
Supported request fields:
endpoint: optional CSW endpoint overridekeywords: list of keyword strings, matched againstdc:subjectstart_datetime: lower bound applied toapiso:TempExtent_beginend_datetime: upper bound applied toapiso:TempExtent_endbbox:{ minx, miny, maxx, maxy }, encoded as a CRS84 bounding box filteranytext: wildcard match againstcsw:AnyTextlimit: response page size, default25, max100offset: zero-based response offset, default0
Example request:
{
"endpoint": "https://nbs.csw.met.no",
"keywords": ["sentinel", "s2"],
"start_datetime": "2026-01-01T00:00:00Z",
"end_datetime": "2026-01-31T23:59:59Z",
"bbox": {
"minx": 10.0,
"miny": 60.0,
"maxx": 11.0,
"maxy": 61.0
},
"anytext": "ice",
"limit": 20,
"offset": 0
}
The response is paginated and includes:
total: total records reported by the CSW servicereturned: number of records in the current pagelimitandoffset: echoed request pagination valuesnext_offsetandprev_offset: cursors for the next and previous pagesconstraints_applied: number of top-level FES constraints sent to CSWitems: normalized CSW records including identifier, title, abstract, subjects, bbox, and references
Style Output
| Method | Path | Purpose | Auth |
|---|---|---|---|
GET | /styles/{dataset_id}/{style_id}.sld | return an SLD document for a dataset/style pairing | no |
Notes
- Upload and registration routes attempt duplicate detection to avoid re-registering identical GeoTIFFs.
- HySpex child ingestion can be preview-only or submit jobs immediately, depending on parameters.
POST /datasets/hyspex-csw-parentis useful for synchronous inspection or small batches, but large campaigns are better driven through the async jobs endpoint family.