ข้ามไปยังเนื้อหา

เอกสารอ้างอิง NextPDF Connect API

หน้านี้เป็นเอกสารอ้างอิงระดับสัญลักษณ์สำหรับเซิร์ฟเวอร์ NextPDF Connect (nextpdf/server) โดยแสดงเครื่องมือแต่ละรายการตามชื่อที่ลงทะเบียนและคลาสที่นำไปใช้งาน พร้อมจัดทำเอกสารบริการ gRPC NextPDFConnect รวมถึงเมท็อด Remote Procedure Call (RPC) และข้อความคำขอและการตอบกลับ นอกจากนี้ยังกำหนดสัญญาด้านการยืนยันตัวตน ข้อผิดพลาด และขีดจำกัดอัตราที่ทรานสปอร์ตทุกตัวใช้ร่วมกัน

เซิร์ฟเวอร์เปิดเผยรีจิสทรีเครื่องมือชุดเดียวผ่านทรานสปอร์ตสามแบบ ได้แก่ Model Context Protocol (MCP) ผ่านอินพุตและเอาต์พุตมาตรฐาน, Representational State Transfer (REST) Application Programming Interface (API) และ gRPC ทรานสปอร์ตแต่ละแบบมีเอกสารรายละเอียดระดับไวร์แยกเป็นของตัวเอง ดู ทรานสปอร์ต MCP ทรานสปอร์ต REST และ ทรานสปอร์ต gRPC หน้านี้รวบรวมสัญลักษณ์ที่ทรานสปอร์ตเหล่านั้นรองรับ

ชื่อเครื่องมือ คลาส และระดับความเสี่ยงอ่านจากการนำเครื่องมือไปใช้งานใน src/Tools/ จำนวนเครื่องมือที่การดีพลอยเปิดเผยเป็นคุณสมบัติระดับรันไทม์ ดู แค็ตตาล็อกเครื่องมือ ส่วน การบูตและการค้นพบ อธิบายการแปลงระดับ

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

ทรานสปอร์ตจุดเข้าใช้งานรูปแบบไวร์การยืนยันตัวตน
MCPbin/nextpdf-mcpJavaScript Object Notation Remote Procedure Call (JSON-RPC) 2.0 ผ่าน stdioขอบเขตกระบวนการของระบบปฏิบัติการ (ไม่มี API key)
RESTbin/nextpdf-serverHTTP, OpenAPI 3.1Bearer API key ใน Authorization เฮดเดอร์
gRPCbin/nextpdf-grpcProtocol Buffers แพ็กเกจ nextpdf.connect.v1Bearer token ใน authorization เมทาดาทาของการเรียก

เมื่อใช้ MCP คุณเรียกเครื่องมือด้วย tools/call พร้อมชื่อเครื่องมือที่ลงทะเบียน เมื่อใช้ REST และ gRPC คุณเข้าถึงความสามารถของเอนจินชุดเดียวกันผ่านพื้นผิว render operation และ capability ดู ทรานสปอร์ต REST สำหรับตารางเส้นทาง และ ทรานสปอร์ต gRPC สำหรับตาราง RPC

ทรานสปอร์ต REST และ gRPC ต้องใช้ bearer API key สำหรับทุกคำขอ ยกเว้นการตรวจสอบสุขภาพที่ไม่ต้องยืนยันตัวตน คีย์อยู่ในรูปแบบ npk_live_{kid}_{secret} โดย kid เป็นตัวระบุยาวแปดอักขระสำหรับค้นหาเรกคอร์ด และส่วน secret เก็บค่าเอนโทรปี เซิร์ฟเวอร์จัดเก็บเฉพาะ SHA-256 digest ของคีย์ และเปรียบเทียบโทเค็นที่นำเสนอแบบเวลาคงที่ ดังนั้นคีย์ที่ไม่ถูกต้องจึงไม่รั่วไหลข้อมูลผ่านการจับเวลา REST อ่านโทเค็นจากเฮดเดอร์ Authorization: Bearer … ส่วน gRPC อ่านโทเค็นเดียวกันจากเมทาดาทาของการเรียก authorization ทรานสปอร์ต MCP stdio ไม่มี API key เนื่องจากเป็นกระบวนการย่อยในเครื่องที่ไคลเอนต์ผู้เรียกใช้งานเชื่อถือ ความปลอดภัยและการดำเนินงาน จัดทำเอกสารโมเดลการยืนยันตัวตนฉบับสมบูรณ์

เครื่องมือแต่ละตัวประกาศระดับความเสี่ยงหนึ่งรายการจากสี่ระดับที่จัดลำดับไว้ ซึ่งกำหนดโดย enum RiskLevel ใน src/Config/RiskLevel.php ของโค้ดเซิร์ฟเวอร์

