LogoLogo
Give FeedbackGovStack Home
Development
Development
  • Geographic Information System (GIS)
  • 1 Version History
  • 2 Description
  • 3 Terminology
  • 4 Key Digital Functionalities
  • 5 Cross-Cutting Requirements
  • 6 Functional Requirements
  • 7 Data Structures
  • 8 Service APIs
  • 9 Internal Workflows
  • 10 Other Resources
Powered by GitBook

Copyright © 2024

On this page

Was this helpful?

Export as PDF

8 Service APIs

This section provides a reference for APIs that should be implemented by this Building Block.

Last updated 1 year ago

Was this helpful?

This section provides a reference for the APIs implemented by the GIS Building Block. The APIs defined here establish a blueprint for how the Building Block will interact with other Building Blocks. Additional APIs may be implemented by the Building Block, but the listed APIs define a minimal set of functionality that should be provided by any implementation of this Building Block.

The GIS BB APIs conform with the and should be deployed as a set of microservices to provide clients consistent access to the key digital functionalities and geographic data in different representations. Microservices are defined to receive requests with relevant inputs and return processed results from key digital functionalities of this Building Block. Microservices are small, independent, and loosely coupled services that perform specific functions within the larger GIS BB key digital functionalities. Each microservice is kept simple and intuitive by focusing on one particular task, and together they form a cohesive and scalable GIS architecture. Each microservice can be developed, deployed, and maintained independently, making it easier to manage and scale the system as needed.

This section provides a reference for APIs that this Building Block should implement. The APIs defined here establish a blueprint for how the Building Block will interact with other Building Blocks. The Building Block may implement additional APIs, but the listed APIs define a minimal set of functionality that any implementation of this Building Block should provide.

The provides additional information on how 'adaptors' may be used to translate an existing API to the patterns described here.

8.1 Map Display

8.2 GIS Query

8.3 GIS Data Management

8.4 Geocoding and Reverse Geocoding

8.5 Spatial Awareness and Analysis

8.6 Reporting

8.7 Geofencing

8.8 Routing

OGC web API principles and guidelines
GovStack non-functional requirements document

Retrieve Data Store by ID

get

Retrieve details of a specific GIS data store.

Path parameters
dataStoreIdstringRequired

ID of the GIS data store to retrieve

