Tapee University api.tapee.ac.th Tapee API Gateway

Secure integration layer

API Gateway for External Systems and Tapee University Internal Data

ระบบนี้ทำหน้าที่เป็นตัวกลางระหว่างเว็บไซต์หรือแอปพลิเคชันภายนอกกับฐานข้อมูล MSSQL ภายใน โดยจำกัดสิทธิ์เป็น read-only, ตรวจสอบ API key, บันทึก request id และกำหนด endpoint ตามที่ได้รับอนุมัติเท่านั้น

Gateway Online
Database access Read-only
Protocol HTTPS + API key
Approval Admin review

Integration flow

หลักการทำงาน

1

ระบบภายนอกส่งคำขอ

ส่ง request ผ่าน HTTPS พร้อม `x-api-key` และข้อมูลที่ endpoint กำหนด

2

Gateway ตรวจสอบสิทธิ์

ตรวจ API key, CORS, rate limit, ขนาด payload และสร้าง request id สำหรับติดตาม

3

อ่านข้อมูลจาก MSSQL

เชื่อมต่อฐานข้อมูลเดิมด้วยบัญชี read-only และใช้ query ที่ระบบกำหนดไว้ล่วงหน้า

4

ส่งผลลัพธ์มาตรฐาน

ตอบกลับเป็น JSON พร้อม request id และไม่เปิดเผยรายละเอียดภายในเมื่อเกิด error

Request access

รูปแบบการขอใช้ API

หน่วยงานหรือผู้พัฒนาระบบภายนอกควรส่งข้อมูลต่อไปนี้ให้ผู้ดูแลระบบก่อนเปิดสิทธิ์ใช้งานจริง

ข้อมูลผู้ขอใช้

ชื่อหน่วยงาน, ผู้ประสานงาน, อีเมล, เบอร์โทร และวัตถุประสงค์ของการเชื่อมต่อ

ข้อมูลระบบต้นทาง

โดเมนหรือ IP ที่จะเรียก API, environment ที่ใช้, ปริมาณ request โดยประมาณต่อวัน

ข้อมูลที่ต้องการ

รายการข้อมูล, เงื่อนไขค้นหา, ตัวอย่างผลลัพธ์ที่ต้องใช้ และเหตุผลตามภารกิจ

ข้อตกลงความปลอดภัย

ห้ามส่งต่อ API key, ห้ามดึงข้อมูลเกินวัตถุประสงค์, ต้องแจ้งทันทีเมื่อสงสัยว่าคีย์รั่วไหล

API docs

ตัวอย่างการเรียกใช้งาน

Health check

ใช้ตรวจสอบว่า gateway ทำงานอยู่

GET https://api.tapee.ac.th/api/health

Authenticated endpoint

endpoint ที่อ่านข้อมูลภายในต้องส่ง API key ทุกครั้ง

curl https://api.tapee.ac.th/api/v1/server-time \
  -H "x-api-key: YOUR_API_KEY"

Student data

ดึงข้อมูลนักศึกษาตามช่วงรหัสหรือระบุรหัสรายตัว

curl "https://api.tapee.ac.th/api/v1/students?years=67-69" \
  -H "x-api-key: YOUR_API_KEY"

curl "https://api.tapee.ac.th/api/v1/students?studentIds=6601001,6601002" \
  -H "x-api-key: YOUR_API_KEY"

Response format

ผลลัพธ์ตอบกลับเป็น JSON พร้อม request id สำหรับอ้างอิงเมื่อแจ้งปัญหา

{
  "requestId": "0d05e6b8-6c2f-4f10-92b2-2c8b64e0a950",
  "count": 1,
  "data": [
    {
      "studentId": "6601001",
      "firstName": "สมชาย",
      "lastName": "ใจดี",
      "major": "คอมพิวเตอร์ธุรกิจ",
      "faculty": "วิทยาศาสตร์",
      "citizenId": "123456"
    }
  ]
}

Security model

มาตรการความปลอดภัย

ไม่เปิดฐานข้อมูลโดยตรง

ระบบภายนอกเห็นเฉพาะ API ที่ได้รับอนุมัติ ไม่เห็น host, schema หรือ credential ของ MSSQL

บัญชีฐานข้อมูลอ่านอย่างเดียว

การเชื่อมต่อใช้สิทธิ์ read-only และ backend จำกัดให้ endpoint ใช้ query แบบอ่านข้อมูลเท่านั้น

ควบคุมสิทธิ์และปริมาณ

ใช้ API key แยกตามระบบ, จำกัด origin, จำกัดจำนวน request และรองรับการยกเลิกคีย์ทันที

ตรวจสอบย้อนหลังได้

ทุก request มี request id และ log สำหรับตรวจสอบปัญหาโดยไม่บันทึกข้อมูลลับลงหน้าเว็บ