# Requests
---
!!!
Our default endpoint is: https://app.monuv.com.br
!!!
### List cameras

Returns a paginated list of cameras

- Path: https://app.monuv.com.br/api/v4/cameras
- Method: GET

#### Parameters:
Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
p      | String | live url stream format (set to p=hls for Apple HLS) | :icon-x:
page   | Integer | Page number | :icon-x: (Default: 1)

#### Response Main Fields:
Name   |  Type | Description 
:---   | :---: | :--- 
id  | String  | camera id
description   | String  | camera's description
stream_status_desc   | String  | camera's status description (ONLINE, OFFLINE, ERRO PERMANENTE, etc.)
live_url   | String  | live video url (this url should be given to the video player)
server_url   | String  | url of the server which the camera is connected
thumb_url   | String  | url to the camera's last thumbnail
digest   | String  | digest for camera API requests
player_digest   | String  | digest for camera player access (valid for current day). Use this to access the player without authentication token
hash   | String  | hash for camera video requests
client_id   | String  | camera's client id
address   | String  | camera's address
latitude   | String  | camera's latitude
longitude   | String  | camera's longitude
recording_error | Boolean | Informs if the camera recording has any errors
plan | String | Informs camera hired plan
last_recieved_width | Integer | Informs witdh of the last recieved video (given a caching interval)
last_recieved_height | Integer | Informs height of the last recieved video (given a caching interval)
resolution_error | Boolean | Informs if the recieved video dimensions are compatible with the camera current plan

```json
{
    "data": [
        {
            "id": "0000",
            "description": "Teste IA#0000",
            "stream_status_desc": "OFFLINE",
            "live_url": "LIVE_URL",
            "server_url": "",
            "thumb_url": "THUMB_URL",
            "digest": "DIGEST",
            "player_digest": "PLAYER_DIGEST",
            "hash": "HASH",
            "client_id": "CLIENT_ID",
            "address": "ADRESS",
            "latitude": "LAT",
            "longitude": "LON",
            "plan": " HD  (7 dias)",
            "last_recieved_width": 1280,
            "last_recieved_height": 720,
            "resolution_error": 0,
        },
        ...
    ],
    "total": 100,
    "per_page": 10,
    "current_page": 1,
    "last_page": 10,
    "from": 1,
    "to": 10
}
```
#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/api/v4/cameras?token=USER_TOKEN'
```

+++ node
```node
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/v4/cameras?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
```
+++ python
```python
import requests

url = "https://app.monuv.com.br/api/v4/cameras?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Get camera

Returns a registered camera object

- Path: https://app.monuv.com.br/api/camera-player/{id}
- Method: GET

#### Parameters:
Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:

#### Response Main Fields:
Name   |  Type | Description 
:---   | :---: | :--- 
id  | String  | camera id
description   | String  | camera's description
status   | String  | camera's status description (ONLINE, OFFLINE, ERRO PERMANENTE, etc.)
live_url   | String  | live video url (this url should be given to the video player)
server_url   | String  | url of the server which the camera is connected
thumb_url   | String  | url to the camera's last thumbnail
digest   | String  | digest for camera API requests
player_digest   | String  | digest for camera player access (valid for current day). Use this to access the player without authentication token
hash   | String  | hash for camera video requests
client_id   | String  | camera's client id
address   | String  | camera's address
latitude   | String  | camera's latitude
longitude   | String  | camera's longitude
recording_error | Boolean | Informs if the camera recording has any errors
plan | String | Informs camera hired plan
last_recieved_width | Integer | Informs witdh of the last recieved video (given a caching interval)
last_recieved_height | Integer | Informs height of the last recieved video (given a caching interval)
resolution_error | Boolean | Informs if the recieved video dimensions are compatible with the camera current plan

```json
{
    "id": "0000",
    "description": "Teste IA#0000",
    "status": "OFFLINE",
    "live_url": "LIVE_URL",
    "server_url": "",
    "thumb_url": "THUMB_URL",
    "digest": "DIGEST",
    "player_digest": "PLAYER_DIGEST",
    "hash": "HASH",
    "client_id": "CLIENT_ID",
    "address": "ADRESS",
    "latitude": "LAT",
    "longitude": "LON",
    "plan": " HD  (7 dias)",
    "last_recieved_width": 1280,
    "last_recieved_height": 720,
    "resolution_error": 0,
}
```
#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/api/camera-player/1001?token=USER_TOKEN'
```

+++ node
```node
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera-player/1001?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
```
+++ python
```python
import requests

url = "https://app.monuv.com.br/api/camera-player/1001?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Get camera player

