---
# System prepended metadata

title: API

---

# Lincense Plates 
 - Create LP
     - Method: post
     - Path: `/lincense_plates/`
     - Function: Tạo biển số xe
     - Input: 
         - car_name: string
         - color: string
         - license_plate: string
     - Output:
         - id: string
         - car_name: string
         - color: string
         - license_plate: string
         - created_at: date
         - updated_at: date
     - To do:
         - Kiểm tra tồn tại của biển số xe trong db
             - TH biển số xe tồn tại: Ném lỗi biển số đã tồn tại
         - TH biển số xe không tồn tại:Tạo biển số xe, tạo liên kế giữa user và biển số xe 
 - Delete LP
     - Method: delete
     - Path: `/lincense_plates/:id/`
     - Function: Xóa biển số xe
     - Input:
         - id: string
     - Output:
         - id: string
     - To do:
         -  Kiểm tra tồn tại của biển số xe trong db
             - TH biển số xe không tồn tại: ném lỗi biển số xe đã tồn tại
         -  TH biển số xe tồn tại: Kiểm tra quyền của user với biển số xe(Nếu vai trò của user không phải là admin)
             - TH user không tạo ra biển số xe này: ném lỗi
         -  TH user là người tạo hoặc có vai trò là admin: Cập nhật trạng thái của biển số xe thành đã xóa
 -  GetAll
     - method: get
     - path: `/lincense_plates/`
     - Function: Lấy đanh sách biển số xe theo yêu cầu
     - Input: 
         - page?: number
         - status?: enum: ['checkin', 'checkout'] 
         - month?: number
         - year?: number
     - Output: 
         - current_page: number
         - data: [] {
             - id: string
             - license_plate: string
             - created_at: date
             - car_name: string
             - color: string
             - updated_at: date }
         - total_page: number
     - To do:
         -  Lấy danh sách biển số xe theo từng điều kiện: tháng, năm và trạng thái (nếu có) và thực hiện phân trang
 - GetOne
     - method: get
     - path: `/lincense_plates/:id/`
     - Function: Lấy thông tin biển số xe
     - Input: 
         - id: string
     - Output:
         - id: string
         - car_name: string
         - color: string
         - license_plate: string
         - created_at: date
         - updated_at: date
     - To do:
         - Kiểm tra tồn tại biển số xe trong db
             - TH biển số xe không tồn tại: ném lỗi biển số xe không tồn tại
         - TH biển số xe tồn tại: Lấy biển số xe theo id
# Devices
 - Create Device
     - method: post
     - path: `/devices/`
     - Function: Tạo thiết bị
     - Input:
         - name: string
     - Output:
         - id: string
         - created_at: date
         - updated_at:date
         - name: string
     - To do
         - Tạo thiết bị
         - Tạo liên kết giữa user thực hiện và thiết bị
         
 - Delete Device
     - method: delete
     - path: `/devices/:id/`
     - Function: Xóa thiết bị
     - Input: 
         - id: string
     - Output:
         - id: string
     - To do:
         - Kiểm tra tồn tại của thiết bị trong db
             - TH thiết bị không tồn tại: ném lỗi thiết bị không tồn tại
         - Cập nhật trạng thái của thiết bị thành đã xóa
