Clipper API (1.0.0)

Manage your Clipper registry with an access token (Authorization: Bearer clp_...).

Tags

Get a tag's manifest

Scope image:pull

Scoped by a repository grant. The scope applies to private repos; public repos are readable by any authenticated caller.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

ref
required
string

The tag whose manifest to return.

Responses

Response Schema: application/json
digest
required
string
required
Array of objects or null (LayerDetail)
media_type
required
string
size
required
integer <int64>

Size in bytes.

created
string

Response samples

Content type
application/json
{
  • "created": "string",
  • "digest": "string",
  • "layers": [
    • {
      }
    ],
  • "media_type": "string",
  • "size": 0
}

Delete a tag

Scope image:push or repo:create

Scoped by a repository grant.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

ref
required
string

The tag to delete.

Responses

List a repository's tags

Scope image:pull

Scoped by a repository grant. The scope applies to private repos; public repos are readable by any authenticated caller.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Responses

Response Schema: application/json
Array
digest
required
string
name
required
string
pushed_at
required
string or null <date-time>
scheduled_for_deletion
required
boolean

Response samples

Content type
application/json
[
  • {
    • "digest": "string",
    • "name": "string",
    • "pushed_at": "2019-08-24T14:15:22Z",
    • "scheduled_for_deletion": true
    }
]

Repositories

Delete a repository

Scope repos:admin

Scoped by a repository grant.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Responses

Get a repository

Scope image:pull

Scoped by a repository grant. The scope applies to private repos; public repos are readable by any authenticated caller.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Responses

Response Schema: application/json
can_admin
required
boolean
created_at
required
string <date-time>
id
required
string
name
required
string
namespace
required
string
namespace_id
required
string
tag_count
required
integer

Number of tags, or -1 if the registry is unavailable.

updated_at
required
string <date-time>
visibility
required
string
Enum: "public" "private"

public or private. Access tokens may only set private; making a repository public requires an interactive session.

Response samples

Content type
application/json
{
  • "can_admin": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "id": "string",
  • "name": "string",
  • "namespace": "string",
  • "namespace_id": "string",
  • "tag_count": 0,
  • "updated_at": "2019-08-24T14:15:22Z",
  • "visibility": "public"
}

Set repository visibility

Scope repos:admin

Scoped by a repository grant.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Request Body schema: application/json
required
visibility
required
string
Enum: "public" "private"

public or private. Access tokens may only set private; making a repository public requires an interactive session.

Responses

Response Schema: application/json
created_at
required
string <date-time>
id
required
string
name
required
string
namespace
required
string
namespace_id
required
string
updated_at
required
string <date-time>
visibility
required
string
Enum: "public" "private"

public or private. Access tokens may only set private; making a repository public requires an interactive session.

Request samples

Content type
application/json
{
  • "visibility": "public"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "id": "string",
  • "name": "string",
  • "namespace": "string",
  • "namespace_id": "string",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "visibility": "public"
}

Create a repository

Scope repos:write

Scoped by a repository grant.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Request Body schema: application/json
optional
visibility
string
Enum: "public" "private"

public or private. Access tokens may only set private; making a repository public requires an interactive session.

Responses

Response Schema: application/json
created_at
required
string <date-time>
id
required
string
name
required
string
namespace
required
string
namespace_id
required
string
updated_at
required
string <date-time>
visibility
required
string
Enum: "public" "private"

public or private. Access tokens may only set private; making a repository public requires an interactive session.

Request samples

Content type
application/json
{
  • "visibility": "public"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "id": "string",
  • "name": "string",
  • "namespace": "string",
  • "namespace_id": "string",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "visibility": "public"
}

List a namespace's repositories

Authorizations:
bearerToken
path Parameters
namespace
required
string

Responses

Response Schema: application/json
Array
created_at
required
string <date-time>
id
required
string
name
required
string
namespace
required
string
namespace_id
required
string
updated_at
required
string <date-time>
visibility
required
string
Enum: "public" "private"

public or private. Access tokens may only set private; making a repository public requires an interactive session.

Response samples

Content type
application/json
[
  • {
    • "created_at": "2019-08-24T14:15:22Z",
    • "id": "string",
    • "name": "string",
    • "namespace": "string",
    • "namespace_id": "string",
    • "updated_at": "2019-08-24T14:15:22Z",
    • "visibility": "public"
    }
]

List your repositories

Authorizations:
bearerToken

Responses

Response Schema: application/json
Array
created_at
required
string <date-time>
id
required
string
name
required
string
namespace
required
string
namespace_id
required
string
updated_at
required
string <date-time>
visibility
required
string
Enum: "public" "private"

public or private. Access tokens may only set private; making a repository public requires an interactive session.

Response samples

