Production API Gateway

Traffy Fondue Exchange API Specification

Base URL สำหรับเรียกใช้งาน Production Endpoints ทั้งหมด:

https://publicapi.traffy.in.th/exchange-api
1

การยืนยันตัวตน (Authentication)

แลกเปลี่ยน Username และ Password ที่ได้รับจากทีมงานเพื่อรับ JWT Bearer Token

POST /get-auth/v1 1. ขอ JWT Bearer Token
🔑 Auth: User / Pass

นำ user และ pass ที่ได้รับทาง Email มาแลกรับ JWT Bearer Token เพื่อใช้เป็น Header ยืนยันตัวตนใน API อื่นๆ ทั้งหมด

Request Body (JSON)
ParameterTypeคำอธิบาย
userREQstringชื่อผู้ใช้งาน Account ที่ได้รับทางอีเมล
passREQstringรหัสผ่าน Account ที่ได้รับทางอีเมล
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/get-auth/v1" \
  -H "Content-Type: application/json" \
  -d '{
    "user": "YOUR_USER",
    "pass": "YOUR_PASS"
  }'
Response (200 OK)
{
  "status": "success",
  "credit_balance": 820,
  "quota_limit": 1000,
  "results": [{
    "token": "eyJhbGciOiJIUzI1Ni...",
    "expire_timestamp": "2026-08-31 23:59:59"
  }]
}
2

การขอข้อมูลจาก Fondue (Data Retrieval)

API สำหรับดึงรายการเรื่องแจ้ง ประวัติ ข้อมูลสถิติ และผังโครงสร้างหน่วยงาน

POST /get-issues/v1 2. ขอรายการเรื่องแจ้ง
🛡️ Header: Bearer Token

ดึงรายการเรื่องแจ้งที่หน่วยงานได้รับ พร้อมตัวกรองตามช่วงวันที่, สถานะ, ประเภทปัญหา, คำค้นหา, และ Pagination

Request Body (JSON)
ParameterTypeคำอธิบาย
start_dateOPTstringวันที่เริ่มต้น YYYY-MM-DD (Default: 3 วันย้อนหลัง)
end_dateOPTstringวันที่สิ้นสุด YYYY-MM-DD (Default: วันปัจจุบัน)
stateOPTarray[str]กรองสถานะ เช่น ["รอรับเรื่อง", "กำลังดำเนินการ"]
typeOPTarray[str]กรองประเภทปัญหา เช่น ["ถนน", "ทางเท้า"]
keywordOPTstringคำค้นหาในรายละเอียดหรือที่อยู่
offset / limitOPTintการแบ่งหน้า (limit ไม่เกิน 1,000 ต่อรอบ)
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/get-issues/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2026-08-01",
    "end_date": "2026-08-31",
    "state": ["รอรับเรื่อง", "กำลังดำเนินการ"],
    "offset": 0,
    "limit": 20
  }'
Response (200 OK)
{
  "status": "success",
  "total_count": 142,
  "results": [{
    "ticket_id": "2026-ABCDEF",
    "description": "ฝาท่อชำรุด",
    "state": "กำลังดำเนินการ",
    "timestamp": "2026-08-31 10:15:00"
  }]
}
POST /get-issue/v1 3. ขอรายละเอียดรายเคส
🛡️ Header: Bearer Token

ดึงรายละเอียดเชิงลึก ประวัติการปฏิบัติงาน Timeline พิกัด GPS รูปภาพ และสถานะของเรื่องแจ้งราย ticket_id หรือ client_ticket_id