Responses
200
Successful response
400
Bad Request
404
Not Found
get
GET /v1/gisBB/dataManagement/dataStore/{dataStoreId} HTTP/1.1
Host: host
Accept: */*

No content

Create a GIS Data Store

post

Create a new GIS data store.

Body
namestringOptional
descriptionstringOptional
providerstringOptional
connectionStringstringOptional
accessRestrictionsbooleanOptional
updateFrequencystringOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/dataManagement/dataStore HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 131

{
  "name": "text",
  "description": "text",
  "provider": "text",
  "connectionString": "text",
  "accessRestrictions": true,
  "updateFrequency": "text"
}

No content

Update Data Store by ID

patch

Update details of a specific GIS data store.

Path parameters
dataStoreIdstringRequired

ID of the GIS data store to update

Body
namestringOptional
descriptionstringOptional
providerstringOptional
connectionStringstringOptional
accessRestrictionsbooleanOptional
updateFrequencystringOptional
Responses
200
Updated
400
Bad Request
404
Not Found
patch
PATCH /v1/gisBB/dataManagement/dataStore/{dataStoreId} HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 131

{
  "name": "text",
  "description": "text",
  "provider": "text",
  "connectionString": "text",
  "accessRestrictions": true,
  "updateFrequency": "text"
}

No content

Publish Data Store Metadata

post

Publish metadata descriptions of a GIS database schema and its contents.

Body
namestringOptional
sourcestringOptional
descriptionstringOptional
keywordsstringOptional
lastUpdatedstring · date-timeOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/dataManagement/dataStoreMetadata HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 111

{
  "name": "text",
  "source": "text",
  "description": "text",
  "keywords": "text",
  "lastUpdated": "2025-05-09T06:21:18.609Z"
}

No content

Create User Control

post

Create user control for authentication and access permissions.

Body
usernamestringOptional
passwordstringOptional
editorPermissionsstringOptional
editorTrackingbooleanOptional
ownerControlbooleanOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/dataManagement/userControl HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 106

{
  "username": "text",
  "password": "text",
  "editorPermissions": "text",
  "editorTracking": true,
  "ownerControl": true
}

No content

Record Editor Tracking

post

Record editor tracking information for feature editing.

Body
editTypestringOptional
timeStampstring · date-timeOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/dataManagement/editorTracking HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 58

{
  "editType": "text",
  "timeStamp": "2025-05-09T06:21:18.609Z"
}

No content

Replicate GIS Data Store

post

Replicate a remote GIS database schema.

Body
sourceDataStorestringOptional
targetDataStorestringOptional
replicaTypestringOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/dataManagement/replicate HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 72

{
  "sourceDataStore": "text",
  "targetDataStore": "text",
  "replicaType": "text"
}

No content

Extract and Transfer GIS Data

post

Extract and transfer GIS data layers or features from a remote GIS database.

Body
sourceDataStorestringOptional
targetDataStorestringOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/dataManagement/extractTransfer HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 51

{
  "sourceDataStore": "text",
  "targetDataStore": "text"
}

No content

Edit Geographic Features

post

Create, edit, modify, or delete geographic features on the extracted GIS data layers.

Body
layerTypestringOptional
featureIDstringOptional
operationstringOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/dataManagement/editFeature HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 58

{
  "layerType": "text",
  "featureID": "text",
  "operation": "text"
}

No content

Retrieve Geocode Result by ID

get

Retrieve the geocoding result for a specific ID.

Path parameters
resultIdstringRequired

ID of the geocoding result to retrieve

Responses
200
Successful response
404
Not Found
get

No content

Retrieve Reverse Geocode Result by ID

get

Retrieve the reverse geocoding result for a specific ID.

Path parameters
resultIdstringRequired

ID of the reverse geocoding result to retrieve

Responses
200
Successful response
404
Not Found
get

No content

List Geofences

get
Responses
200
Successful response with a list of geofences
get
200

Successful response with a list of geofences

No content

Get Geofence by ID

get
Path parameters
geofenceIdstringRequired
Responses
200
Successful response with geofence details
404
Geofence not found
get

No content

Delete Geofence

delete
Path parameters
geofenceIdstringRequired
Responses
204
Successful response after deleting geofence
404
Geofence not found
delete

No content

Get Geofence Status

get
Path parameters
geofenceIdstringRequired
Responses
200
Successful response with geofence status
404
Geofence not found
get

No content

Activate Geofence

post
Path parameters
geofenceIdstringRequired
Responses
200
Successful response after activating geofence
404
Geofence not found
post

No content

Deactivate Geofence

post
Path parameters
geofenceIdstringRequired
Responses
200
Successful response after deactivating geofence
404
Geofence not found
post

No content

List Geofence Elements

get
Path parameters
geofenceIdstringRequired
Responses
200
Successful response with a list of geofence elements
404
Geofence not found
get

No content

Remove Geofence Element

delete
Path parameters
geofenceIdstringRequired
elementIdstringRequired
Responses
204
Successful response after removing geofence element
404
Geofence or element not found
delete

No content

Get Templates

get

Retrieve templates and resources for creating map layouts and cartographic reports.

Responses
200
Successful response with templates
400
Bad Request
get

No content

Remove Dynamic GIS Layer

delete

Remove a dynamic GIS layer from a map layout or report.

Path parameters
layerIdstringRequired

ID of the dynamic GIS layer to be removed

Responses
200
Successful response after removing dynamic GIS layer
404
Layer not found
delete

No content

Remove Label

delete

Remove a label from a map layout or report.

Path parameters
labelIdstringRequired

ID of the label to be removed

Responses
200
Successful response after removing label
404
Label not found
delete

No content

Remove Chart

delete

Remove a chart from a map layout or report.

Path parameters
chartIdstringRequired

ID of the chart to be removed

Responses
200
Successful response after removing chart
404
Chart not found
delete

No content

Remove Legend

delete

Remove a legend from a map layout or report.

Path parameters
legendIdstringRequired

ID of the legend to be removed

Responses
200
Successful response after removing legend
404
Legend not found
delete

No content

Remove Scale Bar

delete

Remove a scale bar from a map layout or report.

Path parameters
scaleBarIdstringRequired

ID of the scale bar to be removed

Responses
200
Successful response after removing scale bar
404
Scale Bar not found
delete

No content

Remove North Arrow

delete

Remove a north arrow from a map layout or report.

Path parameters
northArrowIdstringRequired

ID of the north arrow to be removed

Responses
200
Successful response after removing north arrow
404
North Arrow not found
delete

No content

Retrieve the data viewer type

get

Retrieve the type of the data viewer. This endpoint provides information about whether the client data viewer is desktop, mobile, web browser, or unknown.

Query parameters
supportedBrowserstring · enumOptional

Specifies the type of supported browser for the data viewer.

Default: desktopPossible values:
Responses
200
Successful retrieval of the data viewer type
application/json
Responsestring · enumDefault: desktopPossible values:
404
The data viewer type information could not be found
get

Retrieve GIS map display details

get

Retrieve GIS map display details. This endpoint provides access to GIS data through a data viewer, allowing users to view and query geographic or spatial information presented as graphic representations (points, polygons, lines, or raster grids) through thematic GIS layers or attribute tables. The response will include the symbology (pre-defined styles) for each map layer, displayed as a legend alongside a table of contents listing all layers provided by the service.

Responses
200
Successful retrieval of GIS map display details
application/json
404
Map display details not found
get

Set minimum and maximum scale limits for each layer

put

Set minimum and maximum scale limits for each layer. This endpoint allows users to specify whether a layer is identifiable and/or selectable on the data viewer. These settings are saved as a cache by the data viewer app and are reserved for future data viewer displays. The settings are reset to default when the cache is cleared.

Query parameters
layerTitlestringRequired

The name of the GIS layer

minScaleintegerOptional

The minimum scale to show the layer's feature on the map display

maxScaleintegerOptional

The maximum scale to show the layer's feature on the map display

Responses
204
Successful setting of layer scale limits
400
Invalid request parameters or missing required fields
put

No content

Enable basic navigation capabilities on the GIS data viewer

put

Enable basic navigation capabilities on the GIS data viewer. This endpoint allows users to perform basic navigation actions such as zooming in and out of a map, and panning to explore the displayed GIS data.

Query parameters
zoombooleanRequired

Specifies if zooming is supported

zoomLevelintegerRequired

The available zoom levels for the map

panbooleanRequired

Specifies if panning is supported

Responses
204
Successful enabling of basic navigation capabilities
400
Invalid request parameters or missing required fields
put

No content

Retrieve the style applied to the data viewer

get

Retrieve the style applied to the data viewer. This endpoint provides information about the style used to portray the geographic features of each layer on the data viewer.

Responses
200
Successful retrieval of data viewer style
application/json
get
200

Successful retrieval of data viewer style

Geocode an Address

post

Geocode an address to obtain geographic coordinates.

Body
addressstringOptional
longitudenumber · doubleOptional
latitudenumber · doubleOptional
Responses
200
Successful response
400
Bad Request
post
POST /v1/gisBB/geocodingReverseGeocoding/geocode HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 45

{
  "address": "text",
  "longitude": 1,
  "latitude": 1
}

No content

Reverse Geocode Coordinates

post

Reverse geocode geographic coordinates to obtain an address.

Body
longitudenumber · doubleOptional
latitudenumber · doubleOptional
Responses
200
Successful response
400
Bad Request
post
POST /v1/gisBB/geocodingReverseGeocoding/reverseGeocode HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "longitude": 1,
  "latitude": 1
}

No content

Batch Geocode

post

Perform batch geocoding or reverse geocoding using a table file with multiple addresses or coordinates.

Body
batchTypestringOptional
batchNamestringOptional
statusstringOptional
timeStampstring · date-timeOptional
Responses
201
Created
400
Bad Request
post
POST /v1/gisBB/geocodingReverseGeocoding/batchGeocode HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 94

{
  "batchType": "text",
  "batchName": "text",
  "status": "text",
  "timeStamp": "2025-05-09T06:21:18.609Z"
}

No content

GET /v1/gisBB/geocodingReverseGeocoding/geocodeResult/{resultId} HTTP/1.1
Host: host
Accept: */*
GET /v1/gisBB/geocodingReverseGeocoding/reverseGeocodeResult/{resultId} HTTP/1.1
Host: host
Accept: */*
GET /v1/gisBB/geofencing/geofences HTTP/1.1
Host: host
Accept: */*

