---
# System prepended metadata

title: Heat Management System

---

# Heat Management System

## BASE URL: http://172.104.180.56:8000

## Authentication APIs

### 1. User Token API
```json
POST /api/v1/users/token/ HTTP/1.1

Request Body:
{
	"username": "01740999768",
	"password": "01740999768"
}
Response:
status code: 200
{
  "success": true,
  "message": "Status OK",
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI0MDUyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjM3NTJ9.fknaHat7DYmlb2RkARoSEdzl2xMISquphTIqO1MvfCg"
  }
}

```

### 2. Refresh Token API
```json
POST /api/v1/users/refresh-token/ HTTP/1.1

Request Body:
{
	"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjIxMTIxLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjA4MjF9.zYAN22CU6ftQ9PNTrij3tyYHDoxgqHkIfmy8LlbQebw"
}

Response:
status code: 200

{
  "success": true,
  "message": "Status OK",
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjIxMTgyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjA4MjF9.9vgmV43AIMg3ClDy8necU7x8YqQXypTG45GXtbjHc00"
  }
}
```

## Dashboard APIs
### 1. Farm Type API
##### By this API user will get the different types of farm. Each firm will have different section on home page.
```json
GET /api/v1/farm/types/ HTTP/1.1
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI0MDUyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjM3NTJ9.fknaHat7DYmlb2RkARoSEdzl2xMISquphTIqO1MvfCg

Response:
status code: 200
Response:
{
  "success": true,
  "meta_data": {
    "count": 3,
    "page_size": 10,
    "next": null,
    "previous": null
  },
  "data": [
    {
      "id": 1,
      "name": "dairy"
    },
    {
      "id": 2,
      "name": "broiler"
    },
    {
      "id": 3,
      "name": "layer"
    }
  ]
}
```

### 2. Device List API (According to farm type)
```json
GET /api/v1/farm/devices?farm_type=1 HTTP/1.1
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI0MDUyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjM3NTJ9.fknaHat7DYmlb2RkARoSEdzl2xMISquphTIqO1MvfCg

Response:
status code: 200
{
  "success": true,
  "meta_data": {
    "count": 1,
    "page_size": 10,
    "next": null,
    "previous": null
  },
  "data": [
    {
      "id": 2,
      "username": "01740999768",
      "name": "MSI SHAFIK",
      "email": null,
      "device_id": "D001",
      "farm_type": 1,
      "address": null,
      "is_active": true
    }
  ]
}
```

### 3. All Data API
##### By this API user will get the device data according to the device
```json
GET /api/v1/farm/all-data/?user=2&start_date=2021-12-1&end_date=2021-12-10 HTTP/1.1
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI0MDUyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjM3NTJ9.fknaHat7DYmlb2RkARoSEdzl2xMISquphTIqO1MvfCg

Response:
status code : 200
{
  "success": true,
  "meta_data": {
    "count": 500,
    "page_size": 10,
    "next": 2,
    "previous": null
  },
  "data": [
    {
      "Temperature": 23.0,
      "Humidity": 47.0,
      "CO2": 17.0,
      "SO2": 59.0,
      "SO6": 117.0,
      "created_at": "2021-12-08T03:29:43.159684+06:00"
    },
    {
      "Temperature": 17.0,
      "Humidity": 74.0,
      "CO2": 18.0,
      "SO2": 67.0,
      "SO6": 71.0,
      "created_at": "2021-12-08T03:14:43.159684+06:00"
    },
    {
      "Temperature": 35.0,
      "Humidity": 58.0,
      "CO2": 20.0,
      "SO2": 46.0,
      "SO6": 75.0,
      "created_at": "2021-12-08T02:59:43.159684+06:00"
    },
    {
      "Temperature": 32.0,
      "Humidity": 65.0,
      "CO2": 18.0,
      "SO2": 35.0,
      "SO6": 83.0,
      "created_at": "2021-12-08T02:44:43.159684+06:00"
    }
    
  ]
}
```