Request Body (JSON)
ParameterTypeคำอธิบาย
ticket_idREQ*stringรหัสเรื่องแจ้ง Fondue (เช่น 2026-ABCDEF)
client_ticket_idREQ*stringหรือรหัสเรื่องแจ้งของระบบภายนอก (*ระบุอย่างใดอย่างหนึ่ง)
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/get-issue/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ticket_id": "2026-ABCDEF"}'
Response (200 OK)
{
  "status": "success",
  "results": [{
    "ticket_id": "2026-ABCDEF",
    "description": "ฝาท่อชำรุด",
    "state": "กำลังดำเนินการ",
    "latitude": 13.7563,
    "longitude": 100.5018,
    "photo": ["https://storage.googleapis.com/..."],
    "history": [{"timestamp": "2026-08-31 10:15:00", "action": "รับเรื่อง"}]
  }]
}
POST /download-issues/v1 4. ดาวน์โหลดข้อมูลเป็น CSV
🛡️ Header: Bearer Token

ส่งออกข้อมูลเรื่องแจ้งของหน่วยงานออกมาเป็นไฟล์ CSV ตามช่วงเวลาและตัวกรองที่กำหนด เหมาะสำหรับการทำรายงานหรือวิเคราะห์ข้อมูลภายนอก

Request Body (JSON)
ParameterTypeคำอธิบาย
start_dateOPTstringวันที่เริ่มต้น YYYY-MM-DD
end_dateOPTstringวันที่สิ้นสุด YYYY-MM-DD
stateOPTarray[str]กรองสถานะที่ต้องการส่งออก
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/download-issues/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "start_date": "2026-08-01",
    "end_date": "2026-08-31"
  }' --output export_issues.csv
POST /search-org/v1 5. ค้นหาหน่วยงานจากชื่อ
🛡️ Header: Bearer Token

ค้นหารหัสหน่วยงาน (org_id) และชื่อหน่วยงานจากคำค้นหา เพื่อนำรหัสไปใช้ในการส่งต่อเคสหรือกรองข้อมูล

Request Body (JSON)
ParameterTypeคำอธิบาย
keywordREQstringคำค้นหาชื่อหน่วยงาน (เช่น บางเขน)
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/search-org/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keyword": "บางเขน"}'
Response (200 OK)
{
  "status": "success",
  "results": [
    {"org_id": 1302, "org_name": "สำนักงานเขตบางเขน", "org_parent": 151}
  ]
}
POST /get-org-list/v1 6. ขอผังโครงสร้างหน่วยงานในสังกัด
🛡️ Header: Bearer Token

ดึงผังโครงสร้างรายชื่อหน่วยงานย่อยทั้งหมดที่อยู่ภายใต้การกำกับดูแลของ Account

cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/get-org-list/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
POST /get-type-list/v1 7. ขอรายการประเภทปัญหา
🛡️ Header: Bearer Token

ดึง Master Data รายการประเภทปัญหาและหมวดหมู่ที่หน่วยงานรับผิดชอบ เพื่อนำ type_id หรือชื่อประเภทไปใช้กับ API new-issue

cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/get-type-list/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
POST /get-status-list/v1 8. ขอรายการสถานะที่ใช้งานได้
🛡️ Header: Bearer Token

ดึงรายการสถานะของเรื่องแจ้งที่เป็นไปได้ในระบบ (เช่น รอรับเรื่อง, กำลังดำเนินการ, เสร็จสิ้น, ส่งต่อ ฯลฯ)

cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/get-status-list/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
3

การส่งข้อมูลให้ Fondue (Data Submission)

API สำหรับส่งเรื่องแจ้งใหม่ ปรับสถานะ ให้คะแนนดาว และส่งข้อความ SMS

POST /new-issue/v1 9. ส่งเรื่องแจ้งใหม่เข้า Fondue
🛡️ Header: Bearer Token

ส่งเรื่องแจ้งเหตุใหม่จากระบบภายนอกเข้าสู่ระบบ Fondue พร้อมระบุพิกัด GPS, รูปภาพ, หมวดหมู่ปัญหา และที่อยู่