Returns HTML with the camera's video player

- Path: https://app.monuv.com.br/api/camera/{id}/player
- Method: GET

!!!
**Note:** This endpoint accepts authentication via `player_digest` (default method) or `token` (alternative). The `player_digest` is obtained from the camera listing response and is valid for the current day. Alternatively, you can use the user's authentication token.
!!!

#### Parameters:

| Name              |   Type  | Description                                                                                                     |   Required   |
| :---------------- | :-----: | :-------------------------------------------------------------------------------------------------------------- | :----------: |
| player_digest     |  String | camera player digest obtained from camera listing (valid for current day)                                      | :icon-check: (or token) |
| id                | Integer | camera id                                                                                                       | :icon-check: |
| footer            | Boolean | Video timeline visibility <br> 0 = Hidden <br> 1 = Visible                                                      |   :icon-x:   |
| controls          | Boolean | Video controls visibility <br> 0 = Hidden <br> 1 = Visible                                                      |   :icon-x:   |
| ts                | Integer | Unix timestamp (seconds) to set recording player start (0 for live stream)                                      |   :icon-x:   |
| delay             | Integer | delay in seconds to how further back the player will start from the given timestamp                             |   :icon-x:   |
| timeline_interval | Integer | Timeline range that will be displayed (Default 24 hours) <br> 10 = 10 minutes <br> 1 = 1 hour <br> 24 = 24 hour |   :icon-x:   |
| video_speed       |  String | Speed at which recorded video will be displayed (Default 1x) <br> options: 0.5, 1, 2, 4, 8, 16                  |   :icon-x:   |
| hideFooter        | Boolean | Remove footer padding <br> true = Hidden <br> false = Visible                                                   |   :icon-x:   |
| hideHeader        | Boolean | Remove header padding <br> true = Hidden <br> false = Visible                                                   |   :icon-x:   |
| fixFullScreen     | Boolean | Remove outer paddings to allow full container usage <br> true = Enabled <br> false = Disabled                   |   :icon-x:   |
| timeline_ranges   | String (JSON array) | Custom timeline highlight ranges. Accepted range keys: `start_ts` + `end_ts` or `ini` + `end` (milliseconds) |   :icon-x:   |
| start_ts          | Integer | Single custom highlight start timestamp in milliseconds (alternative to `timeline_ranges`)                      |   :icon-x:   |
| end_ts            | Integer | Single custom highlight end timestamp in milliseconds (alternative to `timeline_ranges`)                        |   :icon-x:   |
| start_timestamps[]| Integer[] | List of custom highlight start timestamps in milliseconds (paired by index with `end_timestamps[]`)          |   :icon-x:   |
| end_timestamps[]  | Integer[] | List of custom highlight end timestamps in milliseconds (paired by index with `start_timestamps[]`)          |   :icon-x:   |
| timeline_ranges_fill | String | Default fill color used for custom highlight ranges. Accepted formats: `#RGB`, `#RRGGBB`, `#RRGGBBAA`, `rgb(...)`, `rgba(...)` |   :icon-x:   |
| token             |  String | user's Monuv token (alternative authentication method - use player_digest instead)                              |   :icon-x:   |

!!!
**Timeline custom highlights:**  
- All custom timestamps (`timeline_ranges`, `start_ts/end_ts`, arrays) must be sent in **milliseconds**.  
- You can use **one of these 3 modes**:
  1. **Highlight only** (no color params): ranges are drawn with default color.
  2. **One color for all custom ranges**: set `timeline_ranges_fill`.
  3. **One color per range**: set `fill` (or `color`) inside each `timeline_ranges` item.
- Priority order: per-range `fill`/`color` > `timeline_ranges_fill` > default color.
- For consistency, examples below use **HEX** colors (`#RRGGBB`).
!!!

#### Response:

```html
'<!DOCTYPE html>\n<html lang="pt-br" style=\'height:100%\'>\n<head>\n\n (...)
```

#### Code example
+++ cURL
```sh
# Using player_digest (default method)
curl --location 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST'

# Alternative: using token
# curl --location 'https://app.monuv.com.br/api/camera/0000/player?token=USER_TOKEN'

# 1) Highlight only (default color)
# curl --location --globoff 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000}]'

# 2) One color for all custom ranges
# curl --location --globoff 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000},{"start_ts":1777319000000,"end_ts":1777319300000}]&timeline_ranges_fill=%23FFCC00'

# 3) One color per range
# curl --location --globoff 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000,"fill":"#FFCC00"},{"start_ts":1777319000000,"end_ts":1777319300000,"fill":"#00C853"}]'
```

