docs/content/reference/api/hub/latest.yaml

3310 lines
100 KiB
YAML

# yaml-language-server: $schema=https://raw.githubusercontent.com/OAI/OpenAPI-Specification/refs/heads/main/schemas/v3.0/schema.yaml
openapi: 3.0.3
info:
title: Docker HUB API
version: 2-beta
x-logo:
url: https://docs.docker.com/assets/images/logo-docker-main.png
href: /reference
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.
servers:
- description: Docker HUB API
x-audience: public
url: https://hub.docker.com
tags:
- name: changelog
x-displayName: Changelog
description: |
See the [Changelog](/reference/api/hub/latest-changelog) for a summary of changes across Docker Hub API versions.
- name: resources
x-displayName: Resources
description: |
The following resources are available to interact with the documented API:
- [Docker Hub CLI tool](https://github.com/docker/hub-tool#readme) (currently experimental)
- name: rate-limiting
x-displayName: Rate Limiting
description: |
The Docker Hub API is limited on the amount of requests you can perform per minute against it.
If you haven't hit the limit, each request to the API will return the following headers in the response.
- `X-RateLimit-Limit` - The limit of requests per minute.
- `X-RateLimit-Remaining` - The remaining amount of calls within the limit period.
- `X-RateLimit-Reset` - The unix timestamp of when the remaining resets.
If you have hit the limit, you will receive a response status of `429` and the `X-Retry-After` header in the response.
The `X-Retry-After` header is a unix timestamp of when you can call the API again.
**Note**: These rate limits are separate from anti-abuse and Docker Hub download, or pull rate limiting.
To learn more about Docker Hub pull rate limiting, see [Usage and limits](https://docs.docker.com/docker-hub/usage/).
- name: authentication
x-displayName: Authentication
description: |
Most Docker Hub API endpoints require you to authenticate using your Docker credentials before using them.
Additionally, similar to the Docker Hub UI features, API endpoint responses may vary depending on your plan (Personal, 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).
# Types
The Docker Hub API supports the following authentication types.
You must use each authentication type with the [Create access token](#tag/authentication-api/operation/AuthCreateAccessToken) route to obtain a bearer token.
## Password
Using a username and password is the most powerful, yet least secure way
to authenticate with Docker as a user. It allows access to resources
for the user without scopes.
_In general, it is recommended to use a personal access token (PAT) instead._
_**The password authentication type is not available if your organization has SSO enforced.**_
## Personal Access Token (PAT)
Using a username and PAT is the most secure way to authenticate with
Docker as a user. PATs are scoped to specific resources and scopes.
Currently, a PAT is a more secure password due to limited functionality.
In the future, we may add fine-grained access like organization
access tokens for enhanced usage and security.
## Organization Access Token (OAT)
Organization access tokens are scoped to specific resources and scopes
in an organization. They are managed by organization owners.
These tokens are meant for automation and are not meant to be used by
users.
# Labels
These labels will show up on routes in this reference that allow for use of bearer
tokens issued from them.
<span class="pat"></span>
<span class="oat"></span>
- name: authentication-api
x-displayName: Authentication
description: |
The authentication endpoints allow you to authenticate with Docker Hub APIs.
For more information, see [Authentication](#tag/authentication).
- name: access-tokens
x-displayName: Personal Access Tokens
description: |
The Personal Access Token endpoints lets you manage personal access tokens. For more information, see [Access Tokens](https://docs.docker.com/security/for-developers/access-tokens/).
You can use a personal access token instead of a password in the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/) or in the [Create an authentication token](#operation/PostUsersLogin) route to obtain a bearer token.
### Scopes
For each scope grouping (in this case "repo"), you only need to define 1 scope as any lower scopes are assumed.
For example: If you define `repo:write`, the API assumes the scope of both `repo:read` *and* `repo:public_read` as well.
If you were to define both `repo:write` *and* `repo:read`, then `repo:read` is assumed by `repo:write` and ignored.
***Treat your personal access token like your password and keep it secret. You cannot retrieve your token after it is generated.***
- name: audit-logs
x-displayName: Audit Logs
description: |
The Audit Logs API endpoints allow you to query audit log events across a namespace.
For more information, see [Audit Logs](https://docs.docker.com/admin/organization/activity-logs/).
- name: org-settings
x-displayName: Org Settings
description: |
The Org Settings API endpoints allow you to manage your organization's settings.
- name: repositories
x-displayName: Repositories
description: |
The repository endpoints allow you to access your repository's tags.
- name: orgs
x-displayName: Organizations
x-audience: public
description: |
The organization endpoints allow you to interact with and manage your organizations.
For more information, see [Organization administration overview](https://docs.docker.com/admin/organization/).
- name: groups
x-displayName: Groups (Teams)
x-audience: public
description: |
The groups endpoints allow you to manage your organization's teams and their members.
For more information, seee [Create and manage a team](https://docs.docker.com/admin/organization/manage-a-team/).
- name: invites
x-displayName: Invites
x-audience: public
description: |
The invites endpoints allow you to manage invites for users to join your Docker organization.
For more information, see [Invite members](https://docs.docker.com/admin/organization/members/#invite-members).
- name: scim
x-displayName: SCIM
x-audience: public
description: |
SCIM is a provisioning system that lets you manage users within your identity provider (IdP).
For more information, see [System for Cross-domain Identity management](https://docs.docker.com/security/for-admins/provisioning/scim/).
- name: org-access-tokens
x-displayName: Organization Access Tokens
x-audience: public
description: |
The organization access token endpoints allow you to manage organization access tokens (OATs). See [Organization access tokens](https://docs.docker.com/security/for-admins/access-tokens/) for more information.
paths:
/v2/users/login:
post:
tags:
- authentication-api
summary: Create an authentication token
operationId: PostUsersLogin
security: []
deprecated: true
description: |
Creates and returns a bearer token in JWT format that you can use to authenticate with Docker Hub APIs.
The returned token is used in the HTTP Authorization header like `Authorization: Bearer {TOKEN}`.
_**As of September 16, 2024, this route requires a personal access token (PAT) instead of a password if your organization has SSO enforced.**_
<div style="background-color:rgb(255, 165, 0, .25); padding:5px; border-radius:4px">
<strong>Deprecated</strong>: Use [<a href="#tag/authentication-api/operation/AuthCreateAccessToken">Create access token</a>] instead.
</div>
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UsersLoginRequest"
description: Login details.
required: true
responses:
"200":
description: Authentication successful
content:
application/json:
schema:
$ref: "#/components/schemas/PostUsersLoginSuccessResponse"
"401":
description: Authentication failed or second factor required
content:
application/json:
schema:
$ref: "#/components/schemas/PostUsersLoginErrorResponse"
/v2/users/2fa-login:
post:
tags:
- authentication-api
summary: Second factor authentication
operationId: PostUsers2FALogin
security: []
description: |
When a user has two-factor authentication (2FA) enabled, this is the second call to perform after `/v2/users/login` call.
Creates and returns a bearer token in JWT format that you can use to authenticate with Docker Hub APIs.
The returned token is used in the HTTP Authorization header like `Authorization: Bearer {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.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Users2FALoginRequest"
description: Login details.
required: true
responses:
"200":
description: Authentication successful
content:
application/json:
schema:
$ref: "#/components/schemas/PostUsersLoginSuccessResponse"
"401":
description: Authentication failed
content:
application/json:
schema:
$ref: "#/components/schemas/PostUsers2FALoginErrorResponse"
/v2/auth/token:
post:
tags:
- authentication-api
security: []
summary: Create access token
operationId: AuthCreateAccessToken
description: |
Creates and returns a short-lived access token in JWT format for use as a bearer when calling Docker APIs.
If successful, the access token returned should be used in the HTTP Authorization header like
`Authorization: Bearer {access_token}`.
_**If your organization has SSO enforced, you must use a personal access token (PAT) instead of a password.**_
requestBody:
content:
application/json:
schema:
description: Request to create access token
type: object
required:
- identifier
- secret
properties:
identifier:
description: |
The identifier of the account to create an access token for. If using a password or personal access token,
this must be a username. If using an organization access token, this must be an organization name.
type: string
example: myusername
secret:
description: |
The secret of the account to create an access token for. This can be a password, personal access token, or
organization access token.
type: string
example: dckr_pat_124509ugsdjga93
responses:
"200":
description: Token created
content:
application/json:
schema:
$ref: "#/components/schemas/AuthCreateTokenResponse"
"401":
description: Authentication failed
$ref: "#/components/responses/unauthorized"
/v2/access-tokens:
post:
summary: Create personal access token
description: Creates and returns a personal access token.
tags:
- access-tokens
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/createAccessTokenRequest"
required: true
responses:
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/createAccessTokensResponse"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
get:
summary: List personal access tokens
description: Returns a paginated list of personal access tokens.
tags:
- access-tokens
security:
- bearerAuth: []
parameters:
- in: query
name: page
schema:
type: number
default: 1
- in: query
name: page_size
schema:
type: number
default: 10
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/getAccessTokensResponse"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
/v2/access-tokens/{uuid}:
parameters:
- in: path
name: uuid
required: true
schema:
type: string
patch:
summary: Update personal access token
description: |
Updates a personal access token partially. You can either update the token's label or enable/disable it.
tags:
- access-tokens
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/patchAccessTokenRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/patchAccessTokenResponse"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
get:
summary: Get personal access token
description: Returns a personal access token by UUID.
tags:
- access-tokens
security:
- bearerAuth: []
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/accessToken"
- type: object
properties:
token:
type: string
example: ""
"401":
$ref: "#/components/responses/Unauthorized"
"404":
$ref: "#/components/responses/NotFound"
delete:
summary: Delete personal access token
description: |
Deletes a personal access token permanently. This cannot be undone.
tags:
- access-tokens
security:
- bearerAuth: []
responses:
"204":
description: A successful response.
"401":
$ref: "#/components/responses/Unauthorized"
"404":
$ref: "#/components/responses/NotFound"
/v2/auditlogs/{account}/actions:
get:
summary: List audit log actions
description: |
List audit log actions for a namespace to be used as a filter for querying audit log events.
<span class="oat"></span>
operationId: AuditLogs_ListAuditActions
security:
- bearerAuth: []
responses:
"200":
description: A successful response.
content:
application/json:
schema:
$ref: "#/components/schemas/GetAuditActionsResponse"
examples:
response:
value:
actions:
org:
actions:
- name: team.create
description: contains team create events
label: Team Created
- name: team.delete
description: contains team delete events
label: Team Deleted
- name: team.member.add
description: contains team member add events
label: Team Member Added
- name: team.member.remove
description: contains team member remove events
label: Team Member Removed
- name: team.member.invite
description: contains team member invite events
label: Team Member Invited
- name: member.removed
description: contains org member remove events
label: Organization Member Removed
- name: create
description: contains organization create events
label: Organization Created
label: Organization
repo:
actions:
- name: create
description: contains repository create events
label: Repository Created
- name: delete
description: contains repository delete events
label: Repository Deleted
- name: change_privacy
description: contains repository privacy change events
label: Privacy Changed
- name: tag.push
description: contains image tag push events
label: Tag Pushed
- name: tag.delete
description: contains image tag delete events
label: Tag Deleted
label: Repository
"429":
description: ""
content:
application/json:
schema: {}
examples:
response:
value:
detail: Rate limit exceeded
error: false
"500":
description: ""
content:
application/json:
schema: {}
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: "#/components/schemas/rpcStatus"
parameters:
- name: account
description: Namespace to query audit log actions for.
in: path
required: true
schema:
type: string
tags:
- audit-logs
/v2/auditlogs/{account}:
get:
summary: List audit log events
description: |
List audit log events for a given namespace.
<span class="oat"></span>
operationId: AuditLogs_ListAuditLogs
security:
- bearerAuth: []
responses:
"200":
description: A successful response.
content:
application/json:
schema:
$ref: "#/components/schemas/GetAuditLogsResponse"
examples:
response:
value:
logs:
- account: docker
action: repo.tag.push
name: docker/example
actor: docker
data:
digest: sha256:c1ae9c435032a276f80220c7d9b40f76266bbe79243d34f9cda30b76fe114dfa
tag: latest
timestamp: "2021-02-19T01:34:35Z"
action_description: |
pushed the tag latest with the digest sha256:c1ae9c435032a to the repository docker/example
"429":
description: ""
content:
application/json:
schema: {}
examples:
response:
value:
detail: Rate limit exceeded
error: false
"500":
description: ""
content:
application/json:
schema: {}
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: "#/components/schemas/rpcStatus"
parameters:
- name: account
description: Namespace to query audit logs for.
in: path
required: true
schema:
type: string
- name: action
description: |
action name one of ["repo.tag.push", ...]. Optional parameter to filter specific audit log actions.
in: query
required: false
schema:
type: string
- name: name
description: |
name. Optional parameter to filter audit log events to a specific name. For repository events, this is the name of the repository. For organization events, this is the name of the organization. For team member events, this is the username of the team member.
in: query
required: false
schema:
type: string
- name: actor
description: |
actor name. Optional parameter to filter audit log events to the specific user who triggered the event.
in: query
required: false
schema:
type: string
- name: from
description: Start of the time window you wish to query audit events for.
in: query
required: false
schema:
type: string
format: date-time
- name: to
description: End of the time window you wish to query audit events for.
in: query
required: false
schema:
type: string
format: date-time
- name: page
description: page - specify page number. Page number to get.
in: query
required: false
schema:
type: integer
format: int32
default: 1
- name: page_size
description: page_size - specify page size. Number of events to return per page.
in: query
required: false
schema:
type: integer
format: int32
default: 25
tags:
- audit-logs
/v2/orgs/{name}/settings:
parameters:
- in: path
name: name
description: Name of the organization.
required: true
schema:
type: string
get:
summary: Get organization settings
description: |
Returns organization settings by name.
tags:
- org-settings
security:
- bearerAuth: []
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/orgSettings"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
put:
summary: Update organization settings
description: |
Updates an organization's settings. Some settings are only used when the organization is on a business plan.
***Only users with administrative privileges for the organization (owner role) can modify these settings.***
The following settings are only used on a business plan:
- `restricted_images`
tags:
- org-settings
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
required:
- restricted_images
properties:
restricted_images:
allOf:
- $ref: "#/components/schemas/restricted_images"
- type: object
required:
- enabled
- allow_official_images
- allow_verified_publishers
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/orgSettings"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
/v2/orgs/{name}/access-tokens:
post:
summary: Create access token
description: |
Create an access token for an organization.
tags:
- org-access-tokens
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/createOrgAccessTokenRequest"
required: true
responses:
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/createOrgAccessTokenResponse"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
get:
summary: List access tokens
description: |
List access tokens for an organization.
tags:
- org-access-tokens
security:
- bearerAuth: []
parameters:
- in: query
name: page
schema:
type: number
default: 1
- in: query
name: page_size
schema:
type: number
default: 10
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/getOrgAccessTokensResponse"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
/v2/orgs/{org_name}/access-tokens/{access_token_id}:
parameters:
- $ref: "#/components/parameters/org_name"
- in: path
name: access_token_id
required: true
schema:
type: string
description: The ID of the access token to retrieve
example: "a7a5ef25-8889-43a0-8cc7-f2a94268e861"
get:
summary: Get access token
description: |
Get details of a specific access token for an organization.
tags:
- org-access-tokens
security:
- bearerAuth: []
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/getOrgAccessTokenResponse"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
patch:
summary: Update access token
description: |
Update a specific access token for an organization.
tags:
- org-access-tokens
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/updateOrgAccessTokenRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/updateOrgAccessTokenResponse"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
delete:
summary: Delete access token
description: |
Delete a specific access token for an organization. This action cannot be undone.
tags:
- org-access-tokens
security:
- bearerAuth: []
responses:
"204":
description: Access token deleted successfully
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
/v2/namespaces/{namespace}/repositories/{repository}/tags:
parameters:
- $ref: "#/components/parameters/namespace"
- $ref: "#/components/parameters/repository"
get:
summary: List repository tags
tags:
- repositories
security:
- bearerAuth: []
parameters:
- in: query
name: page
required: false
schema:
type: integer
description: Page number to get. Defaults to 1.
- in: query
name: page_size
required: false
schema:
type: integer
description: Number of items to get per page. Defaults to 10. Max of 100.
responses:
"200":
$ref: "#/components/responses/list_tags"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
head:
summary: Check repository tags
tags:
- repositories
security:
- bearerAuth: []
responses:
"200":
description: Repository contains tags
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
/v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}:
parameters:
- $ref: "#/components/parameters/namespace"
- $ref: "#/components/parameters/repository"
- $ref: "#/components/parameters/tag"
get:
summary: Read repository tag
tags:
- repositories
security:
- bearerAuth: []
responses:
"200":
$ref: "#/components/responses/get_tag"
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
head:
summary: Check repository tag
tags:
- repositories
security:
- bearerAuth: []
responses:
"200":
description: Repository tag exists
"403":
$ref: "#/components/responses/Forbidden"
"404":
$ref: "#/components/responses/NotFound"
/v2/orgs/{org_name}/members:
parameters:
- $ref: "#/components/parameters/org_name"
- $ref: "#/components/parameters/search"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/page_size"
- $ref: "#/components/parameters/invites"
- $ref: "#/components/parameters/type"
- $ref: "#/components/parameters/role"
get:
summary: List org members
description: |
Returns a list of members for an organization.
_The following fields are only visible to orgs with insights enabled._
- `last_logged_in_at`
- `last_seen_at`
- `last_desktop_version`
To make visible, please see [View Insights for organization users](https://docs.docker.com/admin/organization/insights/#view-insights-for-organization-users).
<span class="oat"></span>
tags:
- orgs
security:
- bearerAuth: []
responses:
"200":
description: List of members
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/org_member_paginated"
"400":
$ref: "#/components/responses/bad_request"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/orgs/{org_name}/members/export:
parameters:
- $ref: "#/components/parameters/org_name"
get:
summary: Export org members CSV
description: |
Export members of an organization as a CSV
<span class="oat"></span>
tags:
- orgs
security:
- bearerAuth: []
responses:
"200":
description: Exported members
content:
text/csv:
schema:
type: array
items:
type: object
required:
- Name
- Username
- Email
- Type
- Role
- Date Joined
properties:
Name:
type: string
description: First and last name of the member
Username:
type: string
description: Username of the member
Email:
type: string
description: Email address of the member
Type:
type: string
description: Type of the member
enum:
- Invitee
- User
Permission:
type: string
description: Permission of the member
enum:
- Owner
- Member
Teams:
type: string
description: Comma-separated list of teams the member is part of
example: team-1, team-2
Date Joined:
type: string
description: Date the member joined the organization
example: 2020-01-01 15:00:51.193355 +0000 UTC
headers:
Content-Disposition:
schema:
type: string
example: attachment;filename="{org_name}-members-{timestamp}.csv"
"400":
$ref: "#/components/responses/bad_request"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/orgs/{org_name}/members/{username}:
x-audience: public
parameters:
- $ref: "#/components/parameters/org_name"
- $ref: "#/components/parameters/username"
put:
summary: Update org member (role)
description: |
Updates the role of a member in the organization.
***Only users in the "owners" group of the organization can use this endpoint.***
<span class="oat"></span>
tags:
- orgs
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
required:
- role
properties:
role:
type: string
description: Role of the member
enum:
- owner
- editor
- member
responses:
"200":
description: Member role updated
content:
application/json:
schema:
$ref: "#/components/schemas/org_member"
"400":
$ref: "#/components/responses/bad_request"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
delete:
summary: Remove member from org
description: |
Removes the member from the org, ie. all groups in the org, unless they're the last owner
<span class="oat"></span>
tags:
- orgs
security:
- bearerAuth: []
responses:
"204":
description: Member removed successfully
"400":
$ref: "#/components/responses/bad_request"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/orgs/{org_name}/invites:
x-audience: public
parameters:
- $ref: "#/components/parameters/org_name"
get:
summary: List org invites
description: |
Return all pending invites for a given org, only team owners can call this endpoint
<span class="oat"></span>
tags:
- invites
security:
- bearerAuth: []
responses:
"200":
description: ""
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/invite"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/orgs/{org_name}/groups:
x-audience: public
parameters:
- $ref: "#/components/parameters/org_name"
get:
summary: Get groups of an organization
description: |
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
parameters:
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/page_size"
- in: query
name: username
schema:
type: string
description: Get groups for the specified username in the organization.
- in: query
name: search
schema:
type: string
description: Get groups for the specified group in the organization.
responses:
"200":
description: ""
content:
application/json:
schema:
properties:
count:
type: number
example: 1
next:
type: string
example: null
previous:
type: string
example: null
results:
type: array
items:
$ref: "#/components/schemas/org_group"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
post:
summary: Create a new group
description: |
Create a new group within an organization.
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
required:
- name
properties:
name:
type: string
description:
type: string
responses:
"201":
description: Group created successfully
content:
application/json:
schema:
$ref: "#/components/schemas/org_group"
"400":
$ref: "#/components/responses/bad_request"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
/v2/orgs/{org_name}/groups/{group_name}:
x-audience: public
parameters:
- $ref: "#/components/parameters/org_name"
- $ref: "#/components/parameters/group_name"
get:
summary: Get a group of an organization
description: |
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/org_group"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
put:
summary: Update the details for an organization group
description: |
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
required:
- name
properties:
name:
type: string
description:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/org_group"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
patch:
summary: Update some details for an organization group
description: |
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
properties:
name:
type: string
description:
type: string
responses:
"200":
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/org_group"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
delete:
summary: Delete an organization group
description: |
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
responses:
"204":
description: Group deleted successfully
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/orgs/{org_name}/groups/{group_name}/members:
x-audience: public
get:
security:
- bearerAuth: []
parameters:
- $ref: "#/components/parameters/org_name"
- $ref: "#/components/parameters/group_name"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/page_size"
- in: query
name: search
schema:
type: string
description: Search members by username, full_name or email.
summary: List members of a group
description: |
List the members (users) that are in a group.
If user is owner of the org or has otherwise elevated permissions, they can search by email and the result will also contain emails.
<span class="oat"></span>
tags:
- groups
responses:
"200":
description: ""
content:
application/json:
schema:
properties:
count:
type: number
example: 1
next:
type: string
example: null
previous:
type: string
example: null
results:
type: array
items:
$ref: "#/components/schemas/group_member"
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
post:
parameters:
- $ref: "#/components/parameters/org_name"
- $ref: "#/components/parameters/group_name"
summary: Add a member to a group
description: |
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
requestBody:
$ref: "#/components/requestBodies/add_member_to_org_group"
responses:
"200":
description: OK
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
"500":
$ref: "#/components/responses/internal_error"
/v2/orgs/{org_name}/groups/{group_name}/members/{username}:
x-audience: public
parameters:
- $ref: "#/components/parameters/org_name"
- $ref: "#/components/parameters/group_name"
- $ref: "#/components/parameters/username"
delete:
summary: Remove a user from a group
description: |
<span class="oat"></span>
tags:
- groups
security:
- bearerAuth: []
responses:
"204":
description: User removed successfully
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/invites/{id}:
x-audience: public
parameters:
- in: path
name: id
required: true
schema:
type: string
delete:
summary: Cancel an invite
description: |
Mark the invite as cancelled so it doesn't show up on the list of pending invites
<span class="oat"></span>
tags:
- invites
security:
- bearerAuth: []
responses:
"204":
description: ""
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/invites/{id}/resend:
x-audience: public
parameters:
- in: path
name: id
schema:
type: string
required: true
patch:
summary: Resend an invite
description: |
Resend a pending invite to the user, any org owner can resend an invite
<span class="oat"></span>
tags:
- invites
security:
- bearerAuth: []
responses:
"204":
description: ""
"401":
$ref: "#/components/responses/unauthorized"
"403":
$ref: "#/components/responses/forbidden"
"404":
$ref: "#/components/responses/not_found"
/v2/invites/bulk:
x-audience: public
parameters:
- $ref: "#/components/parameters/bulk_invite"
post:
summary: Bulk create invites
description: |
Create multiple invites by emails or DockerIDs. Only a team owner can create invites.
<span class="oat"></span>
tags:
- invites
requestBody:
$ref: "#/components/requestBodies/bulk_invite_request"
security:
- bearerAuth: []
responses:
"202":
description: Accepted
content:
application/json:
schema:
type: object
properties:
invitees:
$ref: "#/components/schemas/bulk_invite"
"400":
$ref: "#/components/responses/bad_request"
"409":
$ref: "#/components/responses/conflict"
/v2/scim/2.0/ServiceProviderConfig:
x-audience: public
get:
summary: Get service provider config
description: |
Returns a service provider config for Docker's configuration.
tags:
- scim
security:
- bearerSCIMAuth: []
responses:
"200":
$ref: "#/components/responses/scim_get_service_provider_config_resp"
"401":
$ref: "#/components/responses/scim_unauthorized"
"500":
$ref: "#/components/responses/scim_error"
/v2/scim/2.0/ResourceTypes:
x-audience: public
get:
summary: List resource types
description: |
Returns all resource types supported for the SCIM configuration.
tags:
- scim
security:
- bearerSCIMAuth: []
responses:
"200":
$ref: "#/components/responses/scim_get_resource_types_resp"
"401":
$ref: "#/components/responses/scim_unauthorized"
"500":
$ref: "#/components/responses/scim_error"
/v2/scim/2.0/ResourceTypes/{name}:
x-audience: public
get:
summary: Get a resource type
description: |
Returns a resource type by name.
tags:
- scim
parameters:
- name: name
in: path
schema:
type: string
example: User
required: true
security:
- bearerSCIMAuth: []
responses:
"200":
$ref: "#/components/responses/scim_get_resource_type_resp"
"401":
$ref: "#/components/responses/scim_unauthorized"
"404":
$ref: "#/components/responses/scim_not_found"
"500":
$ref: "#/components/responses/scim_error"
/v2/scim/2.0/Schemas:
x-audience: public
get:
summary: List schemas
description: |
Returns all schemas supported for the SCIM configuration.
tags:
- scim
security:
- bearerSCIMAuth: []
responses:
"200":
$ref: "#/components/responses/scim_get_schemas_resp"
"401":
$ref: "#/components/responses/scim_unauthorized"
"500":
$ref: "#/components/responses/scim_error"
/v2/scim/2.0/Schemas/{id}:
x-audience: public
get:
summary: Get a schema
description: |
Returns a schema by ID.
tags:
- scim
parameters:
- name: id
in: path
schema:
type: string
example: urn:ietf:params:scim:schemas:core:2.0:User
required: true
security:
- bearerSCIMAuth: []
responses:
"200":
$ref: "#/components/responses/scim_get_schema_resp"
"401":
$ref: "#/components/responses/scim_unauthorized"
"404":
$ref: "#/components/responses/scim_not_found"
"500":
$ref: "#/components/responses/scim_error"
/v2/scim/2.0/Users:
x-audience: public
get:
summary: List users
description: |
Returns paginated users for an organization. Use `startIndex` and `count` query parameters to receive paginated results.
**Sorting:**
Sorting allows you to specify the order in which resources are returned by specifying a combination of `sortBy` and `sortOrder` query parameters.
The `sortBy` parameter specifies the attribute whose value will be used to order the returned responses. The `sortOrder` parameter defines the order in which the `sortBy` parameter is applied. Allowed values are "ascending" and "descending".
**Filtering:**
You can request a subset of resources by specifying the `filter` query parameter containing a filter expression. Attribute names and attribute operators used in filters are case insensitive. The filter parameter must contain at least one valid expression. Each expression must contain an attribute name followed by an attribute operator and an optional value.
Supported operators are listed below.
- `eq` equal
- `ne` not equal
- `co` contains
- `sw` starts with
- `and` Logical "and"
- `or` Logical "or"
- `not` "Not" function
- `()` Precedence grouping
tags:
- scim
security:
- bearerSCIMAuth: []
parameters:
- name: startIndex
in: query
schema:
type: integer
minimum: 1
description: ""
example: 1
- name: count
in: query
schema:
type: integer
minimum: 1
maximum: 200
description: ""
example: 10
- name: filter
in: query
schema:
type: string
description: ""
example: userName eq "jon.snow@docker.com"
- $ref: "#/components/parameters/scim_attributes"
- name: sortOrder
in: query
schema:
type: string
enum:
- ascending
- descending
- name: sortBy
in: query
schema:
type: string
description: User attribute to sort by.
example: userName
responses:
"200":
$ref: "#/components/responses/scim_get_users_resp"
"400":
$ref: "#/components/responses/scim_bad_request"
"401":
$ref: "#/components/responses/scim_unauthorized"
"403":
$ref: "#/components/responses/scim_forbidden"
"404":
$ref: "#/components/responses/scim_not_found"
"500":
$ref: "#/components/responses/scim_error"
post:
summary: Create user
description: |
Creates a user. If the user already exists by email, they are assigned to the organization on the "company" team.
tags:
- scim
security:
- bearerSCIMAuth: []
requestBody:
$ref: "#/components/requestBodies/scim_create_user_request"
responses:
"201":
$ref: "#/components/responses/scim_create_user_resp"
"400":
$ref: "#/components/responses/scim_bad_request"
"401":
$ref: "#/components/responses/scim_unauthorized"
"403":
$ref: "#/components/responses/scim_forbidden"
"404":
$ref: "#/components/responses/scim_not_found"
"409":
$ref: "#/components/responses/scim_conflict"
"500":
$ref: "#/components/responses/scim_error"
/v2/scim/2.0/Users/{id}:
x-audience: public
parameters:
- $ref: "#/components/parameters/scim_user_id"
get:
summary: Get a user
description: |
Returns a user by ID.
tags:
- scim
security:
- bearerSCIMAuth: []
responses:
"200":
$ref: "#/components/responses/scim_get_user_resp"
"400":
$ref: "#/components/responses/scim_bad_request"
"401":
$ref: "#/components/responses/scim_unauthorized"
"403":
$ref: "#/components/responses/scim_forbidden"
"404":
$ref: "#/components/responses/scim_not_found"
"500":
$ref: "#/components/responses/scim_error"
put:
summary: Update a user
description: |
Updates a user. This route is used to change the user's name, activate, and deactivate the user.
tags:
- scim
security:
- bearerSCIMAuth: []
requestBody:
$ref: "#/components/requestBodies/scim_update_user_request"
responses:
"200":
$ref: "#/components/responses/scim_update_user_resp"
"400":
$ref: "#/components/responses/scim_bad_request"
"401":
$ref: "#/components/responses/scim_unauthorized"
"403":
$ref: "#/components/responses/scim_forbidden"
"404":
$ref: "#/components/responses/scim_not_found"
"409":
$ref: "#/components/responses/scim_conflict"
"500":
$ref: "#/components/responses/scim_error"
components:
responses:
BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ValueError"
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
NotFound:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
list_tags:
description: list repository tags
content:
application/json:
schema:
$ref: "#/components/schemas/paginated_tags"
get_tag:
description: repository tag
content:
application/json:
schema:
$ref: "#/components/schemas/tag"
bad_request:
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/error"
unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/error"
forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/error"
not_found:
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/error"
conflict:
description: Conflict
content:
application/json:
schema:
$ref: "#/components/schemas/error"
internal_error:
description: Internal
content:
application/json:
schema:
$ref: "#/components/schemas/error"
scim_bad_request:
description: Bad Request
content:
application/scim+json:
schema:
allOf:
- $ref: "#/components/schemas/scim_error"
- properties:
status:
example: "400"
scimType:
type: string
description: Some types of errors will return this per the specification.
scim_unauthorized:
description: Unauthorized
content:
application/scim+json:
schema:
allOf:
- $ref: "#/components/schemas/scim_error"
- properties:
status:
example: "401"
scim_forbidden:
description: Forbidden
content:
application/scim+json:
schema:
allOf:
- $ref: "#/components/schemas/scim_error"
- properties:
status:
example: "403"
scim_not_found:
description: Not Found
content:
application/scim+json:
schema:
allOf:
- $ref: "#/components/schemas/scim_error"
- properties:
status:
example: "404"
scim_conflict:
description: Conflict
content:
application/scim+json:
schema:
allOf:
- $ref: "#/components/schemas/scim_error"
- properties:
status:
example: "409"
scim_error:
description: Internal Error
content:
application/scim+json:
schema:
allOf:
- $ref: "#/components/schemas/scim_error"
- properties:
status:
example: "500"
scim_get_service_provider_config_resp:
description: ""
content:
application/scim+json:
schema:
$ref: "#/components/schemas/scim_service_provider_config"
scim_get_resource_types_resp:
description: ""
content:
application/scim+json:
schema:
type: object
properties:
schemas:
type: array
items:
type: string
example: urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults:
type: integer
example: 1
resources:
type: array
items:
$ref: "#/components/schemas/scim_resource_type"
scim_get_resource_type_resp:
description: ""
content:
application/scim+json:
schema:
$ref: "#/components/schemas/scim_resource_type"
scim_get_schemas_resp:
description: ""
content:
application/scim+json:
schema:
type: object
properties:
schemas:
type: array
items:
type: string
example: urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults:
type: integer
example: 1
resources:
type: array
items:
$ref: "#/components/schemas/scim_schema"
scim_get_schema_resp:
description: ""
content:
application/scim+json:
schema:
$ref: "#/components/schemas/scim_schema"
scim_get_users_resp:
description: ""
content:
application/scim+json:
schema:
type: object
properties:
schemas:
type: array
items:
type: string
example:
- urn:ietf:params:scim:api:messages:2.0:ListResponse
totalResults:
type: integer
example: 1
startIndex:
type: integer
example: 1
itemsPerPage:
type: integer
example: 10
resources:
type: array
items:
$ref: "#/components/schemas/scim_user"
scim_create_user_resp:
description: ""
content:
application/scim+json:
schema:
$ref: "#/components/schemas/scim_user"
scim_get_user_resp:
description: ""
content:
application/scim+json:
schema:
$ref: "#/components/schemas/scim_user"
scim_update_user_resp:
description: ""
content:
application/scim+json:
schema:
$ref: "#/components/schemas/scim_user"
schemas:
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 or personal access token (PAT) of the Docker Hub account to authenticate with.
type: string
example: p@ssw0rd
AuthCreateTokenResponse:
description: successful access token response
type: object
properties:
access_token:
description: The created access token. This expires in 10 minutes.
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
PostUsersLoginSuccessResponse:
description: successful user login response
type: object
properties:
token:
description: |
Created authentication token.
This token can be used in the HTTP Authorization header as a JWT to authenticate with the Docker Hub APIs.
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
nullable: false
PostUsersLoginErrorResponse:
description: failed user login response or second factor required
type: object
required:
- detail
properties:
detail:
description: Description of the error.
type: string
example: Incorrect authentication credentials
nullable: false
login_2fa_token:
description: |
Short time lived token to be used on `/v2/users/2fa-login` to complete the authentication. This field is present only if 2FA is enabled.
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
nullable: true
Users2FALoginRequest:
description: Second factor user login details
type: object
required:
- login_2fa_token
- code
properties:
login_2fa_token:
description: The intermediate 2FA token returned from `/v2/users/login` API.
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
code:
description: |
The Time-based One-Time Password of the Docker Hub account to authenticate with.
type: string
example: 123456
PostUsers2FALoginErrorResponse:
description: failed second factor login response.
type: object
properties:
detail:
description: Description of the error.
type: string
example: Incorrect authentication credentials
nullable: false
protobufAny:
type: object
properties:
type_url:
type: string
value:
type: string
format: byte
rpcStatus:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
details:
type: array
items:
$ref: "#/components/schemas/protobufAny"
AuditLogAction:
type: object
properties:
name:
type: string
description: Name of audit log action.
description:
type: string
description: Description of audit log action.
label:
type: string
description: Label for audit log action.
description: Audit Log action
AuditLogActions:
type: object
properties:
actions:
type: array
items:
$ref: "#/components/schemas/AuditLogAction"
description: List of audit log actions.
label:
type: string
description: Grouping label for a particular set of audit log actions.
GetAuditActionsResponse:
type: object
properties:
actions:
type: object
additionalProperties:
$ref: "#/components/schemas/AuditLogActions"
description: Map of audit log actions.
description: GetAuditActions response.
GetAuditLogsResponse:
type: object
properties:
logs:
type: array
items:
$ref: "#/components/schemas/AuditLog"
description: List of audit log events.
description: GetAuditLogs response.
AuditLog:
type: object
properties:
account:
type: string
action:
type: string
name:
type: string
actor:
type: string
data:
type: object
additionalProperties:
type: string
timestamp:
type: string
format: date-time
action_description:
type: string
description: Audit log event.
ValueError:
type: object
description: Used to error if input validation fails.
properties:
fields:
type: object
items:
type: string
text:
type: string
Error:
type: object
properties:
detail:
type: string
message:
type: string
accessToken:
type: object
properties:
uuid:
type: string
example: b30bbf97-506c-4ecd-aabc-842f3cb484fb
client_id:
type: string
example: HUB
creator_ip:
type: string
example: 127.0.0.1
creator_ua:
type: string
example: some user agent
created_at:
type: string
example: "2021-07-20T12:00:00.000000Z"
last_used:
type: string
example: null
nullable: true
generated_by:
type: string
example: manual
is_active:
type: boolean
example: true
token:
type: string
example: a7a5ef25-8889-43a0-8cc7-f2a94268e861
token_label:
type: string
example: My read only token
scopes:
type: array
example:
- repo:read
items:
type: string
createAccessTokenRequest:
type: object
required:
- token_label
- scopes
properties:
token_label:
type: string
description: Friendly name for you to identify the token.
example: My read only token
minLength: 1
maxLength: 100
scopes:
type: array
description: |
Valid scopes: "repo:admin", "repo:write", "repo:read", "repo:public_read"
example:
- repo:read
items:
type: string
expires_at:
type: string
description: |
Optional expiration date for the token.
If omitted, the token will remain valid indefinitely.
format: date-time
example: "2021-10-28T18:30:19.520861Z"
createAccessTokensResponse:
$ref: "#/components/schemas/accessToken"
getAccessTokensResponse:
type: object
properties:
count:
type: number
example: 1
next:
type: string
example: null
previous:
type: string
example: null
active_count:
type: number
example: 1
results:
type: array
items:
allOf:
- $ref: "#/components/schemas/accessToken"
- type: object
properties:
token:
type: string
example: ""
patchAccessTokenRequest:
type: object
properties:
token_label:
type: string
example: My read only token
minLength: 1
maxLength: 100
is_active:
type: boolean
example: false
patchAccessTokenResponse:
$ref: "#/components/schemas/accessToken"
orgSettings:
type: object
properties:
restricted_images:
$ref: "#/components/schemas/restricted_images"
restricted_images:
type: object
properties:
enabled:
type: boolean
description: Whether or not to restrict image usage for users in the organization.
example: true
allow_official_images:
type: boolean
description: Allow usage of official images if "enabled" is `true`.
example: true
allow_verified_publishers:
type: boolean
description: Allow usage of verified publisher images if "enabled" is `true`.
example: true
layer:
type: object
properties:
digest:
type: string
description: image layer digest
nullable: true
size:
type: integer
description: size of the layer
instruction:
type: string
description: Dockerfile instruction
image:
type: object
properties:
architecture:
type: string
description: CPU architecture
features:
type: string
description: CPU features
variant:
type: string
description: CPU variant
digest:
type: string
description: image digest
nullable: true
layers:
type: array
items:
$ref: "#/components/schemas/layer"
os:
type: string
description: operating system
os_features:
type: string
description: OS features
os_version:
type: string
description: OS version
size:
type: integer
description: size of the image
status:
type: string
enum:
- active
- inactive
description: Status of the image
last_pulled:
type: string
example: "2021-01-05T21:06:53.506400Z"
description: datetime of last pull
nullable: true
last_pushed:
type: string
example: "2021-01-05T21:06:53.506400Z"
description: datetime of last push
nullable: true
tag:
type: object
properties:
id:
type: integer
description: tag ID
images:
type: object
$ref: "#/components/schemas/image"
creator:
type: integer
description: ID of the user that pushed the tag
last_updated:
type: string
example: "2021-01-05T21:06:53.506400Z"
description: datetime of last update
nullable: true
last_updater:
type: integer
description: ID of the last user that updated the tag
last_updater_username:
type: string
description: Hub username of the user that updated the tag
name:
type: string
description: name of the tag
repository:
type: integer
description: repository ID
full_size:
type: integer
description: compressed size (sum of all layers) of the tagged image
v2:
type: string
description: repository API version
status:
type: string
enum:
- active
- inactive
description: whether a tag has been pushed to or pulled in the past month
tag_last_pulled:
type: string
example: "2021-01-05T21:06:53.506400Z"
description: datetime of last pull
nullable: true
tag_last_pushed:
type: string
example: "2021-01-05T21:06:53.506400Z"
description: datetime of last push
nullable: true
paginated_tags:
allOf:
- $ref: "#/components/schemas/page"
- type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/tag"
page:
type: object
properties:
count:
type: integer
description: total number of results available across all pages
next:
type: string
description: link to next page of results if any
nullable: true
previous:
type: string
description: link to previous page of results if any
nullable: true
scim_schema_attribute:
type: object
properties:
name:
type: string
example: userName
type:
enum:
- string
- boolean
- complex
type: string
example: string
multiValued:
type: boolean
example: false
description:
type: string
example: Unique identifier for the User, typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users.
required:
type: boolean
example: true
caseExact:
type: boolean
example: false
mutability:
type: string
example: readWrite
returned:
type: string
example: default
uniqueness:
type: string
example: server
scim_schema_parent_attribute:
allOf:
- $ref: "#/components/schemas/scim_schema_attribute"
- type: object
properties:
subAttributes:
type: array
items:
$ref: "#/components/schemas/scim_schema_attribute"
invite:
type: object
properties:
id:
type: string
description: uuid representing the invite id
example: e36eca69-4cc8-4f17-9845-ae8c2b832691
inviter_username:
type: string
example: moby
invitee:
type: string
description: can either be a dockerID for registred users or an email for non-registred users
example: invitee@docker.com
org:
type: string
description: name of the org to join
example: docker
team:
type: string
description: name of the team (user group) to join
example: owners
created_at:
type: string
example: "2021-10-28T18:30:19.520861Z"
bulk_invite:
type: object
properties:
invitees:
type: array
description: A list of invitees
items:
type: object
properties:
invitee:
type: string
description: invitee email or Docker ID
status:
type: string
description: status of the invite or validation error
invite:
description: Invite data if successfully invited
$ref: "#/components/schemas/invite"
example:
invitees:
- invitee: invitee@docker.com
status: invited
invite:
id: e36eca69-4cc8-4f17-9845-ae8c2b832691
inviter_username: moby
invitee: invitee@docker.com
org: docker
team: owners
created_at: "2021-10-28T18:30:19.520861Z"
- invitee: invitee2@docker.com
status: existing_org_member
- invitee: invitee3@docker.com
status: invalid_email_or_docker_id
error:
type: object
properties:
errinfo:
type: object
items:
type: string
detail:
type: string
message:
type: string
scim_error:
type: object
properties:
status:
type: string
description: The status code for the response in string format.
schemas:
type: array
items:
type: string
default: urn:ietf:params:scim:api:messages:2.0:Error
detail:
type: string
description: Details about why the request failed.
user:
type: object
properties:
id:
type: string
example: 0ab70deb065a43fcacd55d48caa945d8
description: The UUID trimmed
company:
type: string
example: Docker Inc
date_joined:
type: string
example: "2021-01-05T21:06:53.506400Z"
full_name:
type: string
example: Jon Snow
gravatar_email:
type: string
gravatar_url:
type: string
location:
type: string
profile_url:
type: string
type:
type: string
enum:
- User
- Org
example: User
username:
type: string
example: dockeruser
org_member:
allOf:
- $ref: "#/components/schemas/user"
properties:
email:
type: string
description: User's email address
example: example@docker.com
role:
type: string
description: User's role in the Organization
enum:
- Owner
- Member
- Invitee
example: Owner
groups:
type: array
description: Groups (Teams) that the user is member of
items:
type: string
example:
- developers
- owners
is_guest:
type: boolean
description: If the organization has verfied domains, members that have email addresses outside of those domains will be flagged as guests.
example: false
primary_email:
type: string
description: The user's email primary address.
example: example@docker.com
deprecated: true
last_logged_in_at:
type: string
format: date-time
description: |
Last time the user logged in. To access this field, you must have insights visible for your organization. See
[Insights](https://docs.docker.com/admin/organization/insights/#view-insights-for-organization-users).
example: "2021-01-05T21:06:53.506400Z"
last_seen_at:
type: string
format: date-time
description: |
Last time the user was seen. To access this field, you must have insights visible for your organization. See
[Insights](https://docs.docker.com/admin/organization/insights/#view-insights-for-organization-users).
example: "2021-01-05T21:06:53.506400Z"
last_desktop_version:
type: string
description: |
Last desktop version the user used. To access this field, you must have insights visible for your organization. See
[Insights](https://docs.docker.com/admin/organization/insights/#view-insights-for-organization-users).
example: 4.29.0
org_member_paginated:
type: object
properties:
count:
type: number
description: The total number of items that match with the search.
example: 120
previous:
type: string
description: The URL or link for the previous page of items.
example: https://hub.docker.com/v2/some/resources/items?page=1&page_size=20
next:
type: string
description: The URL or link for the next page of items.
example: https://hub.docker.com/v2/some/resources/items?page=3&page_size=20
results:
type: array
description: List of accounts.
items:
$ref: "#/components/schemas/org_member"
org_group:
type: object
properties:
id:
type: number
example: 10
description: Group ID
uuid:
type: string
description: UUID for the group
name:
type: string
example: mygroup
description: Name of the group
description:
type: string
example: Groups description
description: Description of the group
member_count:
type: number
example: 10
description: Member count of the group
group_member:
type: object
properties:
id:
type: string
example: 0ab70deb065a43fcacd55d48caa945d8
description: The UUID trimmed
company:
type: string
example: Docker Inc
date_joined:
type: string
format: date-time
example: "2021-01-05T21:06:53.506400Z"
full_name:
type: string
example: John Snow
gravatar_email:
type: string
gravatar_url:
type: string
location:
type: string
profile_url:
type: string
type:
type: string
enum:
- User
- Org
example: User
username:
type: string
example: dockeruser
email:
type: string
example: dockeruser@docker.com
email_address:
type: object
properties:
id:
type: number
user_id:
type: number
email:
type: string
example: dockeruser@docker.com
verified:
type: boolean
primary:
type: boolean
legacy_email_address:
allOf:
- $ref: "#/components/schemas/email_address"
- type: object
properties:
user:
type: string
example: dockeruser
email_with_username:
allOf:
- $ref: "#/components/schemas/email_address"
- type: object
properties:
username:
type: string
example: dockeruser
scim_service_provider_config:
type: object
properties:
schemas:
type: array
items:
type: string
example:
- urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig
documentationUri:
type: string
example: ""
patch:
properties:
supported:
type: boolean
example: false
bulk:
type: object
properties:
supported:
type: boolean
example: false
maxOperations:
type: integer
maxPayloadSize:
type: integer
filter:
type: object
properties:
supported:
type: boolean
example: true
maxResults:
type: integer
example: 99999
changePassword:
type: object
properties:
supported:
type: boolean
example: false
sort:
type: object
properties:
supported:
type: boolean
example: true
etag:
type: object
properties:
supported:
type: boolean
example: false
authenticationSchemes:
type: object
properties:
name:
type: string
example: OAuth 2.0 Bearer Token
description:
type: string
example: The OAuth 2.0 Bearer Token Authentication scheme. OAuth enables clients to access protected resources by obtaining an access token, which is defined in RFC 6750 as "a string representing an access authorization issued to the client", rather than using the resource owner's credentials directly.
specUri:
type: string
example: http://tools.ietf.org/html/rfc6750
type:
type: string
example: oauthbearertoken
scim_resource_type:
type: object
properties:
schemas:
type: array
items:
type: string
example:
- urn:ietf:params:scim:schemas:core:2.0:ResourceType
id:
type: string
example: User
name:
type: string
example: User
description:
type: string
example: User
endpoint:
type: string
example: /Users
schema:
type: string
example: urn:ietf:params:scim:schemas:core:2.0:User
scim_schema:
type: object
properties:
schemas:
type: array
items:
type: string
example:
- urn:ietf:params:scim:schemas:core:2.0:Schema
id:
type: string
example: urn:ietf:params:scim:schemas:core:2.0:User
name:
type: string
example: User
description:
type: string
example: User Account
attributes:
type: array
example: []
items:
$ref: "#/components/schemas/scim_schema_parent_attribute"
scim_email:
type: object
properties:
value:
type: string
example: jon.snow@docker.com
display:
type: string
example: jon.snow@docker.com
primary:
type: boolean
example: true
scim_group:
type: object
properties:
value:
type: string
example: nightswatch
display:
type: string
example: nightswatch
scim_user_username:
type: string
description: The user's email address. This must be reachable via email.
example: jon.snow@docker.com
scim_user_name:
type: object
properties:
givenName:
type: string
example: Jon
familyName:
type: string
example: Snow
scim_user_display_name:
type: string
description: The username in Docker. Also known as the "Docker ID".
example: jonsnow
scim_user_schemas:
type: array
items:
type: string
example: urn:ietf:params:scim:schemas:core:2.0:User
minItems: 1
scim_user_id:
type: string
example: d80f7c79-7730-49d8-9a41-7c42fb622d9c
description: The unique identifier for the user. A v4 UUID.
scim_user:
type: object
properties:
schemas:
$ref: "#/components/schemas/scim_user_schemas"
id:
$ref: "#/components/schemas/scim_user_id"
userName:
$ref: "#/components/schemas/scim_user_username"
name:
$ref: "#/components/schemas/scim_user_name"
displayName:
$ref: "#/components/schemas/scim_user_display_name"
active:
type: boolean
example: true
emails:
type: array
items:
$ref: "#/components/schemas/scim_email"
groups:
type: array
items:
$ref: "#/components/schemas/scim_group"
meta:
type: object
properties:
resourceType:
type: string
example: User
location:
type: string
example: https://hub.docker.com/v2/scim/2.0/Users/d80f7c79-7730-49d8-9a41-7c42fb622d9c
created:
type: string
format: date-time
description: The creation date for the user as a RFC3339 formatted string.
example: "2022-05-20T00:54:18Z"
lastModified:
type: string
format: date-time
description: The date the user was last modified as a RFC3339 formatted string.
example: "2022-05-20T00:54:18Z"
orgAccessToken:
type: object
properties:
id:
type: string
example: "a7a5ef25-8889-43a0-8cc7-f2a94268e861"
label:
type: string
example: "My organization token"
created_by:
type: string
example: "johndoe"
is_active:
type: boolean
example: true
created_at:
type: string
format: date-time
example: "2022-05-20T00:54:18Z"
expires_at:
type: string
format: date-time
example: "2023-05-20T00:54:18Z"
nullable: true
last_used_at:
type: string
format: date-time
example: "2022-06-15T12:30:45Z"
nullable: true
orgAccessTokenResource:
type: object
properties:
type:
type: string
enum:
- TYPE_REPO
- TYPE_ORG
example: "TYPE_REPO"
description: The type of resource
required: true
path:
type: string
example: "myorg/myrepo"
description: The path of the resource. The format of this will change depending on the type of resource.
required: true
scopes:
type: array
description: The scopes this token has access to
items:
type: string
example: "repo-pull"
required: true
getOrgAccessTokensResponse:
type: object
properties:
total:
type: number
example: 10
next:
type: string
example: https://hub.docker.com/v2/orgs/docker/access-tokens?page=2&page_size=10
previous:
type: string
example: https://hub.docker.com/v2/orgs/docker/access-tokens?page=1&page_size=10
results:
type: array
items:
$ref: "#/components/schemas/orgAccessToken"
getOrgAccessTokenResponse:
allOf:
- $ref: "#/components/schemas/orgAccessToken"
- type: object
properties:
resources:
type: array
description: Resources this token has access to
items:
$ref: "#/components/schemas/orgAccessTokenResource"
createOrgAccessTokenRequest:
type: object
properties:
label:
type: string
description: Label for the access token
example: "My organization token"
required: true
description:
type: string
description: Description of the access token
example: "Token for CI/CD pipeline"
resources:
type: array
description: Resources this token has access to
items:
$ref: "#/components/schemas/orgAccessTokenResource"
expires_at:
type: string
format: date-time
description: Expiration date for the token
example: "2023-05-20T00:54:18Z"
nullable: true
createOrgAccessTokenResponse:
type: object
allOf:
- $ref: "#/components/schemas/orgAccessToken"
- type: object
properties:
token:
type: string
description: The actual token value that can be used for authentication
example: "dckr_oat_7awgM4jG5SQvxcvmNzhKj8PQjxo"
resources:
type: array
items:
$ref: "#/components/schemas/orgAccessTokenResource"
updateOrgAccessTokenRequest:
type: object
properties:
label:
type: string
description: Label for the access token
example: "My organization token"
description:
type: string
description: Description of the access token
example: "Token for CI/CD pipeline"
resources:
type: array
description: Resources this token has access to
items:
$ref: "#/components/schemas/orgAccessTokenResource"
is_active:
type: boolean
description: Whether the token is active
example: true
updateOrgAccessTokenResponse:
type: object
allOf:
- $ref: "#/components/schemas/orgAccessToken"
- type: object
properties:
resources:
type: array
description: Resources this token has access to
items:
$ref: "#/components/schemas/orgAccessTokenResource"
parameters:
namespace:
in: path
name: namespace
required: true
schema:
type: string
repository:
in: path
name: repository
required: true
schema:
type: string
tag:
in: path
name: tag
required: true
schema:
type: string
org_name:
in: path
name: org_name
description: Name of the organization (namespace).
schema:
type: string
example: myorganization
required: true
group_name:
in: path
name: group_name
description: Name of the group (team) in the organization.
schema:
type: string
example: developers
required: true
username:
in: path
name: username
description: Username, identifier for the user (namespace, DockerID).
schema:
type: string
example: jonsnow
required: true
page:
in: query
name: page
description: Page number (starts on 1).
schema:
type: integer
page_size:
in: query
name: page_size
description: Number of items (rows) per page.
schema:
type: integer
invites:
in: query
name: invites
description: Include invites in the response.
schema:
type: boolean
search:
in: query
name: search
schema:
type: integer
description: Search term.
scim_attributes:
in: query
name: attributes
schema:
type: string
description: Comma delimited list of attributes to limit to in the response.
example: userName,displayName
scim_user_id:
name: id
in: path
schema:
type: string
description: The user ID.
example: d80f7c79-7730-49d8-9a41-7c42fb622d9c
required: true
type:
in: query
name: type
schema:
type: string
enum:
- all
- invitee
- member
example: all
role:
in: query
name: role
schema:
type: string
enum:
- owner
- editor
- member
example: owner
bulk_invite:
in: header
name: X-Analytics-Client-Feature
description: Optional string that indicates the feature used to submit the bulk invites (e.g.'file', 'web')
schema:
type: string
requestBodies:
bulk_invite_request:
required: true
content:
application/json:
schema:
type: object
required:
- org
- invitees
properties:
org:
type: string
description: organization name
example: docker
team:
type: string
description: team name
example: owners
role:
type: string
description: role for invitees
example: member
invitees:
type: array
description: list of invitees emails or Docker Ids
items:
type: string
description: invitee email or Docker ID
example:
- invitee1DockerId
- invitee2@docker.com
- invitee3@docker.com
dry_run:
type: boolean
description: Optional, run through validation but don't actually change data.
example: true
scim_create_user_request:
required: true
content:
application/scim+json:
schema:
type: object
required:
- schemas
- userName
properties:
schemas:
$ref: "#/components/schemas/scim_user_schemas"
userName:
$ref: "#/components/schemas/scim_user_username"
name:
$ref: "#/components/schemas/scim_user_name"
scim_update_user_request:
required: true
content:
application/scim+json:
schema:
type: object
required:
- schemas
properties:
schemas:
$ref: "#/components/schemas/scim_user_schemas"
name:
allOf:
- $ref: "#/components/schemas/scim_user_name"
- description: If this is omitted from the request, the update will skip the update on it. We will only ever change the name, but not clear it.
enabled:
type: boolean
default: false
description: If this is omitted from the request, it will default to false resulting in a deactivated user.
add_member_to_org_group:
required: true
content:
application/json:
schema:
type: object
required:
- member
properties:
member:
type: string
example: jonsnow
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
bearerSCIMAuth:
type: http
scheme: bearer
x-tagGroups:
- name: General
tags:
- changelog
- resources
- rate-limiting
- authentication
- name: API
tags:
- authentication-api
- access-tokens
- images
- audit-logs
- org-settings
- repositories
- scim
- orgs
- org-access-tokens
- groups
- invites