Content type
application/json
[
  • {
    • "created_at": "2019-08-24T14:15:22Z",
    • "id": "string",
    • "name": "string",
    • "namespace": "string",
    • "namespace_id": "string",
    • "updated_at": "2019-08-24T14:15:22Z",
    • "visibility": "public"
    }
]

Retention

Get retention policy

Scope repos:admin

Scoped by a repository grant.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Responses

Response Schema: application/json
rules
required
any

arbitrary JSON

Response samples

Content type
application/json
{
  • "rules": null
}

Preview retention policy

Scope repos:admin

Scoped by a repository grant.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Request Body schema: application/json
required
required
Array of objects (Rule)

Responses

Response Schema: application/json
required
Array of objects (Decision)

Request samples

Content type
application/json
{
  • "rules": [
    • {
      }
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    • {
      }
    ]
}

Set retention policy

Scope repos:admin

Scoped by a repository grant.

Authorizations:
bearerToken
path Parameters
namespace
required
string
query Parameters
name
required
string

The repository name (may contain slashes).

Request Body schema: application/json
required
required
Array of objects (Rule)

Responses

Request samples

Content type
application/json
{
  • "rules": [
    • {
      }
    ]
}

Tokens

List a namespace's access tokens

Scope tokens:read

Authorizations:
bearerToken
path Parameters
namespace
required
string

Responses

Response Schema: application/json
Array
created_at
required
string <date-time>
id
required
string
last_used_at
required
string or null <date-time>
name
required
string
namespace_id
required
string
scopes
required
Array of strings
Items Enum: "image:pull" "image:push" "repo:create" "repos:write" "repos:admin" "members:read" "members:write" "tokens:read" "tokens:write" "org:settings"

Token scopes granted.

user_id
required
string
created_by
string
Array of objects (Grant)

Per-repository grants that narrow the token's registry reach.

Response samples

Content type
application/json
[
  • {
    • "created_at": "2019-08-24T14:15:22Z",
    • "created_by": "string",
    • "grants": [
      ],
    • "id": "string",
    • "last_used_at": "2019-08-24T14:15:22Z",
    • "name": "string",
    • "namespace_id": "string",
    • "scopes": [
      ],
    • "user_id": "string"
    }
]

Create a namespace's access token

Scope tokens:write

Registry scopes (the default when scopes is omitted) require at least one grant to reach any repository, so a name-only body is rejected: send grants, or request only management scopes.

Authorizations:
bearerToken
path Parameters
namespace
required
string
Request Body schema: application/json
required
name
required
string
Array of objects (grantInput)

Per-repository grants that narrow the token's registry reach.

scopes
Array of strings
Items Enum: "image:pull" "image:push" "repo:create" "repos:write" "repos:admin" "members:read" "members:write" "tokens:read" "tokens:write" "org:settings"

Token scopes granted.

Responses

Response Schema: application/json
required
Array of objects (Grant)

Per-repository grants that narrow the token's registry reach.

id
required
string
name
required
string
scopes
required
Array of strings
Items Enum: "image:pull" "image:push" "repo:create" "repos:write" "repos:admin" "members:read" "members:write" "tokens:read" "tokens:write" "org:settings"

Token scopes granted.

token
required
string

Request samples

Content type
application/json
{
  • "grants": [
    • {
      }
    ],
  • "name": "string",
  • "scopes": [
    • "image:pull"
    ]
}

Response samples

Content type
application/json
{
  • "grants": [
    • {
      }
    ],
  • "id": "string",
  • "name": "string",
  • "scopes": [
    • "image:pull"
    ],
  • "token": "string"
}

Revoke a namespace's access token

Scope tokens:write

Authorizations:
bearerToken
path Parameters
namespace
required
string
id
required
string

Responses

List your access tokens

Scope tokens:read

Authorizations:
bearerToken

Responses

Response Schema: application/json
Array
created_at
required
string <date-time>
id
required
string
last_used_at
required
string or null <date-time>
name
required
string
namespace_id
required
string
scopes
required
Array of strings
Items Enum: "image:pull" "image:push" "repo:create" "repos:write" "repos:admin" "members:read" "members:write" "tokens:read" "tokens:write" "org:settings"

Token scopes granted.

user_id
required
string
created_by
string
Array of objects (Grant)

Per-repository grants that narrow the token's registry reach.

Response samples

Content type
application/json
[
  • {
    • "created_at": "2019-08-24T14:15:22Z",
    • "created_by": "string",
    • "grants": [
      ],
    • "id": "string",
    • "last_used_at": "2019-08-24T14:15:22Z",
    • "name": "string",
    • "namespace_id": "string",
    • "scopes": [
      ],
    • "user_id": "string"
    }
]

Create an access token

Scope tokens:write

Registry scopes (the default when scopes is omitted) require at least one grant to reach any repository, so a name-only body is rejected: send grants, or request only management scopes.

Authorizations:
bearerToken
Request Body schema: application/json
required
name
required
string
Array of objects (grantInput)