+++ node
```node
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

// Using player_digest (default method)
let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST',
};

// Alternative: using token
// url: 'https://app.monuv.com.br/api/camera/0000/player?token=USER_TOKEN',

// 1) Highlight only (default color)
// url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000}]',

// 2) One color for all custom ranges
// url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000},{"start_ts":1777319000000,"end_ts":1777319300000}]&timeline_ranges_fill=%23FFCC00',

// 3) One color per range
// url: 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000,"fill":"#FFCC00"},{"start_ts":1777319000000,"end_ts":1777319300000,"fill":"#00C853"}]',

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
```
+++ python
```python
import requests

# Using player_digest (default method)
url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST'

# Alternative: using token
# url = 'https://app.monuv.com.br/api/camera/0000/player?token=USER_TOKEN'

# 1) Highlight only (default color)
# url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000}]'

# 2) One color for all custom ranges
# url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000},{"start_ts":1777319000000,"end_ts":1777319300000}]&timeline_ranges_fill=%23FFCC00'

# 3) One color per range
# url = 'https://app.monuv.com.br/api/camera/0000/player?player_digest=PLAYER_DIGEST&timeline_ranges=[{"start_ts":1777318211000,"end_ts":1777318859000,"fill":"#FFCC00"},{"start_ts":1777319000000,"end_ts":1777319300000,"fill":"#00C853"}]'

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Get recordings

Returns an array of jsons of stored recordings

- Path: https://app.monuv.com.br/camera/{id}/recordings
- Method: GET

#### Parameters:
Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
id | Integer | camera id | :icon-check:
digest | String | camera digest obtained from camera listing | :icon-check:
timeStamp | Integer | Unix timestamp (miliseconds) to set first time recording | :icon-check:
p | String | live url stream format (set to p=hls for Apple HLS) | :icon-x:

#### Response:
Name   |  Type | Description 
:---   | :---: | :--- 
CODE  | String  | return code (0 for success, 1 for error)
MSG  | String  | in case of error, related error message
DATA   | Array  | array of jsons describing the recordings
##### Data:
Name   |  Type | Description 
:---   | :---: | :--- 
ini   | String  | Unix timestamp (miliseconds) of first recording
start_date   | String  | timestamp of first recording (YYYY-MM-DD HH:ii:ss)
dur   | String  | video duration in ms
file   | String  | video file name
url   | String  | video url (to be give to the video player)

```json
{   "DATA":
        [{ "ini":1679324828000,
           "start_date":"2023-03-20 12:07:08",
           "dur":62000,
           "file":"VIDEO.mp4",
           "url":"VIDEO_URL"},
           (...)
        ]
}
```
#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/cameras/0000/recordings/?token=USER_TOKEN&digest=CAMERA_DIGEST'
```

+++ node
```node
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/cameras/0000/recordings/?token=USER_TOKEN&digest=CAMERA_DIGEST',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
```
+++ python
```python
import requests

url = 'https://app.monuv.com.br/cameras/0000/recordings/?token=USER_TOKEN&digest=CAMERA_DIGEST'

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Get hourly images

Returns an array of jsons of stored hourly generated captures

- Path: https://app.monuv.com.br/api/camera/{id}/thumbs-hourly
- Method: GET

#### Parameters:
Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
id | Integer | camera id | :icon-check:
digest | String | camera digest obtained from camera listing | :icon-check:
ts | Integer | Unix timestamp (seconds) to set first time recording | :icon-check:

#### Response:
```json
[
    {
        "ts": 1648782000,
        "url": "THUMB_URL"
    },
           (...)
]
```
#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/api/camera/0000/thumbs-hourly?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'
```

+++ node
```node
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera/0000/thumbs-hourly?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
```
+++ python
```python
import requests

url = 'https://app.monuv.com.br/api/camera/0000/thumbs-hourly?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Get minute-by-minute images

Returns an array of jsons of stored generated captures minute-by-minute

- Path: https://app.monuv.com.br/api/camera/{id}/thumbs-minutes
- Method: GET

#### Parameters:
Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
id | Integer | camera id | :icon-check:
digest | String | camera digest obtained from camera listing | :icon-check:
ts | Integer | Unix timestamp (seconds) to set first time recording | :icon-check:

#### Response:
```json
[
    {
        "ts": 1648782000,
        "url": "THUMB_URL"
    },
           (...)
]
```
#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/api/camera/0000/thumbs-minutes?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'
```

