انتقل إلى المحتوى

المُخرَجات والفهرس ​

المُخرَجات المنشورة: السرد، والتفاصيل، والمحتوى، والتعليقات التوضيحية، والارتباطات، والبحث، وتدقيق الفهرس وموجز تغييراته.

عمليات هذه المجموعة مع قاعدة الوصول وقاعدة إعادة المحاولة والمعلمات والاستجابات. يحمل كل طلب مفتاحًا: Authorization: Bearer <key> (راجع «المصادقة»).

العمليات ​

الحصول على التعليقات التوضيحية لمُخرَج ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/annotations

الوصول: إذن المستودع: annotation.read; مفاتيح الملفات: read · إعادة المحاولة: آمن للتكرار (قراءة)

يعيد التسميات وبيانات التعريف والتجميعات الحالية لمُخرَج منشور مع revision الخاصة بها. المراجعة 0 تعني أنها لم تُستبدل قط: فالتسميات وبيانات التعريف هي ما أُعطي عند إنشاء عملية الرفع، والتجميعات فارغة. مرّر المراجعة إلى setAnnotations بوصفها expectedRevision.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

الاستجابة 200

الحقلالنوعمطلوبالقواعد
revisionintegerنعم0–2147483647
labelsمصفوفة من stringنعمعدد العناصر: 32 كحد أقصى
metadataقاموس من stringنعمعدد الإدخالات: 32 كحد أقصى
collectionsمصفوفة من stringنعمعدد العناصر: 32 كحد أقصى

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/annotations" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

استبدال التعليقات التوضيحية لمُخرَج ​

PUT /api/v1/repositories/{repository}/artifacts/{id}/annotations

الوصول: إذن المستودع: annotation.write, artifact.read; مفاتيح الملفات: read, write · إعادة المحاولة: لا تكرّره إلا مع المراجعة المتوقعة (compare-and-swap)

يستبدل labels وmetadata وcollections لمُخرَج منشور دفعة واحدة؛ والحقل المحذوف من value يصبح فارغًا. يجب أن تكون expectedRevision هي المراجعة الحالية (0 لأول تغيير)، وإلا كانت النتيجة 409 revision_mismatch: اقرأ التعليقات التوضيحية من جديد وأعد تطبيق التغيير. يُسمح بما يصل إلى 32 تسمية و32 تجميعة (من 1 إلى 64 حرفًا من الأحرف والأرقام أو _.:-) و32 مدخلًا من بيانات التعريف (قيمها حتى 1024 حرفًا)؛ أما البايتات والواصف الأصلي فلا يتغيّران أبدًا.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
expectedRevisionintegerنعم0–2147483646
valueobjectنعم—
value.labelsمصفوفة من stringلاعدد العناصر: 32 كحد أقصى
value.metadataقاموس من stringلاعدد الإدخالات: 32 كحد أقصى
value.collectionsمصفوفة من stringلاعدد العناصر: 32 كحد أقصى

الاستجابة 200

الحقلالنوعمطلوبالقواعد
revisionintegerنعم0–2147483647
labelsمصفوفة من stringنعمعدد العناصر: 32 كحد أقصى
metadataقاموس من stringنعمعدد الإدخالات: 32 كحد أقصى
collectionsمصفوفة من stringنعمعدد العناصر: 32 كحد أقصى

الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/annotations" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedRevision":0,"value":{}}'

تسجيل مُخرَج بوصفه حزمة UPack ​

POST /api/v1/repositories/{repository}/artifacts/{id}/package

الوصول: إذن المستودع: package.publish, artifact.read; مفاتيح الملفات: read, write · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يفتح المُخرَج المنشور بوصفه ملف ZIP من نوع UPack، ويقرأ upack.json في الجذر (name، وgroup الاختياري، وversion بصيغة SemVer)، ويسجّل إصدار الحزمة هذا له؛ وتُرفض الأرشيفات غير الآمنة أو غير الصالحة بالخطأ 400. الإصدار غير قابل للتغيير: تسجيل المُخرَج نفسه مرة أخرى يعيد المدخل نفسه، أما مُخرَج آخر لمجموعة واسم وإصدار موجودة (تُقارَن دون مراعاة حالة الأحرف) فهو 409 version_exists. بعد ذلك يظهر الإصدار في listPackages ويمكن تحديده بالاسم والنطاق والمرحلة.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

الاستجابة 200

الحقلالنوعمطلوبالقواعد
groupstringلا—
namestringلا—
versionstringلا—
artifactIdstring (uuid)لا—
manifestobjectلا—

الاستجابات: 200, 400, 401, 403, 404, 405, 409, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/package" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

البحث في المُخرَجات ​

GET HEAD /api/v1/repositories/{repository}/search

الوصول: إذن المستودع: artifact.list; مفاتيح الملفات: read · إعادة المحاولة: آمن للتكرار (قراءة)

يعثر على المُخرَجات المنشورة حسب q (سلسلة جزئية من الاسم أو من قيمة بيانات تعريف حالية، دون مراعاة حالة الأحرف)، وlabel حالية مطابقة تمامًا، وcollection، وزوج metadataKey/metadataValue مطابق تمامًا ويُستخدمان معًا؛ ويجب أن تتطابق كل المرشحات المعطاة. تأتي النتائج في صفحات من 100 مرتبةً حسب المعرّف، لكل منها الحجم وأوقات الإنشاء والنشر والتسميات الحالية ومراحل الترقية؛ وللمتابعة اضبط after على قيمة next. لا تُعاد بيانات التعريف ولا التجميعات: اقرأها عبر getAnnotations.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
qالاستعلامstringلا—
labelالاستعلامstringلا—
collectionالاستعلامstringلا—
afterالاستعلامstringلا—
metadataKeyالاستعلامstringلايطابق النمط ^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$; عدد الأحرف: 64 كحد أقصى; Exact metadata key; requires metadataValue.
metadataValueالاستعلامstringلاعدد الأحرف: 1024 كحد أقصى; Exact case-sensitive value; requires metadataKey. Empty string is allowed.

الاستجابة 200

