API Documentation

Tài liệu hướng dẫn tích hợp API Lịch Cúp Điện vào ứng dụng của bạn

Authentication

Tất cả các API calls cần được xác thực bằng Google ID thông qua header. Để lấy Google ID, bạn cần đăng nhập vào hệ thống qua Google OAuth.

headers Required Headers
Header Name Value Description
X-Google-ID Required string Google ID của user đã đăng nhập (Lấy từ bảng users)
Content-Type application/json Định dạng dữ liệu request

Error Response (401 Unauthorized)

{ "success": false, "error": "Missing X-Google-ID header" }

API Endpoints

GET /api/companies

Query Parameters

Parameter Type Description
zone Optional string Lọc theo khu vực (mien_bac, mien_trung, mien_nam)

Example Request

curl -X GET "http://localhost:3000/api/companies?zone=mien_bac" \ -H "X-Google-ID: YOUR_GOOGLE_ID" \ -H "Content-Type: application/json"

Response

{ "success": true, "data": { "companies": [ { "id_cong_ty": "EVN_HN", "ten_cong_ty": "Tổng Công ty Điện lực Hà Nội", "zone": "mien_bac", "cong_ty_con": [ { "ma_cong_ty_con": "EVN_HN_01", "ten_cong_ty_con": "Công ty Điện lực Hoàn Kiếm" } ] } ] } }
GET /api/outages

Query Parameters

Parameter Type Description
zone Required string Lọc theo khu vực (mien_bac, mien_trung, mien_nam)
ma_dien_luc Optional string Mã công ty điện lực
ma_cong_ty_con Optional string Mã công ty con
date Optional string Ngày (YYYY-MM-DD)
page Optional number Trang (mặc định: 1)
limit Optional number Số lượng kết quả mỗi trang (mặc định: 20)

Example Request

curl -X GET "http://localhost:3000/api/outages?zone=mien_bac&date=2024-03-20" \ -H "X-Google-ID: YOUR_GOOGLE_ID" \ -H "Content-Type: application/json"

Response

{ "success": true, "data": { "items": [ { "id": 1, "ma_dien_luc": "EVN_HN", "ten_dien_luc": "Tổng Công ty Điện lực Hà Nội", "ma_cong_ty_con": "EVN_HN_01", "ten_cong_ty_con": "Công ty Điện lực Hoàn Kiếm", "thoi_gian_bat_dau": "2024-03-20T08:00:00.000Z", "thoi_gian_ket_thuc": "2024-03-20T17:00:00.000Z", "khu_vuc": "Phường Hàng Bài, Hoàn Kiếm", "ly_do": "Bảo trì đường dây" } ], "pagination": { "page": 1, "limit": 20, "totalItems": 45, "totalPages": 3 } } }