+++ node
```node
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/camera/0000/thumbs-minutes?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
```
+++ python
```python
import requests

url = 'https://app.monuv.com.br/api/camera/0000/thumbs-minutes?ts=1648844377&token=USER_TOKEN&digest=CAMERA_DIGEST'

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Get camera live stream url

Returns camera live stream url

- Path: https://app.monuv.com.br/api/camera/{id}/live-url

#### Parameters:
Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
id | Integer | camera id | :icon-check:

#### Response:
Name   |  Type | Description 
:---   | :---: | :--- 
code  | String  | return code (0 for success, 1 for error)
msg  | String  | in case of error, related error message
data   | String  | live stream url

```json
{
    "code": 0,
    "msg": "",
    "data": "LIVE_STREAM_URL"
}
```
#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/api/cameras/0000/live-url/?token=USER_TOKEN'
```

+++ node
```node
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/cameras/0000/live-url/?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});
```
+++ python
```python
import requests

url = 'https://app.monuv.com.br/api/cameras/0000/live-url/?token=USER_TOKEN'

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Create downloadable video

Generates a continuos video evidence set between given timestamps

- Path: https://app.monuv.com.br/v2/api/drives
- Method: POST
- Content Type: application/json

#### Parameters:

Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
camera_id | Integer | camera id | :icon-check:
start_at | Integer | Unix timestamp (miliseconds) of video start | :icon-check:
end_at | Integer | Unix timestamp (miliseconds) of video end | :icon-check:
description | String | add a description to video | :icon-check:

#### Response:
Name   |  Type | Description 
:---   | :---: | :--- 
code  | String  | return code (0 for success, 1 for error)
msg  | String  | in case of error, related error message
data   | Array  | array of jsons describing the requested video generation
video_thumb | String  | url to the generated video thumbnail
##### Data:
Name   |  Type | Description 
:---   | :---: | :--- 
camera_id | Integer  | camera id
description   | String  | video description
start_date   | String  | video start date (YYYY-MM-DD HH:MM:SS)
end_date   | String  | video end date (YYYY-MM-DD HH:MM:SS)
create_user_id | Integer  | user id that created the video
update_user_id | Integer  | user id that updated the video
status | Integer  | 0 - under creation, 1 - success, 2 - erro generating video
id | Integer  | downloadable video id
camera_name | String  | camera name
last_thumb | String  | url to the camera's last thumbnail
StartDateF   | String  | video start formated date (DD/MM/YYYY HH:MM)
EndDateF   | String  | video end formated date (DD/MM/YYYY HH:MM)
UrlDrive   | String  | downloadable video url
###### updated_at/created_at:
Name   |  Type | Description 
:---   | :---: | :--- 
date   | String  | date (YYYY-MM-DD HH:MM:SS)
timezone_type   | Integer  | timezone
timezone   | String  | timezone description

```json
{
    "code": 0,
    "msg": "Vídeo sendo gerado. Para acompanhar os vídeos salvos, acesse a lista de vídeos salvos.",
    "video_thumb": "https://drives2.monuv.com.br/00000/00000.jpg",
    "data": {
        "camera_id": 00000,
        "description": "test",
        "start_date": "2024-08-28 19:02:36",
        "end_date": "2024-08-28 19:07:36",
        "create_user_id": 00000,
        "update_user_id": 00000,
        "status": 0,
        "updated_at": {
            "date": "2025-12-01 10:24:20.000000",
            "timezone_type": 3,
            "timezone": "America/Bahia"
        },
        "created_at": {
            "date": "2025-12-01 10:24:20.000000",
            "timezone_type": 3,
            "timezone": "America/Bahia"
        },
        "id": 00000,
        "camera_name": "Test",
        "last_thumb": "https://thumbnails.staging.monuv.com.br/00000/last/00000.jpg",
        "StartDateF": "28/08/2024 19:02",
        "EndDateF": "28/08/2024 19:07",
        "UrlDrive": "https://drives2.monuv.com.br/00000/"
    }
}
```

#### Code example
+++ cURL
```sh
curl --location --request POST 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN&camera_id=0000&start_at=1679324828000&end_at=1679325074000&description=DESC
```

+++ node
```node
const axios = require('axios');