الحقلالنوعمطلوبالقواعد
itemsمصفوفة من objectنعمعدد العناصر: 100 كحد أقصى
items[].idstring (uuid)نعم—
items[].namestringنعم—
items[].sizestringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; الحجم بالبايت، سلسلة نصية عشرية
items[].createdAtstring (date-time)نعموقت حجز الرفع
items[].publishedAtstring (date-time)نعميمكن أن يكون null; وقت النشر؛ null فقط عند عدم تسجيل أي وقت
items[].labelsمصفوفة من stringنعمعدد العناصر: 32 كحد أقصى; التسميات الحالية: من التعليقات التوضيحية إذا استُبدلت، وإلا فمن واصف الرفع
items[].stagesمصفوفة من stringنعمعدد العناصر: 16 كحد أقصى; كل عنصر: يطابق النمط ^[a-z0-9][a-z0-9_.-]{0,31}$; مراحل الترقية الحالية بترتيب البايتات
nextstring (uuid)نعميمكن أن يكون null; آخر معرّف في صفحة ممتلئة؛ مرّره بوصفه after

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/search" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

قراءة تدقيق الفهرس لمستودع ​

GET HEAD /api/v1/repositories/{repository}/audit

الوصول: إذن المستودع: audit.read; مفاتيح الملفات: write · إعادة المحاولة: آمن للتكرار (قراءة)

يعيد، بدءًا من الأقدم، ما يصل إلى 100 تغيير في فهرس المستودع بعد الرقم التسلسلي after (الافتراضي 0): عمليات النشر والحذف، وتغييرات التعليقات التوضيحية والمرفقات، وتسجيلات الحزم، وتغييرات مسارات الملفات، والمراجع، والمراحل والترقيات، لكل منها الفاعل والإجراء والمُخرَج والوقت. وللمتابعة مرّر آخر sequence في الصفحة بوصفه after؛ ولا يوجد حقل next. لا تظهر فيه عمليات التنزيل ولا تسجيلات الدخول؛ أما المرايا فتتابع listCatalogChanges الذي يُسقط الفاعلين.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
afterالاستعلامstringلا—

الاستجابة 200

الحقلالنوعمطلوبالقواعد
itemsمصفوفة من objectلا—
items[].sequencestringلا—
items[].actorstringلا—
items[].actionstringلا—
items[].artifactIdstringلا—
items[].occurredAtstring (date-time)لا—

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/audit" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

إضافة مرجع إلى مُخرَج ​

POST /api/v1/repositories/{repository}/artifacts/{id}/references

الوصول: إذن المستودع: reference.write, artifact.read; مفاتيح الملفات: read, write · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يسجّل أن جهة خارج Arkvory تستخدم هذا المُخرَج، تحت key تختاره بنفسك (من 1 إلى 256 حرفًا من الأحرف والأرقام أو _.:/-)، مثل اسم نشر (deployment). لا يمكن حذف المُخرَج المُشار إليه ولا إزالته بقواعد الاحتفاظ إلى أن تزول كل المراجع. والمرجع يخص المستدعي؛ وإضافة المفتاح نفسه مرة أخرى لا تغيّر شيئًا.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
keystringنعمعدد الأحرف: 256 كحد أقصى

الاستجابات: 204, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/references" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key":"<key>"}'

إزالة مرجع من مُخرَج ​

DELETE /api/v1/repositories/{repository}/artifacts/{id}/references

الوصول: إذن المستودع: reference.write, artifact.read; مفاتيح الملفات: read, write · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يزيل مرجع المستدعي نفسه key من المُخرَج؛ وتبقى مراجع المستدعين الآخرين. وإزالة مفتاح غير موجود تنجح هي الأخرى.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
keystringنعمعدد الأحرف: 256 كحد أقصى

الاستجابات: 204, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X DELETE "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/references" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key":"<key>"}'

عرض قائمة المُخرَجات ​

GET HEAD /api/v1/repositories/{repository}/artifacts

الوصول: إذن المستودع: artifact.list; مفاتيح الملفات: read · إعادة المحاولة: آمن للتكرار (قراءة)

يسرد المُخرَجات المنشورة في المستودع مرتبةً حسب المعرّف، بمعدل limit في الصفحة (من 1 إلى 100، والافتراضي 50)؛ وللمتابعة اضبط after على قيمة next. تُضبط next كلما امتلأت الصفحة، لذا قد تكون الصفحة الأخيرة فارغة. يحمل كل عنصر الواصف المُعطى عند الرفع؛ أما التسميات وبيانات التعريف الحالية ففي getAnnotations.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
afterالاستعلامstring (uuid)لا—
limitالاستعلامintegerلا1–100; القيمة الافتراضية 50

الاستجابة 200

الحقلالنوعمطلوبالقواعد
itemsمصفوفة من objectلا—
items[].idstring (uuid)نعم—
items[].repositorystringنعم—
items[].statusstringنعمإحدى القيم: pending, available, cancelled
items[].createdAtstring (date-time)نعم—
items[].expiresAtstring (date-time)نعم—
items[].descriptorobjectنعم—
items[].descriptor.namestringنعمعدد الأحرف: 1–240
items[].descriptor.sizestringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية
items[].descriptor.sha256stringنعمSHA-256: 64 رقمًا ست عشريًا بأحرف صغيرة
items[].descriptor.labelsمصفوفة من stringلاعدد العناصر: 32 كحد أقصى; كل عنصر: عدد الأحرف: 64 كحد أقصى
items[].descriptor.metadataقاموس من stringلاعدد الإدخالات: 32 كحد أقصى
nextstringلايمكن أن يكون null

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

الحصول على مُخرَج ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}

الوصول: إذن المستودع: artifact.read; مفاتيح الملفات: read · إعادة المحاولة: آمن للتكرار (قراءة)

يعيد مُخرَجًا منشورًا: معرّفه ومستودعه وحالته ووقت إنشائه والواصف المُعطى عند الرفع (الاسم والحجم وSHA-256 والتسميات وبيانات التعريف الأصلية). المُخرَجات المعلّقة والملغاة والمحذوفة تردّ بـ 404. لقراءة البايتات استخدم downloadArtifact.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

الاستجابة 200

الحقلالنوعمطلوبالقواعد
idstring (uuid)نعم—
repositorystringنعم—
statusstringنعمإحدى القيم: pending, available, cancelled
createdAtstring (date-time)نعم—
expiresAtstring (date-time)نعم—
descriptorobjectنعم—
descriptor.namestringنعمعدد الأحرف: 1–240
descriptor.sizestringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية
descriptor.sha256stringنعمSHA-256: 64 رقمًا ست عشريًا بأحرف صغيرة
descriptor.labelsمصفوفة من stringلاعدد العناصر: 32 كحد أقصى; كل عنصر: عدد الأحرف: 64 كحد أقصى
descriptor.metadataقاموس من stringلاعدد الإدخالات: 32 كحد أقصى

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

حذف مُخرَج ​

DELETE /api/v1/repositories/{repository}/artifacts/{id}