Create Geofence

post
Body
namestringOptional
shapestringOptional
sizenumber · doubleOptional
statusbooleanOptional
Responses
201
Successful response after creating geofence
post
POST /v1/gisBB/geofencing/geofences HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 53

{
  "name": "text",
  "shape": "text",
  "size": 1,
  "status": true
}
201

Successful response after creating geofence

No content

GET /v1/gisBB/geofencing/geofences/{geofenceId} HTTP/1.1
Host: host
Accept: */*

Update Geofence

put
Path parameters
geofenceIdstringRequired
Body
namestringOptional
shapestringOptional
sizenumber · doubleOptional
statusbooleanOptional
Responses
204
Successful response after updating geofence
404
Geofence not found
put
PUT /v1/gisBB/geofencing/geofences/{geofenceId} HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 53

{
  "name": "text",
  "shape": "text",
  "size": 1,
  "status": true
}

No content

DELETE /v1/gisBB/geofencing/geofences/{geofenceId} HTTP/1.1
Host: host
Accept: */*
GET /v1/gisBB/geofencing/geofences/{geofenceId}/status HTTP/1.1
Host: host
Accept: */*
POST /v1/gisBB/geofencing/geofences/{geofenceId}/activate HTTP/1.1
Host: host
Accept: */*
POST /v1/gisBB/geofencing/geofences/{geofenceId}/deactivate HTTP/1.1
Host: host
Accept: */*
GET /v1/gisBB/geofencing/geofences/{geofenceId}/elements HTTP/1.1
Host: host
Accept: */*