ระดับกรณีของ enumค่าผลกระทบ
SafeRiskLevel::Safe0อ่านอย่างเดียว ไม่มีผลข้างเคียง ดำเนินการได้อัตโนมัติ
CautionRiskLevel::Caution1สร้างหรือแก้ไขสถานะในหน่วยความจำ ดำเนินการได้อัตโนมัติ บันทึกเพื่อการตรวจสอบ
ReviewRiskLevel::Review2สร้างเอาต์พุตที่อาจถูกนำไปใช้ในทางที่ผิด ดำเนินการได้อัตโนมัติ บันทึกเพื่อการตรวจสอบ
ApprovalRequiredRiskLevel::ApprovalRequired3ทำลายข้อมูล มีผลทางกฎหมาย หรือสำคัญต่อความเป็นส่วนตัว ต้องมีการยืนยันจากมนุษย์

ความเสี่ยงที่มีผลจริงของเครื่องมือมาจากสองแหล่งเท่านั้น ได้แก่ การประกาศ riskLevel() ของเครื่องมือเอง และการกำหนดค่าเสริมโดยผู้ดำเนินการ ซึ่งทำได้เพียงเพิ่มความเสี่ยงเท่านั้น ไม่สามารถลดความเสี่ยงของเครื่องมือ ApprovalRequired ได้ ดู ระดับความเสี่ยง HITL และ การกำหนดค่า ประกอบ

เมื่อคุณเรียกเครื่องมือ ApprovalRequired โดยไม่มีโทเค็นที่ถูกต้อง ConfirmationGate (src/Mcp/ConfirmationGate.php) จะคืนโทเค็นคำท้าทายแบบใช้ครั้งเดียวแทนการเรียกใช้เครื่องมือ เอเจนต์ส่งคำท้าทายต่อให้มนุษย์ จากนั้นเรียกเครื่องมือเดิมอีกครั้งพร้อมโทเค็นที่ออกให้ในอาร์กิวเมนต์ _confirmation_token โทเค็นผูกกับชื่อเครื่องมือ nonce แบบสุ่ม และเวลาคงอยู่ (TTL) 300 วินาที โทเค็นไม่ผูกกับอาร์กิวเมนต์ และไม่ใช่ข้อมูลรับรองสำหรับการยืนยันตัวตน เมื่อใช้ REST bearer API key ยังคงทำหน้าที่ยืนยันตัวตนของคำขอ และเกตเดียวกันจะทำงานในตัวดำเนินการเครื่องมือร่วมก่อนการดำเนินการที่ต้องผ่านเกต เมื่อใช้ gRPC เกตเดียวกันจะทำงานก่อนส่งต่อการดำเนินการ กลไกคำท้าทายและโทเค็นเหมือนกันในทุกทรานสปอร์ต

ตารางนี้จัดทำเอกสารเครื่องมือแต่ละรายการตามชื่อเครื่องมือที่ลงทะเบียน (คอลัมน์ Symbol) และคลาสที่นำไปใช้งาน เครื่องมือจัดกลุ่มตามระดับและหมวดหมู่ คลาส Abstract Syntax Tree (AST) และ mutation ทั้งหมดอยู่ภายใต้ src/Tools/Ast และ src/Tools/Ast/Mutation คลาส extraction อยู่ภายใต้ src/Tools/Extraction ส่วนคลาสที่เหลืออยู่ภายใต้ src/Tools/Core