الوصول: إذن المستودع: artifact.delete · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يحذف مُخرَجًا منشورًا حذفًا منطقيًا: يختفي فورًا من القوائم وعمليات البحث والتنزيلات، وتُستعاد بايتاته بالتنظيف الفعلي أثناء التشغيل في المستودع (setCleanup، وهو معطّل افتراضيًا) بعد انقضاء فترة السماح. يجب أن تساوي expectedAnnotationRevision مراجعة التعليقات التوضيحية الحالية. الردّ 200 مع outcome: deleted أو already_deleted أو changed (اختلفت المراجعة) أو not_found أو protected مع blockers التي تمنع حذفه (مرجع، أو مراجعة لمسار ملف، أو مرفق نسخة بناء، أو مرحلة ترقية). افحص ذلك مسبقًا بـ inspectArtifactDeletion.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
expectedAnnotationRevisionintegerنعم0–2147483647

الاستجابة 200

الحقلالنوعمطلوبالقواعد
idstring (uuid)نعم—
outcomestringنعمإحدى القيم: deleted, already_deleted, protected, changed, not_eligible, not_found
blockersمصفوفة من stringنعمعدد العناصر: 4 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: إحدى القيم: reference, asset_history, attachment_history, protected_label, promotion_stage

الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X DELETE "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedAnnotationRevision":0}'

تنزيل مُخرَج ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/content

الوصول: إذن المستودع: content.read; مفاتيح الملفات: read · إعادة المحاولة: آمن للتكرار (قراءة)

يبثّ البايتات الأصلية مع Content-Length وContent-Disposition (اسم المُخرَج) وETag قوي ("sha256:<hex>"). يعطي Range واحد النتيجة 206 (ونطاق لا يمكن تلبيته يعطي 416)؛ ويستأنف If-Range مع ETag التنزيل بأمان، ويردّ If-None-Match بـ 304. ويعيد HEAD الترويسات نفسها دون متن ويتجاهل Range. وبدلًا من ترويسة Authorization يجوز أن يحمل الطلب رابط تنزيل من createDownloadLink بوصفه token؛ وتنتظر التنزيلات خانة شاغرة في قبول التنزيلات بالخادم.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—
Rangeالترويسةstringلا—
If-Rangeالترويسةstringلا—
If-None-Matchالترويسةstringلا—
Arkvory-Download-Idالترويسةstringلايطابق النمط ^[A-Za-z0-9_-]{16,64}$; The client own id of one download, the same on every range of it: the queue keys the session by it instead of the client address, answers a waiting request at once with 503 download_queued, and may ask it to yield its place at a range boundary. Without it, a waiting request is held until its turn for a bounded time.
Arkvory-Queue-Ticketالترويسةstringلاعدد الأحرف: 80 كحد أقصى; The last Arkvory-Queue-Ticket the server sent for this download: after a server restart the download takes its old turn. A ticket that is wrong, expired or of another download is ignored.
Arkvory-Download-Classالترويسةstringلاإحدى القيم: interactive, release, bulk, background; Queue class of the download. Only a class lower than the caller own one applies (people: interactive, services and links: release); an unknown value is 400. The response names the class applied.
tokenالاستعلامstringلايطابق النمط ^dtl_[A-Za-z0-9_-]{43}$; Download link from POST …/artifacts/{id}/links, instead of an Authorization header

الاستجابات: 200, 206, 304, 400, 401, 403, 404, 409, 416, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/content" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -o file

قراءة نظرة عامة على المواقع ​

GET HEAD /api/v1/fleet/overview

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار (قراءة)

تنبيهات المواقع المُدارة وهذا التثبيت، الأشد أولًا (critical وwarning وinfo)، وروابط المرايا بينها. تُبنى من آخر القراءات في الخلفية، مرة كل 5 ثوانٍ على الأكثر. المصدر الذي لا يجيب على عنوانه أي موقع مُدار هو external:<origin>؛ وهذا التثبيت هو self ولا تظهر الروابط إليه إلا عند ضبط ARKVORY_SITE_URL. تجيب عملية الكتابة فقط.

الاستجابة 200

الحقلالنوعمطلوبالقواعد
generatedAtstring (date-time)نعم—
selfobjectنعم—
self.namestringنعم—
self.versionstringنعم—
self.urlstringنعميمكن أن يكون null
alertsمصفوفة من objectنعم—
alerts[].sitestringنعم—
alerts[].namestringنعم—
alerts[].kindstringنعمإحدى القيم: unreachable, certificate, revoked, refused, invalid, stale, not-writable, copies, single-copy, mirror-failing, mirror-lag, updates-failed, version-skew
alerts[].severitystringنعمإحدى القيم: critical, warning, info
alerts[].subjectstringنعميمكن أن يكون null
alerts[].sincestring (date-time)نعميمكن أن يكون null
linksمصفوفة من objectنعم—
links[].fromstringنعم—
links[].tostringنعم—
links[].repositorystringنعم—
links[].sourceRepositorystringنعم—
links[].modestringنعمإحدى القيم: mirror, import
links[].lagChangesstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null
links[].failingbooleanنعم—
links[].stalebooleanلا—
externalمصفوفة من stringنعم—

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/fleet/overview" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

سرد المواقع المُدارة ​

GET HEAD /api/v1/fleet/sites

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار (قراءة)

يسرد المواقع التي يديرها هذا التثبيت (ADR 0077) وآخر ما أبلغ عنه كل منها: state (ok أو سبب تعذّر القراءة: unreachable أو certificate أو revoked أو invalid أو refused) ووقت آخر ظهور وآخر topology. تُقرأ المواقع كل 30 ثانية في الخلفية. لا يُعاد مفتاح الموقع أبدًا.

الاستجابة 200

الحقلالنوعمطلوبالقواعد
itemsمصفوفة من objectنعمعدد العناصر: 256 كحد أقصى
items[].idstring (uuid)نعم—
items[].namestringنعم—
items[].urlstringنعم—
items[].fingerprintstringنعميطابق النمط ^[0-9a-f]{64}$; يمكن أن يكون null
items[].addedBystringنعم—
items[].addedAtstring (date-time)نعم—
items[].seenAtstring (date-time)نعميمكن أن يكون null
items[].statestringنعمإحدى القيم: pending, ok, unreachable, certificate, revoked, invalid, refused
items[].errorstringنعميمكن أن يكون null
items[].topologyobjectنعميمكن أن يكون null
items[].topology.collectedAtstring (date-time)نعم—
items[].topology.siteobjectنعم—
items[].topology.healthobjectنعم—
items[].topology.replicationobjectنعميمكن أن يكون null
items[].topology.gatewaysمصفوفة من objectنعمعدد العناصر: 16 كحد أقصى
items[].topology.mirrorsمصفوفة من objectنعمعدد العناصر: 64 كحد أقصى
items[].topology.updatesobjectنعميمكن أن يكون null
items[].topology.downloadsobjectنعم—

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/fleet/sites" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