Add Geofence Element

post
Path parameters
geofenceIdstringRequired
Body
elementTypestringOptional
trackingMethodstringOptional
Responses
201
Successful response after adding geofence element
404
Geofence not found
post
POST /v1/gisBB/geofencing/geofences/{geofenceId}/elements HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 46

{
  "elementType": "text",
  "trackingMethod": "text"
}

No content

DELETE /v1/gisBB/geofencing/geofences/{geofenceId}/elements/{elementId} HTTP/1.1
Host: host
Accept: */*

Create Action Rule for Geofence

post
Path parameters
geofenceIdstringRequired
Body
actionTypestringOptional
actionstringOptional
Responses
201
Successful response after creating action rule
404
Geofence not found
post
POST /v1/gisBB/geofencing/geofences/{geofenceId}/rules HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 37

{
  "actionType": "text",
  "action": "text"
}

No content

Create Element Action Rule for Geofence

post
Path parameters
geofenceIdstringRequired
elementIdstringRequired
Body
notificationTypestringOptional
recipientstringOptional
recipientTypestringOptional
Responses
201
Successful response after creating element action rule
404
Geofence or element not found
post
POST /v1/gisBB/geofencing/geofences/{geofenceId}/elements/{elementId}/actions HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 69

{
  "notificationType": "text",
  "recipient": "text",
  "recipientType": "text"
}

No content

GET /v1/gisBB/reporting/templates HTTP/1.1
Host: host
Accept: */*

Add Dynamic GIS Layer

post

Add a dynamic GIS layer to a map layout or report.

Body
titlestringOptional
abstractstringOptional
authorstringOptional
keywordsstringOptional
lastUpdatedstring · date-timeOptional
Responses
200
Successful response after adding dynamic GIS layer
400
Bad Request
post
POST /v1/gisBB/reporting/dynamicLayers HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 109

{
  "title": "text",
  "abstract": "text",
  "author": "text",
  "keywords": "text",
  "lastUpdated": "2025-05-09T06:21:18.609Z"
}

No content

DELETE /v1/gisBB/reporting/dynamicLayers/{layerId} HTTP/1.1
Host: host
Accept: */*

Add Label

post

Add a label to a map layout or report.

Body
labelTextstringOptional
positionXnumber · floatOptional
positionYnumber · floatOptional
fontstringOptional
sizeintegerOptional
colorstringOptional
Responses
200
Successful response after adding label
400
Bad Request
post
POST /v1/gisBB/reporting/labels HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 86

{
  "labelText": "text",
  "positionX": 1,
  "positionY": 1,
  "font": "text",
  "size": 1,
  "color": "text"
}

No content

DELETE /v1/gisBB/reporting/labels/{labelId} HTTP/1.1
Host: host
Accept: */*

Add Chart

post

Add a chart to a map layout or report.

Body
titlestringOptional
typestringOptional
datastringOptional
Responses
200
Successful response after adding chart
400
Bad Request
post
POST /v1/gisBB/reporting/charts HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 44

{
  "title": "text",
  "type": "text",
  "data": "text"
}

No content