let config = {
		method: 'post',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN&camera_id=0000&start_at=1679324828000&end_at=1679325074000&description=DESC',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});

```
+++ python
```python
import requests

url = "https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN&camera_id=0000&start_at=1679324828000&end_at=1679325074000&description=DESC"

response = requests.request("POST", url)

print(response.text)
```
+++
---

### List downloadable videos

List generated downloadable videos

- Path: https://app.monuv.com.br/v2/api/drives
- Method: GET

#### Parameters:

Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
ids | Integer | downloadable videos ids (The ids must be separated by a comma, e.g.: 1001,1002) | :icon-x:

#### Response:
Name   |  Type | Description 
:---   | :---: | :--- 
code  | String  | return code (0 for success, 1 for error)
msg  | String  | in case of error, related error message
data   | Array  | array of jsons describing the requested video generation
##### Data:
Name   |  Type | Description 
:---   | :---: | :--- 
id | Integer  | downloadable video id
description   | String  | video description
url   | String  | generated video url
startDateF   | String  | video start date (YYYY-MM-DD HH:MM:SS)
endDateF   | String  | video end date (YYYY-MM-DD HH:MM:SS)
tsStart | Integer  | Unix timestamp (miliseconds) of video start
tsEnd | Integer  | Unix timestamp (miliseconds) of video end
camera_name | String  | camera name
status | Integer  | 0 = under creation, 1 = success, 2 = error generating video
last_thumb | String  | url to the camera's last thumbnail
video_thumb | String  | url to the generated video thumbnail

```json
{
    "code": 0,
    "msg": "",
    "data": [
        {
            "id": 0000,
            "description": "cool",
            "url": "https://drives.monuv.com.br/00000/642de16230789",
            "startDateF": "20/03/2023 12:07",
            "endDateF": "20/03/2023 12:11",
            "tsStart": 1679324828,
            "tsEnd": 1679325074,
            "camera_name": "CAMERA_NAME",
            "status": 1,
            "last_thumb": "LAST_THUMB_URL",
            "video_thumb": "VIDEO_THUMB_URL"
        }
    ]
}
```

#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN'
```

+++ node
```node
const axios = require('axios');

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});

```
+++ python
```python
import requests

url = "https://app.monuv.com.br/v2/api/drives?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)
```
+++
---

### Remove downloadable video

Remove generated downloadable video

- Path: https://app.monuv.com.br/v2/api/drives/delete/{id}
- Method: POST
- Content Type: application/json

#### Parameters:

Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
token  | String  | user's Monuv token | :icon-check:
id | Integer | generated video id | :icon-check:

#### Response:
Name   |  Type | Description 
:---   | :---: | :--- 
code  | String  | return code (0 for success, 1 for error)
msg  | String  | in case of error, related error message

```json
{
    "code": 0,
    "msg": "Vídeo excluído com sucesso.",
    "data": []
}
```

#### Code example
+++ cURL
```sh
curl --location --request POST 'https://app.monuv.com.br/v2/api/drives/delete/0000?token=USER_TOKEN'
```

+++ node
```node
const axios = require('axios');

let config = {
		method: 'post',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/v2/api/drives/delete/0000?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});

```
+++ python
```python
import requests

url = 'https://app.monuv.com.br/v2/api/drives/delete/0000?token=USER_TOKEN'

response = requests.request("POST", url)

print(response.text)
```
+++
---

### Get camera snapshot

Returns a camera snapshot

- Path: https://app.monuv.com.br/api/v1/cameras/{id}/print
- Method: <b>GET</b> - Returns the last snapshot the camera **_or_** when using the **`TS`** parameter, returns a snapshot referring to the exact time passed.
- Method: <b>POST</b> - Generate and returns a current snapshot from the camera

#### Parameters:

Name   |  Type | Description | Required
:---   | :---: | :--- | :---:
id  | Integer  | camera id | :icon-check:
token  | String  | user's Monuv token | :icon-check:
digest | String | camera digest obtained from camera listing | :icon-x:
ts | Integer | timestamp in UNIX format  | :icon-x:

#### Response:
Name   |  Type  | Description 
:---   |:------:| :--- 
code  | String | return code (0 for success, 1 for error)
msg  | String | in case of error, related error message
print   | Object | object with the link to the camera snapshot

```json
{
  "print": "https://thumbnails.staging.monuv.com.br/00000/print/642de16230789"
}
```

#### Code example
+++ cURL
```sh
curl --location 'https://app.monuv.com.br/api/v1/cameras/{id}/print?token=USER_TOKEN'
```

+++ node
```node
const axios = require('axios');

let config = {
		method: 'get',
		maxBodyLength: Infinity,
		url: 'https://app.monuv.com.br/api/v1/cameras/{id}/print?token=USER_TOKEN',
};

axios.request(config)
.then((response) => {
		console.log(JSON.stringify(response.data));
})
.catch((error) => {
		console.log(error);
});

```
+++ python
```python
import requests

url = "https://app.monuv.com.br/api/v1/cameras/{id}/print?token=USER_TOKEN"

response = requests.request("GET", url)

print(response.text)
```
+++
---
