.wpb_animate_when_almost_visible { opacity: 1; }

Network APIs Playground - Population Density Data 0.2

This API is part of the Network APIs Playground. It provides a mock-up of the Population Density Data API following CAMARA standard.

Contact us
Download

Population Density Data
 0.2.0 
OAS 3.0

https://developer.orange.com/ope-contents/channels/87afd7365baec589/offers/1poZ3a9E4svLR19j/products/a4E3BM8GMjSVgfZB/contents/swagger/1LrerxHmTUyyTMQv/population-density-data_v0.2_on_OD.yaml

Population Density Data API exposes population density estimations for a specified area for a specified time interval.

Introduction

With the Population Density Data API the customer can retrieve population density estimations for a specific area at the current or a specified period of time. The estimation considers historical anonymized information of the network connected devices in the requested area. * Note that the data provided are estimations of population, based on past or future predicted data, for both past or future time ranges.

This functionality can be used for multiple use cases, some of the possible use cases for this API are:

  • Supporting BVLOS (Beyond Visual Line of Sight) flights with the information needed to meet SORA 2.5 (Specific Operation Risk Assessment) requirements in terms of intrinsic Ground Risk Class (iGRC). More information in Specific Operations Risk Assessment
  • Providing information to identify if the ground risk class for a given drone flight path is acceptable for the time of the flight, or an alternative time should be considered to lower the risk.
  • Sustainable Urban Planning.
  • Environmental monitoring at mass events, such as concerts or festivals.

The list above is just a few examples, the API can be used for other use cases as well.

Relevant terms and definitions

  • Population Density: refers to the number of people in a given area divided by the total size of the area.
  • Notification URL and token: Developers may provide a callback URL (sink) for receiving an async response. This is an optional parameter. If sink is included, it is RECOMMENDED for the client to provide as well the sinkCredential property to protect the notification endpoint. In the current version,sinkCredential.credentialType MUST be set to ACCESSTOKEN if provided. When an asynchronous response is requested, the 202 response of the API will include an operationId property. This operationId property will also be sent in the callback notification. The purpose of the operationId is to correlate an asynchronous response with its corresponding request.

API Functionality

Once a developer specifies (1) the area as a polygon shape, (2) a precision level and (3) time interval in which they want to obtain the population density, the API returns a data set consisting of a sequence of time ranges, with each time range containing the input polygon subdivided into equal-sized grid cells.

For each of the equal-sized cells of the grid, an estimated population density is reported for each time slot within the range, this includes: estimated population density people/km2, and a range for this estimation - [minimum, maximum] (exact definitions of minimum and maximum are estimation algorithm specific).

These values are calculated based on historical data, prediction models, and population estimation models. The requested interval must either be completely in the future or in the past.

The polygon specifying an area of interest must comply with certain restrictions, which must be previously validated by the developer:

  • The polygon may not exceed a certain area.
  • The polygon may not contain more than 15 vertexes.
  • The polygon must be associated with a location where the MNO provides mobile connectivity services. If a polygon is located entirely outside the supported area, an empty array is returned.

The standard behaviour of the API is synchronous, although for large area requests the API may behave asynchronously. An API invoker can enforce asynchronous behaviour by providing a callback URL (sink) is in the request, in this case the API sends a callback to the callback URL provided with the result of the request. If sink is included, it is RECOMMENDED for the client to provide as well the sinkCredential property to protect the notification endpoint. In the current version,sinkCredential.credentialType MUST be set to ACCESSTOKEN if provided.

For requests with a combination of area, precision, startTime and endTime properties involving an amount of processing that cannot be processed synchronously, the API returns the error response POPULATION_DENSITY_DATA.UNSUPPORTED_SYNC_RESPONSE.

For requests with a combination of area, precision, startTime and endTime properties too big for both synchronous and asynchronous processing, the API returns the error response POPULATION_DENSITY_DATA.UNSUPPORTED_REQUEST. If an error happens during the asynchronous processing of the request. The API callback will have property status with value OPERATION_NOT_COMPLETED as an error cannot be returned in the callback. The callback will also include the statusInfo property to add extra information about the error. NOTE: In order to ensure anonymized information, if the data relating to a grid cell in the required time interval is not sufficient to be exposed due to k-anonymity, no such data is returned by the API and the value of the dataType property is LOW_DENSITY.

Resources and Operations overview

The API provides one endpoint that accepts POST requests for retrieving population density information in the specified area.

Authorization and authentication