الاقتران بموقع ​

POST /api/v1/fleet/sites

الوصول: مسؤول · إعادة المحاولة: لا تكرّره تلقائيًا

يقترن بموقع: تتصل وحدة التحكم من جديد، ويجب أن تبقى للشهادة fingerprint التي أكدها المسؤول (null لـ HTTP على loopback)، ويُستبدل code الاقتران المُنشأ على الموقع بمفتاح يُختم بـ ARKVORY_FLEET_KEY_FILE. يُقرأ الموقع مرة واحدة قبل الرد. بدون ملف المفتاح يكون الرد 503.

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
urlstringنعم—
fingerprintstringنعميطابق النمط ^[0-9a-f]{64}$; يمكن أن يكون null
codestringنعمعدد الأحرف: 32 كحد أقصى

الاستجابة 201

الحقلالنوعمطلوبالقواعد
idstring (uuid)نعم—
namestringنعم—
urlstringنعم—
fingerprintstringنعميطابق النمط ^[0-9a-f]{64}$; يمكن أن يكون null
addedBystringنعم—
addedAtstring (date-time)نعم—
seenAtstring (date-time)نعميمكن أن يكون null
statestringنعمإحدى القيم: pending, ok, unreachable, certificate, revoked, invalid, refused
errorstringنعميمكن أن يكون null
topologyobjectنعميمكن أن يكون null
topology.collectedAtstring (date-time)نعم—
topology.siteobjectنعم—
topology.site.namestringنعم—
topology.site.versionstringنعم—
topology.site.schemaintegerنعم0 على الأقل
topology.site.rolestringنعمإحدى القيم: api, reader
topology.healthobjectنعم—
topology.health.availablebooleanنعم—
topology.health.writablebooleanنعم—
topology.health.drainingbooleanنعم—
topology.replicationobjectنعميمكن أن يكون null
topology.replication.copiesintegerنعم0–16
topology.replication.requiredintegerنعم1–16
topology.replication.singleCopyUntilstring (date-time)نعميمكن أن يكون null
topology.replication.nodestringلاعدد الأحرف: 63 كحد أقصى
topology.replication.profilestringلاإحدى القيم: ha-2, ha-3
topology.replication.peersمصفوفة من objectلاعدد العناصر: 16 كحد أقصى
topology.gatewaysمصفوفة من objectنعمعدد العناصر: 16 كحد أقصى
topology.gateways[].slotintegerنعم0 على الأقل
topology.gateways[].activebooleanنعم—
topology.gateways[].expiresAtstring (date-time)نعم—
topology.mirrorsمصفوفة من objectنعمعدد العناصر: 64 كحد أقصى
topology.mirrors[].repositorystringنعم—
topology.mirrors[].modestringنعمإحدى القيم: mirror, import
topology.mirrors[].upstreamstringنعم—
topology.mirrors[].sourceRepositorystringنعم—
topology.mirrors[].phasestringنعم—
topology.mirrors[].errorCodestringنعميمكن أن يكون null
topology.mirrors[].checkedAtstring (date-time)نعميمكن أن يكون null
topology.mirrors[].syncedAtstring (date-time)نعميمكن أن يكون null
topology.mirrors[].lagChangesstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null
topology.mirrors[].copiedArtifactsintegerنعم0 على الأقل
topology.mirrors[].copiedBytesstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية
topology.updatesobjectنعميمكن أن يكون null
topology.updates.currentVersionstringنعم—
topology.updates.lateststringنعميمكن أن يكون null
topology.updates.phasestringنعم—
topology.updates.errorstringنعميمكن أن يكون null
topology.updates.automaticbooleanنعم—
topology.updates.heartbeatAtstring (date-time)نعم—
topology.downloadsobjectنعم—
topology.downloads.strategystringنعمإحدى القيم: ordered, smallest-first, shared
topology.downloads.sessionsintegerنعم0 على الأقل
topology.downloads.activeintegerنعم0 على الأقل
topology.downloads.waitingintegerنعم0 على الأقل
topology.downloads.oldestWaitSecondsintegerنعم0 على الأقل
topology.downloads.bytesPerSecondintegerنعم0 على الأقل

الاستجابات: 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"<url>","fingerprint":"<fingerprint>","code":"<code>"}'

قراءة شهادة موقع ​

POST /api/v1/fleet/sites/probe

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يتصل بالعنوان ويقرأ شهادة الموقع دون إرسال أي شيء: قارن fingerprint بما يراه مسؤول الموقع قبل الاقتران.

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
urlstringنعم—

الاستجابة 200

الحقلالنوعمطلوبالقواعد
urlstringنعم—
certificateobjectنعميمكن أن يكون null
certificate.fingerprintstringنعميطابق النمط ^[0-9a-f]{64}$
certificate.subjectstringنعم—
certificate.issuerstringنعم—
certificate.validTostring (date-time)نعم—

الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites/probe" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"<url>"}'

نسيان موقع ​

DELETE /api/v1/fleet/sites/{id}

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يحذف هنا الموقع ومفتاحه المختوم. أبطِل وحدة التحكم هذه على الموقع أيضًا؛ حتى ذلك الحين يبقى المفتاح صالحًا هناك.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
idالمسارstring (uuid)نعم—

الاستجابات: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507

مثال

bash
curl -X DELETE "$ARKVORY_URL/api/v1/fleet/sites/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

قراءة فهرس موقع ​

GET HEAD /api/v1/fleet/sites/{id}/read

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار (قراءة)

يمرّر قراءة واحدة للفهرس إلى موقع مُدار ويعيد إجابته دون تغيير: المستودعات، والبحث، والعناصر، والتعليقات، والمراحل، والحزم، وصفحات الملفات وسجلها، واستخدام التخزين، وحالة المرآة. path هو مسار الموقع مع استعلامه. تُرفض المسارات الأخرى وبايتات الملفات بالرمز 400.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
idالمسارstring (uuid)نعم—
pathالاستعلامstringنعميطابق النمط ^/api/v1/; عدد الأحرف: 2048 كحد أقصى; A read route of the site with its query, from a fixed list: catalog metadata (repositories, search, artifacts, annotations, stages, packages, file pages and history, storage usage, mirror state), download queue settings and update state. Never file bytes.

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/fleet/sites/$ID/read?path=$PATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

