IBM Research PAIRS API API Reference

Welcome to the PAIRS API reference. PAIRS is a geospatial big data service platform built by IBM research team.

The PAIRS API is organized around the REST methodology and it uses resource-oriented URLs, and common HTTP response codes to indicate API errors. It uses JSON as the default encoding. Most of the methods you will find here are publicly available but there are some that will require you to be authenticated as a user in the platform

API Endpoint
https://ibmpairs-mvp2-api.mybluemix.net
Request Content-Types: application/json
Response Content-Types: application/json
Schemes: https
Version: 1.0.0

Authentication

accessToken

description

Access token is created by the backend once the user has authenticated successfully, be it with an external SSO provider or with an email and a password

in
header
name
X-Access-Token

Data Set

Data sets are just categories for information you want to display. Every data set is composed of several data layers. Data layers represent information about one single property (such as temperature, humidity or height) in the map

Returns all available data sets

GET /datasets

Returns all the data sets available in the platform

name

Name of the data set

type
string
in
query
200 OK

Successful operation

Response Example (200 OK)
[
  {
    "id": "string",
    "name": "string",
    "description": "string",
    "additionalInformationUrl": "string",
    "level": "number (int64)",
    "category": {
      "id": "string",
      "name": "string"
    },
    "dataLayers": [
      {
        "id": "string",
        "name": "string",
        "dataSetId": "string",
        "units": "string",
        "description": "string",
        "boundingBox": {
          "northEastCoordinate": {
            "latitude": "number (double)",
            "longitude": "number (double)"
          },
          "southWestCoordinate": {
            "latitude": "number (double)",
            "longitude": "number (double)"
          }
        }
      }
    ]
  }
]

Find data set by id

GET /datasets/{datasetId}

Returns a single data set with the specified id

datasetId

Id of data set to return

type
string
in
path
200 OK

Successful operation

404 Not Found

Data set not found

Response Example (200 OK)
{
  "id": "string",
  "name": "string",
  "description": "string",
  "additionalInformationUrl": "string",
  "level": "number (int64)",
  "category": {
    "id": "string",
    "name": "string"
  },
  "dataLayers": [
    {
      "id": "string",
      "name": "string",
      "dataSetId": "string",
      "units": "string",
      "description": "string",
      "boundingBox": {
        "northEastCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "southWestCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        }
      }
    }
  ]
}

Returns all data layers in a data set

GET /datasets/{datasetId}/datalayers

Returns a list of all the data layers that are inside a specific data set. There is an optional parameter to specify the data layer name that will filter the results

datasetId

Id of parent data set

type
string
in
path
200 OK

Successful operation

Response Example (200 OK)
[
  {
    "id": "string",
    "name": "string",
    "dataSetId": "string",
    "units": "string",
    "description": "string",
    "boundingBox": {
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      }
    }
  }
]

Polygon

Define regions of the map that are more complicated than regular rectangles. They are used to better define the bounds of your queries. There are already polygons covering countries, US states and so

Returns all polygons

GET /polygons

Returns all polygons that are available for the current user in a paginated format. The page is specified with an offset and a limit parameters. If the offset is greater than the number of polygons then an empty list is returned

offset

Pagination offset representing the number of items that are omitted from the start

type
integer (int64)
in
query
limit

Limit in the number of items returned by this endpoint. It can't be lower than 1 or greater than 100. If it's not provided, the default value will be 100

type
integer (int64)
in
query
nameQuery

String to filter polygons by its name. If none provided it won't filter out any polygon. A fuzzy search algorithm is used so there will be non-exact matches in the response

type
string
in
query

Successful operation

Response Example (200 OK)
{
  "totalNumberOfItems": "integer",
  "data": [
    {
      "id": "string",
      "name": "string"
    }
  ]
}

Returns a single polygon

GET /polygons/{polygonId}

Returns a single polygon by its id

polygonId

ID of the polygon

