Generic
Reference for storing, retrieving, and operating opaque files through Generic HTTP repositories.
Generic stores arbitrary bytes under a caller-selected path. It currently supports Hosted repositories only. It is an HTTP object repository, not a Maven substitute, archive format, website host, or WebDAV server. A filename such as .jar, .deb, or .zip does not activate package semantics or analysis.
Configuration
generic:
max_object_size: 10GiB
max_inflight_size: 40GiB
repositories:
- name: binaries
type: generic
redeploy: false
generic:
max_object_size: 2GiB
max_inflight_size: 4GiB
The repository override cannot exceed the global limits. Tokens need the generic scope as well as the relevant repository read, publish, or redeploy permission.
HTTP operations
curl -u 'robot:TOKEN' --upload-file ./release.bin \
https://repo.example/repository/generic/binaries/releases/release.bin
curl -u 'robot:TOKEN' -o release.bin \
https://repo.example/repository/generic/binaries/releases/release.bin
curl -u 'robot:TOKEN' --head \
https://repo.example/repository/generic/binaries/releases/release.bin
PUT creates an object and returns 201. Replacement returns 204 only when redeploy is enabled; use If-Match when you need lost-update protection. GET and HEAD return strong SHA-256 ETags. Responses use application/octet-stream and download disposition.
Path rules
- Identity is the repository plus the complete canonical object path. Generic has no package or version identity.
- Paths are UTF-8 and normalized to NFC. Empty segments,
.,.., backslashes, encoded separators, control or invisible formatting characters, and overlong segments are rejected. _craftifact_internalis reserved as the first segment.- A file cannot also be a directory:
aconflicts witha/b. - There is no directory listing or
index.htmlfallback.
Retention
Generic supports min_duration_since_published, max_duration_since_published, and max_duration_since_download. A retention name selector matches the full object path. Version selectors and keep_last values above 0 are invalid because Generic has no version model.
Deliberate exclusions
Generic does not provide Proxy or Group mode, byte ranges, protocol-level DELETE, partial uploads, MIME preservation, WebDAV, website serving, or package resolution. Craftifact does not inspect or unpack Generic objects and does not automatically create SBOMs or run vulnerability, license, secret, provenance, or malware analysis. Missing analysis is never presented as a clean result.
Nexus Raw Hosted repositories can be imported through the Control Plane when the target Craftifact version advertises that capability. Nexus Raw Proxy and Group repositories cannot be imported.