تغيير إعداد في موقع ​

POST /api/v1/fleet/sites/{id}/change

الوصول: مسؤول · إعادة المحاولة: لا تكرّره تلقائيًا

يمرّر تغييرًا واحدًا إلى موقع مُدار ويعيد إجابته دون تغيير. path أحد المسارين: /api/v1/system/downloads/settings (إعدادات طابور التنزيلات، يُرسل بطريقة PUT) أو /api/v1/system/updates/requests (طلب تحديث، يُرسل بطريقة POST). يصل المتن إلى الموقع كما هو؛ يتحقق الموقع من المراجعة أو معرّف الطلب، فلا يُطبَّق التغيير المكرر مرتين. تُرفض المسارات الأخرى بالرمز 400.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
idالمسارstring (uuid)نعم—
pathالاستعلامstringنعميطابق النمط ^/api/v1/; عدد الأحرف: 2048 كحد أقصى; A change route of the site, from a fixed list: PUT /api/v1/system/downloads/settings, POST /api/v1/system/updates/requests.

نص الطلب (application/json)

الاستجابات: 200, 202, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites/$ID/change?path=$PATH" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

قراءة موقع الآن ​

POST /api/v1/fleet/sites/{id}/refresh

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يقرأ الموقع الآن بدل انتظار الجولة التالية ويعيده بحالته الجديدة.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
idالمسارstring (uuid)نعم—

الاستجابة 200

الحقلالنوعمطلوبالقواعد
idstring (uuid)نعم—
namestringنعم—
urlstringنعم—
fingerprintstringنعميطابق النمط ^[0-9a-f]{64}$; يمكن أن يكون null
addedBystringنعم—
addedAtstring (date-time)نعم—
seenAtstring (date-time)نعميمكن أن يكون null
statestringنعمإحدى القيم: pending, ok, unreachable, certificate, revoked, invalid, refused
errorstringنعميمكن أن يكون null
topologyobjectنعميمكن أن يكون null
topology.collectedAtstring (date-time)نعم—
topology.siteobjectنعم—
topology.site.namestringنعم—
topology.site.versionstringنعم—
topology.site.schemaintegerنعم0 على الأقل
topology.site.rolestringنعمإحدى القيم: api, reader
topology.healthobjectنعم—
topology.health.availablebooleanنعم—
topology.health.writablebooleanنعم—
topology.health.drainingbooleanنعم—
topology.replicationobjectنعميمكن أن يكون null
topology.replication.copiesintegerنعم0–16
topology.replication.requiredintegerنعم1–16
topology.replication.singleCopyUntilstring (date-time)نعميمكن أن يكون null
topology.replication.nodestringلاعدد الأحرف: 63 كحد أقصى
topology.replication.profilestringلاإحدى القيم: ha-2, ha-3
topology.replication.peersمصفوفة من objectلاعدد العناصر: 16 كحد أقصى
topology.gatewaysمصفوفة من objectنعمعدد العناصر: 16 كحد أقصى
topology.gateways[].slotintegerنعم0 على الأقل
topology.gateways[].activebooleanنعم—
topology.gateways[].expiresAtstring (date-time)نعم—
topology.mirrorsمصفوفة من objectنعمعدد العناصر: 64 كحد أقصى
topology.mirrors[].repositorystringنعم—
topology.mirrors[].modestringنعمإحدى القيم: mirror, import
topology.mirrors[].upstreamstringنعم—
topology.mirrors[].sourceRepositorystringنعم—
topology.mirrors[].phasestringنعم—
topology.mirrors[].errorCodestringنعميمكن أن يكون null
topology.mirrors[].checkedAtstring (date-time)نعميمكن أن يكون null
topology.mirrors[].syncedAtstring (date-time)نعميمكن أن يكون null
topology.mirrors[].lagChangesstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null
topology.mirrors[].copiedArtifactsintegerنعم0 على الأقل
topology.mirrors[].copiedBytesstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية
topology.updatesobjectنعميمكن أن يكون null
topology.updates.currentVersionstringنعم—
topology.updates.lateststringنعميمكن أن يكون null
topology.updates.phasestringنعم—
topology.updates.errorstringنعميمكن أن يكون null
topology.updates.automaticbooleanنعم—
topology.updates.heartbeatAtstring (date-time)نعم—
topology.downloadsobjectنعم—
topology.downloads.strategystringنعمإحدى القيم: ordered, smallest-first, shared
topology.downloads.sessionsintegerنعم0 على الأقل
topology.downloads.activeintegerنعم0 على الأقل
topology.downloads.waitingintegerنعم0 على الأقل
topology.downloads.oldestWaitSecondsintegerنعم0 على الأقل
topology.downloads.bytesPerSecondintegerنعم0 على الأقل

الاستجابات: 200, 400, 401, 403, 404, 405, 409, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/fleet/sites/$ID/refresh" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

إنشاء رمز اقتران ​

POST /api/v1/system/fleet/pairings

الوصول: مسؤول · إعادة المحاولة: لا تكرّره تلقائيًا

ينشئ رمزًا لمرة واحدة صالحًا عشر دقائق يُدخله مسؤول وحدة التحكم لإدارة هذا الموقع. يُعرض الرمز مرة واحدة ويُحفظ كتجزئة فقط. لا ينشئه إلا المسؤول العام للموقع.

الاستجابة 201

الحقلالنوعمطلوبالقواعد
codestringنعميطابق النمط ^[0-9A-Z]{4}-[0-9A-Z]{4}-[0-9A-Z]{4}$
expiresAtstring (date-time)نعم—
fingerprintstringنعميطابق النمط ^[0-9a-f]{64}$; يمكن أن يكون null

الاستجابات: 201, 400, 401, 403, 404, 405, 409, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/system/fleet/pairings" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

سرد وحدات التحكم لهذا الموقع ​

GET HEAD /api/v1/system/fleet/controllers

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار (قراءة)

يسرد وحدات التحكم التي يحق لها إدارة هذا الموقع: الاسم ومن أقرنها ومتى وآخر استخدام لمفتاحها.

الاستجابة 200

الحقلالنوعمطلوبالقواعد
itemsمصفوفة من objectنعمعدد العناصر: 100 كحد أقصى
items[].idstring (uuid)نعم—
items[].namestringنعم—
items[].pairedBystringنعم—
items[].pairedAtstring (date-time)نعم—
items[].usedAtstring (date-time)نعميمكن أن يكون null

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/system/fleet/controllers" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

