Skip to content

Commit

Permalink
spec: clarify handling regarding Content-type header
Browse files Browse the repository at this point in the history
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
  • Loading branch information
vbatts committed Nov 9, 2021
1 parent b3f631f commit f3a6a75
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,9 @@ Throughout this document, `<reference>` as a tag MUST be at most 128 characters

The client SHOULD include an `Accept` header indicating which manifest content types it supports.
In a successful response, the `Content-Type` header will indicate the type of the returned manifest.
For more information on the use of `Accept` headers and content negotiation, please see [Content Negotiation](./content-negotiation.md)
The `Content-Type` header SHOULD match what the client [pushed as the manifest's `Content-Type`](#pushing-manifests).
If the manifest has a `mediaType` field, clients SHOULD reject unless the `mediaType` field's value matches the type specified by the `Content-Type` header.
For more information on the use of `Accept` headers and content negotiation, please see [Content Negotiation](./content-negotiation.md).

A GET request to an existing manifest URL MUST provide the expected manifest, with a response code that MUST be `200 OK`.
A successful response SHOULD contain the digest of the uploaded blob in the header `Docker-Content-Digest`.
Expand Down Expand Up @@ -386,11 +388,20 @@ it SHOULD return a `202`. This indicates that the upload session has begun and t
To push a manifest, perform a `PUT` request to a path in the following format, and with the following headers
and body:
`/v2/<name>/manifests/<reference>` <sup>[end-7](#endpoints)</sup>

Clients SHOULD set the `Content-Type` header to the type of the manifest being pushed.
All manifests SHOULD include a `mediaType` field declaring the type of the manifest being pushed.
If a manifest includes a `mediaType` field, clients MUST set the `Content-Type` header to the value specified by the `mediaType` field.

```
Content-Type: application/vnd.oci.image.manifest.v1+json
```
Manifest byte stream:
```
<manifest byte stream>
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
...
}
```

`<name>` is the namespace of the repository, and the `<reference>` MUST be either a) a digest or b) a tag.
Expand Down

0 comments on commit f3a6a75

Please sign in to comment.