# Entry_history
 - Create Entry_history
     - method: post
     - path: `/entry_history/`
     - Function: Tạo lịch sử ra/vào
     - Input:
         - license_plate: string
         - status: enum: ['checkin', 'checkout'] 
         - device_id: string
     - Output:
         - id: string
         - created_at: date
         - updated_at: date
         - id_lp_user: string
         - status: enum: ['checkin', 'checkout']
         - id_device: string
     - To do:
         - Kiểm tra tồn tại của biển số xe
             - TH biển số xe không tồn tại: ném lỗi biển số xe không tồn tại
         - TH biển số xe tồn tại tạo lịch sử ra/vào
 - Update Entry_history
     - method: put
     - path: `/entry_history/:id/`
     - Function: Cập nhật biển số xe cho lịch sử ra/vào
     - Input: 
         - id: string
         - license_plate: string
     - Output
         - id: string
     - To do:
         - Kiểm tra tồn tại của lịch sử ra/vào và không có liên kết biển số xe
             - TH không tồn lại lịch sử ra/vào hoặc có tồn tại nhưng có liên kết với biển số xe: ném lỗi thông tin sai
         - Kiểm tra tồn tại của biển số xe
             - TH không tồn tại: ném lỗi biển số xe không tồn tại
         - TH biển số xe tồn tại: Cập nhật lịch sử ra/vào với biển số xe đã truyền 
 - Find Entry By Day
     - method: get
     - path: `/entry_history/`
     - Function: Lấy danh sách lịch sử ra/vào theo ngày
     - Input: 
         - page?: number
         - start_day: date
         - end_day: date
     - Output:
         - current_page: string
         - data: [] {
             - created_at
             - id
             - id_device
             - id_lp_user
             - license_plate
             - status
             - updated_at }
         - total_page
     - To do:
         - Tạo phân trang
         - Lấy danh sách lịch sử ra/vào theo ngày bắt đầu và ngày kết thúc có thực hiện phân trang
# Auth
 - Login
     - method: post
     - path: `/login/`
     - Function: Đăng nhập vào hệ thống
     - Input:
         - phone_number: string
         - password: string
     - Output: 
         - access_token: string
         - refresh_token: string
     - To do:
         - Kiểm tra số điện thoại, password trong db
             - TH không tồn tại số điện thoại hoặc mật khẩu: ném lỗi số điện thoại, mật khẩu không đúng
         - TH tồn tại số điện thoại và mật khẩu: Tạo access token và refresh token
 - Register
     - method: post
     - path: `/register/`
     - Function: Đăng ký người dùng mới
     - Input:
         - phone_number: string
         - name: string
         - password: string
         - address: string
     - Output: 
         - id: string
         - phone_number
         - password
         - address
         - name
         - created_at
         - updated_at
     - To do:
         - Kiểm tra tồn tại của số điện thoại trong db
             - TH tồn tại: ném lỗi số điện thoại đã được tạo
         - TH số điện thoại chưa tồn tại: tạo user mới
 - RefreshAccessToken
     - method: post
     - path: `/refreshtoken/`
     - Function: Tạo access token mới khi hết hạn
     - Input:
         - refresh_token: string
     - Output:
         - access_token: string
     - To do:
         - Kiểm tra tồn tại của user_id và refresh token
             - TH không tồn tại: ném lỗi refresh token không tồn tại
         - TH tồn tại: Tạo accesstoken mới
# Payments
 - Create Payments
     - method: post
     - path: `/payments/`
     - Function: Tạo phiếu thanh toán
     - Input:
         - license_plate: string
         - month: number
         - year: number
     - Output:
         - id: string
         - created_at: date
         - updated_at: date
         - status: string
         - month: number
         - year: number
         - lp_user: {id: string}
     - To do:
         - Kiểm tra trạng thái thanh toán theo biển số xe và thời gian thanh toán (theo tháng của năm)
             - TH đã thanh toán: ném lỗi bạn đã thanh toán
         - TH chưa thanh toán: tạo phiếu thanh toán
 - Delete Payments
     - method: path
     - path: `/payments/:id/`
     - Function: Xóa phiếu thanh toán
     - Input: 
         - id: string
     - Output:
         - id: string
     - To do:
         - Kiểm tra tồn tại của phiếu thanh toán trong db
             - TH không tồn tại: ném lỗi phiếu thanh toán không tồn tại
         - TH tồn tại: Cập nhật trạng thái phiếu thanh toán thành đã xóa
 - Find User have more than 2 car but not paid
     - method: get
     - path: `/users/un_paid/`
     - Function: Tìm user chưa thanh toán
     - Input:
         - month: number
         - year: number
     - Output:
         - [] {
             - id
             - license_plate_count
             - name
             - phone_number }
     - To do:
         - Lấy danh sách user chưa thanh toán theo thời gian thanh toán (theo tháng của năm)