### 3.1. Chart Data API
##### By this API user will get the device data according to the device
```json
GET /api/v1/farm/chart-data/?user=2&start_date=2021-12-1&end_date=2021-12-10 HTTP/1.1
Authorization: jwt <token>

Response:
status code : 200
{
  "success": true,
  "meta_data": {
    "count": 500,
    "page_size": 10,
    "next": 2,
    "previous": null
  },
  "data": [
    {
      "Temperature": 23.0,
      "Humidity": 47.0,
      "CO2": 17.0,
      "SO2": 59.0,
      "SO6": 117.0,
      "created_at": "2021-12-08T03:29:43.159684+06:00"
    },
    {
      "Temperature": 17.0,
      "Humidity": 74.0,
      "CO2": 18.0,
      "SO2": 67.0,
      "SO6": 71.0,
      "created_at": "2021-12-08T03:14:43.159684+06:00"
    },
    {
      "Temperature": 35.0,
      "Humidity": 58.0,
      "CO2": 20.0,
      "SO2": 46.0,
      "SO6": 75.0,
      "created_at": "2021-12-08T02:59:43.159684+06:00"
    },
    {
      "Temperature": 32.0,
      "Humidity": 65.0,
      "CO2": 18.0,
      "SO2": 35.0,
      "SO6": 83.0,
      "created_at": "2021-12-08T02:44:43.159684+06:00"
    }
    
  ]
}
```
### 4. Alert Setting Create API
##### By this API user will create Alert Setting
```json
POST /api/v1/farm/alert-settings/ HTTP/1.1
Request Body:

{
	"farm_type": 1,
	"value": 50,
	"level": "greater", # two fixed dropdown: 1. greater 2. lower
	"sensor_name": "Humidity", # This value will come from Map Data List API (7 No API)
	"sensor_code": "v2" # # This value will come from Map Data List API (7 No API)
}

Response:
status code: 201
{
  "success": true,
  "message": "Created",
  "data": {
    "id": 2,
    "value": 50.0,
    "level": "greater",
    "sensor_name": "Humidity",
    "sensor_code": "v2",
    "status": true,
    "created_at": "2021-12-26T23:22:43.802020+06:00",
    "farm_type": 1
  }
}
```

### 5. Alert Setting List API
```json
GET /api/v1/farm/alert-settings/?farm_type=1 HTTP/1.1
Content-Type: application/json
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI0MDUyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjM3NTJ9.fknaHat7DYmlb2RkARoSEdzl2xMISquphTIqO1MvfCg

Response:
status code: 200
{
  "success": true,
  "meta_data": {
    "count": 1,
    "page_size": 10,
    "next": null,
    "previous": null
  },
  "data": [
    {
      "id": 1,
      "farm_type": {
        "id": 1,
        "name": "dairy"
      },
      "value": 28.0,
      "level": "greater",
      "sensor_name": "Temperature"
    }
  ]
}
```

### 6. Update Alert Setting API
```json
PATCH /api/v1/farm/alert-settings/1/ HTTP/1.1
Content-Type: application/json
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI0MDUyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjM3NTJ9.fknaHat7DYmlb2RkARoSEdzl2xMISquphTIqO1MvfCg

Request Body: (Anyting from create payload)
{
"value": 28
}

Response:
status code: 200
{
  "success": true,
  "message": "Status OK",
  "data": {
    "id": 1,
    "value": 28.0,
    "level": "greater",
    "sensor_name": "Temperature",
    "sensor_code": "v1",
    "status": true,
    "created_at": "2021-12-27T22:16:56.569798+06:00",
    "farm_type": 1
  }
}
```
### 7. Map Data List API
```json
GET /api/v1/farm/map-value?farm_type=1 HTTP/1.1
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI0MDUyLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MjM3NTJ9.fknaHat7DYmlb2RkARoSEdzl2xMISquphTIqO1MvfCg

Response:
status code: 200
{
  "success": true,
  "meta_data": {
    "count": 5,
    "page_size": 10,
    "next": null,
    "previous": null
  },
  "data": [
    {
      "sensor_name": "Temperature",
      "sensor_code": "v1"
    },
    {
      "sensor_name": "Humidity",
      "sensor_code": "v2"
    },
    {
      "sensor_name": "CO2",
      "sensor_code": "v3"
    },
    {
      "sensor_name": "SO2",
      "sensor_code": "v4"
    },
    {
      "sensor_name": "SO6",
      "sensor_code": "v5"
    }
  ]
}
```

### 8. SMS Text Settings API
##### By this setting user will set predefined SMS text.
```json
POST /api/v1/farm/sms-text/ HTTP/1.1

N.B.: text length will not be more than 64 characters.

Request Body:
{
	"farm_type": 1,
	"text": "আপনার খামারের তাপমাত্রা দ্রুত কমাতে হবে।"
}

Response:
status code: 201
```

### 9. List of SMS Text Settings
```json
GET /api/v1/farm/sms-text/ HTTP/1.1
Content-Type: application/json
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjI5MDE2LCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2Mjg3MTZ9.8npZmvcsL953DFLMAX5LxqlUQnvJalftgb_igPvEV00

Response:
status code: 200
{
  "success": true,
  "meta_data": {
    "count": 2,
    "page_size": 10,
    "next": null,
    "previous": null
  },
  "data": [
    {
      "id": 2,
      "text": "আপনার খামারের তাপমাত্রা দ্রুত কমাতে হবে।",
      "created_at": "2021-12-27T22:03:38.722709+06:00",
      "farm_type": {
          "id": 2,
          "name": "broiler"
      }
    },
    {
      "id": 1,
      "text": "আপনার খামারের তাপমাত্রা দ্রুত কমাতে হবে।",
      "created_at": "2021-12-27T21:48:47.306470+06:00",
      "farm_type": {
          "id": 1,
          "name": "dairy"
      }
    }
  ]
}
```