Request Body (JSON)
ParameterTypeคำอธิบาย
descriptionREQstringข้อความรายละเอียดปัญหาที่พบ
latitude / longitudeREQnumberพิกัด GPS (WGS84)
type / type_idOPTstr / intประเภทปัญหา
photoOPTarray[str]Array URL รูปภาพประกอบการแจ้ง
addressOPTstringที่อยู่หรือจุดสังเกต
client_ticket_idOPTstringรหัสอ้างอิงในระบบของท่าน
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/new-issue/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "พบฝาท่อชำรุด อาจเกิดอันตราย",
    "latitude": 13.7563,
    "longitude": 100.5018,
    "type": "ถนน",
    "address": "ปากซอยพหลโยธิน 12",
    "client_ticket_id": "EXT-2026-001"
  }'
Response (200 OK)
{
  "status": "success",
  "ticket_id": "2026-ABCDEF",
  "message": "บันทึกเรื่องแจ้งใหม่สำเร็จ"
}
POST /update-issue/v1 10. อัปเดตสถานะเรื่องแจ้ง
🛡️ Header: Bearer Token

ปรับปรุงสถานะการดำเนินงานของเรื่องแจ้ง พร้อมแนบภาพถ่ายผลงาน หรือไฟล์เอกสาร (.pdf, .doc, .xls)

Request Body (JSON)
ParameterTypeคำอธิบาย
ticket_idREQ*stringรหัสเรื่องแจ้ง Fondue
stateREQstringสถานะใหม่ เช่น กำลังดำเนินการ, เสร็จสิ้น
noteOPTstringบันทึกข้อความการดำเนินงาน
photoOPTarray[str]Array URL รูปภาพหลังแก้ไข
filesOPTarray[str]Array URL ไฟล์เอกสารแนบ
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/update-issue/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ticket_id": "2026-ABCDEF",
    "state": "เสร็จสิ้น",
    "note": "เจ้าหน้าที่ซ่อมแซมเสร็จสิ้นแล้ว"
  }'
POST /star/v1 11. ประเมินความพึงพอใจ (ดาว)
🛡️ Header: Bearer Token

บันทึกคะแนนดาวประเมินความพึงพอใจการแก้ไขปัญหา (1 ถึง 5 ดาว) หลังจากเคสเสร็จสิ้น

Request Body (JSON)
ParameterTypeคำอธิบาย
ticket_idREQstringรหัสเรื่องแจ้ง Fondue
starREQintegerคะแนนความพึงพอใจ (1 - 5)
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/star/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ticket_id": "2026-ABCDEF", "star": 5}'
POST /comment/v1 12. ส่งความเห็น / ข้อความแชต SMS
🛡️ Header: Bearer Token

ส่งความคิดเห็นหลังการประเมิน หรือส่งข้อความ Chat ไปยังผู้แจ้งผ่านทาง SMS

Request Body (JSON)
ParameterTypeคำอธิบาย
ticket_idREQstringรหัสเรื่องแจ้ง Fondue
commentREQstringข้อความความคิดเห็น หรือข้อความสนทนา
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/comment/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ticket_id": "2026-ABCDEF", "comment": "ขอบคุณสำหรับการแจ้งเหตุครับ"}'
POST /join-forward/v1 13. เชิญร่วม & ส่งต่อเรื่องแจ้ง
🛡️ Header: Bearer Token

เชิญหน่วยงานอื่นร่วมรับผิดชอบ หรือส่งต่อเรื่องแจ้งไปยังหน่วยงานปลายทางที่รับผิดชอบโดยตรง

Request Body (JSON)
ParameterTypeคำอธิบาย
message_idREQintegerรหัสข้อความเรื่องแจ้ง
origin_groupREQintegerรหัสหน่วยงานต้นทาง (org_id)
destination_groupREQarray[int]รหัสหน่วยงานปลายทางที่ต้องการส่งต่อ
scenarioREQinteger1 = เชิญร่วม, 2 = ส่งต่อ
noteOPTstringข้อความบันทึกการส่งต่อ
cURL Example
curl -X POST "https://publicapi.traffy.in.th/exchange-api/join-forward/v1" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message_id": 30314900,
    "origin_group": 151,
    "destination_group": [1302],
    "scenario": 2,
    "note": "ส่งต่อหน่วยงานที่รับผิดชอบโดยตรง"
  }'
