पथ वाली फ़ाइलें
रिपॉज़िटरी में पथ से पहचानी जाने वाली फ़ाइलें: संशोधन, इतिहास, पुनर्स्थापना और एक ही अनुरोध में raw फ़ाइलें।
इस समूह के ऑपरेशन, उनके एक्सेस नियम, पुनः प्रयास नियम, पैरामीटर और जवाबों के साथ। हर अनुरोध में एक कुंजी होती है: Authorization: Bearer <कुंजी> (“प्रमाणीकरण” देखें)।
ऑपरेशन
उपसर्ग से फ़ाइल पथ सूचीबद्ध करें
GET HEAD /api/v1/repositories/{repository}/assets
एक्सेस: रिपॉज़िटरी अनुमति: asset.read; फ़ाइल कुंजियाँ: read · पुनः प्रयास: दोहराना सुरक्षित है (पढ़ना)
हर वह फ़ाइल पथ लौटाता है जो prefix से शुरू होता है (शाब्दिक, पैटर्न नहीं; सभी के लिए खाली), पथ के क्रम में, प्रत्येक के साथ उसका वर्तमान संशोधन और आर्टिफ़ैक्ट ID। इसमें पृष्ठांकन नहीं है: 1000 से अधिक मिलान पर 400 मिलता है जो संकरा उपसर्ग माँगता है, इसलिए बड़े वृक्षों के लिए listAssetPage को प्राथमिकता दें।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
prefix | क्वेरी | string | नहीं | — |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
items | object का ऐरे | नहीं | — |
items[].path | string | हाँ | — |
items[].revision | integer | हाँ | 1–2147483647 |
items[].artifactId | string (uuid) | हाँ | — |
प्रतिक्रियाएँ: 200, 400, 401, 403, 404, 409, 422, 503, 507
उदाहरण
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/assets" \
-H "Authorization: Bearer $ARKVORY_TOKEN"फ़ाइल पथ पृष्ठ-दर-पृष्ठ सूचीबद्ध करें
GET HEAD /api/v1/repositories/{repository}/assets/page
एक्सेस: रिपॉज़िटरी अनुमति: asset.read; फ़ाइल कुंजियाँ: read · पुनः प्रयास: दोहराना सुरक्षित है (पढ़ना)
वर्तमान फ़ाइल पथ लौटाता है जो prefix से शुरू होते हैं (शाब्दिक; सभी के लिए खाली), UTF-8 बाइट क्रम में, प्रत्येक के साथ उसका वर्तमान संशोधन और आर्टिफ़ैक्ट ID। प्रत्येक पृष्ठ में limit आइटम होते हैं (1–100, डिफ़ॉल्ट 50); अपारदर्शी next को after में देकर आगे बढ़ें। पृष्ठ स्नैपशॉट नहीं हैं: अनुरोधों के बीच बदले पथ अपने नए संशोधन के साथ दिख सकते हैं या अगले पास तक छूट सकते हैं।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
prefix | क्वेरी | string | नहीं | अधिकतम 1024 वर्ण; डिफ़ॉल्ट ``; Case-sensitive literal prefix; % and _ are ordinary characters. |
after | क्वेरी | string | नहीं | पैटर्न: ^[A-Za-z0-9_-]+$; 1–8192 वर्ण |
limit | क्वेरी | integer | नहीं | 1–100; डिफ़ॉल्ट 50 |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
items | object का ऐरे | हाँ | अधिकतम 100 आइटम |
items[].path | string | हाँ | — |
items[].revision | integer | हाँ | 1–2147483647 |
items[].artifactId | string (uuid) | हाँ | — |
next | string | हाँ | पैटर्न: ^[A-Za-z0-9_-]+$; 1–8192 वर्ण; null हो सकता है; रिपॉज़िटरी और उपसर्ग से बँधा अपारदर्शी कर्सर; अंत में null। यह कभी पहुँच नहीं देता। |
प्रतिक्रियाएँ: 200, 400, 401, 403, 404, 409, 422, 503, 507
उदाहरण
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/assets/page" \
-H "Authorization: Bearer $ARKVORY_TOKEN"फ़ाइल पथ का वर्तमान संशोधन प्राप्त करें
GET HEAD /api/v1/repositories/{repository}/asset
एक्सेस: रिपॉज़िटरी अनुमति: asset.read; फ़ाइल कुंजियाँ: read · पुनः प्रयास: दोहराना सुरक्षित है (पढ़ना)
path का वर्तमान revision और उस आर्टिफ़ैक्ट की ID लौटाता है जिसकी ओर वह इंगित करता है; अज्ञात पथ पर 404 मिलता है। पथ में / से अलग किए गए खंडों में 1–1024 वर्ण होते हैं, बिना खाली, . या .. खंडों के, और बिना \, : या नियंत्रण वर्णों के। बाइट downloadAssetContent से डाउनलोड करें, या संशोधन को setAsset में expectedRevision के रूप में दें।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
path | क्वेरी | string | हाँ | — |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
path | string | हाँ | — |
revision | integer | हाँ | 1–2147483647 |
artifactId | string (uuid) | हाँ | — |
प्रतिक्रियाएँ: 200, 400, 401, 403, 404, 409, 422, 503, 507
उदाहरण
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset?path=$PATH" \
-H "Authorization: Bearer $ARKVORY_TOKEN"फ़ाइल पथ को आर्टिफ़ैक्ट की ओर इंगित करें
PUT /api/v1/repositories/{repository}/asset
एक्सेस: रिपॉज़िटरी अनुमति: asset.write, artifact.read; फ़ाइल कुंजियाँ: read, write · पुनः प्रयास: केवल अपेक्षित संशोधन के साथ दोहराएँ (compare-and-swap)
path को उसी रिपॉज़िटरी के प्रकाशित आर्टिफ़ैक्ट का नाम बनाता है, नए संशोधन के रूप में; expectedRevision पथ बनाने के लिए 0 है और बदलने के लिए वर्तमान संशोधन, अन्यथा 409 revision_mismatch। पिछले संशोधन इतिहास में रहते हैं और उनके आर्टिफ़ैक्ट को हटाए जाने से बचाए रखते हैं। बाइट सहेजने और उन्हें एक ही अनुरोध में नाम देने के लिए putRawFile का उपयोग करें।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
अनुरोध बॉडी (application/json)
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
path | string | हाँ | — |
artifactId | string (uuid) | हाँ | — |
expectedRevision | integer | हाँ | 0–2147483646 |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
path | string | हाँ | — |
revision | integer | हाँ | 1–2147483647 |
artifactId | string (uuid) | हाँ | — |
प्रतिक्रियाएँ: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
उदाहरण
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"path":"<path>","artifactId":"00000000-0000-4000-8000-000000000000","expectedRevision":0}'फ़ाइल पथ के संशोधन सूचीबद्ध करें
GET HEAD /api/v1/repositories/{repository}/asset/history
एक्सेस: रिपॉज़िटरी अनुमति: asset.read; फ़ाइल कुंजियाँ: read · पुनः प्रयास: दोहराना सुरक्षित है (पढ़ना)
path के संशोधन, सबसे नया पहले, प्रति पृष्ठ 50, लौटाता है; प्रत्येक के साथ उसका आर्टिफ़ैक्ट, कर्ता, समय और, पुनर्स्थापना के लिए, वह sourceRevision जिससे उसे कॉपी किया गया (सर्वर के शुरुआती संस्करणों द्वारा दर्ज संशोधनों के लिए कर्ता और समय null हैं)। before में next देकर आगे बढ़ें। अज्ञात पथ पर 404 मिलता है।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
path | क्वेरी | string | हाँ | — |
before | क्वेरी | integer | नहीं | 1–2147483647; Only revisions strictly smaller than this value |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
items | object का ऐरे | हाँ | अधिकतम 50 आइटम |
items[].path | string | हाँ | — |
items[].revision | integer | हाँ | 1–2147483647 |
items[].artifactId | string (uuid) | हाँ | — |
items[].actor | string | हाँ | null हो सकता है; माइग्रेशन 4 से पहले दर्ज इतिहास के लिए null |
items[].createdAt | string (date-time) | हाँ | null हो सकता है; माइग्रेशन 4 से पहले दर्ज इतिहास के लिए null |
items[].sourceRevision | integer | हाँ | 1–2147483647; null हो सकता है; पुनर्स्थापित किया गया संशोधन; साधारण प्रतिस्थापन के लिए null |
next | integer | हाँ | 1–2147483647; null हो सकता है; कर्सर से पहले का (कर्सर शामिल नहीं); अंत में null |
प्रतिक्रियाएँ: 200, 400, 401, 403, 404, 409, 422, 503, 507
उदाहरण
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/history?path=$PATH" \
-H "Authorization: Bearer $ARKVORY_TOKEN"फ़ाइल पथ का एक संशोधन प्राप्त करें
GET HEAD /api/v1/repositories/{repository}/asset/revision
एक्सेस: रिपॉज़िटरी अनुमति: asset.read; फ़ाइल कुंजियाँ: read · पुनः प्रयास: दोहराना सुरक्षित है (पढ़ना)
path का संशोधन revision उसकी आर्टिफ़ैक्ट ID, कर्ता, समय और पुनर्स्थापना स्रोत के साथ लौटाता है। संशोधन कभी नहीं बदलते, इसलिए आर्टिफ़ैक्ट ID कैश की जा सकती है; उसे downloadArtifact से डाउनलोड करें। अनुपस्थित पथ या संशोधन पर 404 मिलता है।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
path | क्वेरी | string | हाँ | — |
revision | क्वेरी | integer | हाँ | 1–2147483647 |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
path | string | हाँ | — |
revision | integer | हाँ | 1–2147483647 |
artifactId | string (uuid) | हाँ | — |
actor | string | हाँ | null हो सकता है; माइग्रेशन 4 से पहले दर्ज इतिहास के लिए null |
createdAt | string (date-time) | हाँ | null हो सकता है; माइग्रेशन 4 से पहले दर्ज इतिहास के लिए null |
sourceRevision | integer | हाँ | 1–2147483647; null हो सकता है; पुनर्स्थापित किया गया संशोधन; साधारण प्रतिस्थापन के लिए null |
प्रतिक्रियाएँ: 200, 400, 401, 403, 404, 409, 422, 503, 507
उदाहरण
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/revision?path=$PATH&revision=$REVISION" \
-H "Authorization: Bearer $ARKVORY_TOKEN"फ़ाइल पथ का पिछला संशोधन पुनर्स्थापित करें
POST /api/v1/repositories/{repository}/asset/restore
एक्सेस: रिपॉज़िटरी अनुमति: asset.restore, asset.read, artifact.read; फ़ाइल कुंजियाँ: read, write · पुनः प्रयास: केवल अपेक्षित संशोधन के साथ दोहराएँ (compare-and-swap)
path का नया संशोधन जोड़ता है जो sourceRevision के आर्टिफ़ैक्ट की ओर इंगित करता है; कुछ कॉपी नहीं होता और कोई संशोधन नहीं हटता। expectedRevision वर्तमान संशोधन होना चाहिए (कम से कम 1), अन्यथा 409 revision_mismatch — इसलिए सफल हो चुकी पुनर्स्थापना को दोहराने पर दूसरी पुनर्स्थापना के बजाय 409 मिलता है। नया संशोधन sourceRevision दर्ज करता है, और परिवर्तन उसी ट्रांज़ैक्शन में ऑडिट किया जाता है।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
अनुरोध बॉडी (application/json)
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
path | string | हाँ | — |
sourceRevision | integer | हाँ | 1–2147483647 |
expectedRevision | integer | हाँ | 1–2147483646 |
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
path | string | हाँ | — |
revision | integer | हाँ | 1–2147483647 |
artifactId | string (uuid) | हाँ | — |
प्रतिक्रियाएँ: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
उदाहरण
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/restore" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"path":"<path>","sourceRevision":1,"expectedRevision":1}'पथ से फ़ाइल डाउनलोड करें
GET HEAD /api/v1/repositories/{repository}/asset/content
एक्सेस: रिपॉज़िटरी अनुमति: content.read; फ़ाइल कुंजियाँ: read · पुनः प्रयास: दोहराना सुरक्षित है (पढ़ना)
path को उसके वर्तमान संशोधन में निर्धारित (resolve) करता है और उस आर्टिफ़ैक्ट को downloadArtifact की तरह स्ट्रीम करता है, Range, If-Range, If-None-Match और HEAD के साथ। पथ हर अनुरोध पर निर्धारित होता है, इसलिए लौटाए गए ETag पर सेट If-Range से डाउनलोड जारी रखें: पथ के आगे बढ़ जाने पर उत्तर मिली-जुली फ़ाइल के बजाय पूरी नई फ़ाइल होती है। downloadRawFile वही करता है, पर पथ URL में होता है।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
Range | हेडर | string | नहीं | Single bytes range; multi-range is unsupported. HEAD ignores Range. |
If-Range | हेडर | string | नहीं | Exact strong ETag; a mismatch causes a full response. |
If-None-Match | हेडर | string | नहीं | Matching ETag returns 304, including HEAD. |
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. |
path | क्वेरी | string | हाँ | — |
प्रतिक्रियाएँ: 200, 206, 304, 400, 401, 403, 404, 409, 416, 422, 503, 507
उदाहरण
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/asset/content?path=$PATH" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-o fileएक अनुरोध में किसी पथ पर फ़ाइल अपलोड करें
PUT /api/v1/repositories/{repository}/raw/{assetPath}
एक्सेस: रिपॉज़िटरी अनुमति: upload.create, upload.write, upload.complete, asset.read, asset.write, artifact.read; फ़ाइल कुंजियाँ: write · पुनः प्रयास: दोहराना सुरक्षित है: एक जैसे अनुरोध का प्रभाव एक जैसा होता है
स्क्रिप्ट और CI के लिए (curl -T), किसी भी मीडिया प्रकार की अनुरोध बॉडी को URL के पथ के नए संशोधन के रूप में सहेजता है; उत्तर पथ, संशोधन और आर्टिफ़ैक्ट के साथ 201 है। X-Checksum-Sha256 और Content-Length होने पर बाइट सीधे स्टोरेज में स्ट्रीम होते हैं और सत्यापित किए जाते हैं; इनके बिना उन्हें पहले स्टेजिंग में रखकर हैश किया जाता है (दिए गए चेकसम से बॉडी न मिलने पर 422)। वर्तमान संशोधन के समान बाइट कुछ नहीं जोड़ते और created: false के साथ 200 लौटता है; If-None-Match: * केवल नया पथ बनाने देता है (पहले से मौजूद होने पर 409 already_exists), और उसी पथ पर लिखने वाले समवर्ती लेखक को 409 revision_mismatch मिलता है। बहुत बड़ी फ़ाइलों के लिए पुनः आरंभ योग्य अपलोड सत्र बेहतर हैं।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
assetPath | पथ | string | हाँ | 1–1024 वर्ण; File path; may contain slashes (folders). No empty, "." or ".." segments, backslash or colon. |
X-Checksum-Sha256 | हेडर | string | नहीं | पैटर्न: ^[a-fA-F0-9]{64}$; SHA-256 of the body (64 hex digits); a mismatch stores nothing (422). |
If-None-Match | हेडर | string | नहीं | इनमें से एक: *; "*": store only when the path does not exist yet (409 already_exists). |
अनुरोध बॉडी (application/octet-stream)
प्रतिक्रिया 200
| फ़ील्ड | प्रकार | आवश्यक | नियम |
|---|---|---|---|
path | string | हाँ | — |
revision | integer | हाँ | कम से कम 1 |
created | boolean | हाँ | — |
artifact | object | हाँ | — |
artifact.id | string (uuid) | हाँ | — |
artifact.size | string | हाँ | दशमलव अंकों में पूर्णांक, स्ट्रिंग के रूप में भेजा जाता है |
artifact.sha256 | string | हाँ | SHA-256: 64 लोअरकेस हेक्साडेसिमल अंक |
प्रतिक्रियाएँ: 200, 201, 400, 401, 403, 404, 405, 409, 422, 503, 507
उदाहरण
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/raw/$ASSETPATH" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @fileURL पथ से फ़ाइल डाउनलोड करें
GET HEAD /api/v1/repositories/{repository}/raw/{assetPath}
एक्सेस: रिपॉज़िटरी अनुमति: content.read; फ़ाइल कुंजियाँ: read · पुनः प्रयास: दोहराना सुरक्षित है (पढ़ना)
URL में दिए पथ का वर्तमान संशोधन downloadArtifact की तरह स्ट्रीम करता है, Range, If-Range, If-None-Match, HEAD के साथ, और X-Arkvory-Artifact-Id आर्टिफ़ैक्ट का नाम बताता है। पथ हर अनुरोध पर निर्धारित होता है, इसलिए लौटाए गए ETag पर सेट If-Range से डाउनलोड जारी रखें, या आर्टिफ़ैक्ट को ID से डाउनलोड करें।
पैरामीटर
| नाम | स्थान | प्रकार | आवश्यक | नियम |
|---|---|---|---|---|
repository | पथ | string | हाँ | पैटर्न: ^[a-z0-9][a-z0-9_-]{0,63}$ |
assetPath | पथ | string | हाँ | 1–1024 वर्ण; File path; may contain slashes (folders). No empty, "." or ".." segments, backslash or colon. |
Range | हेडर | string | नहीं | Single bytes range; multi-range is unsupported. HEAD ignores Range. |
If-Range | हेडर | string | नहीं | Exact strong ETag; a mismatch causes a full response. |
If-None-Match | हेडर | string | नहीं | Matching ETag returns 304, including HEAD. |
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. |
प्रतिक्रियाएँ: 200, 206, 304, 400, 401, 403, 404, 409, 416, 422, 503, 507
उदाहरण
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/raw/$ASSETPATH" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-o file