GeoDatasets API

Enables programmatic control over GeoDataset layers. GeoDatasets are GeoJSON files uploaded and managed by MMGIS and stored in MMGIS’ Postgres/PostGIS database.

Root path: /api/geodatasets

Contents


API Tokens

To use the Configure API through HTTP requests, an API Token must be used for authentication.

  1. Login to the configuration page /configure
  2. Navigate to the “API Tokens” page
  3. Set a name and expiration time if desired and click “Generate New Token”
  4. Copy the newly generated token (you will not see it in full again)
  5. When interacting with the Configure API, use the header Authorization:Bearer <token>

Endpoints

GET /get

Queries and geodataset and returns geojson or vectortiles.

Parameter Type Required Default Description
layer string true N/A Geodataset layer name
type string true N/A Format to return. ‘geojson’ or ‘mvt’ (Mapbox Vector Tiles)
minx number false N/A Minimum X (lng) value for a bounding-box extent query
miny number false N/A Minimum Y (lat) value for a bounding-box extent query
maxx number false N/A Maximum X (lng) value for a bounding-box extent query
maxy number false N/A Maximum Y (lat) value for a bounding-box extent query
startProp string false N/A Name of key of feature’s start time property
starttime time false N/A Start time of time window to query
endProp string false N/A Name of key of feature’s end time property
endtime time false N/A End time of time window to query
x integer false N/A If type=mvt, x of tile to get
y integer false N/A If type=mvt, y of tile to get
z integer false N/A If type=mvt, z of tile to get

Example

curl -X GET -H "Authorization:Bearer <token>" http://localhost:8889/api/geodatasets/get?layer=my_geodataset&type=geojson&maxy=45.02695045318546&maxx=-77.23388671875&miny=29.70713934813417&minx=-123.77197265625001&starttime=2022-12-19T03%3A25%3A12.335Z&startProp=start_time&endtime=2024-03-13T21%3A26%3A22.090Z&endProp=end_time


GET /get/:layer

See GET /get. layer parameter can be passed in through URL instead.

Example

curl -X GET -H "Authorization:Bearer <token>" http://localhost:8889/api/geodatasets/get/my_geodataset?type=geojson&maxy=45.02695045318546&maxx=-77.23388671875&miny=29.70713934813417&minx=-123.77197265625001&starttime=2022-12-19T03%3A25%3A12.335Z&startProp=start_time&endtime=2024-03-13T21%3A26%3A22.090Z&endProp=end_time


POST /entries

Lists out available geodatasets and their last updated dates

Example

curl -X GET http://localhost:8889/api/geodatasets/entries

=> {
    "status": "success",
    "body": {
        "entries": [
            {
                "name": "terrain",
                "updated": "2022-05-23T17:49:09.097Z"
            },
            {
                "name": "footprints",
                "updated": "2023-12-07T17:08:05.552Z"
            }
        ]
    }
}

POST /search

Returns all features that match a geojson properties property key’s value.

Parameter Type Required Default Description
layer string true N/A Geodataset layer name
key string true N/A Path and name to properties key/field to query on
value string true N/A Value of key to search for

Example

curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" -d '{"layer": "my_geodataset", "key": "flavor", "value": "peppermint"}' http://localhost:8889/api/geodatasets/search


POST /append/:name

Append geojson features to an existing geodataset.

Parameter Type Required Default Description
:name string true N/A Geodataset layer name - included in the url
body object false N/A Entire body is a geojson file

Note: The geojson body can include the top-level foreign geojson members startProp and endProp to specific which feature properties fields to use as the start and end times.

{
  "type": "FeatureCollection",
  "startProp": "start_time",
  "endProp": "end_time",
  "features": [
    {
      "geometry": {
        "type": "Polygon",
        "coordinates": ["..."],
        "properties": {
          "start_time": "2022-08-10T03:41:03Z",
          "end_time": "2022-08-10T03:41:15Z"
        }
      }
    },
    "..."
  ]
}

Example

curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geojson_to_append.json" http://localhost:8889/api/geodatasets/append/my_geodataset


POST /append/:name/:start_end_prop

See POST /append/:name. startProp and endProp parameters can be passed in through URL instead. startProp and endProp are comma-separated.

Example

curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geojson_to_append.json" http://localhost:8889/api/geodatasets/append/my_geodataset/start_time,end_time


POST /recreate

Creates or replaces an existing geodataset with a new geojson.

Parameter Type Required Default Description
name string true N/A Geodataset layer name
geojson object true N/A The geojson object to create
startProp object false N/A Name of key of feature’s start time property
endProp object false N/A Name of key of feature’s end time property

Example

curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" -d '{"name":"my_geodataset", "geojson": {"type": "FeatureCollection", "features": []}}' http://localhost:8889/api/geodatasets/recreate


POST /recreate/:name

See POST /recreate. name is part of url and the POST body is the full geojson file. startProp and endProp are unsupported for this scheme unless specified in the top-level of the geojson.

Example

curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geodataset.json" http://localhost:8888/api/geodatasets/recreate/my_geodataset


POST /recreate/:name/:start_end_prop

See POST /recreate. name is part of url and the POST body is the full geojson file. startProp and endProp parameters can be passed in through URL instead. startProp and endProp are comma-separated.

Example

curl -X POST -H "Authorization:Bearer <token>" -H "Content-Type: application/json" --data-binary "@my_geodataset.json" http://localhost:8888/api/geodatasets/recreate/my_geodataset/start_time,end_time


DELETE /remove/:name

Removes a geodataset.

Example

curl -X DELTE -H "Authorization:Bearer <token>" - http://localhost:8888/api/geodatasets/remove/my_geodataset