สัญลักษณ์ (Symbol)พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
create_pdfpage_size (ค่าเริ่มต้น A4), orientation (portrait/landscape), title, author ไม่มีรายการใดจำเป็นสร้างเอกสารในหน่วยความจำที่มีหนึ่งหน้า ตั้งค่าเมทาดาทาเมื่อระบุไว้JSON พร้อม document_id, page_count, page_size, orientation ในผลลัพธ์คืนผลลัพธ์ข้อผิดพลาดพร้อมข้อความจากเอนจินเมื่อเกิดความล้มเหลวคลาส CreatePdfTool ความเสี่ยง RiskLevel::Caution ระดับ core document_id ที่คืนกลับมาจะถูกส่งต่อไปยังการดำเนินการถัดไปทุกครั้ง
add_pagedocument_id (จำเป็น) ขนาดหน้าและการวางแนวเป็นทางเลือกเพิ่มหนึ่งหน้าต่อท้ายเอกสารJSON พร้อมจำนวนหน้าใหม่ผลลัพธ์ข้อผิดพลาดเมื่อ document_id ไม่เป็นที่รู้จักคลาส AddPageTool ความเสี่ยง RiskLevel::Caution ระดับ core
add_textdocument_id (จำเป็น), text (จำเป็น) ตำแหน่งและสไตล์เป็นทางเลือกเพิ่มข้อความในเอกสารJSON สรุปสถานะของเอกสารผลลัพธ์ข้อผิดพลาดเมื่อ document_id ไม่เป็นที่รู้จักคลาส AddTextTool ความเสี่ยง RiskLevel::Caution ระดับ core
add_imagedocument_id (จำเป็น), source (จำเป็น: พาธไฟล์หรือ base64) การจัดวางเป็นทางเลือกเพิ่มรูปภาพจากพาธหรือข้อมูล base64JSON สรุปสถานะของเอกสารผลลัพธ์ข้อผิดพลาดเมื่อ source อ่านไม่ได้ หรือ document_id ไม่เป็นที่รู้จักคลาส AddImageTool ความเสี่ยง RiskLevel::Caution ระดับ core
add_tabledocument_id (จำเป็น), html (จำเป็น)เรนเดอร์ตาราง Hypertext Markup Language (HTML) ลงในเอกสารJSON สรุปสถานะของเอกสารผลลัพธ์ข้อผิดพลาดเมื่อมาร์กอัปไม่ถูกต้อง หรือ document_id ไม่เป็นที่รู้จักคลาส AddTableTool ความเสี่ยง RiskLevel::Caution ระดับ core
set_fontdocument_id (จำเป็น), family (จำเป็น) ขนาดและสไตล์เป็นทางเลือกตั้งค่าฟอนต์สำหรับการดำเนินการข้อความที่ตามมาJSON ยืนยันฟอนต์ที่ใช้งานอยู่ผลลัพธ์ข้อผิดพลาดเมื่อฟอนต์ไม่เป็นที่รู้จัก หรือ document_id ไม่เป็นที่รู้จักคลาส SetFontTool ความเสี่ยง RiskLevel::Caution ระดับ core
output_pdfdocument_id (จำเป็น), file_path (ทางเลือก), destroy (ค่าเริ่มต้น true)ทำเอกสารให้เสร็จสมบูรณ์ เขียนไปยัง file_path หรือคืนค่า base64 เมื่อไม่ได้ระบุ และทำลายเอกสารตามค่าเริ่มต้นJSON พร้อม file_path และ file_size หรือ base64 และ file_size ในผลลัพธ์ผลลัพธ์ข้อผิดพลาดเมื่อ document_id ไม่เป็นที่รู้จัก ความล้มเหลวด้านการจำกัดพาธเมื่อเขียนนอกไดเรกทอรีฐานคลาส OutputPdfTool ความเสี่ยง RiskLevel::ApprovalRequired ระดับ core การเขียนไฟล์ต้องผ่านเกตยืนยัน ส่วนโหมด base64 ไม่ผ่านเกต
preview_layoutdocument_id (จำเป็น)คืนสรุปเค้าโครงโดยไม่เรนเดอร์ PDF สุดท้ายJSON สรุปเค้าโครงผลลัพธ์ข้อผิดพลาดเมื่อ document_id ไม่เป็นที่รู้จักคลาส PreviewLayoutTool ความเสี่ยง RiskLevel::Safe ระดับ core
parse_pdfdocument_id (จำเป็น)ตรวจสอบเมทาดาทาเชิงโครงสร้าง ได้แก่ จำนวนหน้า ฟอนต์ รูปภาพ การเข้ารหัสลับ และ Info DictionaryJSON เมทาดาทาเชิงโครงสร้างผลลัพธ์ข้อผิดพลาดเมื่อเอกสารผิดรูปแบบคลาส ParsePdfTool ความเสี่ยง RiskLevel::Safe ระดับ core ลงทะเบียนเฉพาะเมื่อ NEXTPDF_MCP_TOOL_PARSE_PDF_ENABLED เป็น true หรือ 1 เท่านั้น
สัญลักษณ์ (Symbol)พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
diagnostic.doctorไม่มีเรียกใช้การตรวจสอบสุขภาพและคืนข้อมูลวินิจฉัยสภาพแวดล้อมแบบมีโครงสร้างJSON รายงานสภาพแวดล้อมผลลัพธ์ข้อผิดพลาดเมื่อการตรวจสอบภายในล้มเหลวคลาส DiagnosticDoctorTool ความเสี่ยง RiskLevel::Safe ระดับ core ไม่ต้องการเอกสารและไม่ต้องการการยืนยัน
diagnostic.capabilitiesไม่มีแสดงรายการความสามารถพร้อมข้อมูลระดับและสถานะJSON รายการความสามารถผลลัพธ์ข้อผิดพลาดเมื่อเกิดความล้มเหลวภายในคลาส DiagnosticCapabilitiesTool ความเสี่ยง RiskLevel::Safe ระดับ core
diagnostic.inspectdocument_id (จำเป็น)ตรวจสอบ PDF และคืนเมทาดาทาเชิงโครงสร้างJSON เมทาดาทาเชิงโครงสร้างผลลัพธ์ข้อผิดพลาดเมื่อ document_id ไม่เป็นที่รู้จักคลาส DiagnosticInspectTool ความเสี่ยง RiskLevel::Safe ระดับ core
diagnostic.verifydocument_id (จำเป็น) โปรไฟล์ PDF/A หรือ PDF/UA เป็นทางเลือกตรวจสอบความสมบูรณ์เชิงโครงสร้าง และตรวจสอบ PDF/A หรือ PDF/UA เป็นทางเลือกโดยสร้างกระบวนการย่อย VeraPDFJSON รายงานการตรวจสอบผลลัพธ์ข้อผิดพลาดเมื่อกระบวนการย่อยล้มเหลว หมดเวลา หรืออินพุตใหญ่เกินไปคลาส DiagnosticVerifyTool ความเสี่ยง RiskLevel::Caution ระดับ core อินพุตถูกจำกัดไว้ที่ 50 เมบิไบต์ (MiB)
สัญลักษณ์ (Symbol)พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
generate_barcodepayload (จำเป็น), format (ตัวอย่างเช่น QR Code, DataMatrix)สร้างเมทริกซ์โมดูลบาร์โค้ดสองมิติจาก payloadJSON เมทริกซ์โมดูลผลลัพธ์ข้อผิดพลาดเมื่อ format ไม่รองรับ หรือ payload ไม่ถูกต้องคลาส BarcodeTool ความเสี่ยง RiskLevel::Caution ระดับ core BarcodeTool ลงทะเบียนเฉพาะเมื่อรีจิสทรี encoder barcode ของ core มีอยู่ใน nextpdf/core ที่ติดตั้งไว้ ชื่อเครื่องมือที่ลงทะเบียนคือ generate_barcode