DELETE /v1/gisBB/reporting/charts/{chartId} HTTP/1.1
Host: host
Accept: */*

Add Legend

post

Add a legend to a map layout or report.

Body
labelTextstringOptional
positionXnumber · floatOptional
positionYnumber · floatOptional
fontstringOptional
sizeintegerOptional
colorstringOptional
Responses
200
Successful response after adding legend
400
Bad Request
post
POST /v1/gisBB/reporting/legends HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 86

{
  "labelText": "text",
  "positionX": 1,
  "positionY": 1,
  "font": "text",
  "size": 1,
  "color": "text"
}

No content

DELETE /v1/gisBB/reporting/legends/{legendId} HTTP/1.1
Host: host
Accept: */*

Add Scale Bar

post

Add a scale bar to a map layout or report.

Body
titlestringOptional
stylestringOptional
lengthnumber · floatOptional
unitsstringOptional
positionXnumber · floatOptional
positionYnumber · floatOptional
fontstringOptional
sizeintegerOptional
colorstringOptional
Responses
200
Successful response after adding scale bar
400
Bad Request
post
POST /v1/gisBB/reporting/scaleBars HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 123

{
  "title": "text",
  "style": "text",
  "length": 1,
  "units": "text",
  "positionX": 1,
  "positionY": 1,
  "font": "text",
  "size": 1,
  "color": "text"
}

No content

DELETE /v1/gisBB/reporting/scaleBars/{scaleBarId} HTTP/1.1
Host: host
Accept: */*

Add North Arrow

post

Add a north arrow to a map layout or report.

Body
titlestringOptional
stylestringOptional
lengthnumber · floatOptional
unitsstringOptional
positionXnumber · floatOptional
positionYnumber · floatOptional
fontstringOptional
sizeintegerOptional
colorstringOptional
Responses
200
Successful response after adding north arrow
400
Bad Request
post
POST /v1/gisBB/reporting/northArrows HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 123

{
  "title": "text",
  "style": "text",
  "length": 1,
  "units": "text",
  "positionX": 1,
  "positionY": 1,
  "font": "text",
  "size": 1,
  "color": "text"
}

No content

DELETE /v1/gisBB/reporting/northArrows/{northArrowId} HTTP/1.1
Host: host
Accept: */*
GET /v1/gisBb/mapDisplay/type HTTP/1.1
Host: host
Accept: */*
desktop
GET /v1/gisBb/mapDisplay/details HTTP/1.1
Host: host
Accept: */*
{
  "title": "Map Display Title",
  "description": "A summary description of the map display purpose and contents.",
  "attribution": "GIS Data Viewer Attribution",
  "accessControl": true,
  "endPoint": "/r1/eGovStack/COM/11222456/SchedulerBB/creg/event/new",
  "crs": "EPSG:4326",
  "centerX": 12.3456,
  "centerY": 34.5678,
  "boundsMinX": 12.3456,
  "boundsMinY": 34.5678,
  "boundsMaxX": 12.789,
  "boundsMaxY": 34.9012
}

Add or update spatial bookmarks

post

Add or update spatial bookmarks. This endpoint allows users to capture the spatial extent of a given location as a spatial bookmark in a GIS data viewer. Users can name the bookmark and zoom to the exact extent whenever needed by selecting the bookmark's name. Users can also add, rename, and remove spatial bookmarks as necessary.

Body
namestringOptionalExample: Bookmark A
createintegerOptionalExample: 1
removebooleanOptionalExample: true
renamebooleanOptionalExample: true
zoomTobooleanOptionalExample: true
minXnumber · doubleOptionalExample: 12.3456
minYnumber · doubleOptionalExample: 34.5678
maxXnumber · doubleOptionalExample: 12.789
maxYnumber · doubleOptionalExample: 34.9012
Responses
200
Successful bookmark creation or update
application/json
400
Invalid request parameters or missing required fields
post
POST /v1/gisBb/mapDisplay/bookmarks HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 133

{
  "name": "Bookmark A",
  "create": 1,
  "remove": true,
  "rename": true,
  "zoomTo": true,
  "minX": 12.3456,
  "minY": 34.5678,
  "maxX": 12.789,
  "maxY": 34.9012
}
{
  "name": "Bookmark A",
  "create": 1,
  "remove": true,
  "rename": true,
  "zoomTo": true,
  "minX": 12.3456,
  "minY": 34.5678,
  "maxX": 12.789,
  "maxY": 34.9012
}
PUT /v1/gisBb/mapDisplay/scale HTTP/1.1
Host: host
Accept: */*
PUT /v1/gisBb/mapDisplay/navigation HTTP/1.1
Host: host
Accept: */*