Per-repository grants that narrow the token's registry reach.

scopes
Array of strings
Items Enum: "image:pull" "image:push" "repo:create" "repos:write" "repos:admin" "members:read" "members:write" "tokens:read" "tokens:write" "org:settings"

Token scopes granted.

Responses

Response Schema: application/json
required
Array of objects (Grant)

Per-repository grants that narrow the token's registry reach.

id
required
string
name
required
string
scopes
required
Array of strings
Items Enum: "image:pull" "image:push" "repo:create" "repos:write" "repos:admin" "members:read" "members:write" "tokens:read" "tokens:write" "org:settings"

Token scopes granted.

token
required
string

Request samples

Content type
application/json
{
  • "grants": [
    • {
      }
    ],
  • "name": "string",
  • "scopes": [
    • "image:pull"
    ]
}

Response samples

Content type
application/json
{
  • "grants": [
    • {
      }
    ],
  • "id": "string",
  • "name": "string",
  • "scopes": [
    • "image:pull"
    ],
  • "token": "string"
}

Revoke an access token

Scope tokens:write

Authorizations:
bearerToken
path Parameters
id
required
string

Responses

Organizations

List your organizations

Requires a personal access token (not an organization token).

Authorizations:
bearerToken

Responses

Response Schema: application/json
Array
created_at
required
string <date-time>
description
required
string
display_name
required
string
id
required
string
namespace_id
required
string
slug
required
string
updated_at
required
string <date-time>

Response samples

Content type
application/json
[
  • {
    • "created_at": "2019-08-24T14:15:22Z",
    • "description": "string",
    • "display_name": "string",
    • "id": "string",
    • "namespace_id": "string",
    • "slug": "string",
    • "updated_at": "2019-08-24T14:15:22Z"
    }
]

Get an organization

Authorizations:
bearerToken
path Parameters
slug
required
string

Responses

Response Schema: application/json
created_at
required
string <date-time>
description
required
string
display_name
required
string
id
required
string
namespace_id
required
string
slug
required
string
updated_at
required
string <date-time>

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "description": "string",
  • "display_name": "string",
  • "id": "string",
  • "namespace_id": "string",
  • "slug": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update an organization

Scope org:settings

Authorizations:
bearerToken
path Parameters
slug
required
string
Request Body schema: application/json
required
description
string
display_name
string

Responses

Response Schema: application/json
created_at
required
string <date-time>
description
required
string
display_name
required
string
id
required
string
namespace_id
required
string
slug
required
string
updated_at
required
string <date-time>

Request samples

Content type
application/json
{
  • "description": "string",
  • "display_name": "string"
}

Response samples

Content type
application/json
{
  • "created_at": "2019-08-24T14:15:22Z",
  • "description": "string",
  • "display_name": "string",
  • "id": "string",
  • "namespace_id": "string",
  • "slug": "string",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Members

List members

Scope members:read

Authorizations:
bearerToken
path Parameters
slug
required
string

Responses

Response Schema: application/json
Array
avatar_url
required
string
created_at
required
string <date-time>
display_name
required
string
role
required
string
Enum: "owner" "admin" "member"
user_id
required
string
username
required
string

Response samples

Content type
application/json
[
  • {
    • "avatar_url": "string",
    • "created_at": "2019-08-24T14:15:22Z",
    • "display_name": "string",
    • "role": "owner",
    • "user_id": "string",
    • "username": "string"
    }
]

Add a member

Scope members:write

Authorizations:
bearerToken
path Parameters
slug
required
string
Request Body schema: application/json
required
username
required
string
role
string
Enum: "owner" "admin" "member"

Responses

Request samples

Content type
application/json
{
  • "role": "owner",
  • "username": "string"
}

Remove a member

Scope members:write

Authorizations:
bearerToken
path Parameters
slug
required
string
userID
required
string

Responses

Change a member's role

Scope members:write

Authorizations:
bearerToken
path Parameters
slug
required
string
userID
required
string
Request Body schema: application/json
required
role
required
string
Enum: "owner" "admin" "member"

Responses

Request samples

Content type
application/json
{
  • "role": "owner"
}

Account

Look up a user

Authorizations:
bearerToken
path Parameters
username
required
string

Responses

Response Schema: application/json
avatar_url
required
string
display_name
required
string
id
required
string
username
required
string

Response samples

Content type
application/json
{
  • "avatar_url": "string",
  • "display_name": "string",
  • "id": "string",
  • "username": "string"
}

Identify the caller

The namespace the token acts as, and whether it's a user or an organization.

Authorizations:
bearerToken

Responses

Response Schema: application/json
kind
required
string
Enum: "user" "org"
namespace
required
string
namespace_id
required
string

Response samples

Content type
application/json
{
  • "kind": "user",
  • "namespace": "string",
  • "namespace_id": "string"
}