سياسات التخزين والاحتفاظ
الحصص، والاستخدام، وسياسات الاحتفاظ ومعاينتها وتشغيلها، والتنظيف، وحذف المُخرَجات.
عمليات هذه المجموعة مع قاعدة الوصول وقاعدة إعادة المحاولة والمعلمات والاستجابات. يحمل كل طلب مفتاحًا: Authorization: Bearer <key> (راجع «المصادقة»).
العمليات
فحص إمكانية حذف مُخرَج
GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/deletion
الوصول: إذن المستودع: artifact.delete · إعادة المحاولة: آمن للتكرار (قراءة)
يعيد اسم المُخرَج وحجمه ووقت نشره وannotationRevision الحالية وblockers التي تمنع حذفه: reference (مرجع خارجي، أو استخدام من صورة حاوية أو Git LFS أو npm)، وasset_history (مراجعة حالية أو سابقة لمسار ملف)، وattachment_history أو promotion_stage. لا يتغير شيء؛ ومرّر المراجعة إلى deleteArtifact بوصفها expectedAnnotationRevision.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
id | المسار | string (uuid) | نعم | — |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
id | string (uuid) | نعم | — |
name | string | نعم | عدد الأحرف: 1–240 |
size | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
publishedAt | string (date-time) | نعم | — |
annotationRevision | integer | نعم | 0–2147483647 |
blockers | مصفوفة من string | نعم | عدد العناصر: 4 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: إحدى القيم: reference, asset_history, attachment_history, protected_label, promotion_stage |
الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507
مثال
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/deletion" \
-H "Authorization: Bearer $ARKVORY_TOKEN"معاينة المرشحين للحذف حسب الاحتفاظ
POST /api/v1/repositories/{repository}/retention/preview
الوصول: إذن المستودع: artifact.delete · إعادة المحاولة: آمن للتكرار (قراءة)
يسرد المُخرَجات المنشورة التي نُشرت قبل criteria.publishedBefore (وقت UTC ماضٍ بالميلي ثانية)، مرتبةً حسب المعرّف، لكل منها مراجعة التعليقات التوضيحية والعوائق، وprotected_label تعني إحدى criteria.protectedLabels (قائمة صريحة حتى 32). تحتوي الصفحة على limit عنصرًا (من 1 إلى 100، والافتراضي 50)؛ وللمتابعة اضبط after على قيمة next. لا يُحجز شيء: اختر العناصر المراد حذفها ومرّرها مع مراجعاتها إلى applyRetention، الذي يفحصها من جديد.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
نص الطلب (application/json)
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
criteria | object | نعم | — |
criteria.publishedBefore | string (date-time) | نعم | يطابق النمط ^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z$ |
criteria.protectedLabels | مصفوفة من string | نعم | عدد العناصر: 32 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: عدد الأحرف: 1–64 |
limit | integer | لا | 1–100 |
after | string (uuid) | لا | — |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
items | مصفوفة من object | نعم | عدد العناصر: 100 كحد أقصى |
items[].id | string (uuid) | نعم | — |
items[].name | string | نعم | عدد الأحرف: 1–240 |
items[].size | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
items[].publishedAt | string (date-time) | نعم | — |
items[].annotationRevision | integer | نعم | 0–2147483647 |
items[].blockers | مصفوفة من string | نعم | عدد العناصر: 4 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: إحدى القيم: reference, asset_history, attachment_history, protected_label, promotion_stage |
next | string (uuid) | نعم | يمكن أن يكون null |
الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
مثال
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/retention/preview" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"criteria":{"publishedBefore":"2026-01-01T00:00:00.000Z","protectedLabels":[]}}'حذف المرشحين المختارين حسب الاحتفاظ
POST /api/v1/repositories/{repository}/retention/apply
الوصول: إذن المستودع: artifact.delete · إعادة المحاولة: آمن للتكرار: الطلب نفسه يُحدث الأثر نفسه
يعيد فحص ما بين 1 و100 مُخرَج اختيرت من previewRetention (items فيها id وexpectedAnnotationRevision) مقابل criteria نفسها، ويحذف المؤهّل منها حذفًا منطقيًا في معاملة واحدة. يحصل كل عنصر على outcome: deleted أو already_deleted أو changed (تغيّرت التعليقات التوضيحية) أو not_eligible (نُشر بعد الموعد) أو protected مع عوائقه، أو not_found. وتبقى البايتات محجوزة إلى أن يستردها التنظيف الفعلي أثناء التشغيل في المستودع.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
نص الطلب (application/json)
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
criteria | object | نعم | — |
criteria.publishedBefore | string (date-time) | نعم | يطابق النمط ^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z$ |
criteria.protectedLabels | مصفوفة من string | نعم | عدد العناصر: 32 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: عدد الأحرف: 1–64 |
items | مصفوفة من object | نعم | عدد العناصر: 1–100 |
items[].id | string (uuid) | نعم | — |
items[].expectedAnnotationRevision | integer | نعم | 0–2147483647 |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
items | مصفوفة من object | نعم | عدد العناصر: 1–100 |
items[].id | string (uuid) | نعم | — |
items[].outcome | string | نعم | إحدى القيم: deleted, already_deleted, protected, changed, not_eligible, not_found |
items[].blockers | مصفوفة من string | نعم | عدد العناصر: 4 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: إحدى القيم: reference, asset_history, attachment_history, protected_label, promotion_stage |
الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
مثال
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/retention/apply" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"criteria":{"publishedBefore":"2026-01-01T00:00:00.000Z","protectedLabels":[]},"items":[{"id":"00000000-0000-4000-8000-000000000000","expectedAnnotationRevision":0}]}'الحصول على سياسة التخزين
GET HEAD /api/v1/repositories/{repository}/storage/policy
الوصول: إذن المستودع: storage.read · إعادة المحاولة: آمن للتكرار (قراءة)
يعيد إعدادات التنظيف التلقائي وحصة التخزين في المستودع مع revision، وموعد التشغيل المقبل والأخير، وعدد نسخ البناء التي حذفها التشغيل الأخير وخطأه. السياسة معطّلة افتراضيًا ولا توجد حصة للمستودع (تظل سعة الخادم الإجمالية سارية).
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
revision | integer | نعم | 0–2147483647 |
policy | object | نعم | — |
policy.enabled | boolean | نعم | — |
policy.grouping | string | نعم | إحدى القيم: package-channel, package, repository |
policy.keepLast | integer | نعم | 1–100000 |
policy.channels | مصفوفة من object | نعم | عدد العناصر: 32 كحد أقصى |
policy.channels[].label | string | نعم | عدد الأحرف: 1–64 |
policy.channels[].keepLast | integer | نعم | 1–100000 |
policy.protectedLabels | مصفوفة من string | نعم | عدد العناصر: 32 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: عدد الأحرف: 1–64 |
policy.minAgeHours | integer | نعم | 0–87600 |
policy.intervalMinutes | integer | نعم | 1–10080 |
policy.quotaBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null |
policy.warningPercent | integer | نعم | 1–98 |
policy.criticalPercent | integer | نعم | 2–99 |
nextRunAt | string (date-time) | نعم | يمكن أن يكون null |
lastRunAt | string (date-time) | نعم | يمكن أن يكون null |
lastDeleted | integer | نعم | 0–100 |
lastError | string | نعم | عدد الأحرف: 64 كحد أقصى; يمكن أن يكون null |
الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507
مثال
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/policy" \
-H "Authorization: Bearer $ARKVORY_TOKEN"استبدال سياسة التخزين
PUT /api/v1/repositories/{repository}/storage/policy
الوصول: إذن المستودع: storage.manage · إعادة المحاولة: لا تكرّره إلا مع المراجعة المتوقعة (compare-and-swap)
يستبدل السياسة كلها: الاحتفاظ بآخر keepLast من نسخ بناء UPack المسجّلة لكل حزمة، أو لكل تسمية قناة (channels)، أو لكل مستودع (grouping)، وعدم حذف protectedLabels ولا نسخ البناء الأحدث من minAgeHours، والتشغيل كل intervalMinutes، وتقييد المستودع بـ quotaBytes (سلسلة نصية عشرية، وnull لعدم وجود حصة) وعتبات التحذير الخاصة بها. يجب أن تكون expectedRevision هي المراجعة الحالية، وإلا كانت النتيجة 409 revision_mismatch. ويتطلب التفعيل أيضًا artifact.delete ويربط الجدولة بمفتاح الخدمة المُدار الذي استدعى العملية: فإذا أُبطل هذا المفتاح أو انتهت صلاحيته أو فقد هذه الأذونات توقف الحذف المجدول إلى أن تُحفظ السياسة بمفتاح آخر. والملفات العادية تُحتسب من الحصة لكنها لا تُحذف بها أبدًا.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
نص الطلب (application/json)
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
expectedRevision | integer | نعم | 0–2147483647 |
policy | object | نعم | — |
policy.enabled | boolean | نعم | — |
policy.grouping | string | نعم | إحدى القيم: package-channel, package, repository |
policy.keepLast | integer | نعم | 1–100000 |
policy.channels | مصفوفة من object | نعم | عدد العناصر: 32 كحد أقصى |
policy.channels[].label | string | نعم | عدد الأحرف: 1–64 |
policy.channels[].keepLast | integer | نعم | 1–100000 |
policy.protectedLabels | مصفوفة من string | نعم | عدد العناصر: 32 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: عدد الأحرف: 1–64 |
policy.minAgeHours | integer | نعم | 0–87600 |
policy.intervalMinutes | integer | نعم | 1–10080 |
policy.quotaBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null |
policy.warningPercent | integer | نعم | 1–98 |
policy.criticalPercent | integer | نعم | 2–99 |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
revision | integer | نعم | 0–2147483647 |
policy | object | نعم | — |
policy.enabled | boolean | نعم | — |
policy.grouping | string | نعم | إحدى القيم: package-channel, package, repository |
policy.keepLast | integer | نعم | 1–100000 |
policy.channels | مصفوفة من object | نعم | عدد العناصر: 32 كحد أقصى |
policy.channels[].label | string | نعم | عدد الأحرف: 1–64 |
policy.channels[].keepLast | integer | نعم | 1–100000 |
policy.protectedLabels | مصفوفة من string | نعم | عدد العناصر: 32 كحد أقصى; بلا عناصر مكرّرة; كل عنصر: عدد الأحرف: 1–64 |
policy.minAgeHours | integer | نعم | 0–87600 |
policy.intervalMinutes | integer | نعم | 1–10080 |
policy.quotaBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null |
policy.warningPercent | integer | نعم | 1–98 |
policy.criticalPercent | integer | نعم | 2–99 |
nextRunAt | string (date-time) | نعم | يمكن أن يكون null |
lastRunAt | string (date-time) | نعم | يمكن أن يكون null |
lastDeleted | integer | نعم | 0–100 |
lastError | string | نعم | عدد الأحرف: 64 كحد أقصى; يمكن أن يكون null |
الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
مثال
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/policy" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"policy":{"enabled":false,"grouping":"package-channel","keepLast":1,"channels":[],"protectedLabels":[],"minAgeHours":0,"intervalMinutes":1,"quotaBytes":"1024","warningPercent":1,"criticalPercent":2}}'الحصول على استخدام التخزين في مستودع
GET HEAD /api/v1/repositories/{repository}/storage/usage
الوصول: إذن المستودع: storage.read · إعادة المحاولة: آمن للتكرار (قراءة)
يعيد البايتات التي حجزها المستودع كسلاسل نصية عشرية: المنشورة وعمليات الرفع المعلّقة والمسحوبة (المحذوفة أو الملغاة ولم تُستعَد مساحتها بعد)، ومجموعها reservedBytes، والحصة، وstate (unlimited أو normal أو warning أو critical أو exceeded). هذا هو الحجز المنطقي المحسوب على الحصة، وليس المساحة المستخدمة على القرص.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
publishedBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
pendingBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
retiredBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
reservedBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
quotaBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null |
state | string | نعم | إحدى القيم: unlimited, normal, warning, critical, exceeded |
الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507
مثال
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/usage" \
-H "Authorization: Bearer $ARKVORY_TOKEN"معاينة ما ستحذفه سياسة التخزين
GET HEAD /api/v1/repositories/{repository}/storage/preview
الوصول: إذن المستودع: artifact.delete · إعادة المحاولة: آمن للتكرار (قراءة)
يعيد حتى 100 من نسخ البناء المسجّلة التي ستحذفها السياسة المحفوظة الآن (حتى وهي معطّلة)، مع revision للسياسة وhasMore؛ ولا تظهر النسخ التي تحتفظ بها المراجع أو مسارات الملفات أو المرفقات أو التسميات المحمية أو العمر. لا يُحجز شيء: فكل تشغيل يعيد ترتيب نسخ البناء من جديد.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
revision | integer | نعم | 0–2147483647 |
items | مصفوفة من object | نعم | عدد العناصر: 100 كحد أقصى |
items[].id | string (uuid) | نعم | — |
items[].name | string | نعم | عدد الأحرف: 240 كحد أقصى |
items[].size | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
items[].publishedAt | string (date-time) | نعم | — |
items[].annotationRevision | integer | نعم | 0–2147483647 |
items[].blockers | مصفوفة من string | نعم | عدد العناصر: 0 كحد أقصى |
hasMore | boolean | نعم | — |
الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507
مثال
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/preview" \
-H "Authorization: Bearer $ARKVORY_TOKEN"تشغيل سياسة التخزين الآن
POST /api/v1/repositories/{repository}/storage/run
الوصول: إذن المستودع: storage.manage, artifact.delete · إعادة المحاولة: لا تكرّره تلقائيًا
يشغّل دفعة واحدة من السياسة المفعّلة فورًا بدلًا من انتظار الجدولة: يعيد ترتيب نسخ البناء، ويفحص الأذونات والتبعيات، ويحذف حذفًا منطقيًا حتى 100 منها، ويعيد نتيجة لكل نسخة. يجب أن تكون expectedRevision هي مراجعة السياسة الحالية وأن تكون السياسة مفعّلة، وإلا كانت النتيجة 409. وتُستعاد البايتات لاحقًا بالتنظيف الفعلي أثناء التشغيل في المستودع، وله سياسته الخاصة (setCleanup).
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
نص الطلب (application/json)
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
expectedRevision | integer | نعم | 0–2147483647 |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
items | مصفوفة من object | نعم | عدد العناصر: 100 كحد أقصى |
items[].id | string (uuid) | نعم | — |
items[].outcome | string | نعم | إحدى القيم: deleted, already_deleted, protected, changed, not_eligible, not_found |
items[].blockers | مصفوفة من string | نعم | عدد العناصر: 4 كحد أقصى; كل عنصر: إحدى القيم: reference, asset_history, attachment_history, protected_label, promotion_stage |
الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
مثال
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/run" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0}'عرض قائمة أحداث التخزين لمستودع
GET HEAD /api/v1/repositories/{repository}/storage/events
الوصول: إذن المستودع: diagnostics.read · إعادة المحاولة: آمن للتكرار (قراءة)
يعيد حتى 100 حدث تشخيصي لسياسات التخزين والحصص والاحتفاظ والتنظيف بعد التسلسل after (الافتراضي 0)، بدءًا من الأقدم، لكل منها المستوى والرمز وبعض التفاصيل؛ ويرشّحها level (info أو warning أو error)، وللمتابعة اضبط after على قيمة next. لا يُحتفظ إلا بأحدث 1000 حدث لكل مستودع و20 000 حدث إجمالًا، لذا صدّرها إن أردت احتفاظًا أطول.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
after | الاستعلام | string | لا | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
level | الاستعلام | string | لا | إحدى القيم: info, warning, error |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
items | مصفوفة من object | نعم | عدد العناصر: 100 كحد أقصى |
items[].sequence | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
items[].occurredAt | string (date-time) | نعم | — |
items[].level | string | نعم | إحدى القيم: info, warning, error |
items[].code | string | نعم | عدد الأحرف: 96 كحد أقصى |
items[].details | قاموس من string | integer | نعم | عدد الإدخالات: 16 كحد أقصى |
next | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية; يمكن أن يكون null |
الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507
مثال
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/events" \
-H "Authorization: Bearer $ARKVORY_TOKEN"الحصول على إعدادات التنظيف الفعلي أثناء التشغيل
GET HEAD /api/v1/repositories/{repository}/storage/cleanup
الوصول: إذن المستودع: storage.read · إعادة المحاولة: آمن للتكرار (قراءة)
يعيد سياسة التنظيف الفعلي أثناء التشغيل للمستودع مع revision الخاصة بها (enabled وgraceHours وbatchSize وintervalSeconds وdelayMilliseconds)، وآخر تشغيل والتشغيل التالي، وعدد الكائنات التي استعادتها الدفعة الأخيرة أو أجّلتها أو فشلت فيها، مع البايتات المحرَّرة. التنظيف هو ما يزيل فعليًا عمليات الرفع الملغاة والمُخرَجات المحذوفة؛ وهو معطّل افتراضيًا.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
revision | integer | نعم | 0–2147483647 |
policy | object | نعم | — |
policy.enabled | boolean | نعم | — |
policy.graceHours | integer | نعم | 0–8760 |
policy.batchSize | integer | نعم | 1–100 |
policy.intervalSeconds | integer | نعم | 5–86400 |
policy.delayMilliseconds | integer | نعم | 0–1000 |
lastRunAt | string (date-time) | نعم | يمكن أن يكون null |
nextRunAt | string (date-time) | نعم | يمكن أن يكون null |
lastCollected | integer | نعم | 0–100 |
lastDeferred | integer | نعم | 0–100 |
lastFailed | integer | نعم | 0–100 |
lastReclaimedBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
lastError | string | نعم | يمكن أن يكون null |
الاستجابات: 200, 400, 401, 403, 404, 409, 422, 503, 507
مثال
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/cleanup" \
-H "Authorization: Bearer $ARKVORY_TOKEN"ضبط التنظيف الفعلي أثناء التشغيل
PUT /api/v1/repositories/{repository}/storage/cleanup
الوصول: إذن المستودع: storage.manage · إعادة المحاولة: لا تكرّره إلا مع المراجعة المتوقعة (compare-and-swap)
يستبدل سياسة التنظيف أثناء عمل الخادم: enabled (وكذلك للإيقاف المؤقت)، وgraceHours (من 0 إلى 8760، وهي المدة التي يبقى فيها المحتوى المحذوف قبل إزالته)، وbatchSize (من 1 إلى 100 كائن)، وintervalSeconds (من 5 إلى 86400)، وdelayMilliseconds (من 0 إلى 1000 بين كائن وآخر). يجب أن تكون expectedRevision هي المراجعة الحالية (0 قبل أول تغيير)، وإلا كانت النتيجة 409 revision_mismatch. ويسري التغيير بين الكائنات، ولا يسري أبدًا في منتصف أحدها.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
نص الطلب (application/json)
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
expectedRevision | integer | نعم | 0–2147483647 |
policy | object | نعم | — |
policy.enabled | boolean | نعم | — |
policy.graceHours | integer | نعم | 0–8760 |
policy.batchSize | integer | نعم | 1–100 |
policy.intervalSeconds | integer | نعم | 5–86400 |
policy.delayMilliseconds | integer | نعم | 0–1000 |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
revision | integer | نعم | 0–2147483647 |
policy | object | نعم | — |
policy.enabled | boolean | نعم | — |
policy.graceHours | integer | نعم | 0–8760 |
policy.batchSize | integer | نعم | 1–100 |
policy.intervalSeconds | integer | نعم | 5–86400 |
policy.delayMilliseconds | integer | نعم | 0–1000 |
lastRunAt | string (date-time) | نعم | يمكن أن يكون null |
nextRunAt | string (date-time) | نعم | يمكن أن يكون null |
lastCollected | integer | نعم | 0–100 |
lastDeferred | integer | نعم | 0–100 |
lastFailed | integer | نعم | 0–100 |
lastReclaimedBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
lastError | string | نعم | يمكن أن يكون null |
الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
مثال
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/cleanup" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"policy":{"enabled":false,"graceHours":0,"batchSize":1,"intervalSeconds":5,"delayMilliseconds":0}}'طلب دفعة تنظيف الآن
POST /api/v1/repositories/{repository}/storage/cleanup/run
الوصول: إذن المستودع: storage.manage · إعادة المحاولة: لا تكرّره تلقائيًا
يجدول بدء الدفعة التالية من سياسة التنظيف المفعّلة فورًا؛ والردّ هو حالة التنظيف، ولا تتحرر البايتات إلا بعد تشغيل الدفعة (انظر lastRunAt في getCleanup). يجب أن تكون expectedRevision هي المراجعة الحالية؛ والتنظيف المعطّل يعطي 409 state_conflict. الكائنات التي تجري قراءتها أو كتابتها تُؤجَّل إلى دفعة لاحقة.
المعلمات
| الاسم | الموضع | النوع | مطلوب | القواعد |
|---|---|---|---|---|
repository | المسار | string | نعم | يطابق النمط ^[a-z0-9][a-z0-9_-]{0,63}$ |
نص الطلب (application/json)
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
expectedRevision | integer | نعم | 0–2147483647 |
الاستجابة 200
| الحقل | النوع | مطلوب | القواعد |
|---|---|---|---|
revision | integer | نعم | 0–2147483647 |
policy | object | نعم | — |
policy.enabled | boolean | نعم | — |
policy.graceHours | integer | نعم | 0–8760 |
policy.batchSize | integer | نعم | 1–100 |
policy.intervalSeconds | integer | نعم | 5–86400 |
policy.delayMilliseconds | integer | نعم | 0–1000 |
lastRunAt | string (date-time) | نعم | يمكن أن يكون null |
nextRunAt | string (date-time) | نعم | يمكن أن يكون null |
lastCollected | integer | نعم | 0–100 |
lastDeferred | integer | نعم | 0–100 |
lastFailed | integer | نعم | 0–100 |
lastReclaimedBytes | string | نعم | عدد صحيح بأرقام عشرية، يُرسَل كسلسلة نصية |
lastError | string | نعم | يمكن أن يكون null |
الاستجابات: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
مثال
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/storage/cleanup/run" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0}'