### 10. Update SMS Text Setting
```json
PATCH /api/v1/farm/sms-text/1/ HTTP/1.1
Content-Type: application/json
Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjMwNjAzLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MzAzMDN9.5mentllSo3

Request Body:
{
	"text": "আপনার খামারের তাপমাত্রা দ্রুত কমাতে হবে।"
}

Response:
status code: 200
{
  "success": true,
  "message": "Status OK",
  "data": {
    "id": 1,
    "text": "আপনার খামারের তাপমাত্রা দ্রুত কমাতে হবে।",
    "created_at": "2021-12-27T22:19:48.446459+06:00",
    "farm_type": 1
  }
}
```

### 11. Send Data Report to Email API
```json
GET /api/v1/farm/report/?user_id=2&recipient=shafik.te@gmail.com&start_date=2021-12-1&end_date=2021-12-27 HTTP/1.1

Authorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoyLCJ1c2VybmFtZSI6IjAxNzQwOTk5NzY4IiwiZXhwIjoxNjQwNjMwNjAzLCJlbWFpbCI6bnVsbCwib3JpZ19pYXQiOjE2NDA2MzAzMDN9.5mentllSo3bUuf_dP_FXkLZfee0I1Emj__vhPmsVV4k

N.B.: recipient email can be mulitple. so it will be sperated by comma (,). e.g- recipient=shafik.te@gmail.com,shafik.tx@gmail.com

Response:
status code: 200

```

### [NEW] 12. Download Excel File Report Locally
##### By this API user will download the excel report locally (when you click this url it will be automatically downloaded)
```json
GET /api/v1/farm/download-report/?user_id=2&start_date=2021-12-1&end_date=2021-12-27&token=<token>


```

### [NEW] 13. Device Wise Production List API
##### It will be shown in a table below chart
```json
GET /api/v1/farm/production/?user=1&start_date=2021-12-01&end_date=2022-01-21 HTTP/1.1
Content-Type: application/json
Authorization: jwt <token>

This is paginated response (default 10 item). You can get the more data by using "page_size" and "page" parameters. Suppose if you want to get 15 response from second page, then you have to call the API like this-
GET /api/v1/farm/production/?page=2&page_size=15

Response:
status code: 200
{
  "success": true,
  "meta_data": {
    "count": 1,
    "page_size": 10,
    "next": null,
    "previous": null
  },
  "data": [
    {
      "id": 1,
      "total_amount": 50.5,
      "total_number": 5,
      "created_at": "2022-01-11T21:24:42.466098+06:00",
      "user": 2
    }
  ]
}
```

### 14. Send Manual SMS
```json
POST /api/v1/farm/send-sms/ HTTP/1.1
Content-Type: application/json
Authorization: jwt <token>

N.B.: Message length should not be more than 125 characters.

Request Body:

{
	"message": "আমার সোনার বাংলা, আমি তোমায় ভালোবাসি। চিরদিন তোমার আকাশ, তোমার বাতাস, আমার প্রাণে বাজায় বাশি, সোনার বাংলা, আমি",
	"recipient": ["01740999768", "01689252523"]
    # if you want to send SMS for all user then -> "recipient": "all"
}

Response:
status code: 200
{
  "success": true,
  "message": "Success"
}
```

## Mobile APP API
##### Above 1 & 2 APIs for login

### 1. Home Page API (for current conditions of farm)
```json
GET /api/v1/farm/customer-status/ HTTP/1.1
Authorization: jwt <token>

Response data:
status code: 200

{
  "success": true,
  "message": "Status OK",
  "data": {
    "temperature": 30.0,
    "humidity": 71.0,
    "updated_at": "2021-12-07 21:21:47.688973+00:00",
    "network_status": "Failed",
    "environment_status": "স‌ঠিক ম‌নিট‌রিং এর জন্য আপনার ডিভাইসের ইন্টারনেট নি‌শ্চিত করুন"
  }
}
```

### 2. Daily Production InfoUpdate API
##### By this API user will send daily production data to the server
```json
POST /api/v1/farm/production/ HTTP/1.1
Content-Type: application/json
Authorization: jwt <token>

Request Data:

{
	"total_amount": 50.5,
	"total_number": 5
}

Response:
status code: 201
{
  "success": true,
  "message": "Created",
  "data": {
    "id": 1,
    "total_amount": 50.5,
    "total_number": 5,
    "created_at": "2022-01-11T21:24:42.466098+06:00",
    "user": 2
  }
}
```

### 3. User Production Data History
##### By this API user will see the production history of his farm
```json
GET /api/v1/farm/production/ HTTP/1.1
Content-Type: application/json
Authorization: jwt <token>

This is paginated response (default 10 item). You can get the more data by using "page_size" and "page" parameters. Suppose if you want to get 15 response from second page, then you have to call the API like this-
GET /api/v1/farm/production/?page=2&page_size=15

Response:
status code: 200
{
  "success": true,
  "meta_data": {
    "count": 1,
    "page_size": 10,
    "next": null,
    "previous": null
  },
  "data": [
    {
      "id": 1,
      "total_amount": 50.5,
      "total_number": 5,
      "created_at": "2022-01-11T21:24:42.466098+06:00",
      "user": 2
    }
  ]
}
```