Add, view, delete, and mark map notes on the GIS data viewer

post

Add, view, delete, and mark map notes on the GIS data viewer. This endpoint allows GIS users to add and share brief notes on the GIS data viewer. Other users can view and comment on these notes. Notes can only be deleted by the creator of the note. Notes are saved and served as a web feature service.

Body
creatorstringOptionalExample: John Doe
contentstringOptionalExample: This is a map note.
timeStampstringOptionalExample: 2023-08-01T12:34:56Z
addbooleanOptionalExample: true
deletebooleanOptionalExample: true
viewbooleanOptionalExample: true
visiblebooleanOptionalExample: true
xnumber · doubleOptionalExample: 12.3456
ynumber · doubleOptionalExample: 34.5678
Responses
200
Successful note creation or update
application/json
400
Invalid request parameters or missing required fields
post
POST /v1/gisBb/mapDisplay/notes HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 165

{
  "creator": "John Doe",
  "content": "This is a map note.",
  "timeStamp": "2023-08-01T12:34:56Z",
  "add": true,
  "delete": true,
  "view": true,
  "visible": true,
  "x": 12.3456,
  "y": 34.5678
}
{
  "creator": "John Doe",
  "content": "This is a map note.",
  "timeStamp": "2023-08-01T12:34:56Z",
  "add": true,
  "delete": true,
  "view": true,
  "visible": true,
  "x": 12.3456,
  "y": 34.5678
}

Perform measuring actions on the GIS data viewer

post

Perform measuring actions on the GIS data viewer. This endpoint allows users to measure distances and areas on the displayed map.

Body
distancebooleanOptionalExample: true
areabooleanOptionalExample: true
Responses
204
Successful measuring action
400
Invalid request parameters or missing required fields
post
POST /v1/gisBb/mapDisplay/measuring HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 29

{
  "distance": true,
  "area": true
}

No content

GET /v1/gisBb/mapDisplay/style HTTP/1.1
Host: host
Accept: */*
{
  "name": "DefaultStyle",
  "description": "Default style for GIS layers",
  "type": "CodedStyle"
}

Retrieve GIS layer metadata

get

Retrieve GIS layer metadata and feature type definitions.

Responses
200
Successful response
application/json
400
Bad Request
401
Unauthorized
get
GET /v1/gisBB/query/layerMetadata HTTP/1.1
Host: host
Accept: */*
[
  {
    "name": "Sample Layer",
    "abstract": "A sample GIS layer",
    "author": "John Doe",
    "geometry": "point",
    "keywords": "sample, layer",
    "snippet": "This is a sample layer.",
    "spatialExtent": [
      [
        0,
        0
      ],
      [
        1,
        1
      ]
    ],
    "lastUpdated": "2023-08-08T12:00:00Z"
  }
]

Retrieve non-spatial table metadata

get

Retrieve non-spatial table metadata.

Responses
200
Successful response
application/json
400
Bad Request
401
Unauthorized
get
GET /v1/gisBB/query/nonSpatialTableMetadata HTTP/1.1
Host: host
Accept: */*
[
  {
    "name": "Sample Table",
    "abstract": "A sample non-spatial table",
    "author": "Jane Smith",
    "keywords": "sample, table",
    "lastUpdated": "2023-08-08T12:00:00Z"
  }
]

Retrieve Query Results

get

Retrieve the results of a previously executed query.

Responses
200
Successful response
application/json
400
Bad Request
401
Unauthorized
500
Internal Server Error
get
GET /v1/gisBB/query/queryResult HTTP/1.1
Host: host
Accept: */*
[
  {
    "queryType": "Attribute Query",
    "queryStatus": "Success",
    "timeStamp": "2023-08-08T12:00:00Z"
  }
]

Get Metadata

get

Retrieve metadata that describes the purpose and functionality of geospatial analysis tasks or processes.

Responses
200
Successful response with metadata
400
Bad Request
get
GET /v1/gisBB/spatialAwarenessAnalysis/metadata HTTP/1.1
Host: host
Accept: */*

No content

Get Available Processes

get

Retrieve detailed information that describes the processes that can be run on the service.

Responses
200
Successful response with available processes
400
Bad Request
get
GET /v1/gisBB/spatialAwarenessAnalysis/processes HTTP/1.1
Host: host
Accept: */*

