profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchInstall Profound CMS as a proxyCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Headless

Quick startJSON และ Claude Codeดึงคำอธิบาย Zod ของคอมโพเนนต์

REST API

REST API Overviewgetเชื่อมต่อเว็บไซต์กับ CMS APIgetGET /routesgetGET /routegetGET /blocksgetรับบล็อกพร้อมแคช CELgetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPOST /translationpatchPATCH /translationsgetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

POST /translation

เริ่มการแปลเอกสารที่เผยแพร่ของสคีมาเป็นชุดไปยังภาษาปลายทางในเบื้องหลัง

จัดคิวการแปลเอกสารที่เผยแพร่ทั้งหมดจากสคีมาคอมโพเนนต์หนึ่งรายการหรือมากกว่าไปยังชุดภาษาปลายทาง ผลลัพธ์จะถูกเพิ่มหรืออัปเดตในตาราง translations เมื่อการแปลแต่ละรายการเสร็จสมบูรณ์

Endpoint: POST /translation การยืนยันตัวตน: Bearer JWT (WorkOS)

Request body

{
  "websiteId": "<uuid>",
  "schemaNames": ["post", "hero"],
  "languages": ["fr", "es", "de"]
}
ฟิลด์ประเภทจำเป็นหมายเหตุ
websiteIduuidใช่เว็บไซต์ที่มีเอกสารต้นฉบับ
schemaNamesstring[]ใช่*สคีมาคอมโพเนนต์ที่ต้องการแปล ชื่อที่ซ้ำกันจะถูกนำออก
schemaNamestringใช่*ทางเลือกแบบเดิมสำหรับส่งสคีมาเพียงรายการเดียว
languagesstring[]ใช่รหัสภาษาปลายทางที่รองรับ รหัสที่ซ้ำกันจะถูกนำออก

* ระบุ schemaNames หรือ schemaName อย่างใดอย่างหนึ่ง

ระบบจะพิจารณาเฉพาะเอกสารที่เผยแพร่แล้วและมีเนื้อหาที่เผยแพร่ไม่เป็นค่าว่างเท่านั้น

Response

{
  "job_id": "<uuid>",
  "website_id": "<uuid>",
  "schema_name": null,
  "schema_names": ["post", "hero"],
  "languages": ["fr", "es", "de"],
  "status": "queued",
  "documents_processed": 12,
  "translations_scheduled": 30,
  "translations_skipped": 6,
  "translations_completed": 0,
  "translations_failed": 0,
  "reused": false,
  "created_at": "2026-07-15T18:00:00Z",
  "updated_at": "2026-07-15T18:00:00Z"
}

ส่งคืน:

  • 202 Accepted เมื่อการแปลถูกจัดเข้าคิวแล้ว
  • 200 OK เมื่อการแปลทุกรายการเป็นข้อมูลปัจจุบันอยู่แล้ว
  • งานที่กำลังทำงานอยู่เดิม เมื่อมีคำขอที่เหมือนกันกำลังดำเนินการอยู่
ฟิลด์คำอธิบาย
job_idตัวระบุที่ใช้เรียกดูความคืบหน้าของงาน
statusสถานะปัจจุบันของงาน
documents_processedจำนวนเอกสารต้นฉบับที่เข้าเกณฑ์ที่พบ
translations_scheduledจำนวนคู่เอกสาร-ภาษาที่ถูกจัดเข้าคิว
translations_skippedจำนวนรายการที่ข้ามเนื่องจากแฮชต้นฉบับเป็นข้อมูลปัจจุบัน
translations_completedจำนวนรายการที่แปลสำเร็จ
translations_failedจำนวนรายการที่ล้มเหลว
reusedระบุว่าการตอบกลับอ้างถึงงานที่กำลังทำงานอยู่เดิมหรือไม่

สถานะงานที่เป็นไปได้มีดังนี้:

  • preparing
  • queued
  • running
  • completed
  • completed_with_errors
  • failed

การข้ามการแปลที่เป็นข้อมูลปัจจุบัน

คู่เอกสาร-ภาษาแต่ละคู่จะจัดเก็บแฮช SHA-256 ของเนื้อหาที่เผยแพร่ของเอกสารต้นฉบับ