إبطال وحدة تحكم ​

DELETE /api/v1/system/fleet/controllers/{id}

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يبطل وحدة تحكم: يُرفض مفتاح الأسطول الخاص بها فورًا. لإدارة الموقع من جديد يلزم اقتران برمز جديد.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
idالمسارstring (uuid)نعم—

الاستجابات: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507

مثال

bash
curl -X DELETE "$ARKVORY_URL/api/v1/system/fleet/controllers/$ID" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

الاقتران بوحدة تحكم ​

POST /api/v1/system/fleet/enrollment

الوصول: أي شخص، دون مفتاح · إعادة المحاولة: لا تكرّره تلقائيًا

يستبدل رمز اقتران صالحًا بمفتاح أسطول مرة واحدة. تستدعيه وحدة التحكم عبر TLS مثبّت على البصمة التي أكدها المسؤول. يُعاد المفتاح مرة واحدة ولا يصل إلا إلى المسارات التي تحتاجها وحدة التحكم.

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
codestringنعمعدد الأحرف: 32 كحد أقصى
namestringنعمعدد الأحرف: 1–63

الاستجابة 201

الحقلالنوعمطلوبالقواعد
keystringنعميطابق النمط ^afk_[A-Za-z0-9_-]{43}$
siteobjectنعم—
site.namestringنعم—
site.versionstringنعم—

الاستجابات: 201, 400, 403, 405, 413, 415, 503

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/system/fleet/enrollment" \
  -H "Content-Type: application/json" \
  -d '{"code":"<code>","name":"<name>"}'

جلب هذا الموقع لوحدة تحكم الأسطول ​

GET HEAD /api/v1/system/topology

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار (قراءة)

يعيد هذا التثبيت بوصفه موقعًا واحدًا من أسطول (ADR 0077): الاسم والإصدار والمخطط والدور، وهل هو متاح ويقبل الكتابة، ونسخ HA وعقدها، وبوابات القراءة حسب عقودها، وكل مرآة واستيراد مع مرحلتها وآخر مزامنة وlagChanges (تغييرات المصدر التي لم تُطبَّق بعد)، وحالة وكيل التحديث وطابور التنزيل. لا يقرأه إلا المسؤول العام للموقع أو وحدة تحكم مقترنة به.

الاستجابة 200

الحقلالنوعمطلوبالقواعد
collectedAtstring (date-time)نعم—
siteobjectنعم—
site.namestringنعم—
site.versionstringنعم—
site.schemaintegerنعم0 على الأقل
site.rolestringنعمإحدى القيم: api, reader
healthobjectنعم—
health.availablebooleanنعم—
health.writablebooleanنعم—
health.drainingbooleanنعم—
replicationobjectنعميمكن أن يكون null
replication.copiesintegerنعم0–16
replication.requiredintegerنعم1–16
replication.singleCopyUntilstring (date-time)نعميمكن أن يكون null
replication.nodestringلاعدد الأحرف: 63 كحد أقصى
replication.profilestringلاإحدى القيم: ha-2, ha-3
replication.peersمصفوفة من objectلاعدد العناصر: 16 كحد أقصى
replication.peers[].namestringنعمعدد الأحرف: 63 كحد أقصى
replication.peers[].connectedbooleanنعم—
replication.peers[].diskstringنعمعدد الأحرف: 24 كحد أقصى
replication.peers[].completebooleanنعم—
replication.peers[].witnessbooleanنعم—
gatewaysمصفوفة من objectنعمعدد العناصر: 16 كحد أقصى
gateways[].slotintegerنعم0 على الأقل
gateways[].activebooleanنعم—
gateways[].expiresAtstring (date-time)نعم—
mirrorsمصفوفة من objectنعمعدد العناصر: 64 كحد أقصى
mirrors[].repositorystringنعم—
mirrors[].modestringنعمإحدى القيم: mirror, import
mirrors[].upstreamstringنعم—
mirrors[].sourceRepositorystringنعم—
mirrors[].phasestringنعم—
mirrors[].errorCodestringنعميمكن أن يكون null
mirrors[].checkedAtstring (date-time)نعميمكن أن يكون null
mirrors[].syncedAtstring (date-time)نعميمكن أن يكون null
mirrors[].lagChangesstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null
mirrors[].copiedArtifactsintegerنعم0 على الأقل
mirrors[].copiedBytesstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية
updatesobjectنعميمكن أن يكون null
updates.currentVersionstringنعم—
updates.lateststringنعميمكن أن يكون null
updates.phasestringنعم—
updates.errorstringنعميمكن أن يكون null
updates.automaticbooleanنعم—
updates.heartbeatAtstring (date-time)نعم—
downloadsobjectنعم—
downloads.strategystringنعمإحدى القيم: ordered, smallest-first, shared
downloads.sessionsintegerنعم0 على الأقل
downloads.activeintegerنعم0 على الأقل
downloads.waitingintegerنعم0 على الأقل
downloads.oldestWaitSecondsintegerنعم0 على الأقل
downloads.bytesPerSecondintegerنعم0 على الأقل

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/system/topology" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

قراءة إعدادات طابور التنزيلات ​

GET HEAD /api/v1/system/downloads/settings

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار (قراءة)

يعيد القيم المغيّرة (overrides) وما تحدده بيئة الخادم (defaults) وما يستخدمه الطابور الآن (effective)، مع المراجعة التي تُعاد عند التغيير. يذكر problem سبب عدم ملاءمة الإعدادات المحفوظة لهذا الخادم؛ عندها يعمل الطابور بالقيم الافتراضية.

الاستجابة 200

