# HoxtonAi API

# Authentication
All endpoints need a valid access token which can be obtained following either of the authentication flows detailed below.
Both the authentication methods required a OAuth2 client. Create a OAuth2 client for your organisation at
[https://app.hoxton.ai/settings?tab=oauth_client](https://app.hoxton.ai/settings?tab=oauth_client), if not done already.

## Authorization Code Flow
![authorization code flow](https://s3.eu-west-1.amazonaws.com/hoxton.ai/authorization-code-flow-diagram.png)

This method is preferred if you plan to share your oauth client credentials with a third part app. This method involves
directing user to the `login` page on the authorization server. After the user has successfully authenticated, exchange
authorization code received from the server to the `access_token`. This is a multistep method.

- Get `authorization_code`:
  - **Endpoint**: `https://auth.hoxton.ai/authorize`
  - Parameters:

| Parameter       | Type      | Description                                                                                                                               |
|-----------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------|
| `response_type` | required  | Always set this to `code`                                                                                                                 |
| `audience`      | required  | Always set this to `https://api.hoxton.cloud`                                                                                              |
| `scope`         | optional  | A space separated list of claims to include in the token. Use `profile` to get ID token. Include `offline_access` to get *Refresh Token*. |
| `client_id`     | required  | The oauth client's id                                                                                                                     |
| `redirect_uri`  | required  | URL the user should be redirect to after successful login. This must be a valid `Allowed Callback URL` set in the oauth client            |

An example authorization url would be:

```html
https://auth.hoxton.ai/authorize?
    response_type=code&
    client_id=<CLIENT_ID>&
    redirect_uri=<REDIRECT_URI>&
    scope=offline_access&
    audience=https://api.hoxton.cloud
```

On successful authentication, you will receive a `HTTP 302` response with the `authorization_code` included as a parameter.

```html
HTTP/1.1 302 Found
Location: <REDIRECT_URI>?code={authorization_code}
```

- Exchange `authorization_code` to `access_token`:
  - **Endpoint**: `https://auth.hoxton.ai/oauth/token`
  - Parameters:

| Parameter        | Type       | Description                                                                                                                          |
|------------------|------------|--------------------------------------------------------------------------------------------------------------------------------------|
| `grant_type`     | required   | Always set this to `authorization_code`                                                                                              |
| `code`           | required   | The `authorization_code` from the previous step                                                                                      |
| `client_id`      | required   | The oauth client's id                                                                                                                |
| `client_secret`  | required   | The oauth client's secret                                                                                                            |
| `redirect_uri`   | required   | A valid URL configured in the oauth client. This must match exactly the URL passed to the authorization endpoint in the first step   |

You can now exchange the `authorization_code` from the above step to the `access_token` by making a `POST` request to the
token URL.

```shell
curl -X POST https://auth.hoxton.ai/oauth/token
  -H 'Content-Type: application/json'
  -d '{
    "grant_type": "authorization_code",
    "code": "<code_from_authorization_step>",
    "client_id": "<CLIENT_ID>",
    "client_secret": "<CLIENT_SECRET>",
    "redirect_uri": "<REDIRECT_URI>"
  }'
```

All going well, you will get a `HTTP 200` response with the `access_token` which is valid for `24hr`.

```json
{
  "access_token": "eyJhbGc...2oSuHNwA",
  "refresh_token": "v1.MT...4XFunfTks",
  "id_token": "eyv1.KDNM3w...vPkdKvMU",
  "token_type": "Bearer",
  "expires_in": 86400
}
```

## Client Credentials Flow

![client credentials flow](https://s3.eu-west-1.amazonaws.com/hoxton.ai/client-credentials-flow-diagram.png)

This method should be reserved for internal use only. If you are sharing with third party, use `authorization code flow`
described above. This flow is best suited for Machine-to-Machine (M2M) applications, such as CLIs, daemons, or
backend services, because the system must authenticate and authorize the application instead of a user.

To get the access token, make a POST request to the token URL with  the oauth2 client's credentials (`client_id` &
`client_secret`). This is a single step method.

- Get `access_token`:
  - **Endpoint**: `https://auth.hoxton.ai/oauth/token`
  - Parameters:

| Parameter         | Type       | Description                                                                      |
|-------------------|------------|----------------------------------------------------------------------------------|
| `grant_type`      | required   | Always set this to `client_credentials`                                          |
| `audience`        | required   | Always set this to `https://api.hoxton.cloud`                                    |
| `client_id`       | required   | The oauth client's id                                                            |
| `client_secret`   | required   | The oauth client's secret                                                        |

Once you have the required oauth client credentials, the access token can be obtained from the authorization server
by making a POST request to the token URL.

```shell
curl -X POST https://auth.hoxton.ai/oauth/token
  -H 'Content-Type: application/json'
  -d '{
    "grant_type": "client_credentials",
    "audience": "https://api.hoxton.cloud",
    "client_id": "<CLIENT_ID>",
    "client_secret": "<CLIENT_SECRET>",
  }'
```

If the authorization server was able to successfully validate the request, you will receive `HTTP 200` response with
a payload containing `access_token` which is valid for `24hr`.

```json
{
  "access_token": "eyJhbGc...2oSuHNwA",
  "token_type": "Bearer",
  "expires_in": 86400
}
```

## Resource Owner Password Flow

![resource owner password flow](https://s3.eu-west-1.amazonaws.com/hoxton.ai/resource-owner-password-flow-diagram.png)

This method should be reserved for internal use only. If you are sharing with third party, use `authorization code flow`
described above.

To get the access token first get the user's credentials (`username` & `password`). Then get the oauth2 client's
credentials (`client_id` & `client_secret`). Finally, exchange them for token by making a `POST` request to the
token URL. This is a single step method.

- 1. Get `access_token`:
  - **Endpoint**: `https://auth.hoxton.ai/oauth/token`
  - Parameters

| Parameter         | Type       | Description                                                                                                                               |
|-------------------|------------|-------------------------------------------------------------------------------------------------------------------------------------------|
| `grant_type`      | required   | Always set this to `password`                                                                                                             |
| `audience`        | required   | Always set this to `https://api.hoxton.cloud`                                                                                             |
| `scope`           | optional   | A space separated list of claims to include in the token. Use `profile` to get ID token. Include `offline_access` to get *Refresh Token*. |
| `username`        | required   | The user's loging username                                                                                                                |
| `password`        | required   | The user's login password                                                                                                                 |
| `client_id`       | required   | The oauth client's id                                                                                                                     |
| `client_secret`   | required   | The oauth client's secret                                                                                                                 |

Once you have the required oauth client credentials, the access token can be obtained from the authorization server
by making a POST request to the token URL.

```shell
curl -X POST https://auth.hoxton.ai/oauth/token
  -H 'Content-Type: application/json'
  -d '{
    "grant_type": "password",
    "username": "<USERNAME>",
    "password": "<PASSWORD>",
    "audience": "https://api.hoxton.cloud",
    "scope": "offline",
    "client_id": "<CLIENT_ID>",
    "client_secret": "<CLIENT_SECRET>",
  }'
```

If the authorization server was able to successfully validate the request, you will receive `HTTP 200` response with
a payload containing `access_token` which is valid for `24hr`.

```json
{
  "access_token": "eyJhbGc...2oSuHNwA",
  "refresh_token": "v1.MT...4XFunfTks",
  "id_token": "eyv1.KDNM3w...vPkdKvMU",
  "token_type": "Bearer",
  "expires_in": 86400
}
```

## Refresh Token

If you have requested `offline_access` claim in the authorisation call as described above, you can request a new
`access_token` using this method.

- 1. Get new `access_token` and `refresh_token`:
  - **Endpoint**: `https://auth.hoxton.ai/oauth/token`
  - Parameters

| Parameter       | Type       | Description                                                                                                                 |
|-----------------|------------|-----------------------------------------------------------------------------------------------------------------------------|
| `grant_type`    | required   | Always set this to `refresh_token`                                                                                          |
| `scope`         | optional   | A space separated list of claims to include in the token. Do not set this parameter if you want to keep the original claims |
| `client_id`     | required   | The oauth client's id use in the initial authorization call                                                                 |
| `refresh_token` | required   | The `refresh_token` from the previous successful authorization call                                                         |

To get a new `access_token` & `refresh_token`, make a `POST` request to the token URL.

```shell
curl -X POST https://auth.hoxton.ai/oauth/token
  -H 'Content-Type: application/json'
  -d '{
    "grant_type": "refresh_token",
    "client_id": "<CLIENT_ID>",
    "scope": "offline",
    "refresh_token": "v1.MT...4XFunfTks"
  }'
```

If the authorization server was able to successfully validate the request, you will receive `HTTP 200` response with
a payload containing `access_token` (which is valid for `24hr`) and a `refresh_token`.

```json
{
  "access_token": "eyJhbGc...2oSuHNwA",
  "refresh_token": "v1.MT...4XFunfTks",
  "id_token": "eyv1.KDNM3w...vPkdKvMU",
  "token_type": "Bearer",
  "expires_in": 86400
}
```


Version: 0.0.1
License: Proprietary

## Servers

```
https://hoxton.cloud/api/v0
```

## Security

### o_auth

Type: oauth2
Authorization URL: https://auth.hoxton.ai/authorize?audience=https://api.hoxton.cloud
Scopes:

## Download OpenAPI description

[HoxtonAi API](https://coreapi.hoxton.ai/_bundle/v0/index.yaml)

## Reports

APIs to manage an Organisation's monitor reports.

### Create aggregated api metrics report

 - [POST /aggregated-api-request-metrics-reports](https://coreapi.hoxton.ai/v0/report/createaggregatedapirequestmetricsreport.md): Create a report of aggregated api request metrics for a given time range and list of organisations.

### Create aggregated video metrics report

 - [POST /aggregated-video-metrics-reports](https://coreapi.hoxton.ai/v0/report/createaggregatedvideometricsreport.md): Create a report of aggregated camera metrics for a given time range and list of cameras.

### Create live occupancy report

 - [POST /live-occupancy](https://coreapi.hoxton.ai/v0/report/createliveoccupancyreport.md): Create a report of live occupancies for a list of occupancy monitors.

### Create occupancy report

 - [POST /occupancy-reports](https://coreapi.hoxton.ai/v0/report/createoccupancyreport.md): Create a report of occupancy counts for a given time range and set of monitors.

### Create peel off report

 - [POST /peel-off-reports](https://coreapi.hoxton.ai/v0/report/createpeeloffreport.md): Create a peel off report for a given time range and set of monitors.

### Create people count report

 - [POST /people-count-reports](https://coreapi.hoxton.ai/v0/report/createpeoplecountreport.md): Create a report of people counts for a given time range and set of monitors.

## Dwell Times

APIs to manage an Organisation's Dwell Time reports.

### List Dwell Time Reports

 - [GET /dwell-time-reports](https://coreapi.hoxton.ai/v0/dwelltimereport/listdwelltimereports.md): List of all dwell time reports for the given organisation

### Create dwell time report

 - [POST /dwell-time-reports](https://coreapi.hoxton.ai/v0/dwelltimereport/createdwelltimereport.md): Create a report of dwell time for a given time range and given organisation

### Get Dwell Time Report

 - [GET /dwell-time-reports/{dwellTimeReportId}](https://coreapi.hoxton.ai/v0/dwelltimereport/getdwelltimereport.md): Get a dwell time report identified by the provided report ID.

## Organisations

APIs to manage Organisations.

### List organisations

 - [GET /organisations](https://coreapi.hoxton.ai/v0/organisation/listorganisations.md): List organisations in the portfolio.

### Get organisation

 - [GET /organisations/{organisationId}](https://coreapi.hoxton.ai/v0/organisation/getorganisation.md): Get all attributes of an organisation model given an organisation ID.

## Users

APIs to manage an Organisation's users.

### List users

 - [GET /users](https://coreapi.hoxton.ai/v0/user/listusers.md): Fetch the list of users associated with an organisation or site.

### Create/Update user

 - [PUT /users](https://coreapi.hoxton.ai/v0/user/putuser.md): Create/Update an user.

### Get my profile

 - [GET /users/me](https://coreapi.hoxton.ai/v0/user/getme.md): Returns the profile data of the caller.

### Delete user

 - [DELETE /users/{userId}](https://coreapi.hoxton.ai/v0/user/deleteuser.md): Remove an user.

### Get user

 - [GET /users/{userId}](https://coreapi.hoxton.ai/v0/user/getuser.md): Get details of the user given by the ID.

## OAuth Clients

APIs to manage OAuth clients.

### List OAuth client links

 - [GET /oauth-clients](https://coreapi.hoxton.ai/v0/oauthclient/listoauthclientlinks.md): List OAuth client links.

### Create/Update OAuth client

 - [PUT /oauth-clients](https://coreapi.hoxton.ai/v0/oauthclient/putoauthclient.md): Update an OAuth client.

### Delete OAuth client

 - [DELETE /oauth-clients/{oAuthClientId}](https://coreapi.hoxton.ai/v0/oauthclient/deleteoauthclient.md): Remove an OAuth client.

### Get OAuth client

 - [GET /oauth-clients/{oAuthClientId}](https://coreapi.hoxton.ai/v0/oauthclient/getoauthclient.md): Get an OAuth client.

### Rotate client secret

 - [POST /oauth-clients/{oAuthClientId}/rotate-secret](https://coreapi.hoxton.ai/v0/oauthclient/rotateclientsecret.md): Rotate an OAuth client secret ID

## Sites

APIs to manage an organisation's sites.

### List sites

 - [GET /sites](https://coreapi.hoxton.ai/v0/site/listsites.md): List all the sites in the portfolio along with the organisations that own them.

### Create/Update site

 - [PUT /sites](https://coreapi.hoxton.ai/v0/site/putsite.md): Update site information.

### Delete site

 - [DELETE /sites/{siteId}](https://coreapi.hoxton.ai/v0/site/deletesite.md): Set the state of a site to decommissioned.

### Get site

 - [GET /sites/{siteId}](https://coreapi.hoxton.ai/v0/site/getsite.md): Get all attributes of a site model given a site ID.

## Cameras

APIs to manage an organisation's cameras.

### List cameras

 - [GET /cameras](https://coreapi.hoxton.ai/v0/camera/listcameras.md): List all claimed cameras in the fleet along with the organisations that own them.

### Link camera to organisation

 - [POST /cameras](https://coreapi.hoxton.ai/v0/camera/createcamera.md): Link a camera to an organisation.

### Delete camera

 - [DELETE /cameras/{cameraId}](https://coreapi.hoxton.ai/v0/camera/deletecamera.md): Decommission a camera that is in state running or paused.

### Get camera

 - [GET /cameras/{cameraId}](https://coreapi.hoxton.ai/v0/camera/getcamera.md): Get a camera identified by the provided camera ID.

### Patch camera

 - [PATCH /cameras/{cameraId}](https://coreapi.hoxton.ai/v0/camera/patchcamera.md): Update camera name and/or direction aliases of the camera identified by the provided camera ID.

### Move camera

 - [POST /cameras/{cameraId}/move](https://coreapi.hoxton.ai/v0/camera/movecamera.md): Move camera to new site

### Get camera opening hour

 - [GET /cameras/{cameraId}/opening-hours](https://coreapi.hoxton.ai/v0/camera/getcameraopeninghour.md): Get all attributes of a camera model given a camera ID.

### Change camera state

 - [PUT /cameras/{cameraId}/state/{newState}](https://coreapi.hoxton.ai/v0/camera/putcamerastate.md): Change the state of a camera from running to paused or vice-versa.

### Get video upload metrics

 - [GET /cameras/{cameraId}/video-upload-metrics](https://coreapi.hoxton.ai/v0/camera/getvideouploadmetrics.md): Get video upload metrics for the provided camera ID

### Request live frame

 - [POST /frame-requests](https://coreapi.hoxton.ai/v0/camera/createframerequest.md): Get a recent video frame from a camera.

### Change camera state

 - [POST /put-camera-state-requests](https://coreapi.hoxton.ai/v0/camera/putcamerastaterequest.md): Change the state of a camera from claimed to claimed_paused or vice-versa.

### Register camera

 - [POST /register-camera-requests](https://coreapi.hoxton.ai/v0/camera/registercamerarequest.md): Create a camera in a registered state.

## Annotations

APIs to manage an annotation.

### List annotations

 - [GET /annotations](https://coreapi.hoxton.ai/v0/annotation/listannotations.md): Get all available annotations subject to filters.

### Create/Update annotation

 - [PUT /annotations](https://coreapi.hoxton.ai/v0/annotation/putannotation.md): Update an annotation if it exists, create a new one otherwise.

### Delete annotation

 - [DELETE /annotations/{annotationId}](https://coreapi.hoxton.ai/v0/annotation/deleteannotation.md): Delete an annotation.

### Get annotation

 - [GET /annotations/{annotationId}](https://coreapi.hoxton.ai/v0/annotation/getannotation.md): Get an annotation identified by its id.

## Alert

APIs to manage an organisation's alerts.

### List alerts

 - [GET /alerts](https://coreapi.hoxton.ai/v0/alert/listalerts.md): Get all available alerts subject to filters.

### Create/Update alert

 - [PUT /alerts](https://coreapi.hoxton.ai/v0/alert/putalert.md): Update an alert if it exists, create a new one otherwise.

### Delete alert

 - [DELETE /alerts/{alertId}](https://coreapi.hoxton.ai/v0/alert/deletealert.md): Delete an alert.

### Get alert

 - [GET /alerts/{alertId}](https://coreapi.hoxton.ai/v0/alert/getalert.md): Get an alert identified by its id.

## Alert Notification Group Mappings

APIs to manage an organisation's alert notification group mappings.

### List alert notification group mappings

 - [GET /alert-notification-group-mappings](https://coreapi.hoxton.ai/v0/alertnotificationgroupmapping/listalertnotificationgroupmappings.md): Get all available alert notification group mappings subject to filters.

### Create/Update alert notification group mapping

 - [PUT /alert-notification-group-mappings](https://coreapi.hoxton.ai/v0/alertnotificationgroupmapping/putalertnotificationgroupmapping.md): Update an alert notification group link if it exists, create a new one otherwise.

### Delete alert notification group mapping

 - [DELETE /alert-notification-group-mappings/{alertNotificationGroupMappingId}](https://coreapi.hoxton.ai/v0/alertnotificationgroupmapping/deletealertnotificationgroupmapping.md): Delete an alert notification group mapping.

### Get alert notification group mapping

 - [GET /alert-notification-group-mappings/{alertNotificationGroupMappingId}](https://coreapi.hoxton.ai/v0/alertnotificationgroupmapping/getalertnotificationgroupmapping.md): Get a mapping between an alert and a notification group identified by its id.

## Alert Camera Position Mappings

APIs to manage an organisation's alert camera position mappings.

### List alert camera position mappings

 - [GET /alert-camera-position-mappings](https://coreapi.hoxton.ai/v0/alertcamerapositionmapping/listalertcamerapositionmappings.md): Get all available links between alters and camera positions subject
to filters.

### Create/Update alert camera position mapping

 - [PUT /alert-camera-position-mappings](https://coreapi.hoxton.ai/v0/alertcamerapositionmapping/putalertcamerapositionmapping.md): Update a link between an alert and a camera
position if it exists, create a new one otherwise.

### Delete alert camera position mapping

 - [DELETE /alert-camera-position-mappings/{alertCameraPositionMappingId}](https://coreapi.hoxton.ai/v0/alertcamerapositionmapping/deletealertcamerapositionmapping.md): Delete a link between an alert and a camera
position.

### Get alert camera position mapping

 - [GET /alert-camera-position-mappings/{alertCameraPositionMappingId}](https://coreapi.hoxton.ai/v0/alertcamerapositionmapping/getalertcamerapositionmapping.md): Get a link between an alert and a camera position
identified by its id.

## Alert Occupancy Monitor Mappings

APIs to manage an organisation's alert occupancy monitor mappings.

### List alert occupancy monitor mappings

 - [GET /alert-occupancy-monitor-mappings](https://coreapi.hoxton.ai/v0/alertoccupancymonitormapping/listalertoccupancymonitormappings.md): Get all links between occupancy monitors and alert subject to filters.

### Create/Update alert occupancy monitor mapping

 - [PUT /alert-occupancy-monitor-mappings](https://coreapi.hoxton.ai/v0/alertoccupancymonitormapping/putalertoccupancymonitormapping.md): Update an occupancy monitor to alert mapping if it exists, create a new
object linking the given occupancy monitor to the given alert otherwise.

### Delete alert occupancy monitor mapping

 - [DELETE /alert-occupancy-monitor-mappings/{alertOccupancyMonitorMappingId}](https://coreapi.hoxton.ai/v0/alertoccupancymonitormapping/deletealertoccupancymonitormapping.md): Set the state of an occupancy monitor to alert mapping to deleted.

### Get alert occupancy monitor mapping

 - [GET /alert-occupancy-monitor-mappings/{alertOccupancyMonitorMappingId}](https://coreapi.hoxton.ai/v0/alertoccupancymonitormapping/getalertoccupancymonitormapping.md): Get an occupancy monitor to alert mapping identified by the provided ID.

## Notification Groups

APIs to manage an organisation's notification groups.

### List notification groups

 - [GET /notification-groups](https://coreapi.hoxton.ai/v0/notificationgroup/listnotificationgroups.md): Get all notification groups subject to filters.

### Create/Update notification group

 - [PUT /notification-groups](https://coreapi.hoxton.ai/v0/notificationgroup/putnotificationgroup.md): Update a notification group exists if exists, create a new one otherwise.

### Delete notification group

 - [DELETE /notification-groups/{notificationGroupId}](https://coreapi.hoxton.ai/v0/notificationgroup/deletenotificationgroup.md): Set the state of a notification group to deleted.

### Get notification group

 - [GET /notification-groups/{notificationGroupId}](https://coreapi.hoxton.ai/v0/notificationgroup/getnotificationgroup.md): Get a notification group identified by the provided ID.

## Notification Group Mappings

APIs to manage an organisation's notification group links.

### List notification group notification groups

 - [GET /notification-group-notification-groups](https://coreapi.hoxton.ai/v0/notificationgroupmapping/listnotificationgroupnotificationgroups.md): Get all notification groups link subject to filters.

### Create/Update notification group notification group

 - [PUT /notification-group-notification-groups](https://coreapi.hoxton.ai/v0/notificationgroupmapping/putnotificationgroupnotificationgroup.md): Update existing notification group link, create a new one otherwise.

### Delete notification group notification group

 - [DELETE /notification-group-notification-groups/{notificationGroupNotificationGroupId}](https://coreapi.hoxton.ai/v0/notificationgroupmapping/deletenotificationgroupnotificationgroup.md): Set the state of a notification group link to deleted.

### Get notification group notification group

 - [GET /notification-group-notification-groups/{notificationGroupNotificationGroupId}](https://coreapi.hoxton.ai/v0/notificationgroupmapping/getnotificationgroupnotificationgroup.md): Get a notification group link identified by the provided ID.

## Occupancy Monitors

APIs to manage an Organisation's occupancy monitors.

### List occupancy monitors

 - [GET /occupancy-monitors](https://coreapi.hoxton.ai/v0/occupancymonitor/listoccupancymonitors.md): Get all available occupancy monitors subject to filters.

### Create/Update occupancy monitor

 - [PUT /occupancy-monitors](https://coreapi.hoxton.ai/v0/occupancymonitor/putoccupancymonitor.md): Update an occupancy monitor if it exists, create a new one otherwise.

### Delete occupancy monitor

 - [DELETE /occupancy-monitors/{occupancyMonitorId}](https://coreapi.hoxton.ai/v0/occupancymonitor/deleteoccupancymonitor.md): Set the state of an occupancy monitor to deleted.

### Get occupancy monitor

 - [GET /occupancy-monitors/{occupancyMonitorId}](https://coreapi.hoxton.ai/v0/occupancymonitor/getoccupancymonitor.md): Get an occupancy monitor identified by the provided ID.

## Occupancy Monitor Camera Positions

APIs to manage an Organisation's occupancy monitor camera positions.

### List occupancy monitor camera positions

 - [GET /occupancy-monitor-camera-positions](https://coreapi.hoxton.ai/v0/occupancymonitorcameraposition/listoccupancymonitorcamerapositions.md): Get all available occupancy monitor camera positions subject to filters.

### Create/Update occupancy monitor camera position

 - [PUT /occupancy-monitor-camera-positions](https://coreapi.hoxton.ai/v0/occupancymonitorcameraposition/putoccupancymonitorcameraposition.md): Update an occupancy monitor's camera position if it exists, create a new
object linking the given occupancy monitor to the given camera position otherwise.

### Delete occupancy monitor camera position

 - [DELETE /occupancy-monitor-camera-positions/{occupancyMonitorCameraPositionId}](https://coreapi.hoxton.ai/v0/occupancymonitorcameraposition/deleteoccupancymonitorcameraposition.md): Set the state of an occupancy monitor camera position to deleted.

### Get occupancy monitor camera position

 - [GET /occupancy-monitor-camera-positions/{occupancyMonitorCameraPositionId}](https://coreapi.hoxton.ai/v0/occupancymonitorcameraposition/getoccupancymonitorcameraposition.md): Get an occupancy monitor camera position identified by the provided ID.

## People Count Monitors

APIs to manage an Organisation's people count monitors.

### List people count monitors

 - [GET /people-count-monitors](https://coreapi.hoxton.ai/v0/peoplecountmonitor/listpeoplecountmonitors.md): Get all available occupancy monitors subject to filters.

### Create/Update people count monitor

 - [PUT /people-count-monitors](https://coreapi.hoxton.ai/v0/peoplecountmonitor/putpeoplecountmonitor.md): Update a people count monitor if it exists, create a new one otherwise.

### Delete people count monitor

 - [DELETE /people-count-monitors/{peopleCountMonitorId}](https://coreapi.hoxton.ai/v0/peoplecountmonitor/deletepeoplecountmonitor.md): Set the state of a people count monitor to deleted.

### Get people count monitor

 - [GET /people-count-monitors/{peopleCountMonitorId}](https://coreapi.hoxton.ai/v0/peoplecountmonitor/getpeoplecountmonitor.md): Get a people count monitor identified by the provided ID.

## People Count Monitor Camera Positions

APIs to manage an Organisation's people count monitor camera positions.

### List people count monitor camera positions

 - [GET /people-count-monitor-camera-positions](https://coreapi.hoxton.ai/v0/peoplecountmonitorcameraposition/listpeoplecountmonitorcamerapositions.md): Get all available occupancy monitor camera positions subject to filters.

### Create/Update people count monitor camera position

 - [PUT /people-count-monitor-camera-positions](https://coreapi.hoxton.ai/v0/peoplecountmonitorcameraposition/putpeoplecountmonitorcameraposition.md): Update a people count monitor's camera position if it exists, create a new
object linking the given people count monitor to the given camera position otherwise.

### Delete people count monitor camera position

 - [DELETE /people-count-monitor-camera-positions/{peopleCountMonitorCameraPositionId}](https://coreapi.hoxton.ai/v0/peoplecountmonitorcameraposition/deletepeoplecountmonitorcameraposition.md): Set the state of a people count monitor camera position to deleted.

### Get people count monitor camera position

 - [GET /people-count-monitor-camera-positions/{peopleCountMonitorCameraPositionId}](https://coreapi.hoxton.ai/v0/peoplecountmonitorcameraposition/getpeoplecountmonitorcameraposition.md): Get a people count monitor camera position identified by the provided ID.

## Peel Off Monitors

APIs to manage an Organisation's peel off monitors.

### List peel off monitors

 - [GET /peel-off-monitors](https://coreapi.hoxton.ai/v0/peeloffmonitor/listpeeloffmonitors.md): Get all available peel off monitors subject to filters.

### Create/Update peel off monitor

 - [PUT /peel-off-monitors](https://coreapi.hoxton.ai/v0/peeloffmonitor/putpeeloffmonitor.md): Update a peel off monitor if it exists, create a new one otherwise.

### Delete peel off monitor

 - [DELETE /peel-off-monitors/{peelOffMonitorId}](https://coreapi.hoxton.ai/v0/peeloffmonitor/deletepeeloffmonitor.md): Set the state of a peel off monitor to deleted.

### Get peel off monitor

 - [GET /peel-off-monitors/{peelOffMonitorId}](https://coreapi.hoxton.ai/v0/peeloffmonitor/getpeeloffmonitor.md): Get a peel off monitor identified by the provided ID.

## Peel Off Monitor Camera Positions

APIs to manage an Organisation's peel off monitor camera positions.

### List peel off monitor camera positions

 - [GET /peel-off-monitor-camera-positions](https://coreapi.hoxton.ai/v0/peeloffmonitorcameraposition/listpeeloffmonitorcamerapositions.md): Get all available peel off monitor camera positions subject to filters.

### Create/Update peel off monitor camera position

 - [PUT /peel-off-monitor-camera-positions](https://coreapi.hoxton.ai/v0/peeloffmonitorcameraposition/putpeeloffmonitorcameraposition.md): Update a peel off monitor's camera position if it exists, create a new
object linking the given peel off monitor to the given camera position otherwise.

### Delete peel off monitor camera position

 - [DELETE /peel-off-monitor-camera-positions/{peelOffMonitorCameraPositionId}](https://coreapi.hoxton.ai/v0/peeloffmonitorcameraposition/deletepeeloffmonitorcameraposition.md): Set the state of a peel off monitor camera position to deleted.

### Get peel off monitor camera position

 - [GET /peel-off-monitor-camera-positions/{peelOffMonitorCameraPositionId}](https://coreapi.hoxton.ai/v0/peeloffmonitorcameraposition/getpeeloffmonitorcameraposition.md): Get a peel off monitor camera position identified by the provided ID.