type
string
in
path

Successful operation

404 Not Found

Polygon not found

Response Example (200 OK)
{
  "id": "string",
  "name": "string"
}

Returns the geometry of the selected polygon

GET /polygons/{polygonId}/geometry

Returns the geometry of the selected polygon in GeoJSON format

polygonId

Id of the polygon

type
string
in
path

Successful operation

404 Not Found

Polygon not found

Response Example (200 OK)
{
  "type": "string"
}

Time Series

Time series are just an ordered list of values distributed on time. Values are always part of a data layer and they just describe the different values of that data layer in a specific point in the map

Returns a time series for a data layer

GET /timeseries/{dataLayerId}

Returns the time series for a data layer within the specified time boundaries and in a single point

dataLayerId

Id of the data layer

type
string
in
path
latitude

Latitude for the point to gather the data series

type
number (double)
in
query
longitude

Longitude for the point to gather the data series

type
number (double)
in
query
startingDateTime

Minimum boundary in time for the time series

type
string (ISO 8601)
in
query
endingDateTime

Minimum boundary in time for the time series

type
string (ISO 8601)
in
query

Successful operation

Response Example (200 OK)
{
  "timeSeries": [
    {
      "dateTime": "string (ISO 8601)",
      "value": "number (double)"
    }
  ]
}

Color Scale

Color scales lets you choose from a palette to represent your data layers with different gradients and colors

Returns the list of available color scales

GET /colorscales

Returns a list of color scales to use in different data layers

200 OK

Successful operation

Response Example (200 OK)
[
  {
    "id": "string",
    "name": "string",
    "colors": [
      "string (#RRGGBB)"
    ]
  }
]

Query Job

Queries are the most important resource in PAIRS as they describe properties over time in a specific section of the map, we can use them to see relationships between data. Queries in PAIRS might run for long times, that's why we use jobs to represent the state of every query. In general, they will take some minutes to be processed but the state of the job can be consulted at every moment

Find and return all sample query jobs

GET /example-queryjobs

Returns all sample query jobs

200 OK

Successful operation

Response Example (200 OK)
[
  {
    "id": "string",
    "isSampleQueryJob": "boolean",
    "status": "string",
    "statusDescription": "string",
    "query": {
      "layers": [
        {
          "dataLayerId": "string",
          "startingDateTime": "string (ISO 8601)",
          "endingDateTime": "string (ISO 8601)",
          "aggregationOperator": "string"
        }
      ],
      "filters": [
        {
          "dataLayerId": "string",
          "dataSetId": "string",
          "aggregationOperator": "string",
          "operator": "string",
          "startingDateTime": "string (ISO 8601)",
          "endingDateTime": "string (ISO 8601)",
          "values": [
            "number (double)"
          ]
        }
      ],
      "space": {
        "latitude": "number (double)",
        "longitude": "number (double)",
        "northEastCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "southWestCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "id": "string"
      },
      "name": "string",
      "description": "string",
      "isPublic": "boolean"
    },
    "visualization": {
      "timeRange": {
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)"
      },
      "displayedBoundingBox": {
        "northEastCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "southWestCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        }
      },
      "layers": [
        {
          "dataLayer": {
            "id": "string",
            "name": "string",
            "dataSetId": "string",
            "units": "string",
            "description": "string",
            "boundingBox": {
              "northEastCoordinate": {
                "latitude": "number (double)",
                "longitude": "number (double)"
              },
              "southWestCoordinate": {
                "latitude": "number (double)",
                "longitude": "number (double)"
              }
            }
          },
          "startingDateTime": "string (ISO 8601)",
          "endingDateTime": "string (ISO 8601)",
          "wms": {
            "geoserverUrl": "string",
            "name": "string",
            "legendStyledLayerDescriptor": "string",
            "styledLayerDescriptor": "string"
          }
        }
      ]
    },
    "creationDateTime": "string (ISO 8601)",
    "progress": "number (int64)",
    "downloadUri": "string"
  }
]

