NueForm

واجهة برمجة الإصدارات

عرض سجل النشر ولقطات إصدارات النماذج الخاصة بك.

تتيح لك واجهة برمجة الإصدارات عرض سجل نشر النموذج. في كل مرة تنشر فيها نموذجاً، يُنشئ NueForm لقطة مُرقَّمة تحتوي على كامل إعدادات النموذج وجميع الأسئلة في تلك اللحظة. تتضمن الإصدارات أيضاً سجل تغييرات يُلخّص ما تغيّر منذ آخر نشر.

تستخدم جميع هياكل الاستجابة أسماء حقول بتنسيق snake_case.

عرض إصدارات النموذج

GET/api/v1/forms/:id/versions

يُرجع جميع الإصدارات المنشورة لنموذج، مُرتَّبة حسب رقم الإصدار (الأحدث أولاً). يتضمن كل إصدار لقطة كاملة للنموذج وسجل تغييرات بما تم تعديله.

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

idstringمطلوب

معرّف النموذج

حقول الاستجابة

idstring

معرّف الإصدار الفريد

form_idstring

النموذج الذي ينتمي إليه هذا الإصدار

versioninteger

رقم الإصدار التسلسلي (1، 2، 3، ...)

published_bystring

معرّف المستخدم الذي نشر هذا الإصدار

published_by_namestring

الاسم المعروض للشخص الذي نشر

created_atstring

طابع زمني بتنسيق ISO 8601 لوقت نشر هذا الإصدار

changelogarray

قائمة التغييرات منذ الإصدار السابق

changelog[].typestring

نوع التغيير (انظر أنواع إدخالات سجل التغييرات أدناه)

changelog[].descriptionstring

وصف مقروء للتغيير

snapshotobject

حالة النموذج الكاملة وقت النشر (تشمل جميع حقول النموذج والأسئلة)

أنواع إدخالات سجل التغييرات

form_createdstring

تم إنشاء النموذج في البداية

publishedstring

حدث نشر (يتضمن رقم الإصدار)

question_addedstring

تمت إضافة سؤال جديد

question_updatedstring

تم تعديل سؤال موجود

question_deletedstring

تم حذف سؤال

question_reorderedstring

تم إعادة ترتيب الأسئلة

theme_changedstring

تم تعديل خاصية في القالب

settings_changedstring

تم تعديل إعداد في النموذج

title_changedstring

تم تغيير عنوان النموذج

description_changedstring

تم تغيير وصف النموذج

الاستجابة

json
{
  "versions": [
    {
      "id": "66c3d4e5f6a7b8c9d0e1f2a3",
      "form_id": "665a1b2c3d4e5f6a7b8c9d0e",
      "version": 3,
      "published_by": "665a0a1b2c3d4e5f6a7b8c9d",
      "published_by_name": "Alice Johnson",
      "created_at": "2026-02-28T14:00:00.000Z",
      "changelog": [
        {
          "type": "question_updated",
          "description": "Updated question: \"How did you hear about us?\""
        },
        {
          "type": "question_added",
          "description": "Added question: \"Would you recommend us to a friend?\""
        },
        {
          "type": "theme_changed",
          "description": "Changed theme color from #6366f1 to #2563eb"
        }
      ],
      "snapshot": {
        "title": "Customer Feedback Survey",
        "description": "Help us improve our product",
        "theme_color": "#2563eb",
        "background_color": "#ffffff",
        "show_progress_bar": true,
        "questions": [
          {
            "id": "66a1b2c3d4e5f6a7b8c9d001",
            "type": "short_text",
            "title": "What is your name?",
            "required": true,
            "order": 0,
            "properties": {}
          },
          {
            "id": "66a1b2c3d4e5f6a7b8c9d002",
            "type": "multiple_choice",
            "title": "How did you hear about us?",
            "required": true,
            "order": 1,
            "properties": {
              "choices": [
                { "label": "Search engine" },
                { "label": "Social media" },
                { "label": "Friend or colleague" },
                { "label": "Other" }
              ]
            }
          },
          {
            "id": "66a1b2c3d4e5f6a7b8c9d004",
            "type": "yes_no",
            "title": "Would you recommend us to a friend?",
            "required": false,
            "order": 2,
            "properties": {}
          }
        ]
      }
    },
    {
      "id": "66c2d3e4f5a6b7c8d9e0f1a2",
      "form_id": "665a1b2c3d4e5f6a7b8c9d0e",
      "version": 2,
      "published_by": "665a0a1b2c3d4e5f6a7b8c9d",
      "published_by_name": "Alice Johnson",
      "created_at": "2026-02-15T10:30:00.000Z",
      "changelog": [
        {
          "type": "question_added",
          "description": "Added question: \"How did you hear about us?\""
        }
      ],
      "snapshot": { ... }
    },
    {
      "id": "66c1d2e3f4a5b6c7d8e9f0a1",
      "form_id": "665a1b2c3d4e5f6a7b8c9d0e",
      "version": 1,
      "published_by": "665a0a1b2c3d4e5f6a7b8c9d",
      "published_by_name": "Alice Johnson",
      "created_at": "2026-01-15T10:30:00.000Z",
      "changelog": [
        {
          "type": "form_created",
          "description": "Created form"
        }
      ],
      "snapshot": { ... }
    }
  ]
}

أمثلة على الكود

bash
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/versions" \
  -H "Authorization: Bearer YOUR_API_KEY"

كيف يعمل نظام الإصدارات

  1. التحرير -- قم بإجراء تغييرات على نموذجك (إضافة أسئلة، تحديث القالب، تعديل الإعدادات). يتم تعيين علامة has_unpublished_changes للنموذج إلى true.
  2. النشر -- استدعِ POST /api/v1/forms/:id/publish لإنشاء إصدار جديد. يأخذ NueForm لقطة من حالة النموذج الحالية ويسجّل التغييرات ويزيد رقم الإصدار.
  3. النموذج المباشر -- يرى المستجيبون دائماً آخر إصدار منشور. يشير published_version_id في النموذج إلى الإصدار النشط.
  4. إلغاء النشر -- استدعِ DELETE /api/v1/forms/:id/publish لإيقاف النموذج عن العمل. يتم الاحتفاظ بسجل الإصدارات.

قد تختلف حالة النموذج الحالية (القابلة للتحرير عبر واجهة برمجة النماذج) عن آخر إصدار منشور إذا تم إجراء تعديلات بعد آخر نشر.


استجابات الأخطاء

استجابات الأخطاء القياسية التي تُرجعها نقطة النهاية هذه.

رموز الأخطاء

401Unauthorized

مفتاح API مفقود أو غير صالح

403Forbidden

صلاحيات غير كافية لنماذج الفريق

404Not Found

النموذج غير موجود

500Server Error

خطأ داخلي في الخادم

مثال على خطأ

json
{
  "error": "Form not found"
}
آخر تحديث: 6 أبريل 2026