เครื่องมือเหล่านี้ห่อหุ้มคลาสความเป็นส่วนตัวของ Enterprise และลงทะเบียนภายใต้ระดับ Enterprise เฉพาะเมื่อคลาสเหล่านั้นออโตโหลดได้ เครื่องมือเหล่านี้ทำงานกับเนื้อหาแบบข้อความล้วน

สัญลักษณ์ (Symbol)พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
redact_pdfcontent (จำเป็น) ตัวเลือกการตรวจจับเป็นทางเลือกลบข้อมูลส่วนบุคคลที่ระบุตัวตนได้ (PII) จากเนื้อหาแบบข้อความล้วนแบบทำลายข้อมูล โดยใช้เอนจินการลบของ EnterpriseJSON พร้อมเนื้อหาที่ลบแล้วและแฮช SHA-256ผลลัพธ์ข้อผิดพลาดเมื่อไม่มีคลาส Enterprise หรือการตรวจจับล้มเหลวคลาส RedactPdfTool ความเสี่ยง RiskLevel::Review ระดับ enterprise
deidentify_pdfcontent (จำเป็น), strategy (redact หรือ suppress)ใช้กลยุทธ์การลบการระบุตัวตนอย่างเป็นระบบกับเนื้อหาแบบข้อความล้วนโดยใช้ตัวลบการระบุตัวตนของ EnterpriseJSON พร้อมเนื้อหาที่ลบการระบุตัวตนแล้วผลลัพธ์ข้อผิดพลาดเมื่อไม่มีคลาส Enterpriseคลาส DeIdentifyPdfTool ความเสี่ยง RiskLevel::Review ระดับ enterprise
zone_redact_pdfcontent (จำเป็น), zones (หน้าพร้อมรายการสี่เหลี่ยมผืนผ้าที่ปรับมาตรฐานแล้ว)ใช้การลบโซนตามพิกัดโดยใช้เอนจินการลบของ EnterpriseJSON พร้อมเนื้อหาที่ลบแล้วผลลัพธ์ข้อผิดพลาดเมื่อโซนไม่ถูกต้อง หรือไม่มีคลาส Enterpriseคลาส ZoneRedactionTool ความเสี่ยง RiskLevel::Review ระดับ enterprise

เครื่องมือเหล่านี้มาพร้อมกับเซิร์ฟเวอร์ ลงทะเบียนภายใต้ระดับ Pro และควบคุมด้วย NEXTPDF_AST_TOOLS_ENABLED (เปิดใช้งานตามค่าเริ่มต้น) เครื่องมือทุกตัวอ่านอย่างเดียว