Find all user query jobs

GET /queryjobs

Returns all the query jobs created by the current user

200 OK

Successful operation

Response Example (200 OK)
[
  {
    "id": "string",
    "isSampleQueryJob": "boolean",
    "status": "string",
    "statusDescription": "string",
    "query": {
      "layers": [
        {
          "dataLayerId": "string",
          "startingDateTime": "string (ISO 8601)",
          "endingDateTime": "string (ISO 8601)",
          "aggregationOperator": "string"
        }
      ],
      "filters": [
        {
          "dataLayerId": "string",
          "dataSetId": "string",
          "aggregationOperator": "string",
          "operator": "string",
          "startingDateTime": "string (ISO 8601)",
          "endingDateTime": "string (ISO 8601)",
          "values": [
            "number (double)"
          ]
        }
      ],
      "space": {
        "latitude": "number (double)",
        "longitude": "number (double)",
        "northEastCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "southWestCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "id": "string"
      },
      "name": "string",
      "description": "string",
      "isPublic": "boolean"
    },
    "visualization": {
      "timeRange": {
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)"
      },
      "displayedBoundingBox": {
        "northEastCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "southWestCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        }
      },
      "layers": [
        {
          "dataLayer": {
            "id": "string",
            "name": "string",
            "dataSetId": "string",
            "units": "string",
            "description": "string",
            "boundingBox": {
              "northEastCoordinate": {
                "latitude": "number (double)",
                "longitude": "number (double)"
              },
              "southWestCoordinate": {
                "latitude": "number (double)",
                "longitude": "number (double)"
              }
            }
          },
          "startingDateTime": "string (ISO 8601)",
          "endingDateTime": "string (ISO 8601)",
          "wms": {
            "geoserverUrl": "string",
            "name": "string",
            "legendStyledLayerDescriptor": "string",
            "styledLayerDescriptor": "string"
          }
        }
      ]
    },
    "creationDateTime": "string (ISO 8601)",
    "progress": "number (int64)",
    "downloadUri": "string"
  }
]

Submits a new query

POST /queryjobs

Submits a new query ready to be processed by the backend

The specific format of the query object depends on the type of spatial filter selected.

For point queries only the latitude and longitude are needed.

For area queries the northEastCoordinate and southWestCoordinate parameters define the selected rectangle

For polygon queries it's only needed the id of the polygon

spatialLimitsType

Type of spatial filtering: one of "point", "area" or "polygon"

type
string point, area, polygon
in
query
Request Example
{
  "layers": [
    {
      "dataLayerId": "string",
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)",
      "aggregationOperator": "string"
    }
  ],
  "filters": [
    {
      "dataLayerId": "string",
      "dataSetId": "string",
      "aggregationOperator": "string",
      "operator": "string",
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)",
      "values": [
        "number (double)"
      ]
    }
  ],
  "space": {
    "latitude": "number (double)",
    "longitude": "number (double)",
    "northEastCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "southWestCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "id": "string"
  },
  "name": "string",
  "description": "string",
  "isPublic": "boolean"
}
201 Created

Successful operation

Response Example (201 Created)
{
  "id": "string",
  "isSampleQueryJob": "boolean",
  "status": "string",
  "statusDescription": "string",
  "query": {
    "layers": [
      {
        "dataLayerId": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "aggregationOperator": "string"
      }
    ],
    "filters": [
      {
        "dataLayerId": "string",
        "dataSetId": "string",
        "aggregationOperator": "string",
        "operator": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "values": [
          "number (double)"
        ]
      }
    ],
    "space": {
      "latitude": "number (double)",
      "longitude": "number (double)",
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "id": "string"
    },
    "name": "string",
    "description": "string",
    "isPublic": "boolean"
  },
  "visualization": {
    "timeRange": {
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)"
    },
    "displayedBoundingBox": {
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      }
    },
    "layers": [
      {
        "dataLayer": {
          "id": "string",
          "name": "string",
          "dataSetId": "string",
          "units": "string",
          "description": "string",
          "boundingBox": {
            "northEastCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            },
            "southWestCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            }
          }
        },
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "wms": {
          "geoserverUrl": "string",
          "name": "string",
          "legendStyledLayerDescriptor": "string",
          "styledLayerDescriptor": "string"
        }
      }
    ]
  },
  "creationDateTime": "string (ISO 8601)",
  "progress": "number (int64)",
  "downloadUri": "string"
}

