Skip to content

Commit 42a7b45

Browse files
committed
[docker-hub-api] add list namespace repositories endpoint
1 parent fc8490c commit 42a7b45

File tree

2 files changed

+275
-1
lines changed

2 files changed

+275
-1
lines changed

content/reference/api/hub/latest-changelog.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ toc_max: 2
1111
Here you can learn about the latest changes, new features, bug fixes, and known
1212
issues for Docker Service APIs.
1313

14+
## 2025-06-27
15+
16+
### New
17+
18+
- Add [List repositories](/reference/api/hub/latest/#tag/repositories/operation/listNamespaceRepositories) endpoints for a given `namespace`.
19+
- Deprecate undocumented endpoint `GET /v2/repositories/{namespace}` replaced by [List repositories](/reference/api/hub/latest/#tag/repositories/operation/listNamespaceRepositories).
20+
1421
## 2025-03-25
1522

1623
### New

content/reference/api/hub/latest.yaml

Lines changed: 268 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -926,8 +926,152 @@ paths:
926926
$ref: "#/components/responses/forbidden"
927927
"404":
928928
$ref: "#/components/responses/NotFound"
929+
/v2/namespaces/{namespace}/repositories:
930+
parameters:
931+
- $ref: "#/components/parameters/namespace"
932+
get:
933+
operationId: listNamespaceRepositories
934+
summary: List repositories in a namespace
935+
description: |
936+
Returns a list of repositories within the specified namespace (organization or user).
937+
938+
Public repositories are accessible to everyone, while private repositories require appropriate authentication and permissions.
939+
tags:
940+
- repositories
941+
security:
942+
- bearerAuth: [ ]
943+
- { } # Allow anonymous access for public repositories
944+
parameters:
945+
- in: query
946+
name: page
947+
required: false
948+
schema:
949+
type: integer
950+
minimum: 1
951+
default: 1
952+
description: Page number to get. Defaults to 1.
953+
- in: query
954+
name: page_size
955+
required: false
956+
schema:
957+
type: integer
958+
minimum: 1
959+
maximum: 1000
960+
default: 10
961+
description: Number of repositories to get per page. Defaults to 10. Max of 1000.
962+
- in: query
963+
name: name
964+
required: false
965+
schema:
966+
type: string
967+
description: Filter repositories by name (partial match).
968+
- in: query
969+
name: ordering
970+
required: false
971+
schema:
972+
type: string
973+
enum:
974+
- name
975+
- -name
976+
- last_updated
977+
- -last_updated
978+
- pull_count
979+
- -pull_count
980+
description: |
981+
Order repositories by the specified field. Prefix with '-' for descending order.
982+
Available options:
983+
- `name` / `-name`: Repository name (ascending/descending)
984+
- `last_updated` / `-last_updated`: Last update time (ascending/descending)
985+
- `pull_count` / `-pull_count`: Number of pulls (ascending/descending)
986+
responses:
987+
"200":
988+
description: List of repositories
989+
content:
990+
application/json:
991+
schema:
992+
$ref: "#/components/schemas/list_repositories_response"
993+
examples:
994+
repositories_list:
995+
value:
996+
count: 287
997+
next: "https://hub.docker.com/v2/namespaces/docker/repositories?page=2&page_size=2"
998+
previous: null
999+
results:
1000+
- name: "highland_builder"
1001+
namespace: "docker"
1002+
repository_type: "image"
1003+
status: 1
1004+
status_description: "active"
1005+
description: "Image for performing Docker build requests"
1006+
is_private: false
1007+
star_count: 7
1008+
pull_count: 15722123
1009+
last_updated: "2023-06-20T10:44:45.459826Z"
1010+
last_modified: "2024-10-16T13:48:34.145251Z"
1011+
date_registered: "2015-05-19T21:13:35.937763Z"
1012+
affiliation: ""
1013+
media_types:
1014+
- "application/octet-stream"
1015+
- "application/vnd.docker.container.image.v1+json"
1016+
- "application/vnd.docker.distribution.manifest.v1+prettyjws"
1017+
content_types:
1018+
- "unrecognized"
1019+
- "image"
1020+
categories:
1021+
- name: "Languages & frameworks"
1022+
slug: "languages-and-frameworks"
1023+
- name: "Integration & delivery"
1024+
slug: "integration-and-delivery"
1025+
- name: "Operating systems"
1026+
slug: "operating-systems"
1027+
storage_size: 488723114800
1028+
- name: "whalesay"
1029+
namespace: "docker"
1030+
repository_type: null
1031+
status: 1
1032+
status_description: "active"
1033+
description: "An image for use in the Docker demo tutorial"
1034+
is_private: false
1035+
star_count: 757
1036+
pull_count: 130737682
1037+
last_updated: "2015-06-19T19:06:27.388123Z"
1038+
last_modified: "2024-10-16T13:48:34.145251Z"
1039+
date_registered: "2015-06-09T18:16:36.527329Z"
1040+
affiliation: ""
1041+
media_types:
1042+
- "application/vnd.docker.distribution.manifest.v1+prettyjws"
1043+
content_types:
1044+
- "image"
1045+
categories:
1046+
- name: "Languages & frameworks"
1047+
slug: "languages-and-frameworks"
1048+
- name: "Integration & delivery"
1049+
slug: "integration-and-delivery"
1050+
storage_size: 103666708
1051+
"400":
1052+
description: Bad Request - Invalid request parameters
1053+
content:
1054+
application/json:
1055+
schema:
1056+
$ref: "#/components/schemas/error"
1057+
examples:
1058+
invalid_ordering:
1059+
summary: Invalid ordering value
1060+
value:
1061+
fields:
1062+
ordering: [ "Invalid ordering value. Must be one of: name, -name, last_updated, -last_updated, pull_count, -pull_count" ]
1063+
text: "Invalid ordering value"
1064+
"401":
1065+
$ref: "#/components/responses/unauthorized"
1066+
"403":
1067+
$ref: "#/components/responses/forbidden"
1068+
"404":
1069+
description: Page not found - occurs when requesting a page number `>1` that exceeds the available results
1070+
content:
1071+
application/json:
1072+
schema:
1073+
$ref: "#/components/schemas/error"
9291074

930-
9311075
/v2/orgs/{org_name}/members:
9321076
parameters:
9331077
- $ref: "#/components/parameters/org_name"
@@ -2009,6 +2153,129 @@ components:
20092153
schema:
20102154
$ref: "#/components/schemas/scim_user"
20112155
schemas:
2156+
repository_list_entry:
2157+
type: object
2158+
properties:
2159+
name:
2160+
type: string
2161+
description: Name of the repository
2162+
example: "hello-world"
2163+
namespace:
2164+
type: string
2165+
description: Namespace (organization or username) that owns the repository
2166+
example: "docker"
2167+
repository_type:
2168+
type: string
2169+
description: Type of repository
2170+
enum:
2171+
- image
2172+
- plugin
2173+
- null
2174+
example: "image"
2175+
nullable: true
2176+
status:
2177+
type: integer
2178+
description: Repository status code
2179+
example: 1
2180+
status_description:
2181+
type: string
2182+
description: Human-readable repository status
2183+
enum:
2184+
- active
2185+
- inactive
2186+
example: "active"
2187+
description:
2188+
type: string
2189+
description: Repository description
2190+
nullable: true
2191+
example: "Hello World! (an example of minimal Dockerization)"
2192+
is_private:
2193+
type: boolean
2194+
description: Whether the repository is private
2195+
example: false
2196+
star_count:
2197+
type: integer
2198+
description: Number of users who starred this repository
2199+
minimum: 0
2200+
example: 1234
2201+
pull_count:
2202+
type: integer
2203+
description: Total number of pulls for this repository
2204+
minimum: 0
2205+
example: 50000000
2206+
last_updated:
2207+
type: string
2208+
format: date-time
2209+
description: ISO 8601 timestamp of when the repository was last updated
2210+
example: "2023-12-01T10:30:00Z"
2211+
nullable: true
2212+
last_modified:
2213+
type: string
2214+
format: date-time
2215+
description: ISO 8601 timestamp of when the repository was last modified
2216+
example: "2023-12-01T10:30:00Z"
2217+
nullable: true
2218+
date_registered:
2219+
type: string
2220+
format: date-time
2221+
description: ISO 8601 timestamp of when the repository was created
2222+
example: "2013-06-19T19:07:54Z"
2223+
affiliation:
2224+
type: string
2225+
description: User's affiliation with the repository (empty string if no affiliation)
2226+
example: ""
2227+
media_types:
2228+
type: array
2229+
description: Media types supported by this repository
2230+
items:
2231+
type: string
2232+
example:
2233+
- "application/vnd.docker.plugin.v1+json"
2234+
content_types:
2235+
type: array
2236+
description: Content types supported by this repository
2237+
items:
2238+
type: string
2239+
example:
2240+
- "plugin"
2241+
categories:
2242+
type: array
2243+
description: Categories associated with this repository
2244+
items:
2245+
$ref: "#/components/schemas/category"
2246+
example: []
2247+
storage_size:
2248+
type: integer
2249+
description: Storage size in bytes used by this repository
2250+
minimum: 0
2251+
example: 232719127
2252+
category:
2253+
type: object
2254+
required:
2255+
- name
2256+
- slug
2257+
properties:
2258+
name:
2259+
type: string
2260+
description: Human-readable name of the category
2261+
example: "Databases"
2262+
minLength: 1
2263+
slug:
2264+
type: string
2265+
description: URL-friendly identifier for the category
2266+
example: "databases"
2267+
minLength: 1
2268+
pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$"
2269+
description: Repository category for classification and discovery
2270+
list_repositories_response:
2271+
allOf:
2272+
- $ref: "#/components/schemas/page"
2273+
- type: object
2274+
properties:
2275+
results:
2276+
type: array
2277+
items:
2278+
$ref: "#/components/schemas/repository_list_entry"
20122279
UsersLoginRequest:
20132280
description: User login details
20142281
type: object

0 commit comments

Comments
 (0)