Merge pull request #12390 from zappy-shu/HUB-5154-images-api

Add initial image dashboard API docs
This commit is contained in:
Usha Mandya 2021-03-22 18:29:26 +00:00 committed by GitHub
commit f38f8a9d77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 556 additions and 0 deletions

View File

@ -1060,6 +1060,8 @@ reference:
title: v1.19 reference
- path: /engine/api/v1.18/
title: v1.18 reference
- title: Docker Hub API
path: /docker-hub/api/latest/
- title: Registry API
path: /registry/spec/api/
- title: Dockerfile reference

22
_layouts/hub-api.html Normal file
View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<title>Docker Hub API {{ page.name | replace: '.md' }} Reference</title>
<!-- needed for adaptive design -->
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Reference documentation and Swagger (OpenAPI) specification for the v{{ page.name | replace: '.md' }} version of the API served by Docker Hub." />
<meta charset="utf-8" />
<!-- favicon -->
<meta name="msapplication-TileImage" content="/favicons/docs@2x.ico" />
<meta property="og:image" content="/favicons/docs@2x.ico" />
<link rel="apple-touch-icon" type="image/x-icon" href="/favicons/docs@2x.ico" sizes="129x128" />
<link rel="icon" type="image/x-icon" href="/favicons/docs@2x.ico" sizes="129x128" />
<link rel="stylesheet" type="text/css" href="/css/api-reference.css" />
<!-- make the latest API version the canonical page as that's what we want users to be using mostly -->
<link rel="canonical" href="https://docs.docker.com/docker-hub/api/latest/" />
</head>
<body>
<redoc spec-url="/docker-hub/api/{{ page.name | replace: '.md'}}.yaml" hide-hostname="false" suppress-warnings="false"></redoc>
<script src="/js/redoc.min.js"></script>
</body>
</html>

3
docker-hub/api/latest.md Normal file
View File

@ -0,0 +1,3 @@
---
layout: hub-api
---

523
docker-hub/api/latest.yaml Normal file
View File