Find query job by id

GET /queryjobs/{queryJobId}

Returns a single query job

queryJobId

Id of query job to return

type
string
in
path
200 OK

Successful operation

404 Not Found

Query job not found

Response Example (200 OK)
{
  "id": "string",
  "isSampleQueryJob": "boolean",
  "status": "string",
  "statusDescription": "string",
  "query": {
    "layers": [
      {
        "dataLayerId": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "aggregationOperator": "string"
      }
    ],
    "filters": [
      {
        "dataLayerId": "string",
        "dataSetId": "string",
        "aggregationOperator": "string",
        "operator": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "values": [
          "number (double)"
        ]
      }
    ],
    "space": {
      "latitude": "number (double)",
      "longitude": "number (double)",
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "id": "string"
    },
    "name": "string",
    "description": "string",
    "isPublic": "boolean"
  },
  "visualization": {
    "timeRange": {
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)"
    },
    "displayedBoundingBox": {
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      }
    },
    "layers": [
      {
        "dataLayer": {
          "id": "string",
          "name": "string",
          "dataSetId": "string",
          "units": "string",
          "description": "string",
          "boundingBox": {
            "northEastCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            },
            "southWestCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            }
          }
        },
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "wms": {
          "geoserverUrl": "string",
          "name": "string",
          "legendStyledLayerDescriptor": "string",
          "styledLayerDescriptor": "string"
        }
      }
    ]
  },
  "creationDateTime": "string (ISO 8601)",
  "progress": "number (int64)",
  "downloadUri": "string"
}

Delete query job by id

DELETE /queryjobs/{queryJobId}

Deletes and returns a single query job

queryJobId

Id of query job to delete

type
string
in
path
200 OK

Successful operation

404 Not Found

Query job not found

Response Example (200 OK)
{
  "id": "string",
  "isSampleQueryJob": "boolean",
  "status": "string",
  "statusDescription": "string",
  "query": {
    "layers": [
      {
        "dataLayerId": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "aggregationOperator": "string"
      }
    ],
    "filters": [
      {
        "dataLayerId": "string",
        "dataSetId": "string",
        "aggregationOperator": "string",
        "operator": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "values": [
          "number (double)"
        ]
      }
    ],
    "space": {
      "latitude": "number (double)",
      "longitude": "number (double)",
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "id": "string"
    },
    "name": "string",
    "description": "string",
    "isPublic": "boolean"
  },
  "visualization": {
    "timeRange": {
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)"
    },
    "displayedBoundingBox": {
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      }
    },
    "layers": [
      {
        "dataLayer": {
          "id": "string",
          "name": "string",
          "dataSetId": "string",
          "units": "string",
          "description": "string",
          "boundingBox": {
            "northEastCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            },
            "southWestCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            }
          }
        },
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "wms": {
          "geoserverUrl": "string",
          "name": "string",
          "legendStyledLayerDescriptor": "string",
          "styledLayerDescriptor": "string"
        }
      }
    ]
  },
  "creationDateTime": "string (ISO 8601)",
  "progress": "number (int64)",
  "downloadUri": "string"
}

Changes the settings for a query job

PUT /queryjobs/{queryJobId}/settings

