7ced80d6bdfc44bd6c3803ab73de7fdf8f3a4846
Projects/xq/Concepts.md
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | |
| 5 | 5 | ## Concept |
| 6 | 6 | |
| 7 | -- Provide files via static storage (filesystem) |
|
| 7 | +- Provide artifacts (files) via static storage (filesystem) |
|
| 8 | 8 | - Serve files via HTTP(S), Gemini, ... |
| 9 | 9 | - Files are stored in reasonable paths in the file system, either via links or as physical files |
| 10 | 10 | - Artifacts and their paths are managed by the system |
| ... | ... | @@ -13,17 +13,20 @@ |
| 13 | 13 | - The newest artifact will be served without a version appendix, making it easy to provide stable download links for the latest version |
| 14 | 14 | - Nightly/prerelease versions can also be shared as "the latest prerelease" |
| 15 | 15 | - Each artifact will be accompanied by a set of common hashes (md5, sha1, sha256) |
| 16 | + - Artifacts are immutable, no changes after an upload |
|
| 16 | 17 | - Upload of artifacts happens via API tokens |
| 17 | - - Each *upload token* can update exactly a single artifact |
|
| 18 | - - Each *upload token* has an associated *security token* that is used to authenticate the upload |
|
| 19 | - - *upload token* can be PUBLIC |
|
| 20 | - - *security token* must be SECRET |
|
| 21 | - - Upload via HTTPS only, accompanied by a hash of the file for integrity verification |
|
| 22 | -- Artifacts can be accessed either publicly or can be hidden behind an *access token* |
|
| 18 | + - Each **upload token** can update exactly a single artifact |
|
| 19 | + - Each **upload token** has an associated **security token** that is used to authenticate the upload |
|
| 20 | + - **upload token** can be PUBLIC |
|
| 21 | + - **security token** must be SECRET |
|
| 22 | + - Upload via HTTPS only, accompanied by a hash of the file for integrity verification as well as the mime type for the artifact |
|
| 23 | + - If the file version is uploaded the first time, the hashes will be computed and stored |
|
| 24 | + - Second upload will have its hash checked and verified. On mismatch, will return a **HTTP 409 Conflict** |
|
| 25 | +- Artifacts can be accessed either publicly or can be hidden behind an **access token** |
|
| 23 | 26 | - Artifact metadata can be queried (same rules apply as accessing the artifact itself) |
| 24 | 27 | - date of upload |
| 25 | 28 | - hashes/checksums |
| 26 | 29 | - size |
| 27 | -- |
|
| 28 | -- |
|
| 30 | + - mime type |
|
| 31 | + |
|
| 29 | 32 |