The "Camara Security and Interoperability Profile" provides details of how an API consumer requests an access token. Please refer to Identity and Consent Management (https://github.com/camaraproject/IdentityAndConsentManagement/) for the released version of the profile. The specific authorization flows to be used will be agreed upon during the onboarding process, happening between the API consumer and the API provider, taking into account the declared purpose for accessing the API, whilst also being subject to the prevailing legal framework dictated by local legislation. In cases where personal data is processed by the API and users can exercise their rights through mechanisms such as opt-in and/or opt-out, the use of three-legged access tokens is mandatory. This ensures that the API remains in compliance with privacy regulations, upholding the principles of transparency and user-centric privacy-by-design. Population Density Data API ensures the usage of anonymized information and do not treat personal data neither as input nor output. Therefore, the access to Population Density Data API is defined as Client Credentials - 2-legged. Please refer to Identify and Consent Management (https://github.com/camaraproject/IdentityAndConsentManagement/) for the latest detailed specification of this authentication/authorization flow.

Further info and support

(FAQs will be added in a later version of the documentation)

Product documentation at Camara.
Servers
Computed URL:https://api.orange.com/camara/playground/api/population-density-data/v0.2

Server variables

apiRoot
basePath

Population Density Data

Operations to retrieve population density information.

HTTP status code Reason Response model
400 List of supported error codes:
- 20: Invalid URL parameter value
- 21: Missing body
- 22: Invalid body
- 23: Missing body field
- 24: Invalid body field
- 25: Missing header
- 26: Invalid header value
- 27: Missing query-string parameter
- 28: Invalid query-string parameter value
{
  "code": 28,
  "message": "Invalid query-string parameter value",
  "description": "One or more query-string parameters contain invalid values."
}
401 List of supported error codes:
- 40: Missing credentials
- 41: Invalid credentials
- 42: Expired credentials
{
  "code": 42,
  "message": "Expired credentials",
  "description": "The requested service needs credentials, and the ones provided were out-of-date."
}
403 List of supported error codes:
- 50: Access denied
- 51: Forbidden requester
- 52: Forbidden user
- 53: Too many requests
{
  "code": 53,
  "message": "Too many requests",
  "description": "The application has made too many calls and has exceeded the rate limit for this service."
}
404 List of supported error codes:
- 60: Resource not found
{
  "code": 60,
  "message": "Resource not found",
  "description": "The requested URI or the requested resource does not exist."
}
405 List of supported error codes:
- 61: Method not allowed
{
  "code": 61,
  "message": "Method not allowed",
  "description": "The URI does not support the requested method. The available methods should be set in the response header 'Allow'"
}
406 List of supported error codes:
- 62: Not acceptable
{
  "code": 62,
  "message": "Not acceptable",
  "description": "The Accept incoming header does not match any available content-type."
}
408 List of supported error codes:
- 63: Request time-out
{
  "code": 63,
  "message": "Request time-out",
  "description": "The server timed out waiting for the incoming request."
}
409 List of supported error codes:
- 69: Conflict
{
  "code": 69,
  "message": "Conflict",
  "description": "The request could not be completed due to a conflict with the current state of the resource."
}
411 List of supported error codes:
- 64: Length required
{
  "code": 64,
  "message": "Length required",
  "description": "The request did not specify a Content-Length header, which is required by the requested resource."
}
412 List of supported error codes:
- 65: Precondition failed
{
  "code": 65,
  "message": "Precondition failed",
  "description": "One of the precondition request headers (aka. 'If-None-Match', 'If-Match', 'If-Modified-Since', and 'If-Unmodified-Since') failed to match."
}
413 List of supported error codes:
- 66: Request entity too large
{
  "code": 66,
  "message": "Request entity too large",
  "description": "The body of the request/response (PATCH, POST and PUT methods) is larger than the server is willing or able to process."
}
414 List of supported error codes:
- 67: Request-URI too long
{
  "code": 67,
  "message": "Request-URI too long",
  "description": "The URI provided was too long for the server to process."
}
415 List of supported error codes:
- 68: Unsupported Media Type
{
  "code": 68,
  "message": "Unsupported Media Type",
  "description": "The format of the posted body is not supported by the endpoint."
}
429 List of supported error codes:
- 53: Too many requests
{
  "code": 53,
  "message": "Too many requests",
  "description": "The application has made too many calls and has exceeded the rate limit for this service."
}
500 List of supported error codes:
- 1: Internal error
{
  "code": 1,
  "message": "Internal error",
  "description": "Generic failure message, used if no more precise code can be provided."
}
502 List of supported error codes:
- 1: Internal error
- 3: Bad gateway
{
  "code": 1,
  "message": "Bad gateway",
  "description": "A runtime execution error occurs (RaiseFault)."
}
503 List of supported error codes:
- 5: The service is temporarily unavailable
- 6: Orange API is over capacity, retry later !
{
  "code": 6,
  "message": "Orange API is over capacity, retry later !",
  "description": "The service faces too much requests and can not handle the call."
}
504 List of supported error codes:
- 6: Gateway timeout
{
  "code": 6,
  "message": "Gateway timeout",
  "description": "No response was received in time from a backend server acting as gateway or proxy."
}