Changes the settings for a query job like the color scale used to represent a data layer. If the user changing the query job is the owner, it will set the default color scale for that data layer. If the user is not the owner of the query job it will only change its own settings for that data layer

Settings for the data layer

object
visualizationLayerId: string
settings: object
queryJobId

Id of query job to update

type
string
in
path
Request Example
[
  {
    "visualizationLayerId": "string",
    "settings": {
      "colorScaleId": "string",
      "minValue": "number",
      "maxValue": "number",
      "displayUnits": "string"
    }
  }
]
200 OK

Successful operation

Response Example (200 OK)
{
  "id": "string",
  "isSampleQueryJob": "boolean",
  "status": "string",
  "statusDescription": "string",
  "query": {
    "layers": [
      {
        "dataLayerId": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "aggregationOperator": "string"
      }
    ],
    "filters": [
      {
        "dataLayerId": "string",
        "dataSetId": "string",
        "aggregationOperator": "string",
        "operator": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "values": [
          "number (double)"
        ]
      }
    ],
    "space": {
      "latitude": "number (double)",
      "longitude": "number (double)",
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "id": "string"
    },
    "name": "string",
    "description": "string",
    "isPublic": "boolean"
  },
  "visualization": {
    "timeRange": {
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)"
    },
    "displayedBoundingBox": {
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      }
    },
    "layers": [
      {
        "dataLayer": {
          "id": "string",
          "name": "string",
          "dataSetId": "string",
          "units": "string",
          "description": "string",
          "boundingBox": {
            "northEastCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            },
            "southWestCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            }
          }
        },
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "wms": {
          "geoserverUrl": "string",
          "name": "string",
          "legendStyledLayerDescriptor": "string",
          "styledLayerDescriptor": "string"
        }
      }
    ]
  },
  "creationDateTime": "string (ISO 8601)",
  "progress": "number (int64)",
  "downloadUri": "string"
}

Returns an estimation in bytes of the size of the query job

POST /queryjobs/sizeestimation

Returns an estimation of the size of the query job so that clients know if it's going to be too big for the system to process before effectively sending it. The endpoint accepts either the coordinates of a rectangle or a polygon id, if both are provided then the polygon id will be selected

The specific format of the query object depends on the type of spatial and temporal filter selected, for a reference of the possible models go to the final section showing an example of all different possibilities

spatialLimitsType

Type of spatial filtering: one of "point", "area" or "polygon"

type
string point, area, polygon
in
query
Request Example
{
  "layers": [
    {
      "dataLayerId": "string",
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)",
      "aggregationOperator": "string"
    }
  ],
  "filters": [
    {
      "dataLayerId": "string",
      "dataSetId": "string",
      "aggregationOperator": "string",
      "operator": "string",
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)",
      "values": [
        "number (double)"
      ]
    }
  ],
  "space": {
    "latitude": "number (double)",
    "longitude": "number (double)",
    "northEastCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "southWestCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "id": "string"
  },
  "name": "string",
  "description": "string",
  "isPublic": "boolean"
}

Successful operation

Response Example (200 OK)
{
  "sizeInBytes": "number (long)",
  "maxSizeInBytes": "number (long)"
}

User

Users of the platform, every user can create and store multiple queries. They can also share those queries and, in general, access all the resources of the API

Returns the current user

GET /me

Returns the basic information of the current user

200 OK

Successful operation

401 Unauthorized

Unauthorized operation

Response Example (200 OK)
{
  "id": "string",
  "name": "string",
  "email": "string"
}

Accepts the terms and conditions

POST /me

Accepts the terms and conditions for the current user

200 OK

Successful operation

401 Unauthorized

Unauthorized operation

Authenticates a user with an 3rd party provider

GET /users/login

Authenticates a user for a specific provider, valid providers are google, facebook, github, linkedin and w3id. The client is expected to follow the redirect to login in the selected provider.

provider

Login provider

type
string google, facebook, github, linkedin, w3id
in
query
redirect_uri

