API Reference (เอกสารอ้างอิง API)
คู่มือฉบับนี้รวบรวม API ทั้งหมดที่ผู้ใช้และนักพัฒนาสามารถใช้งานได้บนแพลตฟอร์ม ChanomHub เพื่อเชื่อมต่อ ค้นหา ดึงข้อมูลบทความ ม็อด (Mods) หรือผสานรวมบริการต่างๆ
ภาพรวมระบบ API (Overview)
heading.anchorLabelChanomHub ให้บริการ API ผ่านหลากหลายรูปแบบตามการใช้งาน:
- Base URL (REST):
https://api.chanomhub.com/api(หรือhttp://localhost:3000/apiสำหรับ Local) - GraphQL Endpoint:
https://api.chanomhub.com/api/graphql - Swagger Documentation: https://api.chanomhub.com/api-docs
1. การยืนยันตัวตน (Authentication)
heading.anchorLabelการใช้งาน API ส่วนใหญ่สำหรับดึงข้อมูลสาธารณะ (เช่น รายชื่อบทความ, ม็อด, ค้นหา) ไม่จำเป็นต้องใช้ Token แต่หากต้องการดำเนินการจัดการข้อมูลส่วนตัว หรือส่งบทความ จะต้องระบุ HTTP Header:
Authorization: Bearer <YOUR_ACCESS_TOKEN>การเข้าสู่ระบบ / ลงทะเบียน (Auth Endpoints)
heading.anchorLabel| Endpoint | Method | คำอธิบาย |
|---|---|---|
/api/auth/sign-in/email | POST | เข้าสู่ระบบด้วย Email และ Password |
/api/auth/sign-up/email | POST | สมัครสมาชิกใหม่ด้วย Email |
/api/auth/sign-out | POST | ออกจากระบบ (Invalidate Session) |
/api/auth/sign-in/social | GET | เข้าสู่ระบบผ่าน Social Provider (google, discord, github) |
2. API สำหรับบทความ (Articles API)
heading.anchorLabelจัดการ ดึงข้อมูล และค้นหาบทความเกมหรือเนื้อหาในแพลตฟอร์ม
2.1 ดึงรายการบทความ (List Articles)
heading.anchorLabelGET /api/articles
Query Parameters:
page(number): หน้าที่ต้องการ ( Default:1)limit(number): จำนวนรายการต่อหน้า ( Default:20)category(string): กรองตาม Category Slugtag(string): กรองตาม Tag Slugsearch(string): คำค้นหาในชื่อหรือเนื้อหาsortBy(string): การเรียงลำดับ (latest,popular,trending)
curl -X GET "https://api.chanomhub.com/api/articles?page=1&limit=10&sortBy=latest"const res = await fetch('https://api.chanomhub.com/api/articles?page=1&limit=10');const data = await res.json();console.log(data.articles, data.articlesCount);2.2 บทความมาใหม่ & ยอดนิยม
heading.anchorLabelGET /api/articles/latest— ดึงบทความที่เพิ่งเผยแพร่ล่าสุดGET /api/articles/popular— ดึงบทความยอดฮิตที่มียอดอ่านสูง
2.3 อ่านรายละเอียดบทความ (Get Article Detail)
heading.anchorLabelGET /api/articles/:slug
Response Example:
{ "article": { "id": 102, "title": "ตัวอย่างบทความเกมม็อด", "slug": "example-game-mod", "description": "คำอธิบายย่อบทความ...", "body": "เนื้อหาบทความแบบ Markdown หรือ Rich Text...", "ver": "1.2.0", "engine": "RENPY", "views": 1540, "ratings": 4.8, "tags": ["Visual Novel", "Mod"], "createdAt": "2026-08-19T10:00:00.000Z" }}2.4 เพิ่มยอดเข้าชม (Increment View)
heading.anchorLabelPOST /api/articles/:slug/view
- ใช้สำหรับบันทึกการอ่านบทความเมื่อผู้ใช้เปิดอ่านหน้าบทความ
2.5 จัดการบทความ (Authenticated)
heading.anchorLabelPOST /api/articles— สร้างบทความใหม่ (Draft/Submission)PUT /api/articles/:slug— แก้ไขเนื้อหาบทความของผู้ใช้POST /api/articles/:slug/transfer-request— ส่งคำขอโอนสิทธิ์ความเป็นเจ้าของบทความไปยังผู้ใช้อื่นPOST /api/articles/:slug/favorite— เพิ่มบทความเข้ารายการโปรด (Bookmark)DELETE /api/articles/:slug/favorite— ยกเลิกบทความในรายการโปรด
3. API สำหรับความคิดเห็น (Comments API)
heading.anchorLabel| Endpoint | Method | Auth | คำอธิบาย |
|---|---|---|---|
/api/articles/:slug/comments | GET | ❌ | ดึงรายการความคิดเห็นทั้งหมดของบทความ |
/api/articles/:slug/comments | POST | ✅ | แสดงความคิดเห็น หรือตอบกลับ (Reply) |
/api/articles/:slug/comments/:id | DELETE | ✅ | ลบความคิดเห็นของผู้ใช้เอง |
4. API ม็อดและเอนจินเกม (Mods & Engines API)
heading.anchorLabelสำหรับค้นหาม็อด ดึงหมวดหมู่ม็อด และข้อมูล Engine ของเกม
GET /api/mods— ค้นหาและกรองรายการม็อดทั้งหมดGET /api/mods/:id— ดึงข้อมูลรายละเอียดม็อดเฉพาะ IDGET /api/mod-categories— ดึงรายชื่อหมวดหมู่ม็อดทั้งหมดGET /api/engines— ดึงรายชื่อ Game Engines ที่รองรับ (เช่น Ren’Py, Unity, RPG Maker)
5. API ดาวน์โหลดไฟล์ (Downloads API)
heading.anchorLabel| Endpoint | Method | คำอธิบาย |
|---|---|---|
/api/downloads/:documentId | GET | รับโทเค็นดาวน์โหลดและสร้างลิงก์ดาวน์โหลดอย่างปลอดภัย |
/api/downloads/redirect | GET | ลิงก์สำหรับเปลี่ยนทิศทางไปยังไฟล์ดาวน์โหลด (Ad-Redirect Flow) |
6. หมวดหมู่ แฮชแท็ก และแพลตฟอร์ม (Taxonomy APIs)
heading.anchorLabelGET /api/tags— รายชื่อ Tag ทั้งหมดพร้อมจำนวนการใช้งานGET /api/categories— รายชื่อ Category ทั้งหมดGET /api/platforms— รายชื่อแพลตฟอร์มเกม (เช่น PC, Mobile, Android, Switch)
7. Developer Portal & API Verification
heading.anchorLabelระบบยืนยันตัวตนสำหรับผู้พัฒนา (Developer Status) และการจัดการโทเค็น:
Endpoints
heading.anchorLabelGET /api/developer/list— ดูรายชื่อนักพัฒนาที่ผ่านการยืนยันแล้วGET /api/developer/profile(Auth) — ดูข้อมูลโปรไฟล์ Developer ของตนเองPOST /api/developer/apply(Auth) — ส่งคำขอสมัครเป็น DeveloperPOST /api/developer/generate-token(Auth) — สร้าง One-Time Token สำหรับยืนยันตัวตนPOST /api/developer/verify/:token(Auth) — กดยืนยันด้วย One-Time TokenPATCH /api/developer/profile(Auth) — อัปเดตข้อมูลโปรไฟล์ผู้พัฒนา
8. ระบบช่วยเหลือด้วย AI (AI Utilities API)
heading.anchorLabelสำหรับผู้เขียนบทความและนักพัฒนาในการแนะนำ แท็ก และตรวจสอบเนื้อหา:
POST /api/ai/suggest-tags— แนะนำ แท็ก ที่เหมาะสมจากเนื้อหาบทความโดยอัตโนมัติPOST /api/ai/validate-tag— ตรวจสอบความถูกต้องและความเกี่ยวข้องของแท็ก
9. RSS Feeds
heading.anchorLabelChanomHub รองรับ RSS Feeds เพื่อใช้ติดตามข่าวสารและบทความตามหมวดหมู่หรือแพลตฟอร์ม:
- Platform RSS Feed:
/platforms/:slug/rss- ตัวอย่าง:
https://chanomhub.com/th/platforms/pc/rss
- ตัวอย่าง:
- Tag RSS Feed:
/tag/:slug/rss- ตัวอย่าง:
https://chanomhub.com/th/tag/visual-novel/rss
- ตัวอย่าง:
10. GraphQL API
heading.anchorLabelChanomHub มี GraphQL Endpoint สำหรับนักพัฒนาที่ต้องการ Query ข้อมูลที่ยืดหยุ่นและเฉพาะเจาะจง
- Endpoint:
/api/graphql - รองรับ HTTP Methods:
POST,QUERY
คุณสามารถดู Schema และทดลอง Query ได้ผ่าน GraphQL Schema Browser ของเรา
สรุปสถานะรหัสตอบกลับ (HTTP Status Codes)
heading.anchorLabel| Status Code | ความหมาย | คำอธิบาย |
|---|---|---|
200 OK | สำเร็จ | ดึงข้อมูลหรือทำรายการสำเร็จ |
201 Created | สร้างข้อมูลสำเร็จ | สร้างบทความ หรือส่งข้อมูลสำเร็จ |
400 Bad Request | ข้อมูลไม่ถูกต้อง | ข้อมูลนำเข้าไม่ถูกต้องตามข้อกำหนด |
401 Unauthorized | ยังไม่ได้ยืนยันตัวตน | ต้องระบุ Bearer Token ใน HTTP Header |
403 Forbidden | ไม่มีสิทธิ์ใช้งาน | สิทธิ์ของผู้ใช้ไม่เพียงพอในการทำรายการนี้ |
404 Not Found | ไม่พบข้อมูล | ไม่พบ Slug หรือ Resource ที่ร้องขอ |
500 Internal Error | ข้อผิดพลาดของเซิร์ฟเวอร์ | เกิดปัญหาภายในระบบเซิร์ฟเวอร์ |