<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>API Reference on</title><link>https://edu.chainguard.dev/chainguard/api/</link><description>Recent content in API Reference on</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Copyright (c) 2023 Chainguard</copyright><lastBuildDate>Tue, 06 Oct 2020 08:48:23 +0000</lastBuildDate><atom:link href="https://edu.chainguard.dev/chainguard/api/index.xml" rel="self" type="application/rss+xml"/><item><title>Chainguard OpenAPI Specification</title><link>https://edu.chainguard.dev/chainguard/api/spec/</link><pubDate>Tue, 06 Oct 2020 08:48:23 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/api/spec/</guid><description>&lt;div id="app"&gt;&lt;/div&gt;
&lt;script
src="https://unpkg.com/@scalar/api-reference@1.48.7/dist/browser/standalone.js"
integrity="sha256-nxQi3+zE0a7YpvrjEpdHacaBuLtNjqFRZl/KbWrfGzA="
crossorigin="anonymous"
&gt;&lt;/script&gt;
&lt;script&gt;
const scalarApp = Scalar.createApiReference("#app", {
agent: {
disabled: true,
},
mcp: {
disabled: true,
},
hideSearch: true,
telemetry: false,
showDeveloperTools: "never",
hideClientButton: true,
hideTestRequestButton: true,
hiddenClients: true,
hideDarkModeToggle: true,
darkMode: localStorage.getItem("theme") === "dark",
theme: "none",
withDefaultFonts: false,
url: '\/api.json',
});
&lt;/script&gt;
&lt;style&gt;
.scalar-app ul {
padding-left: 0;
margin-bottom: 0;
li {
margin-bottom: unset !important;
ul {
margin-top: 0;
margin-bottom: 0;
}
}
}
.scalar-app .group-hover\:opacity-100:is(:where(.group):hover *) {
opacity: 1 !important;
}
.scalar-app
.group-hocus-within\/code-block\:opacity-100:is(
:is(
:where(.group\/code-block):hover,
:where(.group\/code-block):focus-within
)
*
) {
opacity: 1 !important;
}
.scalar-app .px-3 {
padding-left: 12px !important;
padding-right: 12px !important;
}
.scalar-app .section-header-label {
font-weight: inherit;
font-size: inherit;
}
.scalar-app .section-container {
margin-top: unset !important;
margin-bottom: unset !important;
}
.scalar-app .hljs {
padding: 0 !important;
}
.scalar-app .pre-container .code {
background-color: transparent !important;
}
.scalar-app .text-nowrap.whitespace-pre {
text-wrap: nowrap !important;
white-space: pre !important;
}
.scalar-app code {
background: unset !important;
}
.scalar-app .border {
border: var(--scalar-border-color) 1px solid !important;
}
.scalar-app,
.scalar-app .bg-sidebar-b-1,
.references-rendered {
background: transparent !important;
}
main.docs-content {
width: 100% !important;
padding: 0 !important;
}
main.docs-content.has-toc {
max-width: calc(100dvw - 384px);
margin: 0 48px 0 48px;
}
&lt;/style&gt;</description></item><item><title>Chainguard API v1 Specification</title><link>https://edu.chainguard.dev/chainguard/api/spec-api-v1/</link><pubDate>Tue, 06 Oct 2020 08:48:23 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/api/spec-api-v1/</guid><description>&lt;div id="app"&gt;&lt;/div&gt;
&lt;script
src="https://unpkg.com/@scalar/api-reference@1.48.7/dist/browser/standalone.js"
integrity="sha256-nxQi3+zE0a7YpvrjEpdHacaBuLtNjqFRZl/KbWrfGzA="
crossorigin="anonymous"
&gt;&lt;/script&gt;
&lt;script&gt;
const scalarApp = Scalar.createApiReference("#app", {
agent: {
disabled: true,
},
mcp: {
disabled: true,
},
hideSearch: true,
telemetry: false,
showDeveloperTools: "never",
hideClientButton: true,
hideTestRequestButton: true,
hiddenClients: true,
hideDarkModeToggle: true,
darkMode: localStorage.getItem("theme") === "dark",
theme: "none",
withDefaultFonts: false,
url: '\/api-v1.json',
});
&lt;/script&gt;
&lt;style&gt;
.scalar-app ul {
padding-left: 0;
margin-bottom: 0;
li {
margin-bottom: unset !important;
ul {
margin-top: 0;
margin-bottom: 0;
}
}
}
.scalar-app .group-hover\:opacity-100:is(:where(.group):hover *) {
opacity: 1 !important;
}
.scalar-app
.group-hocus-within\/code-block\:opacity-100:is(
:is(
:where(.group\/code-block):hover,
:where(.group\/code-block):focus-within
)
*
) {
opacity: 1 !important;
}
.scalar-app .px-3 {
padding-left: 12px !important;
padding-right: 12px !important;
}
.scalar-app .section-header-label {
font-weight: inherit;
font-size: inherit;
}
.scalar-app .section-container {
margin-top: unset !important;
margin-bottom: unset !important;
}
.scalar-app .hljs {
padding: 0 !important;
}
.scalar-app .pre-container .code {
background-color: transparent !important;
}
.scalar-app .text-nowrap.whitespace-pre {
text-wrap: nowrap !important;
white-space: pre !important;
}
.scalar-app code {
background: unset !important;
}
.scalar-app .border {
border: var(--scalar-border-color) 1px solid !important;
}
.scalar-app,
.scalar-app .bg-sidebar-b-1,
.references-rendered {
background: transparent !important;
}
main.docs-content {
width: 100% !important;
padding: 0 !important;
}
main.docs-content.has-toc {
max-width: calc(100dvw - 384px);
margin: 0 48px 0 48px;
}
&lt;/style&gt;</description></item><item><title>Chainguard API v2 Specification</title><link>https://edu.chainguard.dev/chainguard/api/spec-api-v2/</link><pubDate>Tue, 06 Oct 2020 08:48:23 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/api/spec-api-v2/</guid><description>&lt;div id="app"&gt;&lt;/div&gt;
&lt;script
src="https://unpkg.com/@scalar/api-reference@1.48.7/dist/browser/standalone.js"
integrity="sha256-nxQi3+zE0a7YpvrjEpdHacaBuLtNjqFRZl/KbWrfGzA="
crossorigin="anonymous"
&gt;&lt;/script&gt;
&lt;script&gt;
const scalarApp = Scalar.createApiReference("#app", {
agent: {
disabled: true,
},
mcp: {
disabled: true,
},
hideSearch: true,
telemetry: false,
showDeveloperTools: "never",
hideClientButton: true,
hideTestRequestButton: true,
hiddenClients: true,
hideDarkModeToggle: true,
darkMode: localStorage.getItem("theme") === "dark",
theme: "none",
withDefaultFonts: false,
url: '\/api-v2beta1.json',
});
&lt;/script&gt;
&lt;style&gt;
.scalar-app ul {
padding-left: 0;
margin-bottom: 0;
li {
margin-bottom: unset !important;
ul {
margin-top: 0;
margin-bottom: 0;
}
}
}
.scalar-app .group-hover\:opacity-100:is(:where(.group):hover *) {
opacity: 1 !important;
}
.scalar-app
.group-hocus-within\/code-block\:opacity-100:is(
:is(
:where(.group\/code-block):hover,
:where(.group\/code-block):focus-within
)
*
) {
opacity: 1 !important;
}
.scalar-app .px-3 {
padding-left: 12px !important;
padding-right: 12px !important;
}
.scalar-app .section-header-label {
font-weight: inherit;
font-size: inherit;
}
.scalar-app .section-container {
margin-top: unset !important;
margin-bottom: unset !important;
}
.scalar-app .hljs {
padding: 0 !important;
}
.scalar-app .pre-container .code {
background-color: transparent !important;
}
.scalar-app .text-nowrap.whitespace-pre {
text-wrap: nowrap !important;
white-space: pre !important;
}
.scalar-app code {
background: unset !important;
}
.scalar-app .border {
border: var(--scalar-border-color) 1px solid !important;
}
.scalar-app,
.scalar-app .bg-sidebar-b-1,
.references-rendered {
background: transparent !important;
}
main.docs-content {
width: 100% !important;
padding: 0 !important;
}
main.docs-content.has-toc {
max-width: calc(100dvw - 384px);
margin: 0 48px 0 48px;
}
&lt;/style&gt;</description></item><item><title>Chainguard API v2 Tutorial</title><link>https://edu.chainguard.dev/chainguard/api/api-v2-tutorial/</link><pubDate>Mon, 30 Mar 2026 08:49:31 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/api/api-v2-tutorial/</guid><description>&lt;p&gt;The Chainguard API v2 is currently in a limited beta release for testing. It introduces cursor-based pagination, server-side ordering, consistent resource patterns, and structured error responses across all endpoints.&lt;/p&gt;
&lt;p&gt;This guide walks through the v2 API using real &lt;code&gt;curl&lt;/code&gt; commands.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The example output in this guide was captured from a development environment. Your organization&amp;rsquo;s resource names, UIDs, timestamps, and counts will differ. The response structure and field names are the same across all environments.&lt;/p&gt;</description></item><item><title>Authenticating with the Chainguard SDK</title><link>https://edu.chainguard.dev/chainguard/api/authentication/</link><pubDate>Wed, 04 Jun 2025 08:49:31 +0000</pubDate><guid>https://edu.chainguard.dev/chainguard/api/authentication/</guid><description>&lt;p&gt;There are several ways for users to interact with the Chainguard platform, with &lt;a href="https://edu.chainguard.dev/chainguard/chainctl/"&gt;&lt;code&gt;chainctl&lt;/code&gt;&lt;/a&gt; (Chainguard&amp;rsquo;s command-line tool) and the &lt;a href="https://console.chainguard.dev/overview"&gt;Chainguard Console&lt;/a&gt; (Chainguard&amp;rsquo;s web interface) being the two most commonly-used methods. However, both of these require a human user to authenticate, and aren&amp;rsquo;t useful for working with Chainguard resources programmatically.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://github.com/chainguard-dev/sdk"&gt;Chainguard SDK&lt;/a&gt; serves to ease programmatic integration with the Chainguard platform. This guide highlights two examples from the SDK repository that show how to authenticate to the &lt;a href="https://edu.chainguard.dev/chainguard/chainguard-registry/overview/"&gt;Chainguard registry&lt;/a&gt; using the &lt;code&gt;chainguard.dev/sdk/auth&lt;/code&gt; and &lt;code&gt;chainguard.dev/sdk/auth/ggcr&lt;/code&gt; packages. The first has you authenticate as a local user, while the second has you authenticate as an &lt;a href="https://edu.chainguard.dev/chainguard/administration/assumable-ids/assumable-ids/"&gt;assumed identity&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>