Redirection URI once the process finishes

type
string
in
query
error_redirect_uri

Redirection URI if the process fails

type
string
in
query
303 See Other

Redirect to the provider login URL

401 Unauthorized

Unauthorized operation

Authenticates a user with email and password

POST /users/login

Authenticates a user with email and password. Only valid for preregistered users in the platform

Credentials of the user logging in

Request Example
{
  "email": "string",
  "password": "string"
}

Successful operation

401 Unauthorized

Unauthorized operation

Response Example (200 OK)
{
  "token": "string"
}

Deauthenticates a user

POST /users/logout

Deauthenticates the current user

200 OK

Successful operation

401 Unauthorized

Unauthorized operation

Schema Definitions

Coordinate: object

latitude: number (double)
longitude: number (double)
Example
{
  "latitude": "number (double)",
  "longitude": "number (double)"
}

TimeRange: object

startingDateTime: string (ISO 8601)
endingDateTime: string (ISO 8601)
Example
{
  "startingDateTime": "string (ISO 8601)",
  "endingDateTime": "string (ISO 8601)"
}

Snapshot: object

snapshotDateTime: string (ISO 8601)
Example
{
  "snapshotDateTime": "string (ISO 8601)"
}

Polygon: object

id: string
Example
{
  "id": "string"
}

Area: object

northEastCoordinate: Coordinate
southWestCoordinate: Coordinate
Example
{
  "northEastCoordinate": {
    "latitude": "number (double)",
    "longitude": "number (double)"
  },
  "southWestCoordinate": {
    "latitude": "number (double)",
    "longitude": "number (double)"
  }
}

Point: object

latitude: number (double)
longitude: number (double)
Example
{
  "latitude": "number (double)",
  "longitude": "number (double)"
}

DataSet: object

id: string
name: string
description: string
additionalInformationUrl: string
level: number (int64)
category: object
dataLayers: DataLayer
Example
{
  "id": "string",
  "name": "string",
  "description": "string",
  "additionalInformationUrl": "string",
  "level": "number (int64)",
  "category": {
    "id": "string",
    "name": "string"
  },
  "dataLayers": [
    {
      "id": "string",
      "name": "string",
      "dataSetId": "string",
      "units": "string",
      "description": "string",
      "boundingBox": {
        "northEastCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        },
        "southWestCoordinate": {
          "latitude": "number (double)",
          "longitude": "number (double)"
        }
      }
    }
  ]
}

DataLayer: object

id: string
name: string
dataSetId: string
units: string
description: string
boundingBox: Area
Example
{
  "id": "string",
  "name": "string",
  "dataSetId": "string",
  "units": "string",
  "description": "string",
  "boundingBox": {
    "northEastCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "southWestCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    }
  }
}

PolygonsResponse: object

totalNumberOfItems: integer
data: PolygonResponse
Example
{
  "totalNumberOfItems": "integer",
  "data": [
    {
      "id": "string",
      "name": "string"
    }
  ]
}

PolygonResponse: object

id: string
name: string
Example
{
  "id": "string",
  "name": "string"
}

TimeSeriesResponse: object

Example
{
  "timeSeries": [
    {
      "dateTime": "string (ISO 8601)",
      "value": "number (double)"
    }
  ]
}

TimeSeriesSnapshotResponse: object

dateTime: string (ISO 8601)
value: number (double)
Example
{
  "dateTime": "string (ISO 8601)",
  "value": "number (double)"
}

LayerSubmission: object

dataLayerId: string
startingDateTime: string (ISO 8601)
endingDateTime: string (ISO 8601)
aggregationOperator: string None, Min, Max, Mean
Example
{
  "dataLayerId": "string",
  "startingDateTime": "string (ISO 8601)",
  "endingDateTime": "string (ISO 8601)",
  "aggregationOperator": "string"
}

FilterSubmission: object

