- OreTrack-Backend
- System design
- Tech stack
- Collection Postman
- API docs
- 1. API create account (admin)
- 2. API login
- 3. API get disaster
- 4. API list forecast
- 5. API list alert message
- 6. API create alert message
- 6. API create alert message
- 7. API get SOS information
- 7. API get list SOS by disaster
- 8. API get near rescue
- 9. API get rescue situation
- 10. API list coordinate rescue
- 11. API get detail sos
- 12. API get detail sos
- Build Setup
Backend source code for OreTrack. The purpose of OreTrack is to predict and prepare for emergency situations and to coordinate rescue efforts when disasters occur.
- Front-end: HTML, CSS (Bootstrap), JavaScript (VueJS)
- Back-end: Python (flask)
- Database: Mysql
| Domain | Name |
|---|---|
| https://backend.oretrack.life | production |
| http://127.0.0.1:5000 | local |
URL
{{url}}/add-account
Params
| param | type | required |
|---|---|---|
| username | string | YES |
| password | string | YES |
| role | int | YES |
| department_id | int | YES |
CURL
curl --location '{{url}}/add-account' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho' \
--header 'Content-Type: application/json' \
--data '{
"username": "vinhnk9",
"password": "vinhnk2920",
"role": 1,
"department_id": 1
}'
Success response
{
"data": [],
"message": "Successfully registered!",
"success": true
}False response
{
"data": [],
"message": "User already exists!",
"success": false
}URL
{{url}}/login
Params
| param | type | required |
|---|---|---|
| username | string | YES |
| password | string | YES |
CURL
curl --location '{{url}}/login' \
--header 'Content-Type: application/json' \
--data '{
"username": "vinhnk9",
"password": "vinhnk2920"
}'
Success response
{
"message": "Login successful!!",
"success": true,
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho"
}URL
{{url}}/get-disasters
Params
| param | type | required |
|---|---|---|
| name | string | NO |
| start_time | datetime | NO |
CURL
curl --location '{{url}}/get-disasters?name=' \
--header 'Content-Type: application/json' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Success response
{
"data": [
{
"end_at": null,
"full_address": "Xã Ngọk Tem - huyện Kon Plong - tỉnh Kom Tum",
"id": 1,
"name": "Forest fire in Kon Tum",
"risk_level": 3,
"start_at": "Thu, 13 Apr 2023 15:00:03 GMT"
}
],
"message": "Get disasters successfully!",
"success": true
}URL
{{url}}/list-forecast
CURL
curl --location '{{url}}/list-forecast' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Success response
{
"data": [
{
"disaster_name": "Động đất",
"disaster_type": 1,
"forecast_end": "Fri, 14 Apr 2023 00:00:00 GMT",
"forecast_start": "Tue, 11 Apr 2023 00:00:00 GMT",
"full_address": "xã Tản Lĩnh huyện Ba Vì",
"id": 1,
"image": null,
"name": "ngập úng kèm theo lũ quét",
"reported_by": "Trung tâm dự báo khí tượng thuỷ văn Việt Nam"
}
],
"message": "Get disasters successfully!",
"success": true
}URL
{{url}}/list-alert-message
CURL
curl --location '{{url}}/list-alert-message' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Success response
{
"data": [
{
"content": "Thành phố Hà Nội thông báo đến các hộ gia đình trong địa phận xã Tiên Phong làm theo hướng dẫn sau đây để chuẩn bị phòng tránh tốt nhất cho bão số 8 sắp tới ",
"created_at": "Sat, 15 Apr 2023 09:55:14 GMT",
"created_by": 6,
"disaster_id": 1,
"id": 1,
"name": "Tin nhắn cảnh báo",
"updated_at": "Sat, 15 Apr 2023 09:55:14 GMT",
"updated_by": null
},
{
"content": "Thành phố Hà Nội thông báo bão số 8 đã đổ bộ, đội cứu hộ luôn sẵn sàng ứng cứu trong thời gian sớm nhất",
"created_at": "Sat, 15 Apr 2023 09:56:57 GMT",
"created_by": 6,
"disaster_id": 1,
"id": 2,
"name": "Tin nhắn cảnh báo 2",
"updated_at": "Sat, 15 Apr 2023 09:56:57 GMT",
"updated_by": null
}
],
"message": "Get list alert message successfully!",
"success": true
}URL
{{url}}/create-alert-message
CURL
curl --location '{{url}}/create-alert-message' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho' \
--header 'Content-Type: application/json' \
--data '{
"name": "Hướng dẫn kỹ năng an toàn trước lũ lụt 2",
"disaster_id": 1,
"content": "Để đảm bảo an toàn tính mạng và tài sản, người dân cần lưu ý: TRƯỚC LŨ: Thường xuyên theo dõi thông tin, cảnh báo mưa, lũ. Chuẩn bị thuyền, phao, bè, máng, vật nổi; gia cố nhà làm gác lửng, lối thoát trên mái nhà để ở tạm, cất giữ đồ đạc đề phòng lũ. Di chuyển gia súc, gia cầm, đồ đạc lên nơi cao để tránh ngập. Bảo vệ nguồn nước sạch; dự trữ nước uống, lương thực, thực phẩm, thuốc men, các vật dụng cần thiết đủ dùng ít nhất trong 7 ngày. Tìm hiểu, nắm bắt các tuyến đường sơ tán khẩn cấp đến nơi an toàn. Chủ động sơ tán khỏi vùng bãi sông, vùng thấp trũng, vùng có nguy cơ sạt lở, lũ quét, các công trường đang thi công.???? Dừng hoạt động tại các công trình đang thi công dở dang. Đề phòng lũ xảy ra vào ban đêm. Lưu giữ các số điện thoại và địa chỉ liên lạc trong trường hợp khẩn cấp.",
"message_type": "tutorial"
}'
Success response
{
"data": [],
"message": "Create alert message successfully!",
"success": true
}URL
{{url}}/create-alert-message
Params
| param | type | required |
|---|---|---|
| name | string | YES |
| disaster_id | int | YES |
| content | string | YES |
| message_type | string | YES |
CURL
curl --location '{{url}}/create-alert-message' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho' \
--header 'Content-Type: application/json' \
--data '{
"name": "Hướng dẫn kỹ năng an toàn trước lũ lụt 2",
"disaster_id": 1,
"content": "Để đảm bảo an toàn tính mạng và tài sản, người dân cần lưu ý: TRƯỚC LŨ: Thường xuyên theo dõi thông tin, cảnh báo mưa, lũ. Chuẩn bị thuyền, phao, bè, máng, vật nổi; gia cố nhà làm gác lửng, lối thoát trên mái nhà để ở tạm, cất giữ đồ đạc đề phòng lũ. Di chuyển gia súc, gia cầm, đồ đạc lên nơi cao để tránh ngập. Bảo vệ nguồn nước sạch; dự trữ nước uống, lương thực, thực phẩm, thuốc men, các vật dụng cần thiết đủ dùng ít nhất trong 7 ngày. Tìm hiểu, nắm bắt các tuyến đường sơ tán khẩn cấp đến nơi an toàn. Chủ động sơ tán khỏi vùng bãi sông, vùng thấp trũng, vùng có nguy cơ sạt lở, lũ quét, các công trường đang thi công.???? Dừng hoạt động tại các công trình đang thi công dở dang. Đề phòng lũ xảy ra vào ban đêm. Lưu giữ các số điện thoại và địa chỉ liên lạc trong trường hợp khẩn cấp.",
"message_type": "tutorial"
}'
Success response
{
"data": [],
"message": "Create alert message successfully!",
"success": true
}URL
{{url}}/get-sos-info
Params
| param | type | required |
|---|---|---|
| sos_id | int | YES |
CURL
curl --location '{{url}}/get-sos-info?sos_id=1' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Success response
{
"data": {
"content": "I'm stuck in my home near the forest",
"lat": 123.138,
"lng": 12.761,
"name": "Nguyen Hoang Nam",
"status": null,
"time": "Thu, 13 Apr 2023 19:51:11 GMT"
},
"message": "Get sos information successfully!",
"success": true
}URL
{{url}}/list-sos
CURL
curl --location '{{url}}/list-sos?disaster_id=1' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Params
| param | type | required |
|---|---|---|
| disaster | int | YES |
Success response
{
"data": [
{
"content": "I'm stuck in my home near the forest",
"created_at": "Thu, 13 Apr 2023 19:51:11 GMT",
"id": 1,
"lat": 123.138,
"lng": 12.761,
"name": "Nguyen Hoang Nam",
"number_of_people": null,
"risk_level": 4,
"status": null
},
{
"content": "My cat curently stuck in the forest",
"created_at": "Sat, 15 Apr 2023 15:54:25 GMT",
"id": 2,
"lat": 113.138,
"lng": 12.16,
"name": "Nguyen Quoc An",
"number_of_people": 3,
"risk_level": 3,
"status": null
}
],
"message": "Get list sos successfully!",
"success": true
}URL
{{url}}/get-near-rescue
CURL
curl --location '{{url}}/get-near-rescue?sos_id=2' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Params
| param | type | required |
|---|---|---|
| sos_id | int | YES |
Success response
{
"data": [
{
"assigned_department": {
"available": 4,
"full_address": "Xã Ngọk Tem - huyện Kon Plong - tỉnh Kom Tum",
"id": 2,
"member": 12,
"phone": "0499284943"
},
"departments": [
{
"address": "Xã Ngọk Tem - huyện Kon Plong - tỉnh Kom Tum",
"available": 10,
"id": 1,
"member": 20,
"phone": "0399472948"
},
{
"address": "Xã Ngọk Tem - huyện Kon Plong - tỉnh Kom Tum",
"available": 8,
"id": 2,
"member": 15,
"phone": "0399582948"
},
{
"address": "Xã Ngọk Tem - huyện Kon Plong - tỉnh Kom Tum",
"available": 4,
"id": 3,
"member": 12,
"phone": "0499284943"
}
]
}
],
"message": "Get near rescue successfully!",
"success": true
}URL
{{url}}/create-coordinate-rescue
CURL
curl --location '{{url}}/create-coordinate-rescue' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho' \
--header 'Content-Type: application/json' \
--data '{
"coordinate_infor": [
{
"num_of_people": 3,
"receive_team": 1
},
{
"num_of_people": 5,
"receive_team": 2
}
],
"disaster_id": 1,
"order_team": 3
}'
Params
| param | type | required |
|---|---|---|
| coordinate_infor | array | YES |
| disaster_id | int | YES |
| order_team | int | YES |
Success response
{
"data": [],
"message": "Create coordinate rescue successfully!",
"success": true
}URL
{{url}}/list-coordinate-rescue
CURL
curl --location '{{url}}/list-coordinate-rescue?disaster_id=1&order_team=3' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Params
| param | type | required |
|---|---|---|
| disaster_id | int | YES |
| order_team | int | YES |
Success response
{
"data": [
{
"id": 1,
"num_of_people": 3,
"receive_team": 1,
"status": "success"
},
{
"id": 2,
"num_of_people": 5,
"receive_team": 2,
"status": "success"
}
],
"message": "List coordinate rescue successfully!",
"success": true
}URL
{{url}}/get-detail-sos
CURL
curl --location '{{url}}/get-detail-sos?sos_id=1' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Params
| param | type | required |
|---|---|---|
| sos_id | int | YES |
Success response
{
"data": {
"address_id": 6,
"content": "I'm stuck in my home near the forest",
"id": 1,
"lat": 123.138,
"lng": 12.761,
"name": "Nguyen Hoang Nam",
"risk_level": 4,
"status": null
},
"message": "Get detail sos successfully!",
"success": true
}URL
{{url}}/get-rescue-team
CURL
curl --location '{{url}}/get-rescue-team?team_id=3' \
--header 'Authorization: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6InBia2RmMjpzaGEyNTY6MjYwMDAwJDlKaktkSFF3MEVUVWY0U0skYWNiYmQ2ZjgzMmFhNTE4Mjk5NDMyZDA0MzNmMmI1YWZkZGI1MTY1NGQzNzA3YTg4Y2Y0MTU5MWYzN2MwYTQyNSJ9.71t39P09T81WEg9IjFXUEWRzJ6fAOqcR5KlcQ9krJho'
Params
| param | type | required |
|---|---|---|
| team_id | int | YES |
Success response
{
"data": {
"address": "Xã Ngọk Tem - huyện Kon Plong - tỉnh Kom Tum",
"leader_name": null,
"members": [
{
"email": null,
"fullname": null,
"phone": null
},
{
"email": null,
"fullname": null,
"phone": null
}
],
"name": "Đội cứu hộ tây Ngok Pem",
"num_of_member": 20,
"phone": "0399472948"
},
"message": "Get detail sos successfully!",
"success": true
}flask --app app.py --debug run