No content

Get Task Status

get

Get the status of an asynchronously executed geoprocessing task.

Path parameters
taskIdstringRequired

ID of the geoprocessing task

Responses
200
Successful response with task status
404
Task not found
get
GET /v1/gisBB/spatialAwarenessAnalysis/taskStatus/{taskId} HTTP/1.1
Host: host
Accept: */*

No content

Get Task Result

get

Get the result of a finished geoprocessing task.

Path parameters
taskIdstringRequired

ID of the geoprocessing task

Responses
200
Successful response with task result
404
Task not found
get
GET /v1/gisBB/spatialAwarenessAnalysis/taskResult/{taskId} HTTP/1.1
Host: host
Accept: */*

No content

Terminate Task

post

Terminate an asynchronously executed geoprocessing task.

Path parameters
taskIdstringRequired

ID of the geoprocessing task

Responses
200
Task termination request received
404
Task not found
post
POST /v1/gisBB/spatialAwarenessAnalysis/terminateTask/{taskId} HTTP/1.1
Host: host
Accept: */*

No content

Get Route by ID

get
Path parameters
routeIdstringRequired
Responses
200
Successful response with route details
404
Route not found
get
GET /v1/gisBB/routing/routes/{routeId} HTTP/1.1
Host: host
Accept: */*

No content

Delete Route

delete
Path parameters
routeIdstringRequired
Responses
204
Successful response after deleting route
404
Route not found
delete
DELETE /v1/gisBB/routing/routes/{routeId} HTTP/1.1
Host: host
Accept: */*

No content

Generate Direction Report for Route

get
Path parameters
routeIdstringRequired
Responses
200
Successful response with direction report
404
Route not found
get
GET /v1/gisBB/routing/routes/{routeId}/directions HTTP/1.1
Host: host
Accept: */*

No content

List Route Segments

get
Path parameters
routeIdstringRequired
Responses
200
Successful response with a list of route segments
404
Route not found
get
GET /v1/gisBB/routing/routes/{routeId}/segments HTTP/1.1
Host: host
Accept: */*

No content

List Service Areas

get
Responses
200
Successful response with a list of service areas
get
GET /v1/gisBB/routing/service-areas HTTP/1.1
Host: host
Accept: */*
200

Successful response with a list of service areas

No content

  • 8.1 Map Display
  • GETRetrieve the data viewer type
  • GETRetrieve GIS map display details
  • POSTAdd or update spatial bookmarks
  • PUTSet minimum and maximum scale limits for each layer
  • PUTEnable basic navigation capabilities on the GIS data viewer
  • POSTAdd, view, delete, and mark map notes on the GIS data viewer
  • POSTPerform measuring actions on the GIS data viewer
  • GETRetrieve the style applied to the data viewer
  • 8.2 GIS Query
  • GETRetrieve GIS layer metadata
  • GETRetrieve non-spatial table metadata
  • POSTExecute a GIS Query
  • POSTExecute a Locational Query
  • POSTExecute an Attribute Query
  • POSTExecute a Discovery Query
  • GETRetrieve Query Results
  • 8.3 GIS Data Management
  • POSTCreate a GIS Data Store
  • GETRetrieve Data Store by ID
  • PATCHUpdate Data Store by ID
  • POSTPublish Data Store Metadata
  • POSTCreate User Control
  • POSTRecord Editor Tracking
  • POSTReplicate GIS Data Store
  • POSTExtract and Transfer GIS Data
  • POSTEdit Geographic Features
  • 8.4 Geocoding and Reverse Geocoding
  • POSTGeocode an Address
  • POSTReverse Geocode Coordinates
  • POSTBatch Geocode
  • GETRetrieve Geocode Result by ID
  • GETRetrieve Reverse Geocode Result by ID
  • 8.5 Spatial Awareness and Analysis
  • GETGet Metadata
  • GETGet Available Processes
  • POSTExecute Geoprocessing Task
  • GETGet Task Status
  • GETGet Task Result
  • POSTTerminate Task
  • 8.6 Reporting
  • GETGet Templates
  • POSTAdd Dynamic GIS Layer
  • DELETERemove Dynamic GIS Layer
  • POSTAdd Label
  • DELETERemove Label
  • POSTAdd Chart
  • DELETERemove Chart
  • POSTAdd Legend
  • DELETERemove Legend
  • POSTAdd Scale Bar
  • DELETERemove Scale Bar
  • POSTAdd North Arrow
  • DELETERemove North Arrow
  • 8.7 Geofencing
  • GETList Geofences
  • POSTCreate Geofence
  • GETGet Geofence by ID
  • PUTUpdate Geofence
  • DELETEDelete Geofence
  • GETGet Geofence Status
  • POSTActivate Geofence
  • POSTDeactivate Geofence
  • GETList Geofence Elements
  • POSTAdd Geofence Element
  • DELETERemove Geofence Element
  • POSTCreate Action Rule for Geofence
  • POSTCreate Element Action Rule for Geofence
  • 8.8 Routing
  • POSTCreate Route
  • GETGet Route by ID
  • DELETEDelete Route
  • GETGenerate Direction Report for Route
  • GETList Route Segments
  • GETList Service Areas