dataLayerId: string
dataSetId: string
aggregationOperator: string None, Min, Max, Mean
operator: string EQ, GT, LT, BT, AM
startingDateTime: string (ISO 8601)
endingDateTime: string (ISO 8601)
values: number[]
Example
{
  "dataLayerId": "string",
  "dataSetId": "string",
  "aggregationOperator": "string",
  "operator": "string",
  "startingDateTime": "string (ISO 8601)",
  "endingDateTime": "string (ISO 8601)",
  "values": [
    "number (double)"
  ]
}

QueryJobLayer: object

dataLayer: DataLayer
startingDateTime: string (ISO 8601)
endingDateTime: string (ISO 8601)
wms: object
Example
{
  "dataLayer": {
    "id": "string",
    "name": "string",
    "dataSetId": "string",
    "units": "string",
    "description": "string",
    "boundingBox": {
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      }
    }
  },
  "startingDateTime": "string (ISO 8601)",
  "endingDateTime": "string (ISO 8601)",
  "wms": {
    "geoserverUrl": "string",
    "name": "string",
    "legendStyledLayerDescriptor": "string",
    "styledLayerDescriptor": "string"
  }
}

QueryJobSizeEstimation: object

sizeInBytes: number (long)
maxSizeInBytes: number (long)
Example
{
  "sizeInBytes": "number (long)",
  "maxSizeInBytes": "number (long)"
}

QueryJob: object

id: string
isSampleQueryJob: boolean
status: string running, success, error
statusDescription: string
query: QueryJobSubmissionRequest
visualization: QueryJobVisualization
creationDateTime: string (ISO 8601)
progress: number (int64)
downloadUri: string
Example
{
  "id": "string",
  "isSampleQueryJob": "boolean",
  "status": "string",
  "statusDescription": "string",
  "query": {
    "layers": [
      {
        "dataLayerId": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "aggregationOperator": "string"
      }
    ],
    "filters": [
      {
        "dataLayerId": "string",
        "dataSetId": "string",
        "aggregationOperator": "string",
        "operator": "string",
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "values": [
          "number (double)"
        ]
      }
    ],
    "space": {
      "latitude": "number (double)",
      "longitude": "number (double)",
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "id": "string"
    },
    "name": "string",
    "description": "string",
    "isPublic": "boolean"
  },
  "visualization": {
    "timeRange": {
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)"
    },
    "displayedBoundingBox": {
      "northEastCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      },
      "southWestCoordinate": {
        "latitude": "number (double)",
        "longitude": "number (double)"
      }
    },
    "layers": [
      {
        "dataLayer": {
          "id": "string",
          "name": "string",
          "dataSetId": "string",
          "units": "string",
          "description": "string",
          "boundingBox": {
            "northEastCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            },
            "southWestCoordinate": {
              "latitude": "number (double)",
              "longitude": "number (double)"
            }
          }
        },
        "startingDateTime": "string (ISO 8601)",
        "endingDateTime": "string (ISO 8601)",
        "wms": {
          "geoserverUrl": "string",
          "name": "string",
          "legendStyledLayerDescriptor": "string",
          "styledLayerDescriptor": "string"
        }
      }
    ]
  },
  "creationDateTime": "string (ISO 8601)",
  "progress": "number (int64)",
  "downloadUri": "string"
}

QueryJobVisualization: object

timeRange: TimeRange
displayedBoundingBox: Area
layers: QueryJobLayer
Example
{
  "timeRange": {
    "startingDateTime": "string (ISO 8601)",
    "endingDateTime": "string (ISO 8601)"
  },
  "displayedBoundingBox": {
    "northEastCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "southWestCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    }
  },
  "layers": [
    {
      "dataLayer": {
        "id": "string",
        "name": "string",
        "dataSetId": "string",
        "units": "string",
        "description": "string",
        "boundingBox": {
          "northEastCoordinate": {
            "latitude": "number (double)",
            "longitude": "number (double)"
          },
          "southWestCoordinate": {
            "latitude": "number (double)",
            "longitude": "number (double)"
          }
        }
      },
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)",
      "wms": {
        "geoserverUrl": "string",
        "name": "string",
        "legendStyledLayerDescriptor": "string",
        "styledLayerDescriptor": "string"
      }
    }
  ]
}

