diff --git a/docs/spec/api.md b/docs/spec/api.md index aed326e11..d63aea990 100644 --- a/docs/spec/api.md +++ b/docs/spec/api.md @@ -3651,9 +3651,9 @@ The following parameters should be specified on the request: ``` 202 Accepted -Content-Length: 0 Location: /v2//blobs/uploads/ -Range: 0-0 +Range: 0- +Content-Length: 0 Docker-Upload-UUID: ``` @@ -3663,9 +3663,9 @@ The following headers will be returned with the response: |Name|Description| |----|-----------| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| |`Location`|The location of the created upload. Clients should use the contents verbatim to complete the upload, adding parameters where required.| |`Range`|Range header indicating the progress of the upload. When starting an upload, it will return an empty range, since no content has been received.| +|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| |`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| @@ -4379,7 +4379,7 @@ The following parameters should be specified on the request: ###### On Success: Data Accepted ``` -204 No Content +202 Accepted Location: /v2//blobs/uploads/ Range: 0- Content-Length: 0 @@ -4645,7 +4645,7 @@ The following parameters should be specified on the request: ###### On Success: Chunk Accepted ``` -204 No Content +202 Accepted Location: /v2//blobs/uploads/ Range: 0- Content-Length: 0 @@ -4925,7 +4925,7 @@ The following parameters should be specified on the request: ###### On Success: Upload Complete ``` -204 No Content +201 Created Location: Content-Range: - Content-Length: 0 diff --git a/registry/api/v2/descriptors.go b/registry/api/v2/descriptors.go index f2ec769b9..fce0ccda4 100644 --- a/registry/api/v2/descriptors.go +++ b/registry/api/v2/descriptors.go @@ -1043,7 +1043,6 @@ var routeDescriptors = []RouteDescriptor{ Description: "The upload has been created. The `Location` header must be used to complete the upload. The response should be identical to a `GET` request on the contents of the returned `Location` header.", StatusCode: http.StatusAccepted, Headers: []ParameterDescriptor{ - contentLengthZeroHeader, { Name: "Location", Type: "url", @@ -1052,9 +1051,10 @@ var routeDescriptors = []RouteDescriptor{ }, { Name: "Range", - Format: "0-0", + Format: "0-", Description: "Range header indicating the progress of the upload. When starting an upload, it will return an empty range, since no content has been received.", }, + contentLengthZeroHeader, dockerUploadUUIDHeader, }, }, @@ -1237,7 +1237,7 @@ var routeDescriptors = []RouteDescriptor{ { Name: "Data Accepted", Description: "The stream of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.", - StatusCode: http.StatusNoContent, + StatusCode: http.StatusAccepted, Headers: []ParameterDescriptor{ { Name: "Location", @@ -1319,7 +1319,7 @@ var routeDescriptors = []RouteDescriptor{ { Name: "Chunk Accepted", Description: "The chunk of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.", - StatusCode: http.StatusNoContent, + StatusCode: http.StatusAccepted, Headers: []ParameterDescriptor{ { Name: "Location", @@ -1413,7 +1413,7 @@ var routeDescriptors = []RouteDescriptor{ { Name: "Upload Complete", Description: "The upload has been completed and accepted by the registry. The canonical location will be available in the `Location` header.", - StatusCode: http.StatusNoContent, + StatusCode: http.StatusCreated, Headers: []ParameterDescriptor{ { Name: "Location",