สำหรับแอปมือถือและระบบอื่น

API

dhamma api

ทุกอย่างที่อ่านได้บนเว็บนี้ อ่านผ่าน HTTP ได้ด้วย — บทสวดมนต์ พระไตรปิฎกทีละหน้า หนังสือ ชาดก หมวดธรรม และการค้นทั้งคลัง อ่านเปิดสาธารณะไม่ต้องมีคีย์ ส่วนการเขียนต้องส่งคีย์มาด้วย

เส้นทาง
๕๕
คำสั่ง
๙๐
รุ่น
v1

API ของ ธรรม — บทสวดมนต์ พระไตรปิฎก และหนังสือธรรมะ

อ่านเปิดสาธารณะ เขียนต้องมีคีย์. ทุก GET เรียกได้เลยโดยไม่ต้องมีคีย์ เพราะสิ่งที่อยู่ในนี้คือพระธรรมและสารบัญห้องสมุด ไม่ใช่ข้อมูลส่วนตัวของใคร · ทุก POST PUT PATCH DELETE ต้องส่ง Authorization: Bearer <DHAMMA_API_KEY>

หน้าเว็บกับ API กินสัญญาเดียวกัน. หน้าเพจเรียกฟังก์ชันชุดเดียวกับที่เส้นเหล่านี้เรียก (src/lib/api/*) โดยไม่ผ่าน HTTP — รูปของข้อมูลจึงเป็นชนิดเดียวกันในภาษาเดียวกัน ไม่ใช่สองอย่างที่บังเอิญตรงกันวันนี้

ที่มาของตัวบท. ตัวบทของพระไตรปิฎกบนเซิร์ฟเวอร์นี้เป็นงานของคนอื่น — 84000.org และ E-Tipitaka — และแต่ละฉบับมาจากคนละที่กันเป็นสัดส่วน GET /api/v1/sources นับให้จากตัวบทที่เก็บไว้จริง ไคลเอนต์ที่แสดงตัวบทควรแสดงข้อมูลนั้นด้วย

ความผิดพลาดมีรูปเดียว: { "error": { "code", "message", "issues"? } } — message เป็นภาษาไทยและพิมพ์ให้ผู้ใช้อ่านได้เลย ส่วน issues แยกตามชื่อฟิลด์ เป็นประโยคชุดเดียวกับที่ฟอร์มในหน้าแอดมินพิมพ์ใต้ช่องกรอก

รายการทุกเส้นมีรูปเดียวกัน: { items, total, limit, offset } — ยกเว้น /api/v1/search ซึ่งคงรูปของผลค้นไว้

ทุก GET ส่ง ETag มาด้วย ส่ง If-None-Match กลับมาแล้วได้ 304 ถ้าคำตอบยังเป็นอันเดิม · คุ้มที่สุดกับก้อนใหญ่อย่าง layout ของเล่ม (๒๙๘ บท) ที่แอปเปิดซ้ำทุกเช้าแต่แทบไม่เคยเปลี่ยน

PATCH แก้เฉพาะสิ่งที่ส่งมา ระเบียนเดิมถูกอ่านก่อน แล้ว body ทับลงเฉพาะคีย์ที่เอ่ยถึง · null หรือสตริงว่างคือการลบค่านั้นทิ้ง คีย์ที่ไม่ได้เอ่ยถึงคงเดิม และรายการถูกแทนทั้งก้อนไม่ใช่ต่อท้าย

แก้แล้วไม่ทับกัน. ระเบียนแต่ละอันส่ง version มากับ GET ของตัวเอง · ส่งกลับมาใน If-Match แล้วถ้าระเบียนขยับไปตั้งแต่ที่อ่านมา จะได้ 412 แทนที่จะเขียนทับงานที่ไม่เคยเห็น · เป็นทางเลือก ไม่บังคับ แต่ PATCH ต้องการมันมากกว่า PUT เพราะมัน merge เข้ากับสิ่งที่อ่านมาเมื่อครู่ — สองคนที่แก้คนละฟิลด์จากสำเนาเดียวกันจึงไม่ชนกันดัง ๆ คนหลังแค่เขียนฟิลด์ของคนแรกกลับไปเป็นค่าเดิม

หมายเหตุ: version ไม่ใช่ ETag ของคำตอบใดคำตอบหนึ่ง — คำตอบของหนังสือเล่มหนึ่งมีเล่มข้างเคียงอยู่ด้วย แฮชของไบต์จึงจะขยับตอนที่หนังสือ *เล่มอื่น* ถูกเพิ่ม และปฏิเสธในสิ่งที่ไม่ใช่การชนกันจริง · version แฮชเฉพาะฟิลด์ที่การเขียนขยับได้ และไม่เปลี่ยนตาม ?lang=

เรียกถี่เกินไปได้ 429 พร้อม Retry-After เป็นวินาที · นับต่อผู้เรียก และคำขอที่แพงมีราคาแพงกว่า — ค้นในเล่มเท่ากับยี่สิบคำขอธรรมดา ค้นทั้งคลังเท่ากับห้า · ตั้งด้วย API_RATE_LIMIT (0 คือปิด)

เริ่มจากตรงนี้

curl -s 'https://dhamma.fly.dev/api/v1/chant-sections' | jq
curl -s 'https://dhamma.fly.dev/api/v1/canon/volumes/25/pages/1?edition=royal'
curl -s 'https://dhamma.fly.dev/api/v1/search?q=อริยสัจ&limit=5'

เอกสารเครื่องอ่านอยู่ที่ /api/v1/openapi.json สร้างไคลเอนต์จากไฟล์นั้นได้เลย

คลังหนังสือธรรมะ

books

get/api/v1/books

รายการหนังสือทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
shelfquery
ชั้นที่จะหยิบมา: all · featured · popular · recent · continue
categoryquery
สลักหมวดหนังสือ
authorquery
ชื่อผู้เขียนแบบตรงตัว
writtenInquery
ภาษาที่หนังสือเขียน — ไทย · English · บาลี (คนละเรื่องกับ ?lang=)
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/booksต้องมีคีย์

เพิ่มหนังสือ

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของหนังสือ ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/books/{slug}

หนังสือรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/books/{slug}ต้องมีคีย์

แก้ไขหนังสือ

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของหนังสือ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/books/{slug}ต้องมีคีย์

ลบหนังสือ

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
get/api/v1/books/{slug}/contents

สารบัญของหนังสือ

บทและจำนวนหน้า ไม่มีตัวอักษรของเนื้อหาเลย · sample: true แปลว่ายังเป็นข้อความตัวอย่าง ไม่ใช่หนังสือจริง

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { book, chapters, totalPages, sample }
  • 404 ไม่พบสิ่งที่ขอ
put/api/v1/books/{slug}/contentsต้องมีคีย์

เขียนทับเนื้อหาทั้งเล่ม

chapterTitle กับ chapterBody เป็นสองรายการที่เรียงคู่กัน บทละหนึ่งช่อง · ส่งมาเป็นรายการว่างคือล้างเนื้อหา แล้วหนังสือกลับไปใช้ฉบับตัวอย่าง

slugใน path · จำเป็น
สลักของระเบียน

body · { "chapterTitle": ["บทที่หนึ่ง"], "chapterBody": ["ย่อหน้า\n\nย่อหน้า"] }

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/books/{slug}/pages/{number}

หนึ่งหน้าของหนังสือ

slugใน path · จำเป็น
สลักของระเบียน
numberใน path · จำเป็น
เลขหน้า เริ่มที่ ๑
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { number, chapterIndex, heading?, paragraphs, totalPages, sample }
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/book-categories

รายการหมวดหนังสือทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/book-categoriesต้องมีคีย์

เพิ่มหมวดหนังสือ

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของหมวดหนังสือ ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/book-categories/{slug}

หมวดหนังสือรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/book-categories/{slug}ต้องมีคีย์

แก้ไขหมวดหนังสือ

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของหมวดหนังสือ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/book-categories/{slug}ต้องมีคีย์

ลบหมวดหนังสือ

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/book-categories/{slug}/moveต้องมีคีย์

ย้ายลำดับหมวดหนังสือ

delta เป็น −1 หรือ 1 — ลำดับถูกเขียนใหม่เป็น ๑…n ทุกครั้ง

slugใน path · จำเป็น
สลักของระเบียน

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง

บทสวดมนต์และตัวบท

chants

get/api/v1/chants

รายการบทสวดทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
sectionquery
สลักหมวด
occasionquery
โอกาสที่สวด
prayerTypequery
ประเภทบทสวด
audioquery
true เพื่อเอาเฉพาะบทที่มีเสียง
transcribedquery
true เพื่อเอาเฉพาะบทที่ถอดความแล้ว
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/chantsต้องมีคีย์

เพิ่มบทสวด

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของบทสวด ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/chants/{slug}

บทสวดรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/chants/{slug}ต้องมีคีย์

แก้ไขบทสวด

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของบทสวด

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/chants/{slug}ต้องมีคีย์

ลบบทสวด

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/chants/{slug}/moveต้องมีคีย์

ย้ายลำดับบทสวด

delta เป็น −1 หรือ 1 — ลำดับถูกเขียนใหม่เป็น ๑…n ทุกครั้ง

slugใน path · จำเป็น
สลักของระเบียน

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
get/api/v1/chants/{slug}/text

ตัวบทสวด

บทที่ยังไม่ได้ถอดความตอบ 200 พร้อม transcribed: false ไม่ใช่ 404 — ระเบียนมีจริง เพียงแต่ยังไม่มีใครพิมพ์ตัวบทลงไป

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { slug, transcribed, lines }
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/chant-sections

รายการหมวดบทสวดทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/chant-sectionsต้องมีคีย์

เพิ่มหมวดบทสวด

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของหมวดบทสวด ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/chant-sections/{slug}

หมวดบทสวดรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/chant-sections/{slug}ต้องมีคีย์

แก้ไขหมวดบทสวด

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของหมวดบทสวด

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/chant-sections/{slug}ต้องมีคีย์

ลบหมวดบทสวด

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/chant-sections/{slug}/moveต้องมีคีย์

ย้ายลำดับหมวดบทสวด

delta เป็น −1 หรือ 1 — ลำดับถูกเขียนใหม่เป็น ๑…n ทุกครั้ง

slugใน path · จำเป็น
สลักของระเบียน

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง

พระไตรปิฎก — ชั้น สารบัญ ตัวบท และการอ่านทีละหน้า

canon

get/api/v1/canon

ชั้นหนังสือทั้งชุด

สามปิฎก หมวดของแต่ละปิฎก และจำนวนเล่มทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { pitakas, volumes }
get/api/v1/canon/pitakas

รายการปิฎกทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/canon/pitakasต้องมีคีย์

เพิ่มปิฎก

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของปิฎก ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/canon/pitakas/{slug}

ปิฎกรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/canon/pitakas/{slug}ต้องมีคีย์

แก้ไขปิฎก

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของปิฎก

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/canon/pitakas/{slug}ต้องมีคีย์

ลบปิฎก

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/canon/pitakas/{slug}/moveต้องมีคีย์

ย้ายลำดับปิฎก

delta เป็น −1 หรือ 1 — ลำดับถูกเขียนใหม่เป็น ๑…n ทุกครั้ง

slugใน path · จำเป็น
สลักของระเบียน

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
get/api/v1/canon/divisions

รายการหมวดของพระไตรปิฎกทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/canon/divisionsต้องมีคีย์

เพิ่มหมวดของพระไตรปิฎก

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของหมวดของพระไตรปิฎก ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/canon/divisions/{slug}

หมวดของพระไตรปิฎกรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/canon/divisions/{slug}ต้องมีคีย์

แก้ไขหมวดของพระไตรปิฎก

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของหมวดของพระไตรปิฎก

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/canon/divisions/{slug}ต้องมีคีย์

ลบหมวดของพระไตรปิฎก

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/canon/divisions/{slug}/moveต้องมีคีย์

ย้ายลำดับหมวดของพระไตรปิฎก

delta เป็น −1 หรือ 1 — ลำดับถูกเขียนใหม่เป็น ๑…n ทุกครั้ง

slugใน path · จำเป็น
สลักของระเบียน

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
get/api/v1/canon/volumes/{volume}

หนึ่งเล่ม

ที่ทางบนชั้น และฉบับที่เล่มนี้มีตัวบทให้อ่าน

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { volume, pitaka, division, editions, href, readHref }
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/canon/volumes/{volume}/contents

สารบัญของเล่ม

เป็นต้นไม้ หรือ ?flat=1 เพื่อเอาหัวข้อทั้งหมดเรียงตามลำดับอ่าน พร้อม depth และ path · แต่ละหัวข้อมี ref (ตำแหน่งที่แก้แล้ว) และ ownRef (ตำแหน่งที่ระเบียนถืออยู่จริง) ซึ่งไม่เท่ากันเสมอไป

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
flatquery
1 เพื่อเอาแบบเรียงแบน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { volume, division, entries, items }
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/canon/volumes/{volume}/entries

หัวข้อของเล่ม เรียงแบน

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { volume, division, entries, items }
  • 404 ไม่พบสิ่งที่ขอ
post/api/v1/canon/volumes/{volume}/entriesต้องมีคีย์

เพิ่มหัวข้อลงในสารบัญของเล่มนี้

หัวข้อสังกัดหมวด ไม่ใช่เล่ม — หมวดถูกหาจากเลขเล่มให้เอง เพื่อให้หัวข้อหนึ่งมีที่อยู่เดียวทั้งเว็บและ API · parent ใน body คือสลักของหัวข้อที่จะไปอยู่ใต้

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕

body · ฟิลด์ของหัวข้อ พร้อม parent ถ้ามี

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/canon/volumes/{volume}/entries/{entry}

หนึ่งหัวข้อ

ตำแหน่งที่อ้างอิง ฉบับที่มีตัวบท และลิงก์ไปอ่านที่ 84000 ทีละฉบับ

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
entryใน path · จำเป็น
สลักของหัวข้อ
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { volume, division, entry, editions, links }
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/canon/volumes/{volume}/entries/{entry}ต้องมีคีย์

แก้ไขหัวข้อ

แก้เฉพาะสิ่งที่ส่งมา เหมือน PATCH เส้นอื่น · ที่นี่สำคัญกว่าที่อื่น เพราะทุกครั้งที่บันทึก ทุกคอลัมน์ของ ref ถูกเขียนใหม่ — body ที่ไม่พูดถึงตำแหน่ง จึงเคยแปลว่าหัวข้อนี้ไม่อยู่ที่ไหนเลย

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
entryใน path · จำเป็น
สลักของหัวข้อ

body · ฟิลด์ของหัวข้อ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
delete/api/v1/canon/volumes/{volume}/entries/{entry}ต้องมีคีย์

ลบหัวข้อ

ลบทั้งกิ่ง — หัวข้อที่อยู่ข้างใต้หายไปด้วย และลิงก์จากหัวข้อเหล่านั้นไปยังตัวบทหายไปด้วย · ตัวบทเองไม่ถูกลบ เพราะเป็นของที่ import มา ไม่ใช่ของที่บรรณาธิการเขียน

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
entryใน path · จำเป็น
สลักของหัวข้อ
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/canon/volumes/{volume}/entries/{entry}/moveต้องมีคีย์

ย้ายลำดับหัวข้อในกลุ่มพี่น้องของมัน

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
entryใน path · จำเป็น
สลักของหัวข้อ

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/canon/volumes/{volume}/entries/{entry}/nestต้องมีคีย์

เลื่อนหัวข้อเข้าหรือออกหนึ่งชั้น

direction เป็น in หรือ out · ลึกได้ถึงหกชั้น เกินกว่านั้นตอบ 409

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
entryใน path · จำเป็น
สลักของหัวข้อ

body · { "direction": "in" }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
get/api/v1/canon/volumes/{volume}/entries/{entry}/passage

ตัวบทของหัวข้อ ในฉบับหนึ่ง

?edition= ที่ไม่รู้จักถูกปฏิเสธ ไม่ตกกลับไปฉบับหลวง — ไม่เช่นนั้นไคลเอนต์จะพิมพ์ตัวบทของฉบับหนึ่งใต้ชื่อของอีกฉบับ · variant คือที่ที่คลังอีกแห่งลงตัวบทต่างออกไป ส่งมาทั้ง spans และคู่คำ

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
entryใน path · จำเป็น
สลักของหัวข้อ
editionquery
royal · pali · roman (ค่าเริ่มต้น royal)
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ตัวบท พร้อมย่อหน้าที่ตัดไว้แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/canon/volumes/{volume}/layout

เล่มนี้แบ่งหน้าอย่างไร

บทและจำนวนหน้า ไม่มีตัวอักษรของตัวบทเลย · สองฉบับแบ่งหน้าไม่เหมือนกัน หน้า ๔๐ ของไทยกับของบาลีจึงไม่ใช่ที่เดียวกัน — ต้องถามแยกตามฉบับเสมอ

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
editionquery
royal · pali · roman
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { volume, edition, editionLabel, totalPages, chapters }
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/canon/volumes/{volume}/pages/{number}

หนึ่งหน้าของเล่ม

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
numberใน path · จำเป็น
เลขหน้า เริ่มที่ ๑
editionquery
royal · pali · roman
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { number, chapter, chapterTitle, heading?, paragraphs, totalPages }
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/canon/volumes/{volume}/search

ค้นในเล่มที่เปิดอยู่

คนละคำถามกับ /api/v1/search ซึ่งค้นทั้งคลังแล้วตอบเป็นหัวข้อ · อันนี้ตอบเป็น *หน้า* และเทียบตัวอักษรตรง ๆ ไม่ผ่านดัชนี เพราะคนที่เปิดหนังสืออยู่ต้องการสิ่งที่พิมพ์ไปพอดี

volumeใน path · จำเป็น
เล่มที่ ๑–๔๕
qquery
คำที่ค้น อย่างน้อยสองตัวอักษร
editionquery
royal · pali · roman
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { volume, edition, query, items, total, limit, offset }
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 404 ไม่พบสิ่งที่ขอ
get/api/v1/canon/reading

ชื่อและจำนวนหน้าของเล่มที่ค้างไว้

?at=27:royal,3:pali — จำนวนหน้าของเล่มเป็นผลของการแบ่งหน้า ไม่ใช่ฟิลด์ในระเบียน จึงไม่สร้างทั้งสี่สิบห้าเล่มให้ผู้เรียกที่ต้องการสองเล่ม

atquery
คู่ เล่ม:ฉบับ คั่นด้วยจุลภาค สูงสุด ๒๔ คู่
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 { places }

ชาดก ๕๔๗ เรื่อง

jataka

get/api/v1/jataka

รายการชาดกทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
nipataquery
สลักของนิบาต
vaggaquery
ชื่อวรรค
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/jatakaต้องมีคีย์

เพิ่มชาดก

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของชาดก ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/jataka/{slug}

ชาดกรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/jataka/{slug}ต้องมีคีย์

แก้ไขชาดก

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของชาดก

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/jataka/{slug}ต้องมีคีย์

ลบชาดก

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/jataka/bulkต้องมีคีย์

วางรายการชาดกทั้งนิบาต

บรรทัดละเรื่อง คั่นฟิลด์ด้วย | — เลข|ชื่อ|ว่าด้วย|อักษรโรมัน · จับคู่ด้วย เลข ไม่ใช่สลัก การวางรายการที่แก้แล้วซ้ำจึงเป็นการซ่อม ไม่ใช่การเพิ่มซ้ำ และแถวเดิมยังเก็บตำแหน่งที่บรรณาธิการเคยลงไว้

body · { "nipata": "nipata-1", "rows": ["1|อปัณณกชาดก|…|apannaka"] }

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/jataka/nipatas

รายการนิบาตทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/jataka/nipatasต้องมีคีย์

เพิ่มนิบาต

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของนิบาต ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/jataka/nipatas/{slug}

นิบาตรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/jataka/nipatas/{slug}ต้องมีคีย์

แก้ไขนิบาต

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของนิบาต

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/jataka/nipatas/{slug}ต้องมีคีย์

ลบนิบาต

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/jataka/nipatas/{slug}/moveต้องมีคีย์

ย้ายลำดับนิบาต

delta เป็น −1 หรือ 1 — ลำดับถูกเขียนใหม่เป็น ๑…n ทุกครั้ง

slugใน path · จำเป็น
สลักของระเบียน

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง

หมวดธรรมที่นับเป็นชุด

dhamma-groups

get/api/v1/dhamma-groups

รายการหมวดธรรมทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
setquery
สลักของหมวดจำนวน
sizequery
จำนวนสมาชิกในหมวด เช่น 4 คือจตุกกะ
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/dhamma-groupsต้องมีคีย์

เพิ่มหมวดธรรม

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของหมวดธรรม ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/dhamma-groups/{slug}

หมวดธรรมรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/dhamma-groups/{slug}ต้องมีคีย์

แก้ไขหมวดธรรม

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของหมวดธรรม

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/dhamma-groups/{slug}ต้องมีคีย์

ลบหมวดธรรม

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/dhamma-groups/bulkต้องมีคีย์

วางรายการหมวดธรรมทั้งหมวดจำนวน

บรรทัดละรายการ เลข|ชื่อ|คำอธิบาย|เลขในพจนานุกรม จับคู่ด้วยเลขในพจนานุกรม

body · { "set": "set-4", "rows": ["137|กรรมกิเลส 4|…|137"] }

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/dhamma-groups/sets

รายการหมวดจำนวนทั้งหมด

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
limitquery
จำนวนรายการต่อครั้ง (ค่าเริ่มต้น 50 สูงสุด 200)
offsetquery
ข้ามกี่รายการก่อนเริ่มนับ
  • 200 { items, total, limit, offset }
post/api/v1/dhamma-groups/setsต้องมีคีย์

เพิ่มหมวดจำนวน

ตรวจด้วยตัวตรวจชุดเดียวกับฟอร์มในหน้าแอดมิน ข้อความที่ปฏิเสธจึงเป็นประโยคภาษาไทยประโยคเดียวกัน และทุกครั้งที่เขียนสำเร็จจะมีบรรทัดใน content_edit

body · ฟิลด์ของหมวดจำนวน ตามที่ฟอร์มในหน้าแอดมินรับ

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
get/api/v1/dhamma-groups/sets/{slug}

หมวดจำนวนรายการเดียว

slugใน path · จำเป็น
สลักของระเบียน
langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 ระเบียน
  • 404 ไม่พบสิ่งที่ขอ
patch/api/v1/dhamma-groups/sets/{slug}ต้องมีคีย์

แก้ไขหมวดจำนวน

แก้เฉพาะสิ่งที่ส่งมา — ระเบียนปัจจุบันถูกอ่านก่อน แล้ว body ทับลงไปเฉพาะคีย์ที่เอ่ยถึง ส่งฟิลด์เดียวก็เปลี่ยนฟิลด์เดียว · คีย์ที่ body เอ่ยถึงถูกแทนทั้งก้อน null และสตริงว่างต่างก็เป็นการลบค่านั้น และรายการถูกแทนไม่ใช่ต่อท้าย · สลักใน path คือระเบียนที่แก้ ส่ง slug ใน body เพื่อเปลี่ยนสลัก

slugใน path · จำเป็น
สลักของระเบียน

body · ฟิลด์ของหมวดจำนวน

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
delete/api/v1/dhamma-groups/sets/{slug}ต้องมีคีย์

ลบหมวดจำนวน

slugใน path · จำเป็น
สลักของระเบียน
  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง
post/api/v1/dhamma-groups/sets/{slug}/moveต้องมีคีย์

ย้ายลำดับหมวดจำนวน

delta เป็น −1 หรือ 1 — ลำดับถูกเขียนใหม่เป็น ๑…n ทุกครั้ง

slugใน path · จำเป็น
สลักของระเบียน

body · { "delta": -1 }

  • 200 ลบแล้ว
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
  • 412 ส่ง If-Match มาแต่ระเบียนขยับไปแล้ว — โหลดใหม่แล้วลองอีกครั้ง

ของทั้งเครื่อง — จำนวน ที่มา ภาษา และคำแปล

meta

get/api/v1/meta

เซิร์ฟเวอร์นี้มีอะไรอยู่เท่าไร

passages เป็น null เมื่อเครื่องนี้ยังไม่มีฐานตัวบท ซึ่งเป็นสภาพของ clone ใหม่

langquery
ภาษาที่อยากอ่านระเบียน เช่น th หรือ en — ภาษาที่เซิร์ฟเวอร์นี้ยังไม่มีจะตกกลับไปเป็นภาษาหลักทีละฟิลด์ ไม่ปฏิเสธ ดูรายการที่รับได้ที่ /api/v1/languages
  • 200 จำนวนของทุกคอลเลกชัน และภาษาที่เผยแพร่
get/api/v1/sources

ตัวบทนี้เป็นของใคร

นับจากตัวบทที่เก็บไว้จริง ไม่ได้เขียนตายตัว จึงอ้างเกินจริงไม่ได้ · ไคลเอนต์ที่แสดงตัวบทควรแสดงข้อมูลนี้ด้วย

  • 200 { texts, hasText, canon, dictionary }
get/api/v1/languages

`?lang=` รับอะไรได้บ้างบนเครื่องนี้

  • 200 { items }
get/api/v1/health

เซิร์ฟเวอร์นี้ถือของที่ควรถืออยู่หรือเปล่า

ตอบ 503 เมื่อเปิดฐานตัวบทไม่ได้หรือในนั้นไม่มีตัวบท · ทุกอย่างที่เหลือในโปรเจกต์ถือว่าฐานที่หายไปคือ *เว็บที่มีของน้อยลง* ไม่ใช่เว็บที่พัง ซึ่งถูกสำหรับเครื่องที่เพิ่งโคลนมา และผิดสำหรับ deploy ที่ volume ไม่ได้ mount — เส้นนี้คือเส้นเดียวที่ถือว่ามันคือความผิดพลาด

  • 200 มีฐานข้อมูลและมีตัวบทอยู่ในนั้น
  • 503 ไม่มีอย่างใดอย่างหนึ่ง — why บอกว่าอันไหน
get/api/v1/openapi.json

เอกสารชุดนี้เอง

เผื่อไว้ให้เครื่องมือสร้างไคลเอนต์อ่าน · เทสต์ openapi.test.ts เดินไล่ไฟล์ route ทุกไฟล์แล้วเทียบกับเอกสารนี้ ถ้าเส้นใดหายไปหรือเมท็อดไม่ตรง เทสต์จะแดง

  • 200 เอกสาร OpenAPI 3.1
post/api/v1/translationsต้องมีคีย์

บันทึกคำแปลหนึ่งรายการ

ไปถึงตัวระเบียนไม่ได้จากที่นี่ — ไม่มีสลัก ไม่มีเลข ไม่มีปิฎก · ส่งทุกฟิลด์เป็นค่าว่างคือการลบคำแปลนั้น เพราะคำแปลมีทั้งชุดหรือไม่มีเลย

body · { "collection": "books", "id": 12, "language": "en", "title": "…" }

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก

การตัดสินเรื่องตัวบท

passages

post/api/v1/passages/settleต้องมีคีย์

ตัดสินจุดที่สองคลังลงเรื่องต่างกันใต้ข้อเดียวกัน

keep คือตัวบทที่อยู่บนหน้าถูกแล้ว swap คืออีกคลังมีตัวบทที่ถูก ไม่มี “ยังไม่แน่ใจ” — การปล่อยไว้ในคิวคือคำตอบนั้น · ทั้งสองแบบติดธงว่าคนตัดสิน การ import รอบหน้าจะข้ามไป

body · { "division": "…", "entry": "…", "edition": "royal", "choice": "swap" }

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
post/api/v1/passages/reopenต้องมีคีย์

เอาคู่ที่ตัดสินไปแล้วกลับเข้าคิว

body · { "division": "…", "entry": "…", "edition": "royal" }

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก
post/api/v1/passages/{passage}/hideต้องมีคีย์

ถอนตัวบทออกจากหน้าอ่าน หรือเอากลับขึ้นไป

ซ่อนไม่ใช่ลบ และไม่ได้ตัดสินอะไร — แถวยังอยู่ที่เดิม และคิวยังแสดงมันพร้อมเครื่องหมาย

passageใน path · จำเป็น
เลขระเบียนของตัวบท

body · { "hide": true }

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก

สำรองและกู้คืนทั้งชุด

collections

get/api/v1/collections/{name}ต้องมีคีย์

คัดลอกคอลเลกชันทั้งชุดออกมา

ไม่ใช่ผิวอ่านของ API — รูปที่ได้คือรูปของ src/content/<name>.json ซึ่งเป็นเมล็ดที่ clone ใหม่ใช้สร้างฐานข้อมูล ไม่ใช่ DTO ที่เส้นอื่นเผยแพร่ · ต้องมีคีย์ทั้งอ่านและเขียน เพราะเป็นทางออกฉุกเฉินของแอดมิน

nameใน path · จำเป็น
ชื่อคอลเลกชัน เช่น chants หรือ tipitaka-contents
  • 200 JSON ทั้งชุด
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 404 ไม่พบสิ่งที่ขอ
put/api/v1/collections/{name}ต้องมีคีย์

เขียนทับคอลเลกชันทั้งชุด

อะไรที่ body ไม่พูดถึง จะหายไป · ตรวจรูปก่อนเขียน — คีย์ชั้นนอกและชนิดของแต่ละคีย์ ซึ่งเป็นความผิดพลาดที่เกิดขึ้นจริง (วางผิดไฟล์) · คีย์ที่ไม่รู้จักถูกปฏิเสธ ไม่ใช่เพิกเฉย

nameใน path · จำเป็น
ชื่อคอลเลกชัน

body · คอลเลกชันทั้งชุด ในรูปเดียวกับที่ GET ส่งออกมา

  • 200 บันทึกทับระเบียนเดิมแล้ว
  • 201 สร้างระเบียนใหม่แล้ว
  • 400 คำขอไม่ถูกต้อง — body มี error.issues แยกรายฟิลด์เมื่อความผิดอยู่ที่ฟิลด์
  • 401 ไม่ได้ส่งคีย์ หรือคีย์ไม่ถูกต้อง
  • 403 เซิร์ฟเวอร์นี้ไม่เปิดให้เขียนผ่าน API (production ที่ไม่ได้ตั้ง DHAMMA_API_KEY)
  • 409 ขัดกับสิ่งที่มีอยู่ — สลักซ้ำ, หมวดที่ยังมีสมาชิก