สัญลักษณ์ (Symbol)พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
get_document_astpdf_data (จำเป็น)สร้าง AST เชิงความหมาย ซึ่งเป็นทรีโหนดเต็มพร้อมจุดยึดการอ้างอิงสำหรับองค์ประกอบเชิงโครงสร้างทุกรายการJSON ทรีโหนดพร้อม ETag สำหรับการควบคุมการทำงานพร้อมกันผลลัพธ์ข้อผิดพลาดเมื่อเอกสารผิดรูปแบบคลาส GetDocumentAstTool ความเสี่ยง RiskLevel::Safe ระดับ pro
get_ast_nodepdf_data (จำเป็น), node_id (จำเป็น)ดึงโหนด AST เดียวและโหนดลูกทั้งหมดJSON โหนดพร้อมโหนดลูกผลลัพธ์ข้อผิดพลาดเมื่อ node_id ไม่เป็นที่รู้จักคลาส GetAstNodeTool ความเสี่ยง RiskLevel::Safe ระดับ pro
get_ast_difforiginal_pdf_data (จำเป็น), modified_pdf_data (จำเป็น)เปรียบเทียบโครงสร้างของเอกสารสองฉบับโดยเทียบ AST เชิงความหมายJSON โหนดที่เพิ่ม ลบ และเปลี่ยนแปลงผลลัพธ์ข้อผิดพลาดเมื่อเอกสารอินพุตผิดรูปแบบคลาส GetAstDiffTool ความเสี่ยง RiskLevel::Safe ระดับ pro
search_ast_nodespdf_data (จำเป็น) ตัวกรองประเภท ดัชนีหน้า และข้อความเป็นทางเลือกค้นหาโหนด AST ตามประเภท ดัชนีหน้า หรือเนื้อหาข้อความJSON รายการแบบราบของโหนดที่ตรงกันพร้อมโหนดลูกระดับตื้นผลลัพธ์ข้อผิดพลาดเมื่อเอกสารผิดรูปแบบคลาส SearchAstNodesTool ความเสี่ยง RiskLevel::Safe ระดับ pro
extract_cited_textpdf_data (จำเป็น), headings_only เป็นทางเลือกดึงบล็อกข้อความพร้อมจุดยึดการอ้างอิง (หน้า กรอบขอบเขต ความเชื่อมั่น)JSON บล็อกข้อความที่อ้างอิงผลลัพธ์ข้อผิดพลาดเมื่อเอกสารผิดรูปแบบคลาส ExtractCitedTextTool ความเสี่ยง RiskLevel::Safe ระดับ pro หมวดหมู่ ast ของเครื่องมือ
extract_cited_tablespdf_data (จำเป็น)ดึงบล็อกตารางพร้อมจุดยึดการอ้างอิง คืนเมทริกซ์เซลล์ที่เรียงตามแถวต่อโหนด TableJSON เมทริกซ์ตารางพร้อมจุดยึดผลลัพธ์ข้อผิดพลาดเมื่อเอกสารผิดรูปแบบคลาส ExtractCitedTablesTool ความเสี่ยง RiskLevel::Safe ระดับ pro หมวดหมู่ extraction ของเครื่องมือ

เครื่องมือเหล่านี้มาพร้อมกับเซิร์ฟเวอร์ ลงทะเบียนภายใต้ระดับ Pro และควบคุมด้วย NEXTPDF_MUTATION_TOOLS_ENABLED (เปิดใช้งานตามค่าเริ่มต้น) เครื่องมือทั้งสี่รายการเป็น ApprovalRequired และใช้การควบคุมการทำงานพร้อมกันแบบ optimistic (OCC) ผ่าน ETag