الحقلالنوعمطلوبالقواعد
revisionintegerنعم0–9007199254740991
overridesobjectنعم—
overrides.strategystringلاإحدى القيم: ordered, smallest-first, shared
overrides.sessionsintegerلا1–1024
overrides.reserveintegerلا0–1023
overrides.perPrincipalintegerلا1–1024
overrides.weightsobjectلا—
overrides.weights.interactiveintegerنعم1–1000
overrides.weights.releaseintegerنعم1–1000
overrides.weights.bulkintegerنعم1–1000
overrides.weights.backgroundintegerنعم1–1000
overrides.sessionMinBytesintegerلا0–9007199254740991
overrides.idleSecondsintegerلا1–3600
overrides.agingMinutesintegerلا0–10080
overrides.preemptbooleanلا—
overrides.rangesPerSessionintegerلا1–64
defaultsobjectنعم—
defaults.strategystringنعمإحدى القيم: ordered, smallest-first, shared
defaults.sessionsintegerنعم1–1024
defaults.reserveintegerنعم0–1023
defaults.perPrincipalintegerنعم1–1024
defaults.weightsobjectنعم—
defaults.weights.interactiveintegerنعم1–1000
defaults.weights.releaseintegerنعم1–1000
defaults.weights.bulkintegerنعم1–1000
defaults.weights.backgroundintegerنعم1–1000
defaults.sessionMinBytesintegerنعم0–9007199254740991
defaults.idleSecondsintegerنعم1–3600
defaults.agingMinutesintegerنعم0–10080
defaults.preemptbooleanنعم—
defaults.rangesPerSessionintegerنعم1–64
effectiveobjectنعم—
effective.strategystringنعمإحدى القيم: ordered, smallest-first, shared
effective.sessionsintegerنعم1–1024
effective.reserveintegerنعم0–1023
effective.perPrincipalintegerنعم1–1024
effective.weightsobjectنعم—
effective.weights.interactiveintegerنعم1–1000
effective.weights.releaseintegerنعم1–1000
effective.weights.bulkintegerنعم1–1000
effective.weights.backgroundintegerنعم1–1000
effective.sessionMinBytesintegerنعم0–9007199254740991
effective.idleSecondsintegerنعم1–3600
effective.agingMinutesintegerنعم0–10080
effective.preemptbooleanنعم—
effective.rangesPerSessionintegerنعم1–64
admissionstringنعمإحدى القيم: sessions, per-request
updatedAtstring (date-time)نعميمكن أن يكون null
updatedBystringنعميمكن أن يكون null
actorstringنعميمكن أن يكون null
problemstringنعميمكن أن يكون null

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/system/downloads/settings" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

تغيير إعدادات طابور التنزيلات ​

PUT /api/v1/system/downloads/settings

الوصول: مسؤول · إعادة المحاولة: لا تكرّره إلا مع المراجعة المتوقعة (compare-and-swap)

يحفظ overrides فوق بيئة الخادم ويطبقها دون إعادة تشغيل: تتبعها القرارات الجديدة فورًا وتحتفظ التنزيلات النشطة بأماكنها. تستبدل القيم المرسلة كل التغييرات السابقة؛ و{} يعيد إلى قيم البيئة. تُرفض الإعدادات التي لا يمكن تشغيلها هنا بالرمز 400 مع اسم الحقل؛ وتتلقى expectedRevision القديمة الرمز 409. تحتفظ بوابات القراءة ببيئتها.

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
expectedRevisionintegerنعم0–9007199254740991
overridesobjectنعم—
overrides.strategystringلاإحدى القيم: ordered, smallest-first, shared
overrides.sessionsintegerلا1–1024
overrides.reserveintegerلا0–1023
overrides.perPrincipalintegerلا1–1024
overrides.weightsobjectلا—
overrides.weights.interactiveintegerنعم1–1000
overrides.weights.releaseintegerنعم1–1000
overrides.weights.bulkintegerنعم1–1000
overrides.weights.backgroundintegerنعم1–1000
overrides.sessionMinBytesintegerلا0–9007199254740991
overrides.idleSecondsintegerلا1–3600
overrides.agingMinutesintegerلا0–10080
overrides.preemptbooleanلا—
overrides.rangesPerSessionintegerلا1–64

الاستجابة 200

الحقلالنوعمطلوبالقواعد
revisionintegerنعم0–9007199254740991
overridesobjectنعم—
overrides.strategystringلاإحدى القيم: ordered, smallest-first, shared
overrides.sessionsintegerلا1–1024
overrides.reserveintegerلا0–1023
overrides.perPrincipalintegerلا1–1024
overrides.weightsobjectلا—
overrides.weights.interactiveintegerنعم1–1000
overrides.weights.releaseintegerنعم1–1000
overrides.weights.bulkintegerنعم1–1000
overrides.weights.backgroundintegerنعم1–1000
overrides.sessionMinBytesintegerلا0–9007199254740991
overrides.idleSecondsintegerلا1–3600
overrides.agingMinutesintegerلا0–10080
overrides.preemptbooleanلا—
overrides.rangesPerSessionintegerلا1–64
defaultsobjectنعم—
defaults.strategystringنعمإحدى القيم: ordered, smallest-first, shared
defaults.sessionsintegerنعم1–1024
defaults.reserveintegerنعم0–1023
defaults.perPrincipalintegerنعم1–1024
defaults.weightsobjectنعم—
defaults.weights.interactiveintegerنعم1–1000
defaults.weights.releaseintegerنعم1–1000
defaults.weights.bulkintegerنعم1–1000
defaults.weights.backgroundintegerنعم1–1000
defaults.sessionMinBytesintegerنعم0–9007199254740991
defaults.idleSecondsintegerنعم1–3600
defaults.agingMinutesintegerنعم0–10080
defaults.preemptbooleanنعم—
defaults.rangesPerSessionintegerنعم1–64
effectiveobjectنعم—
effective.strategystringنعمإحدى القيم: ordered, smallest-first, shared
effective.sessionsintegerنعم1–1024
effective.reserveintegerنعم0–1023
effective.perPrincipalintegerنعم1–1024
effective.weightsobjectنعم—
effective.weights.interactiveintegerنعم1–1000
effective.weights.releaseintegerنعم1–1000
effective.weights.bulkintegerنعم1–1000
effective.weights.backgroundintegerنعم1–1000
effective.sessionMinBytesintegerنعم0–9007199254740991
effective.idleSecondsintegerنعم1–3600
effective.agingMinutesintegerنعم0–10080
effective.preemptbooleanنعم—
effective.rangesPerSessionintegerنعم1–64
admissionstringنعمإحدى القيم: sessions, per-request
updatedAtstring (date-time)نعميمكن أن يكون null
updatedBystringنعميمكن أن يكون null
actorstringنعميمكن أن يكون null
problemstringنعميمكن أن يكون null

الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X PUT "$ARKVORY_URL/api/v1/system/downloads/settings" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"expectedRevision":0,"overrides":{}}'

قراءة تغييرات الموقع ​

GET HEAD /api/v1/system/changes

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار (قراءة)

يعيد ما إذا كان وكيل الموقع يُبلغ (agent)، والطلب المعلّق، وأحدث 20 طلبًا مع حالتها: pending أو applying أو done أو failed مع السبب. لا تظهر مفاتيح المصادر هنا أبدًا.

الاستجابة 200