QueryJobSubmissionRequest: object

layers: LayerSubmission
filters: FilterSubmission
space: QueryJobSubmissionSpace
name: string
description: string
isPublic: boolean
Example
{
  "layers": [
    {
      "dataLayerId": "string",
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)",
      "aggregationOperator": "string"
    }
  ],
  "filters": [
    {
      "dataLayerId": "string",
      "dataSetId": "string",
      "aggregationOperator": "string",
      "operator": "string",
      "startingDateTime": "string (ISO 8601)",
      "endingDateTime": "string (ISO 8601)",
      "values": [
        "number (double)"
      ]
    }
  ],
  "space": {
    "latitude": "number (double)",
    "longitude": "number (double)",
    "northEastCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "southWestCoordinate": {
      "latitude": "number (double)",
      "longitude": "number (double)"
    },
    "id": "string"
  },
  "name": "string",
  "description": "string",
  "isPublic": "boolean"
}

QueryJobSubmissionSpace: object

latitude: number (double)
longitude: number (double)
northEastCoordinate: Coordinate
southWestCoordinate: Coordinate
id: string
Example
{
  "latitude": "number (double)",
  "longitude": "number (double)",
  "northEastCoordinate": {
    "latitude": "number (double)",
    "longitude": "number (double)"
  },
  "southWestCoordinate": {
    "latitude": "number (double)",
    "longitude": "number (double)"
  },
  "id": "string"
}

UserResponse: object

id: string
name: string
email: string
Example
{
  "id": "string",
  "name": "string",
  "email": "string"
}

UserAuthenticationRequest: object

email: string
password: string
Example
{
  "email": "string",
  "password": "string"
}

UserAuthenticationResponse: object

token: string
Example
{
  "token": "string"
}

ColorScale: object

id: string
name: string
colors: string[]
Example
{
  "id": "string",
  "name": "string",
  "colors": [
    "string (#RRGGBB)"
  ]
}

geojson+Geometry: object

GeoJSon geometry

type: string Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon

the geometry type

Example
{
  "type": "string"
}

geojson+Point2D: array

number
Example
[
  "number"
]

geojson+Point: object

GeoJSon geometry

coordinates: geojson+Point2D
Example
{
  "coordinates": [
    "number"
  ],
  "type": "string"
}

geojson+LineString: object

GeoJSon geometry

coordinates: geojson+Point2D
Example
{
  "coordinates": [
    [
      "number"
    ]
  ],
  "type": "string"
}

geojson+Polygon: object

GeoJSon geometry

coordinates: object[][]
Example
{
  "coordinates": [
    [
      [
        "number"
      ]
    ]
  ],
  "type": "string"
}

geojson+MultiPoint: object

GeoJSon geometry

coordinates: geojson+Point2D
Example
{
  "coordinates": [
    [
      "number"
    ]
  ],
  "type": "string"
}

geojson+MultiLineString: object

GeoJSon geometry

coordinates: object[][]
Example
{
  "coordinates": [
    [
      [
        "number"
      ]
    ]
  ],
  "type": "string"
}

geojson+MultiPolygon: object

GeoJSon geometry

coordinates: object[][][]
Example
{
  "coordinates": [
    [
      [
        [
          "number"
        ]
      ]
    ]
  ],
  "type": "string"
}

geojson+GeometryCollection: object

GeoJSon geometry collection

type: string GeometryCollection
geometries: geojson+Geometry
Example
{
  "type": "string",
  "geometries": [
    {
      "type": "string"
    }
  ]
}