สัญลักษณ์ (Symbol)พารามิเตอร์พฤติกรรมเริ่มต้นคืนค่าโยนหรือล้มเหลวด้วยหมายเหตุ
apply_ast_mutationspdf_data, etag, idempotency_key, mutations (จำเป็นทั้งหมด)ใช้ชุด mutation แบบ atomic แล้วเล่นซ้ำผลลัพธ์ที่แคชไว้สำหรับ idempotency_key ที่ซ้ำกันJSON พร้อม PDF ที่ผ่าน mutation และ ETag ใหม่ความขัดแย้ง OCC เมื่อ ETag ล้าสมัย ข้อผิดพลาดด้านการตรวจสอบเมื่อ mutation ผิดรูปแบบคลาส ApplyAstMutationsTool ความเสี่ยง RiskLevel::ApprovalRequired ระดับ pro
delete_ast_nodepdf_data, node_id, etag (จำเป็นทั้งหมด)ลบโหนดในโหมดโอเวอร์เลย์ (เนื้อหาต้นฉบับถูกปิดทับ ไม่ได้ถูกลบทางกายภาพ)JSON พร้อม PDF ที่ถูกแก้ไขและ ETag ใหม่ความขัดแย้ง OCC เมื่อ ETag ล้าสมัย ข้อผิดพลาดเมื่อ node_id ไม่เป็นที่รู้จักคลาส DeleteAstNodeTool ความเสี่ยง RiskLevel::ApprovalRequired ระดับ pro
insert_ast_nodepdf_data, parent_node_id, position, etag, node (จำเป็นทั้งหมด)แทรกโหนดใหม่เป็นโหนดลูกของโหนดแม่ที่ตำแหน่งที่ระบุJSON พร้อม PDF ที่ถูกแก้ไขและ ETag ใหม่ความขัดแย้ง OCC เมื่อ ETag ล้าสมัย ข้อผิดพลาดด้านการตรวจสอบเมื่อโหนดผิดรูปแบบคลาส InsertAstNodeTool ความเสี่ยง RiskLevel::ApprovalRequired ระดับ pro
update_ast_nodepdf_data, node_id, etag, updates (จำเป็นทั้งหมด)อัปเดตเนื้อหาข้อความของโหนดJSON พร้อม PDF ที่ถูกแก้ไขและ ETag ใหม่ความขัดแย้ง OCC เมื่อ ETag ล้าสมัย ข้อผิดพลาดเมื่อ node_id ไม่เป็นที่รู้จักคลาส UpdateAstNodeTool ความเสี่ยง RiskLevel::ApprovalRequired ระดับ pro

