# 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=& 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: ?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": "", "client_id": "", "client_secret": "", "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_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": "", "password": "", "audience": "https://api.hoxton.cloud", "scope": "offline", "client_id": "", "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": "", "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. ### Create camera - [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. ### Create/Update 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 ### Get live frame - [POST /frame-requests](https://coreapi.hoxton.ai/v0/camera/createframerequest.md): Get a recent video frame from a camera. ### Create/Update camera state request - [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 annotation - [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.