الحقلالنوعمطلوبالقواعد
agentbooleanنعم—
updatingbooleanنعم—
blockedstringنعمإحدى القيم: expired, interrupted, key_missing, not_a_mirror, already_attached, mirror_failed, switchover_failed, single_copy_failed, unreadable, digest_mismatch, null; يمكن أن يكون null
pendingobjectنعميمكن أن يكون null
pending.idstring (uuid)نعم—
pending.kindstringنعمإحدى القيم: mirror-attach, mirror-key, mirror-detach, cluster-switchover, single-copy
pending.actorstringنعمعدد الأحرف: 200 كحد أقصى
pending.requestedAtstring (date-time)نعم—
recentمصفوفة من objectنعمعدد العناصر: 20 كحد أقصى
recent[].idstring (uuid)نعم—
recent[].digeststringنعميطابق النمط ^[0-9a-f]{64}$
recent[].kindstringنعمإحدى القيم: mirror-attach, mirror-key, mirror-detach, cluster-switchover, single-copy
recent[].statestringنعمإحدى القيم: pending, applying, done, failed
recent[].errorstringنعمإحدى القيم: expired, interrupted, key_missing, not_a_mirror, already_attached, mirror_failed, switchover_failed, single_copy_failed, unreadable, digest_mismatch, null; يمكن أن يكون null
recent[].actorstringنعمعدد الأحرف: 200 كحد أقصى
recent[].requestedAtstring (date-time)نعم—
recent[].finishedAtstring (date-time)نعميمكن أن يكون null

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/system/changes" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

وضع تغيير للموقع في الطابور ​

POST /api/v1/system/changes

الوصول: مسؤول · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه

يضع تغييرًا واحدًا لوكيل الموقع، فيطبقه خلال دقيقة بفحوص arkvory configure وcluster-* وتراجعها: ربط مرآة أو استيراد، أو استبدال مفتاح مصدرها، أو فصل المرايا، أو تبديل عقدة HA النشطة (يُكتب اسم العقدة مرتين)، أو تقرير الكتابة بنسخة واحدة. يختار العميل id؛ وتكراره لا يضع التغيير مرة أخرى. key هو مفتاح المصدر لـmirror-attach وmirror-key فقط: يصل إلى الوكيل في ملف 0600 خاص به ولا يُعاد أبدًا. يعني 202 أنه في الطابور لا أنه طُبّق.

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
idstring (uuid)نعم—
changeobjectنعم—
change.kindstringنعمإحدى القيم: mirror-attach
change.repositorystringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
change.upstreamstringنعمعدد الأحرف: 255 كحد أقصى
change.sourceRepositorystringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
change.stagesمصفوفة من stringلاعدد العناصر: 1–16; كل عنصر: يطابق النمط ^[a-z0-9][a-z0-9_.-]{0,31}$; يمكن أن يكون null
change.repositoriesمصفوفة من stringنعمعدد العناصر: 1–64; كل عنصر: يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
change.nodestringنعميطابق النمط ^[A-Za-z0-9][A-Za-z0-9_.-]{0,62}$
change.confirmstringنعميطابق النمط ^[A-Za-z0-9][A-Za-z0-9_.-]{0,62}$
change.untilstring (date-time)نعميمكن أن يكون null
change.reasonstringنعمعدد الأحرف: 1–200
keystringلاعدد الأحرف: 16–4000

الاستجابة 202

الحقلالنوعمطلوبالقواعد
idstring (uuid)نعم—

الاستجابات: 202, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/system/changes" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id":"00000000-0000-4000-8000-000000000000","change":{"kind":"mirror-attach","repository":"<repository>","upstream":"<upstream>","sourceRepository":"<sourceRepository>"}}'

متابعة موجز تغييرات مستودع ​

GET HEAD /api/v1/repositories/{repository}/changes

الوصول: إذن المستودع: artifact.list; مفاتيح الملفات: read · إعادة المحاولة: آمن للتكرار (قراءة)

يعيد، بترتيب التثبيت (commit)، ما يصل إلى limit تغييرًا (من 1 إلى 100، والافتراضي 100) بعد التسلسل after (الافتراضي 0): الإجراء والمُخرَج، وبالنسبة لمسارات الملفات والمراحل المسار أو المرحلة في detail؛ ولا يتضمن الفاعلين، لذا يكفي إذن عرض القوائم. head هو أحدث تسلسل في المستودع، وnext مؤشر الصفحة التالية أو null إذا بلغت الصفحة head. وتخزّن المرآة آخر تسلسل طبّقته وتستطلع (poll) بدءًا منه.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
afterالاستعلامstringلاعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; Sequence cursor, default 0
limitالاستعلامintegerلا1–100

الاستجابة 200

الحقلالنوعمطلوبالقواعد
itemsمصفوفة من objectنعم—
items[].sequencestringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية
items[].actionstringنعم—
items[].artifactIdstring (uuid)نعم—
items[].detailstringنعميمكن أن يكون null
headstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية
nextstringنعمعدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null

الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507

مثال

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/changes" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

POST /api/v1/repositories/{repository}/artifacts/{id}/links

الوصول: إذن المستودع: content.read; مفاتيح الملفات: read · إعادة المحاولة: لا تكرّره تلقائيًا

يعيد token سريًّا وurl نسبيًّا إلى أصل API (origin) وexpiresAt، لاستخدامها مع downloadArtifact لهذا المُخرَج وحده دون مفتاح؛ وتحدد ttlSeconds مدة الصلاحية (من 60 ثانية إلى يوم واحد، والافتراضي ساعة واحدة). يظهر الرمز في هذه الإجابة فقط ولا يمكن إبطاله: يتوقف عن العمل عند انتهاء صلاحيته أو حذف المُخرَج، وتُحتسب التنزيلات عبره ضمن حدود النقل الخاصة بمنشئه. يجوز للمستدعي أن يحتفظ بـ 1000 رابط فعّال (507 token_limit)، ولا يستطيع رابط التنزيل إنشاء روابط أخرى.

المعلمات

الاسمالموضعالنوعمطلوبالقواعد
repositoryالمسارstringنعميطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$
idالمسارstring (uuid)نعم—

نص الطلب (application/json)

الحقلالنوعمطلوبالقواعد
ttlSecondsintegerلا60–86400; القيمة الافتراضية 3600

الاستجابة 201

الحقلالنوعمطلوبالقواعد
tokenstringنعميطابق النمط ^dtl_[A-Za-z0-9_-]{43}$
urlstringنعم—
expiresAtstring (date-time)نعم—

الاستجابات: 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

مثال

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/links" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

Arkvory · ProAnimaStudio