Execute a GIS Query

post

Execute GIS feature or attribute query operations interactively or through predefined expressions.

Body
typestringOptional
queryFormatstringOptional
queryStringstringOptional
timeStampstring · date-timeOptional
Responses
200
Successful response
application/json
400
Bad Request
401
Unauthorized
500
Internal Server Error
post
POST /v1/gisBB/query/gisQuery HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 96

{
  "type": "text",
  "queryFormat": "text",
  "queryString": "text",
  "timeStamp": "2025-05-09T06:21:18.609Z"
}
[
  {
    "queryType": "Attribute Query",
    "queryStatus": "Success",
    "timeStamp": "2023-08-08T12:00:00Z"
  }
]

Execute a Locational Query

post

Execute a spatial query based on location.

Body
layerTypestringOptional
spatialRelationstringOptional
longitudenumberOptional
latitudenumberOptional
distancenumberOptional
Responses
200
Successful response
application/json
400
Bad Request
401
Unauthorized
500
Internal Server Error
post
POST /v1/gisBB/query/locationalQuery HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 85

{
  "layerType": "text",
  "spatialRelation": "text",
  "longitude": 1,
  "latitude": 1,
  "distance": 1
}
[
  {
    "queryType": "Locational Query",
    "queryStatus": "Success",
    "timeStamp": "2023-08-08T12:00:00Z"
  }
]

Execute an Attribute Query

post

Execute an attribute-based query.

Body
attributeNamestringOptional
operatorstringOptional
valuestringOptional
Responses
200
Successful response
application/json
400
Bad Request
401
Unauthorized
500
Internal Server Error
post
POST /v1/gisBB/query/attributeQuery HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 57

{
  "attributeName": "text",
  "operator": "text",
  "value": "text"
}
[
  {
    "queryType": "Attribute Query",
    "queryStatus": "Success",
    "timeStamp": "2023-08-08T12:00:00Z"
  }
]

Execute a Discovery Query

post

Execute a metadata discovery query.

Body
attributeNamestringOptional
Responses
200
Successful response
application/json
400
Bad Request
401
Unauthorized
500
Internal Server Error
post
POST /v1/gisBB/query/discoveryQuery HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 24

{
  "attributeName": "text"
}
[
  {
    "queryType": "Metadata Discovery Query",
    "queryStatus": "Success",
    "timeStamp": "2023-08-08T12:00:00Z"
  }
]

Execute Geoprocessing Task

post

Execute a geoprocessing task to perform basic spatial analysis operations.

Body
processingNamestringOptional
descriptionstringOptional
Responses
200
Successful response with geoprocessing result
400
Bad Request
post
POST /v1/gisBB/spatialAwarenessAnalysis/executeTask HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 137

{
  "processingName": "text",
  "description": "text",
  "parameters": [
    {
      "parameterName": "text",
      "value": "text",
      "code": "text",
      "defaultValue": "text"
    }
  ]
}

No content

Create Route

post
Body
startNodeobjectOptional
endNodeobjectOptional
passThroughbooleanOptional
restrictionsstringOptional
additionalParametersstringOptional
Responses
201
Successful response after creating a route
post
POST /v1/gisBB/routing/routes HTTP/1.1
Host: host
Content-Type: application/json
Accept: */*
Content-Length: 100

{
  "startNode": {},
  "endNode": {},
  "passThrough": true,
  "restrictions": "text",
  "additionalParameters": "text"
}
201

Successful response after creating a route

No content