Skip to content

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_internal is reserved as the first segment.
  • A file cannot also be a directory: a conflicts with a/b.
  • There is no directory listing or index.html fallback.

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.