Skip to content

جلب استخراج

GET /v1/extractions/{id}

استرجاع سجل استخراج واحد بواسطة المعرّف. تُستخدم نقطة النهاية هذه بشكل أساسي للاستعلام عن نتيجة استخراج غير متزامن.

جرّبه

اختبر هذا الـ endpoint بشكل تفاعلي في Swagger UI.

المصادقة مطلوبة

أدرج مفتاح API في ترويسة Authorization.

الطلب

الترويسات

الترويسةالقيمةمطلوب
AuthorizationBearer <token>نعم

معاملات المسار

المعاملالنوعمطلوبالوصف
idstringنعممعرّف الاستخراج المُرجع من نقطة النهاية تشغيل استخراج.

أمثلة الكود

bash
curl https://api.docmap.io/v1/extractions/extract_9k2m4n6p8q0r1s3t \
  -H "Authorization: Bearer dm_live_abc123def456ghi789jkl012mno345"
typescript
const apiKey = process.env.DOCMAP_API_KEY

const response = await fetch(
  'https://api.docmap.io/v1/extractions/extract_9k2m4n6p8q0r1s3t',
  { headers: { 'Authorization': `Bearer ${apiKey}` } },
)

const { data } = await response.json()
console.log(data.status, data.extractedData)
python
import requests

api_key = "dm_live_abc123def456ghi789jkl012mno345"

response = requests.get(
    "https://api.docmap.io/v1/extractions/extract_9k2m4n6p8q0r1s3t",
    headers={"Authorization": f"Bearer {api_key}"},
)

data = response.json()["data"]
print(data["status"], data["extractedData"])

الاستجابة

الحالة: 200 OK

جسم الاستجابة مغلف في كائن data يحتوي على سجل استخراج واحد.

الحقول

كل حقل مطابق لاستجابة تشغيل استخراج.

الحقلالنوعالوصف
idstringمعرّف الاستخراج الفريد.
userIdstringمعرّف المستخدم الذي يملك هذا الاستخراج.
templateIdstringمعرّف القالب المستخدم للاستخراج.
templateNamestringاسم العرض للقالب المستخدم.
fileNamestringاسم الملف الأصلي للمستند المرفوع.
status"processing" | "completed" | "failed"حالة الاستخراج الحالية.
extractedDataobject | nullالبيانات المستخرجة المطابقة لحقول القالب. null أثناء المعالجة أو إذا فشل.
errorstring | nullرسالة خطأ إذا فشل. null خلاف ذلك.
variablesVariable[]مصفوفة تعريفات متغيرات القالب المستخدمة أثناء الاستخراج.
source"dashboard" | "api"كيف تم تشغيل الاستخراج.
runIdstring | nullمعرّف التشغيل الدفعي، إذا تم توفيره.
processingTimeMsnumber | nullإجمالي مدة المعالجة بالمللي ثانية. null أثناء المعالجة.
createdAtstringطابع زمني ISO 8601 لوقت إنشاء الاستخراج.

مثال (مكتمل)

json
{
  "data": {
    "id": "extract_9k2m4n6p8q0r1s3t",
    "userId": "uid_a1b2c3d4e5f6",
    "templateId": "tmpl_8f3a2b1c4d5e6f7g",
    "templateName": "Invoice Template",
    "fileName": "invoice-2024-001.pdf",
    "status": "completed",
    "extractedData": {
      "vendor_name": "Acme Corp",
      "invoice_number": "INV-2024-001",
      "total_amount": 1250.00
    },
    "error": null,
    "variables": [
      {
        "name": "vendor_name",
        "type": "string",
        "description": "Name of the vendor or supplier"
      }
    ],
    "source": "api",
    "runId": null,
    "processingTimeMs": 3842,
    "createdAt": "2024-11-20T14:30:00.000Z"
  }
}

مثال (قيد المعالجة)

json
{
  "data": {
    "id": "extract_9k2m4n6p8q0r1s3t",
    "userId": "uid_a1b2c3d4e5f6",
    "templateId": "tmpl_8f3a2b1c4d5e6f7g",
    "templateName": "Invoice Template",
    "fileName": "invoice-2024-001.pdf",
    "status": "processing",
    "extractedData": null,
    "error": null,
    "variables": [
      {
        "name": "vendor_name",
        "type": "string",
        "description": "Name of the vendor or supplier"
      }
    ],
    "source": "api",
    "runId": null,
    "processingTimeMs": null,
    "createdAt": "2024-11-20T14:30:00.000Z"
  }
}

نمط الاستعلام المتكرر

عند استخدام عمليات الاستخراج غير المتزامنة، قم بالاستعلام عن نقطة النهاية هذه حتى لا تكون الحالة "processing":

typescript
async function pollExtraction(extractionId: string, apiKey: string) {
  const maxAttempts = 30
  const intervalMs = 2000

  for (let i = 0; i < maxAttempts; i++) {
    const response = await fetch(
      `https://api.docmap.io/v1/extractions/${extractionId}`,
      { headers: { 'Authorization': `Bearer ${apiKey}` } },
    )

    const { data } = await response.json()

    if (data.status !== 'processing') {
      return data
    }

    await new Promise((resolve) => setTimeout(resolve, intervalMs))
  }

  throw new Error('Extraction timed out')
}
python
import time
import requests

def poll_extraction(extraction_id: str, api_key: str):
    max_attempts = 30
    interval_s = 2

    for _ in range(max_attempts):
        response = requests.get(
            f"https://api.docmap.io/v1/extractions/{extraction_id}",
            headers={"Authorization": f"Bearer {api_key}"},
        )

        data = response.json()["data"]

        if data["status"] != "processing":
            return data

        time.sleep(interval_s)

    raise TimeoutError("Extraction timed out")

TIP

يُوصى بفاصل استعلام قدره ثانيتان. تكتمل معظم عمليات الاستخراج في غضون 5--30 ثانية.

الأخطاء

الحالةالرمزالوصف
401UNAUTHORIZEDمفتاح API / رمز مفقود أو غير صالح أو منتهي الصلاحية.
403FORBIDDENالاستخراج ينتمي إلى مستخدم آخر.
404NOT_FOUNDلا يوجد استخراج بالمعرّف المحدد.

وثائق DocMap API