# OCI blob

> Tag 1: the server asks the client for a blob of an image the client holds, by digest, when its registry lacks it; the client answers with the bytes in zero or more channel responses; the server verifies the whole against the digest before it stores it.

Canonical: https://provider.diverge.network/2.3.0/endpoints/containers-tools-run/server/oci-blob/
Specification revision: 2.3.0

The server opens this channel when the image of the request is of
kind `client` and its registry does not hold a blob that the pull
requires: a config or a layer.

- **When.** Between the request and the deploy, and at most once per
  digest per run.
- **The request.** The tag byte `1` followed by the digest as JSON.
  [Request](/2.3.0/endpoints/containers-tools-run/server/oci-blob/request/) states its form.
- **The response.** The bytes of the blob in zero or more channel
  responses and the channel response finish.
  [Response](/2.3.0/endpoints/containers-tools-run/server/oci-blob/response/) states the
  sequence.
- **Verification.** The server computes the digest of the bytes
  concatenated and stores and serves them only when it equals the
  digest asked for. A blob that ends short, and bytes that do not
  match, are not stored and are the run's error. The server serves
  every range the runtime asks for from its store, never from a
  further ask.
