# AATED BACKEND APIS
## Pre-Information:
1. DEV BASE URL: http://api.aated.smartlivestocksystem.com
2. All List APIs are paginated. You can pass limit by using "**page_size**=" and you can pass the page number by using "**page**=" in the url query parameters.
### 1. Get Batch List API
```json
GET /api/v1/core/public/batches HTTP/1.1
Content-Type: application/json
Response:
status code: 200
{
"success": true,
"meta_data": {
"count": 5,
"page_size": 10,
"next": null,
"previous": null
},
"data": [
{
"id": 1,
"name": "1st Batch",
"batch_number": 1,
"batch_session": null
},
{
"id": 2,
"name": "2nd Batch",
"batch_number": 2,
"batch_session": null
},
{
"id": 3,
"name": "9th Batch",
"batch_number": 9,
"batch_session": null
},
{
"id": 4,
"name": "10 th Batch",
"batch_number": 10,
"batch_session": null
},
{
"id": 5,
"name": "11th Batch",
"batch_number": 11,
"batch_session": null
}
]
}
```
### 2. Sign Up API
```json
POST /api/v1/users/sign-up/ HTTP/1.1
Content-Type: application/json
Request Body:
{
"email": "shafik.te@gmail.com",
"name": "MSI Shafik",
"phone": "01740999768",
"password": "shafik123",
"batch": 4 [this is the **id** from the batch list API]
}
Response:
status code: 200
{
"success": true,
"message": "OTP has been sent to your email",
"data": null
}
```
### 3. Verify OTP API
```json
POST /:8000/api/v1/users/sign-up/ HTTP/1.1
Content-Type: application/json
Request Body:
{
"email": "shafik.te@gmail.com",
"otp": 265796
}
Response:
status code: 200
{
"success": true,
"message": "Your OTP has been confirmed!",
"data": null
}
```
### 4. Get Token API
```json
POST /api/v1/users/token/ HTTP/1.1
Content-Type: application/json
Request Body:
{
"username": "shafik.te@gmail.com",
"password": "shafik123"
}
Response:
status code: 200
{
"success": true,
"message": "Status OK",
"data": {
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY4MDE4NzM0MSwiaWF0IjoxNjc3NTk1MzQxLCJqdGkiOiI4NjYwY2FmOTFmMjg0YWUxOTZhYjU2ZGUzMmQ2OWJmNCIsInVzZXJfaWQiOjIsIm5hbWUiOiJNU0kgU2hhZmlrIn0.RG-7AMuzeTAvwEUBDY2Dcw9yn3wE8cqbLuITwB3CYPk",
"access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjc3NjMxMzQxLCJpYXQiOjE2Nzc1OTUzNDEsImp0aSI6IjNjZTcyMDU0NTk0NzQyZjU4NDA2MDFjYzZmMTUyMTBkIiwidXNlcl9pZCI6MiwibmFtZSI6Ik1TSSBTaGFmaWsifQ.yhbA-IvfL5JgNE1E-v6e9dZAN2d1L_iqC11qUabM4hA",
"role": null | member| moderator| admin
}
}
```
### 5. Forgot Password API
```json
POST /api/v1/users/forgot-password/ HTTP/1.1
Content-Type: application/json
Request Body:
{
"email": "shafik.te@gmail.com"
}
Response:
status code: 200
{
"success": true,
"message": "OTP has been sent to your email",
"data": null
}
```
### 6. Forgot Password OTP submit API
By this API you need to set the new password with the OTP and email address.
```json
POST /api/v1/users/forgot-password/ HTTP/1.1
Content-Type: application/json
Request Body:
{
"email": "shafik.te@gmail.com",
"otp": "108292",
"password": "shafik1234"
}
Response:
{
"success": true,
"message": "Your password has been reset!",
"data": null
}
```
### 7. Attachment (Profile Pic/Photo/File ) upload API
To upload any attachment, you need to call this API with multi-part form.
- To upload profile pic you need to use "**profile_pic**" key
- To upload any other photo, you need to use "**photo**" key
- To upload any other file, you need to use "**file**" key
```json
POST /api/v1/core/upload/
Response:
{
"success": true,
"message": "Created",
"data": {
"attachment_url": "/media/images/88e1748f-f59a-4cad-91e0-59d811f40df0_htec.jpeg"
}
}
```
### 8. Occupation Type List API
```json
GET /api/v1/core/public/occupations/ HTTP/1.1
Content-Type: application/json
Response:
{
"success": true,
"meta_data": {
"count": 6,
"page_size": 10,
"next": null,
"previous": null
},
"data": [
{
"id": 1,
"name": "Corporate Job"
},
{
"id": 2,
"name": "Govt. Job"
},
{
"id": 3,
"name": "Faculty Member"
},
{
"id": 4,
"name": "Business"
},
{
"id": 5,
"name": "Industry Job"
},
{
"id": 6,
"name": "Others"
}
]
}
```
### 9. Job Department List API
```json
GET /api/v1/core/public/job-departments/ HTTP/1.1
Content-Type: application/json
Response:
{
"success": true,
"meta_data": {
"count": 14,
"page_size": 10,
"next": 2,
"previous": null
},
"data": [
{
"id": 1,
"name": "Yarn"
},
{
"id": 2,
"name": "Fabric (Woven)"
},
{
"id": 3,
"name": "Knit Dyeing"
},
{
"id": 4,
"name": "Finishing"
},
{
"id": 5,
"name": "Fabric R&D"
},
{
"id": 6,
"name": "Fabric Production"
},
{
"id": 7,
"name": "IE"
},
{
"id": 8,
"name": "Apparel Production"
},
{
"id": 9,
"name": "Merchandising"
},
{
"id": 10,
"name": "Fabric (Knit)"
}
]
}
```
# 10. Own Basic Profile API
By this API user will get his basic information which needs to updated. [**Email can't be updated**]
```json
GET /api/v1/profiles/personal/profile/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Response:
{
"success": true,
"message": "Status OK",
"data": {
"id": 4,
"name": "MSI Shafik",
"email": "shafik.te@gmail.com",
"phone": "01740999768",
"batch": {
"id": 1,
"name": "1st Batch",
"batch_number": 1
},
"profile_pic": null,
"current_designation": null,
"employment_status": null,
"occupation_type": null,
"unemployment_reasons": null,
"student_id": null,
"passing_year": null,
"expertise_area": null,
"contact_details": null
}
}
```
### 11. Own Basic Profile Update API
User can update any single field. So, pass those fields only which needs to be updated
```json
POST /api/v1/profiles/personal/profile/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Request Body:
{
"name": "MSI Shafik 2",
"phone": "01740999768",
"batch": 1,
"profile_pic": "/media/images/39d9591f-c58f-4603-8da3-6026ba43f786_htec.jpeg",
"current_designation": "Sr. Software Engineer",
"employment_status": "employed",
"occupation_type": 1,
"unemployment_reasons": null,
"student_id": "135009",
"passing_year": 2019,
"expertise_area": "python, django, fastapi, go, javascript, docker, kubernetes, aws, nginx, elasticsearch",
"contact_details": "Mirpur, Dhaka"
}
Response:
{
"success": true,
"message": "Status OK",
"data": {
"id": 5,
"name": "MSI Shafik 2",
"email": "shafik.te@gmail.com",
"phone": "01740999768",
"batch": {
"id": 1,
"name": "1st",
"batch_number": 1
},
"profile_pic": "http://localhost:8000/media/images/39d9591f-c58f-4603-8da3-6026ba43f786_htec.jpeg",
"current_designation": "Sr. Software Engineer",
"employment_status": "employed",
"occupation_type": 1,
"unemployment_reasons": null,
"student_id": "135009",
"passing_year": 2019,
"expertise_area": "python, django, fastapi, go, javascript, docker, kubernetes, aws, nginx, elasticsearch",
"contact_details": "Mirpur, Dhaka"
}
}
```
### 12. Get Own Job Experiences API
```json
GET /api/v1/profiles/personal/experiences/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Response:
{
"success": true,
"meta_data": {
"count": 2,
"page_size": 10,
"next": null,
"previous": null
},
"data": [
{
"id": 2,
"designation": "Manager GM",
"company_name": "XYZ",
"start": "2022-01-05",
"end": null,
"working_years": 1.0,
"job_location": "Gulsan-1, Dhaka",
"job_department": 1,
"responsibilities": "Manage People, Manage product"
},
{
"id": 1,
"designation": "Manager",
"company_name": "XYZ",
"start": "2020-01-05",
"end": null,
"working_years": 3.5,
"job_location": "Gulsan-1, Dhaka",
"job_department": 1,
"responsibilities": "Manage People, Manage product"
}
]
}
```
### 13. Create Work Exp. API
```json
POST /api/v1/profiles/personal/experiences/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
Requset Body:
{
"designation": "Manager GM",
"company_name": "XYZ",
"start": "2022-01-05",
"working_years": 1,
"job_location": "Gulsan-1, Dhaka",
"job_department": 1,
"responsibilities": "Manage People, Manage product"
} # expecting rich text editor
Response:
{
"success": true,
"message": "Created",
"data": {
"id": 2,
"is_active": true,
"created_at": "2023-03-01T07:47:34.220478+06:00",
"updated_at": "2023-03-01T07:47:34.220485+06:00",
"created_by": {},
"updated_by": {},
"designation": "Manager GM",
"company_name": "XYZ",
"start": "2022-01-05",
"end": null,
"working_years": 1.0,
"job_location": "Gulsan-1, Dhaka",
"responsibilities": "Manage People, Manage product",
"user": 5,
"job_department": 1
}
}
```
### 14. Update Work Exp. API
Just pass those fields which will be updated.
```json
PATCH /api/v1/profiles/personal/experiences/1/ HTTP/1.1
Content-Type: application/json
Authorization: Bearer <token>
{
"designation": "Manager",
"company_name": "XYZ",
"start": "2020-01-10",
"working_years": 3.5,
"job_location": "Gulsan-1, Dhaka",
"job_department": 1,
"responsibilities": "Manage People, Manage product"
}
Response:
{
"success": true,
"message": "Status OK",
"data": {
"id": 1,
"is_active": true,
"created_at": "2023-03-01T07:39:16.459467+06:00",
"updated_at": "2023-03-01T07:48:51.222186+06:00",
"created_by": {},
"updated_by": {},
"designation": "Manager",
"company_name": "XYZ",
"start": "2020-01-10",
"end": null,
"working_years": 3.5,
"job_location": "Gulsan-1, Dhaka",
"responsibilities": "Manage People, Manage product",
"user": 5,
"job_department": 1
}
}
```
N.B. To delete work exp. just pass {"is_active": false} with PATCH request.