4

การส่งข้อมูลแบบ Real-time (Webhooks)

ระบบ Traffy Fondue ยิงข้อมูล Event ไปยัง Endpoint ปลายทางของหน่วยงานท่านทันที

POST (Webhook) Client Webhook URL เมื่อมีเรื่องแจ้งเข้ามาใหม่
⚡ Non-Quota

ระบบ Traffy Fondue ส่งข้อมูลเคสใหม่ พิกัด GPS รูปภาพ และหมวดหมู่ปัญหา แบบ HTTP POST ทันทีเมื่อมีผู้แจ้งเหตุ

Incoming Payload (JSON)
FieldTypeคำอธิบาย
ticket_idstringหมายเลขเรื่องแจ้งในระบบ Fondue
descriptionstringข้อความรายละเอียดปัญหา
latitude / longitudenumberพิกัด GPS (WGS84)
photoarray[str]ลิงก์ภาพประกอบการแจ้ง
orgsarray[obj]หน่วยงานที่รับผิดชอบ
Incoming Payload Sample (POST)
{
  "timestamp": "2026-08-31 10:00:00.000000",
  "ticket_id": "2026-ABCDEF",
  "description": "พบฝาท่อชำรุด",
  "type_id": 12,
  "type": "ถนน",
  "photo": ["https://storage.googleapis.com/..."],
  "latitude": 13.754158,
  "longitude": 100.5014985,
  "address": "112 ถ.พหลโยธิน ปทุมธานี",
  "orgs": [{"org_id": 151, "org": "Traffy Fondue"}]
}
PATCH (Webhook) Client Webhook URL เมื่อมีการอัปเดตสถานะ
⚡ Non-Quota

ระบบ Traffy Fondue ส่งข้อมูลการอัปเดตสถานะ บันทึกการปฏิบัติงาน และภาพถ่ายผลงาน แบบ HTTP PATCH ทันทีที่มีการเปลี่ยนสถานะ

Incoming Payload (JSON)
FieldTypeคำอธิบาย
ticket_idstringหมายเลขเรื่องแจ้ง Fondue
statusstringสถานะที่อัปเดต เช่น เสร็จสิ้น
notestringคำอธิบายประกอบการอัปเดต
photoarray[str]ภาพถ่ายหลังการแก้ไข
orgstringชื่อหน่วยงานผู้ดำเนินการ
Incoming Payload Sample (PATCH)
{
  "timestamp": "2026-08-31 11:30:00.000000",
  "ticket_id": "2026-ABCDEF",
  "org": "Traffy @ ITS Lab2",
  "status": "เสร็จสิ้น",
  "note": "ได้ทำการแก้ไขเสร็จสิ้นแล้วครับ",
  "photo": ["https://storage.googleapis.com/..."]
}
5

รหัสข้อผิดพลาดและการแก้ปัญหา (Error Codes)

รายการ Error Message ที่พบบ่อย พร้อมสาเหตุและแนวทางการแก้ไข

Error Messageสาเหตุแนวทางแก้ไข
Invalid user or passUsername หรือ Password ไม่ถูกต้องตรวจสอบข้อมูลใน Email ที่ได้รับแจ้งจากทีมงาน
This token has expiredJWT Token หมดอายุเรียก API /get-auth/v1 เพื่อขอรับ Token ชุดใหม่
ERR 1 - Invalid tokenToken ไม่ถูกต้อง หรือไม่ได้แนบ Headerตรวจสอบ Header: Authorization: Bearer <token>
Running out of API usage quotaโควต้าประจำเดือนหมดติดต่อขอเพิ่มโควต้าผ่านทาง LINE: @fonduehelp
Invalid input JSON formatBody ไม่ได้อยู่ในรูปแบบ JSON ที่ถูกต้องตรวจสอบ Syntax ของ JSON Payload
[Parameter] is not specifiedขาดพารามิเตอร์บังคับ (Required)ตรวจสอบว่าได้ส่งฟิลด์ดังกล่าวมาครบถ้วน