ระบบจะข้ามการแปลเมื่อแฮชต้นฉบับที่จัดเก็บไว้ตรงกับเนื้อหาที่เผยแพร่ปัจจุบัน ซึ่งทำให้สามารถเรียกใช้เอนด์พอยต์นี้ซ้ำได้โดยไม่ต้องแปลเนื้อหาที่ไม่มีการเปลี่ยนแปลงอีก

หากเนื้อหาที่เผยแพร่มีการเปลี่ยนแปลงในขณะที่งานที่เทียบเท่ากำลังทำงานอยู่ บริการจะปฏิเสธคำขอใหม่ ให้ส่งคำขออีกครั้งหลังจากงานที่กำลังทำงานอยู่เสร็จสิ้น

ลักษณะการประมวลผล

การแปลจะทำงานแบบอะซิงโครนัสหลังจากการตอบกลับครั้งแรก

  • งานจะถูกประมวลผลด้วยการทำงานพร้อมกันในขอบเขตที่กำหนด
  • ความล้มเหลวชั่วคราวจะถูกลองใหม่โดยใช้การหน่วงเวลาแบบ backoff
  • ผลลัพธ์ที่สำเร็จจะถูกบันทึกอย่างต่อเนื่องเมื่อประมวลผลเสร็จ
  • ความล้มเหลวของการอนุมานหรือการบันทึกข้อมูลแต่ละรายการจะถูกบันทึกไว้ในงาน
  • งานที่สำเร็จเพียงบางส่วนจะสิ้นสุดด้วยสถานะ completed_with_errors

ตัวอย่าง

curl -X POST '{TRANSLATION_API_URL}/translation' \\
  -H 'Authorization: Bearer <workos-jwt>' \\
  -H 'Content-Type: application/json' \\
  -d '{
    "websiteId": "<uuid>",
    "schemaNames": ["post", "hero"],
    "languages": ["fr", "es"]
  }'

ข้อผิดพลาด

  • 400 Bad Request — ไม่มีสคีมาหรือภาษา ภาษาที่ระบุไม่รองรับ หรือชุดงานมีขนาดเกินขีดจำกัดที่กำหนดค่าไว้
  • 401 Unauthorized — ไม่มีโทเค็น bearer หรือโทเค็นไม่ถูกต้อง
  • 409 Conflict — มีงานที่ตรงกันกำลังทำงานอยู่ แต่เนื้อหาต้นฉบับที่เผยแพร่มีการเปลี่ยนแปลง
  • 500 Internal Server Error — ไม่สามารถเตรียมเอกสารต้นฉบับได้ หรือการดำเนินการกับฐานข้อมูลล้มเหลว

รับข้อมูลงานแปล

เรียกดูความคืบหน้าล่าสุดของงานแปล

Endpoint: GET /translation-jobs/{job_id} การยืนยันตัวตน: Bearer JWT (WorkOS)

Response

การตอบกลับจะใช้วัตถุงานเดียวกับที่ส่งคืนโดย POST /translation พร้อมสถานะและจำนวนความคืบหน้าที่อัปเดตแล้ว

{
  "job_id": "<uuid>",
  "website_id": "<uuid>",
  "schema_name": null,
  "schema_names": ["post", "hero"],
  "languages": ["fr", "es"],
  "status": "running",
  "documents_processed": 12,
  "translations_scheduled": 24,
  "translations_skipped": 0,
  "translations_completed": 16,
  "translations_failed": 1,
  "reused": false,
  "created_at": "2026-07-15T18:00:00Z",
  "updated_at": "2026-07-15T18:01:30Z"
}

ตัวอย่าง

curl '{TRANSLATION_API_URL}/translation-jobs/<job-id>' \\
  -H 'Authorization: Bearer <workos-jwt>'

ข้อผิดพลาด

  • 401 Unauthorized — ไม่มีโทเค็น bearer หรือโทเค็นไม่ถูกต้อง
  • 404 Not Found — ไม่มีงานดังกล่าว หรือไม่มีการเก็บงานนั้นไว้อีกต่อไป

ขณะนี้งานแปลจะถูกเก็บไว้ในหน่วยความจำ สถานะงานจะสูญหายเมื่อบริการแปลเริ่มทำงานใหม่ และการปรับใช้แบบหลายอินสแตนซ์จำเป็นต้องใช้การกำหนดเส้นทางแบบ sticky

Continue Reading
Previous‹PATCH /dataset/{schema_name}NextPATCH /translations›