ทรานสปอร์ต gRPC กำหนดสคีมาแบบมีชนิดสำหรับเซิร์ฟเวอร์ในแพ็กเกจ Protocol Buffers nextpdf.connect.v1 ใน proto/nextpdf/connect/v1/*.proto บริการและข้อความของบริการเป็นสัญลักษณ์สคีมาอย่างเป็นทางการ

บริการ NextPDFConnect เปิดเผย RPC แบบ unary และ server-streaming สัญลักษณ์สคีมาคือชื่อเมท็อด RPC และข้อความคำขอและการตอบกลับที่เมท็อดเหล่านั้นรองรับ

RPCข้อความคำขอข้อความการตอบกลับรูปแบบ
RenderRenderRequestRenderResponseUnary เรนเดอร์แบบ stateless และซิงโครนัส
RenderStreamRenderRequestRenderChunk (stream)Server-streaming ส่งผลการเรนเดอร์เป็นชังก์ที่เรียงลำดับแล้ว
SubmitJobSubmitJobRequestJobResponseUnary ส่งงานเรนเดอร์แบบอะซิงโครนัส
GetJobStatusGetJobStatusRequestJobResponseUnary สำรวจสถานะของงาน
GetJobResultGetJobResultRequestRenderResponseUnary ดาวน์โหลดผลลัพธ์ที่เสร็จสมบูรณ์
GetJobResultStreamGetJobResultRequestRenderChunk (stream)Server-streaming ดาวน์โหลดผลลัพธ์ที่เสร็จสมบูรณ์เป็นชังก์
CancelJobCancelJobRequestJobResponseUnary ยกเลิกหรือลบงาน
CreateSessionCreateSessionRequestSessionResponseUnary สร้างเซสชันสำหรับการสร้างเอกสาร
GetSessionGetSessionRequestSessionResponseUnary รับเมทาดาทาของเซสชัน
DestroySessionDestroySessionRequestDestroySessionResponseUnary ทำลายเซสชันและเอกสารของเซสชัน
SessionOperationSessionOperationRequestSessionResponseUnary ดำเนินการกับเอกสารของเซสชัน
SessionRenderSessionRenderRequestRenderResponseUnary เรนเดอร์เอกสารของเซสชันเป็น PDF
SessionRenderStreamSessionRenderRequestRenderChunk (stream)Server-streaming เรนเดอร์เอกสารของเซสชันเป็นชังก์
ExecuteCapabilityCapabilityRequestCapabilityResponseUnary ดำเนินการความสามารถที่ควบคุมตามระดับ
GetCapabilitiesGetCapabilitiesRequestGetCapabilitiesResponseUnary แสดงรายการความสามารถสำหรับไคลเอนต์ที่ยืนยันตัวตนแล้ว
HealthCheckHealthCheckRequestHealthCheckResponseUnary การตรวจสอบสภาพการทำงาน
ReadinessCheckReadinessCheckRequestReadinessCheckResponseUnary การตรวจสอบความพร้อม

ข้อความคำขอและการตอบกลับเป็นสัญลักษณ์เชิงโครงสร้างของสคีมา ข้อความเรนเดอร์ ได้แก่ RenderRequest, RenderResponse และ RenderChunk แบบสตรีม รองรับขนาดหน้า การวางแนว การดำเนินการที่เรียงลำดับ และไบต์ PDF ผลลัพธ์ ข้อความงาน ได้แก่ SubmitJobRequest, GetJobStatusRequest, GetJobResultRequest, CancelJobRequest และ JobResponse ซึ่งจำลองวงจรชีวิตของงานแบบอะซิงโครนัส โดยเก็บเมทาดาทาของงานไว้ในข้อความ JobData ข้อความเซสชัน ได้แก่ CreateSessionRequest, SessionResponse, GetSessionRequest, DestroySessionRequest, DestroySessionResponse, SessionOperationRequest และ SessionRenderRequest ซึ่งจำลองวงจรชีวิตของเซสชันแบบ stateful โดยเก็บเมทาดาทาของเซสชันไว้ในข้อความ SessionData ข้อความความสามารถ ได้แก่ CapabilityRequest, CapabilityResponse, GetCapabilitiesRequest และ GetCapabilitiesResponse รองรับการส่งต่อและการสำรวจการดำเนินการที่ควบคุมตามระดับ ข้อความระบบ ได้แก่ HealthCheckRequest, HealthCheckResponse, ReadinessCheckRequest และ ReadinessCheckResponse รองรับสถานะ liveness และ readiness

ไฟล์ .proto ที่จัดส่งมาเป็นสัญญาระดับไวร์อย่างเป็นทางการ ดูเอกสารอ้างอิงของทรานสปอร์ต gRPC ได้ที่ ทรานสปอร์ต gRPC ประกอบ

เซิร์ฟเวอร์รายงานความล้มเหลวผ่านกลไกข้อผิดพลาดเนทีฟของแต่ละทรานสปอร์ต ทรานสปอร์ตแต่ละตัวคงเงื่อนไขเชิงตรรกะเดียวกันไว้ ต่างกันเฉพาะวิธีเข้ารหัส

ข้อผิดพลาด MCP เป็นอ็อบเจกต์ข้อผิดพลาด JSON-RPC 2.0 เมท็อดที่ไม่รู้จักจะคืน method-not-found (-32601) ข้อความที่ไม่ใช่ JSON-RPC ที่ถูกต้องจะคืน invalid-request (-32600) อินพุตที่แยกวิเคราะห์ไม่ได้จะคืน parse-error (-32700) เครื่องมือที่ล้มเหลวจะคืนการตอบกลับ JSON-RPC ที่สำเร็จ โดยเนื้อหาทำเครื่องหมายว่าเป็นข้อผิดพลาด แทนที่จะคืนข้อผิดพลาดระดับทรานสปอร์ต เพื่อให้เอเจนต์อ่านข้อความได้ คำท้าทายการยืนยันสำหรับเครื่องมือ ApprovalRequired ก็เป็นการตอบกลับที่สำเร็จเช่นกัน ไม่ใช่ข้อผิดพลาด

REST ใช้รหัสสถานะ Hypertext Transfer Protocol (HTTP) ตามความหมายที่ RFC 9110 กำหนด 200 ส่งผลลัพธ์ 400 ถูกคืนเมื่อฟิลด์คำขอไม่ผ่านการตรวจสอบรูปแบบ 401 ถูกคืนเมื่อไม่มี API key ที่ถูกต้องส่งมา พร้อมเฮดเดอร์คำท้าทาย WWW-Authenticate: Bearer 403 ถูกคืนเมื่อระดับของคีย์ที่ถูกต้องไม่มีสิทธิ์ในการดำเนินการ 404 ถูกคืนเมื่อเส้นทางที่ควบคุมตามระดับไม่ได้ลงทะเบียนเนื่องจากไม่มีแพ็กเกจของเส้นทางนั้น เนื้อหาข้อผิดพลาดที่เครื่องอ่านได้เป็นเอกสาร Problem Details ตาม RFC 9457 ให้บริการด้วยมีเดียไทป์ application/problem+json และ Uniform Resource Identifier (URI) type ที่คงที่สำหรับแต่ละเงื่อนไข ความล้มเหลวด้านการตรวจสอบระดับฟิลด์จะแสดงไว้ในเนื้อหา เพื่อเสริมการป้องกัน path traversal document_id ที่ไม่ตรงกับรูปแบบ doc_[a-f0-9]{24} จะถูกปฏิเสธด้วย 400 ก่อนที่เครื่องมือจะทำงาน ทรานสปอร์ต REST จัดทำเอกสารไปป์ไลน์มิดเดิลแวร์และตารางเส้นทางของ REST

gRPC ใช้รหัสสถานะ gRPC มาตรฐาน โทเค็นที่ขาดหาย ผิดรูปแบบ ไม่รู้จัก ถูกปิดใช้งาน หรือหมดอายุ จะทำให้การเรียกล้มเหลวด้วย UNAUTHENTICATED แทนที่จะเป็นสถานะ HTTP รายละเอียดข้อผิดพลาดแบบสมบูรณ์สะท้อนรูปแบบ Problem Details ของ REST และบรรจุไว้ในรายละเอียดสถานะ gRPC ดังนั้น URI type ของข้อผิดพลาดจึงสอดคล้องกันในทุกทรานสปอร์ต

ดูเพิ่มเติมที่ RFC 9110 (HTTP Semantics) สำหรับความหมายของรหัสสถานะ และ RFC 9457 (Problem Details for HTTP APIs) สำหรับรูปแบบเนื้อหาข้อผิดพลาด

ทรานสปอร์ต REST ใช้การจำกัดอัตราต่อที่อยู่ Internet Protocol (per-IP) และต่อไคลเอนต์ในไปป์ไลน์มิดเดิลแวร์ พร้อมขีดจำกัดขนาดเนื้อหา ขีดจำกัด payload ตามระดับ และเวลาหมดต่อคำขอ เพดานเหล่านี้เป็นค่าการกำหนดค่า ไม่ใช่ค่าคงที่ที่กำหนดตายตัวในโค้ด:

  • เพดาน payload ต่อระดับ (corePayloadLimit, proPayloadLimit, enterprisePayloadLimit) และเวลาหมดที่ตรงกันมีผลกับ REST ตามระดับของคีย์ที่ยืนยันตัวตนแล้ว ดู การกำหนดค่า ประกอบ
  • ที่เก็บเอกสารในหน่วยความจำถูกจำกัดด้วย max_documents (ค่าเริ่มต้น 50) และ document_ttl (ค่าเริ่มต้น 1800 วินาที)
  • สถานะการจำกัดอัตราและ idempotency เป็นแบบต่อ worker เว้นแต่จะกำหนดค่า NEXTPDF_REDIS_HOST สำหรับที่เก็บแบบใช้ร่วมกัน ดู การดีพลอย ประกอบ

เมื่อใช้ที่เก็บการจำกัดอัตราและ idempotency ร่วมกัน การส่งงานแบบอะซิงโครนัสที่เหมือนกันซ้ำจะถูกขจัดความซ้ำซ้อนด้วย idempotency_key ทรานสปอร์ต MCP จัดการคำขอทีละรายการผ่านไปป์ และขจัดความซ้ำซ้อนของ id ของคำขอที่ซ้ำกันจากบัฟเฟอร์ขนาด 64 รายการ แทนการใช้การจำกัดอัตราเครือข่าย

  • อ่านชื่อเครื่องมือ คลาส และระดับความเสี่ยงจากซอร์สภายใต้ src/Tools/ อย่าสมมติว่าจำนวนรวมเป็นค่าตายตัว สอบถามเซิร์ฟเวอร์ที่กำลังทำงานอยู่เพื่อรับจำนวนอย่างเป็นทางการ ตามที่แสดงใน แค็ตตาล็อกเครื่องมือ ประกอบ
  • สร้าง gRPC client stub ใหม่จากไฟล์ proto/nextpdf/connect/v1/*.proto ที่จัดส่งมา แพ็กเกจและเนมสเปซคือ nextpdf.connect.v1 อย่าแก้ไขคลาสข้อความที่สร้างขึ้นด้วยมือ
  • เครื่องมือ ApprovalRequired ตอบกลับด้วยคำท้าทายการยืนยันในการเรียกครั้งแรก สร้างเส้นทางลองใหม่ — ส่งคำท้าทายต่อ แล้วเรียกอีกครั้งด้วย _confirmation_token — ก่อนนำส่งการผสานรวมที่ขับเคลื่อน output_pdf หรือเครื่องมือ mutation ใดก็ตาม
  • เส้นทางหรือความสามารถที่ควบคุมตามระดับซึ่งไม่ได้ติดตั้งไว้ไม่ใช่ความล้มเหลวด้านการยืนยันตัวตน REST คืน 404 สำหรับเส้นทางที่ไม่มี และ gRPC ExecuteCapability รายงานว่าการดำเนินการนั้นไม่พร้อมใช้งาน ให้ถือว่าการไม่มีระดับ Pro หรือ Enterprise เป็นการทำงานที่คาดหวังได้ ไม่ใช่ความผิดพลาด
  • เก็บ API key ไว้นอกการควบคุมเวอร์ชันของซอร์ส โหลดคีย์จากไฟล์ลับ และเลือกใช้ที่เก็บคีย์แบบไฟล์ที่โหลดใหม่อัตโนมัติ เพื่อให้หมุนเวียนคีย์ได้โดยไม่ต้องรีสตาร์ต ดู ความปลอดภัยและการดำเนินงาน ประกอบ