@ -0,0 +1,523 @@
swagger: '2.0'
schemes:
- https
host: hub.docker.com
basePath: "/"
produces:
- application/json
consumes:
- application/json
info:
title: Docker HUB API
version: 'beta'
x-logo:
url: https://docs.docker.com/images/logo-docker-main.png
description: |
Docker Hub is a service provided by Docker for finding and sharing container images with your team.
It is the world's largest library and community for container images.
In addition to the [Docker Hub UI](https://docs.docker.com/docker-hub/) and [Docker Hub CLI tool](https://github.com/docker/hub-tool#readme) (currently experimental),
Docker provides an API that allows you to interact with Docker Hub.
Browse through the Docker Hub API documentation to explore the supported endpoints.
tags:
# Primary objects
- name: Authentication
x-displayName: Authentication
description: |
Most Docker Hub API endpoints require you to authenticate using your Docker credentials.
Additionally, similar to the Docker Hub UI features, API endpoint responses may vary depending on your plan (Free, Pro, or Team) and your account's permissions.
To learn more about the features available in each plan and to upgrade your existing plan, see [Docker Pricing](https://www.docker.com/pricing).
- name: Images
x-displayName: Advanced image management
description: |
The Advanced Image Management API endpoints allow you to manage Docker images across all repositories.
For more information, see [Advanced Image Management dashboard](https://docs.docker.com/docker-hub/image-management/).
definitions:
UsersLoginRequest:
description: User login details
type: object
required: [username, password]
properties:
username:
description: The username of the Docker Hub account to authenticate with.
type: string
example: myusername
password:
description: The password of the Docker Hub account to authenticate with.
type: string
example: hunter2
PostUsersLoginSuccessResponse:
description: successful user login response
type: object
properties:
token:
description: |
Created authentication token.
This token can be used in the HTTP Authentication header as a JWT to authenticate with the Docker Hub APIs.
type: string
x-nullable: false
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
PostUsersLoginErrorResponse:
description: failed user login response.
type: object
properties:
details:
description: Description of the error.
type: string
x-nullable: false
example: Incorrect authentication credentials
ErrorInfo:
description: Context information for an error used for diagnostics.
type: object
properties:
api_call_docker_id:
description: ID of docker user.
type: string
api_call_name:
description: Name of the API operation called.
type: string
api_call_start:
description: Date/time of call start.
type: string
api_call_txnid:
description: Unique ID for this call.
type: string
ErrorResponse:
description: Represents an error.
type: object
properties:
txnid:
description: Unique ID for this call.
type: string
message:
description: The error message.
type: string
errinfo:
$ref: '#/definitions/ErrorInfo'
GetNamespaceRepositoryImagesSummaryResponse:
description: Summary information for images in a repository.
type: object
properties:
active_from:
description: Time from which an image must have been pushed or pulled to be counted as active.
type: string
example: '2021-01-25T14:25:37.076343059Z'
statistics:
type: object
properties:
total:
description: Number of images in this repository.
type: integer
example: 3
active:
description: Number of images counted as active in this repository.
type: integer
example: 2
inactive:
description: Number of images counted as inactive in this repository.
type: integer
example: 1
GetNamespaceRepositoryImagesResponse:
description: Paginated list of images in a repository.
type: object
properties:
count:
description: Total count of images in the repository.
type: integer
example: 100
next:
description: Link to the next page with the same query parameters if there are more images.
type: string
example: https://hub.docker.com/v2/namespaces/mynamespace/repositories/myrepo/images?&page=4&page_size=20
x-nullable: true
previous:
description: Link to the previous page with the same query parameters if not on first page.
type: string
example: https://hub.docker.com/v2/namespaces/mynamespace/repositories/myrepo/images?&page=2&page_size=20
x-nullable: true
results:
type: array
description: Image details.
items:
type: object
properties:
namespace:
description: The repository namespace.
type: string
example: mynamespace
repository:
description: The repository name.
type: string
example: myrepo
digest:
description: The image's digest.
type: string
example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr
tags:
description: The current and historical tags for this image.
type: array
items:
type: object
properties:
tag:
description: The tag.
type: string
example: latest
is_current:
description: |
`true` if the tag currently points to this image.
`false` if it has been overwritten to point at a different image.
type: boolean
example: true
last_pushed:
description: Time when this image was last pushed.
type: string
x-nullable: true
example: '2021-02-24T22:05:27.526308Z'
last_pulled:
description: Time when this image was last pulled. Note this is updated at most once per hour.
type: string
x-nullable: true
example: '2021-02-24T23:16:10.200008Z'
status:
description: The status of the image based on its last activity against the `active_from` time.
type: string
enum: [active, inactive]
example: active
PostNamespacesDeleteImagesRequest:
description: Delete images request.
type: object
properties:
dry_run:
description: If `true` then will check and return errors and unignored warnings for the deletion request but will not delete any images.
type: boolean
example: false
active_from:
description: |
Sets the time from which an image must have been pushed or pulled to be counted as active.
Defaults to 1 month before the current time.
type: string
example: '2020-12-01T12:00:00Z'
manifests:
description: Image manifests to delete.
type: array
items:
type: object
required: [repository, digest]
properties:
repository:
description: Name of the repository to delete the image from.
type: string
example: myrepo
digest:
description: Digest of the image to delete.
type: string
example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr
ignore_warnings:
description: |
Warnings to ignore. If a warning is not ignored then no deletions will happen and the warning is returned in the response.
These warnings include:
* is_active: warning when attempting to delete an image that is marked as active.
* current_tag: warning when attempting to delete an image that has one or more current tags in the repository.
Warnings can be copied from the response to the request.
type: array
items:
type: object
required: [repository, digest, warning]
properties:
repository:
description: Name of the repository of the image to ignore the warning for.
type: string
example: myrepo
digest:
description: Digest of the image to ignore the warning for.
type: string
example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr
warning:
description: Warning to ignore.
type: string
enum: [is_active, current_tag]
example: current_tag
tags:
description: Current tags to ignore.
type: array
items:
type: string
example: latest
PostNamespacesDeleteImagesResponseSuccess:
description: Successful delete images response.
type: object
properties:
dry_run:
description: Whether the request was a dry run or not.
type: boolean
example: false
metrics:
type: object
properties:
manifest_deletes:
description: Number of manifests deleted.
type: integer
example: 3
manifest_errors:
description: Number of manifests that failed to delete.
type: integer
example: 0
tag_deletes:
description: Number of tags deleted.
type: integer
example: 1
tag_errors:
description: Number of tags that failed to delete.
type: integer
example: 0
PostNamespacesDeleteImagesResponseError:
description: Deletion not possible.
type: object
properties:
txnid:
description: Unique ID for this call.
type: string
message:
description: The error message.
type: string
errinfo:
allOf:
- $ref: '#/definitions/ErrorInfo'
- type: object
properties:
type:
description: Type of error.
type: string
example: validation
details:
type: object
properties:
errors:
description: Errors from validating delete request. These cannot be ignored.
type: array
items:
type: object
properties:
repository:
description: Name of the repository of the image that caused the error.
type: string
example: myrepo
digest:
description: Digest of the image that caused the error.
type: string
example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr
error:
description: Error type.
type: string
enum: [not_found, unauthorized, child_manifest]
example: not_found
warnings:
description: |
Warnings that can be ignored.
These warnings include:
* is_active: warning when attempting to delete an image that is marked as active.
* current_tag: warning when attempting to delete an image that has one or more current tags in the repository.
Warnings can be copied from the response to the request.
type: array
items:
type: object
properties:
repository:
description: Name of the repository of the image that caused the warning.
type: string
example: myrepo
digest:
description: Digest of the image that caused the warning.
type: string
example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr
warning:
description: Warning type.
type: string
enum: [is_active, current_tag]
example: current_tag
tags:
description: Current tags if warning is `current_tag`.
type: array
items:
type: string
example: latest
paths:
/v2/users/login:
post:
tags: [Authentication]
summary: Create authentication token
operationId: PostUsersLogin
description: |
Creates an authentication token that can be used to authenticate with the Docker Hub APIs.
The returned token is used in the HTTP Authentication header like `Authentication: JWT {TOKEN}`.
Most Docker Hub APIs require this token either to consume or to get detailed information. For example, to list images in a private repository.
parameters:
- name: body
in: body
description: Login details.
required: true
schema:
$ref: '#/definitions/UsersLoginRequest'
responses:
200:
description: Authentication successful
schema:
$ref: '#/definitions/PostUsersLoginSuccessResponse'
401:
description: Authentication failed
schema:
$ref: '#/definitions/PostUsersLoginErrorResponse'
/v2/namespaces/{namespace}/repositories/{repository}/images-summary:
get:
tags: [Images]
summary: Get summary of repository's images
description: |
Gets the number of images in a repository and the number of images counted as active and inactive.
operationId: GetNamespacesRepositoriesImagesSummary
produces:
- application/json
parameters:
- name: namespace
in: path
required: true
description: Namespace of the repository.
type: string
- name: repository
in: path
required: true
description: Name of the repository.
type: string
- name: active_from
in: query
required: false
description: |
Sets the time from which an image must have been pushed or pulled to be counted as active.
Defaults to 1 month before the current time.
type: string
responses:
200:
description: Success
schema:
$ref: '#/definitions/GetNamespaceRepositoryImagesSummaryResponse'
401:
description: Unauthorized - user does not have read access to the namespace
schema:
$ref: '#/definitions/ErrorResponse'
/v2/namespaces/{namespace}/repositories/{repository}/images:
get:
tags: [Images]
summary: Get details of repository's images
description: Gets details on the images in a repository.
operationId: GetNamespacesRepositoriesImages
produces:
- application/json
parameters:
- name: namespace
in: path
required: true
description: Namespace of the repository.
type: string
- name: repository
in: path
required: true
description: Name of the repository.
type: string
- name: status
in: query
required: false
description: Filters to only show images of this status.
type: string
enum: [active, inactive]
- name: ordering
in: query
required: false
description: |
Orders the results by this property.
Prefixing with `-` sorts by descending order.
type: string
enum: [last_activity, -last_activity, digest, -digest]
- name: active_from
in: query
required: false
description: |
Sets the time from which an image must have been pushed or pulled to be counted as active.
Defaults to 1 month before the current time.
type: string
- name: page
in: query
required: false
description: Page number to get. Defaults to 1.
type: integer
- name: page_size
in: query
required: false
description: Number of images to get per page. Defaults to 10. Max of 100.
type: integer
responses:
200:
description: Success
schema:
$ref: '#/definitions/GetNamespaceRepositoryImagesResponse'
401:
description: Unauthorized - user does not have read access to the namespace
schema:
$ref: '#/definitions/ErrorResponse'
403:
description: Forbidden - this API is only available to users on Pro or Team plans
schema:
$ref: '#/definitions/ErrorResponse'
/v2/namespaces/{namespace}/delete-images:
post:
tags: [Images]
summary: Delete images
operationId: PostNamespacesDeleteImages
description: |
Deletes one or more images within a namespace. This is currently limited to a single repostiory.
If you attempt to delete images that are marked as active or are currently tagged, the deletion does not happen and it displays the warnings.
To continue with the deletion, you must ignore these warnings by putting them in the `ignore_warnings` property.
Deleting a currently tagged image deletes the tag from the repository.
You cannot ignore errors. It is not possible to directly delete children of multi-arch images.
parameters:
- name: namespace
in: path
required: true
description: Namespace of the repository.
type: string
- description: Delete request.
in: body
name: body
required: true
schema:
$ref: '#/definitions/PostNamespacesDeleteImagesRequest'
responses:
200:
description: Deletion completed
schema:
$ref: '#/definitions/PostNamespacesDeleteImagesResponseSuccess'
400:
description: Deletion not possible
schema:
$ref: '#/definitions/PostNamespacesDeleteImagesResponseError'
403:
description: Forbidden - this API is only available to users on Pro or Team plans
schema:
$ref: '#/definitions/ErrorResponse'

View File

@ -0,0 +1,6 @@
---
---
<html>
<head><meta http-equiv="refresh" content="0;url=/docker-hub/api/latest/" /></head>
<body><p>Redirecting to the latest version of the Docker Hub API reference.</body>
</html>