{"catalogRevision":"cat_f13ab9a494120b5e","nodeId":"pattern:public-image-delivery","label":"Public image delivery","facet":"pattern","nodeType":"atom","canonicalPath":"/discover/pattern/public-image-delivery","breadcrumbs":[{"id":"discovery","label":"Agent hosting discovery","canonicalPath":"/discover/discovery","kind":"root"},{"id":"pattern","label":"Architecture and data patterns","canonicalPath":"/discover/pattern","kind":"facet"},{"id":"pattern:cdn-patterns","label":"CDN patterns","canonicalPath":"/discover/pattern/cdn-patterns","kind":"group"},{"id":"pattern:public-image-delivery","label":"Public image delivery","canonicalPath":"/discover/pattern/public-image-delivery","kind":"atom"}],"parents":{"items":[{"id":"pattern:cdn-patterns","label":"CDN patterns","canonicalPath":"/discover/pattern/cdn-patterns","kind":"group"}],"total":1,"offset":0,"limit":100},"children":{"items":[],"total":0,"offset":0,"limit":50},"recipes":{"items":[{"id":"page:recipes:client-portal:next-js:public-profiles","label":"Host client portal with Next.js: public profile assets","canonicalPath":"/recipes/client-portal/next-js/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:nuxt:public-profiles","label":"Host client portal with Nuxt: public profile assets","canonicalPath":"/recipes/client-portal/nuxt/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:sveltekit:public-profiles","label":"Host client portal with SvelteKit: public profile assets","canonicalPath":"/recipes/client-portal/sveltekit/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:django:public-profiles","label":"Host client portal with Django: public profile assets","canonicalPath":"/recipes/client-portal/django/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:laravel:public-profiles","label":"Host client portal with Laravel: public profile assets","canonicalPath":"/recipes/client-portal/laravel/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:rails:public-profiles","label":"Host client portal with Rails: public profile assets","canonicalPath":"/recipes/client-portal/rails/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:phoenix:public-profiles","label":"Host client portal with Phoenix: public profile assets","canonicalPath":"/recipes/client-portal/phoenix/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:asp-net-core:public-profiles","label":"Host client portal with ASP.NET Core: public profile assets","canonicalPath":"/recipes/client-portal/asp-net-core/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:spring-boot:public-profiles","label":"Host client portal with Spring Boot: public profile assets","canonicalPath":"/recipes/client-portal/spring-boot/public-profiles","kind":"recipe"},{"id":"page:recipes:client-portal:flask:public-profiles","label":"Host client portal with Flask: public profile assets","canonicalPath":"/recipes/client-portal/flask/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:next-js:public-profiles","label":"Host partner portal with Next.js: public profile assets","canonicalPath":"/recipes/partner-portal/next-js/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:nuxt:public-profiles","label":"Host partner portal with Nuxt: public profile assets","canonicalPath":"/recipes/partner-portal/nuxt/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:sveltekit:public-profiles","label":"Host partner portal with SvelteKit: public profile assets","canonicalPath":"/recipes/partner-portal/sveltekit/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:django:public-profiles","label":"Host partner portal with Django: public profile assets","canonicalPath":"/recipes/partner-portal/django/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:laravel:public-profiles","label":"Host partner portal with Laravel: public profile assets","canonicalPath":"/recipes/partner-portal/laravel/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:rails:public-profiles","label":"Host partner portal with Rails: public profile assets","canonicalPath":"/recipes/partner-portal/rails/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:phoenix:public-profiles","label":"Host partner portal with Phoenix: public profile assets","canonicalPath":"/recipes/partner-portal/phoenix/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:asp-net-core:public-profiles","label":"Host partner portal with ASP.NET Core: public profile assets","canonicalPath":"/recipes/partner-portal/asp-net-core/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:spring-boot:public-profiles","label":"Host partner portal with Spring Boot: public profile assets","canonicalPath":"/recipes/partner-portal/spring-boot/public-profiles","kind":"recipe"},{"id":"page:recipes:partner-portal:flask:public-profiles","label":"Host partner portal with Flask: public profile assets","canonicalPath":"/recipes/partner-portal/flask/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:next-js:public-profiles","label":"Host vendor portal with Next.js: public profile assets","canonicalPath":"/recipes/vendor-portal/next-js/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:nuxt:public-profiles","label":"Host vendor portal with Nuxt: public profile assets","canonicalPath":"/recipes/vendor-portal/nuxt/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:sveltekit:public-profiles","label":"Host vendor portal with SvelteKit: public profile assets","canonicalPath":"/recipes/vendor-portal/sveltekit/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:django:public-profiles","label":"Host vendor portal with Django: public profile assets","canonicalPath":"/recipes/vendor-portal/django/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:laravel:public-profiles","label":"Host vendor portal with Laravel: public profile assets","canonicalPath":"/recipes/vendor-portal/laravel/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:rails:public-profiles","label":"Host vendor portal with Rails: public profile assets","canonicalPath":"/recipes/vendor-portal/rails/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:phoenix:public-profiles","label":"Host vendor portal with Phoenix: public profile assets","canonicalPath":"/recipes/vendor-portal/phoenix/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:asp-net-core:public-profiles","label":"Host vendor portal with ASP.NET Core: public profile assets","canonicalPath":"/recipes/vendor-portal/asp-net-core/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:spring-boot:public-profiles","label":"Host vendor portal with Spring Boot: public profile assets","canonicalPath":"/recipes/vendor-portal/spring-boot/public-profiles","kind":"recipe"},{"id":"page:recipes:vendor-portal:flask:public-profiles","label":"Host vendor portal with Flask: public profile assets","canonicalPath":"/recipes/vendor-portal/flask/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:next-js:public-profiles","label":"Host member portal with Next.js: public profile assets","canonicalPath":"/recipes/member-portal/next-js/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:nuxt:public-profiles","label":"Host member portal with Nuxt: public profile assets","canonicalPath":"/recipes/member-portal/nuxt/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:sveltekit:public-profiles","label":"Host member portal with SvelteKit: public profile assets","canonicalPath":"/recipes/member-portal/sveltekit/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:django:public-profiles","label":"Host member portal with Django: public profile assets","canonicalPath":"/recipes/member-portal/django/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:laravel:public-profiles","label":"Host member portal with Laravel: public profile assets","canonicalPath":"/recipes/member-portal/laravel/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:rails:public-profiles","label":"Host member portal with Rails: public profile assets","canonicalPath":"/recipes/member-portal/rails/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:phoenix:public-profiles","label":"Host member portal with Phoenix: public profile assets","canonicalPath":"/recipes/member-portal/phoenix/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:asp-net-core:public-profiles","label":"Host member portal with ASP.NET Core: public profile assets","canonicalPath":"/recipes/member-portal/asp-net-core/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:spring-boot:public-profiles","label":"Host member portal with Spring Boot: public profile assets","canonicalPath":"/recipes/member-portal/spring-boot/public-profiles","kind":"recipe"},{"id":"page:recipes:member-portal:flask:public-profiles","label":"Host member portal with Flask: public profile assets","canonicalPath":"/recipes/member-portal/flask/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:next-js:public-profiles","label":"Host community forum with Next.js: public profile assets","canonicalPath":"/recipes/community-forum/next-js/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:nuxt:public-profiles","label":"Host community forum with Nuxt: public profile assets","canonicalPath":"/recipes/community-forum/nuxt/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:sveltekit:public-profiles","label":"Host community forum with SvelteKit: public profile assets","canonicalPath":"/recipes/community-forum/sveltekit/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:django:public-profiles","label":"Host community forum with Django: public profile assets","canonicalPath":"/recipes/community-forum/django/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:laravel:public-profiles","label":"Host community forum with Laravel: public profile assets","canonicalPath":"/recipes/community-forum/laravel/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:rails:public-profiles","label":"Host community forum with Rails: public profile assets","canonicalPath":"/recipes/community-forum/rails/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:phoenix:public-profiles","label":"Host community forum with Phoenix: public profile assets","canonicalPath":"/recipes/community-forum/phoenix/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:asp-net-core:public-profiles","label":"Host community forum with ASP.NET Core: public profile assets","canonicalPath":"/recipes/community-forum/asp-net-core/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:spring-boot:public-profiles","label":"Host community forum with Spring Boot: public profile assets","canonicalPath":"/recipes/community-forum/spring-boot/public-profiles","kind":"recipe"},{"id":"page:recipes:community-forum:flask:public-profiles","label":"Host community forum with Flask: public profile assets","canonicalPath":"/recipes/community-forum/flask/public-profiles","kind":"recipe"}],"total":62,"offset":0,"limit":50},"related":[],"requiredBy":{"items":[],"total":0,"offset":0,"limit":50},"publishedRecipeCount":62,"scopeNote":"Architecture pattern to validate. Application code or external services may be needed; not a claimed managed feature.","nextActions":[{"actionId":"browse-catalog","label":"Browse the catalog index","operationId":"catalog_index","method":"GET","relativePath":"/v1/catalog","origin":"api","parameters":{},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"search-recipes","label":"Search published recipes by intent, stack and constraints","operationId":"search_recipes","method":"POST","relativePath":"/v1/catalog/search","origin":"api","parameters":{"body":{"limit":5,"query":"Public image delivery"}},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:client-portal:next-js:public-profiles","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aclient-portal%3Anext-js%3Apublic-profiles","origin":"api","parameters":{"recipeId":"page:recipes:client-portal:next-js:public-profiles"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:client-portal:nuxt:public-profiles","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aclient-portal%3Anuxt%3Apublic-profiles","origin":"api","parameters":{"recipeId":"page:recipes:client-portal:nuxt:public-profiles"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:client-portal:sveltekit:public-profiles","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aclient-portal%3Asveltekit%3Apublic-profiles","origin":"api","parameters":{"recipeId":"page:recipes:client-portal:sveltekit:public-profiles"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:client-portal:django:public-profiles","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aclient-portal%3Adjango%3Apublic-profiles","origin":"api","parameters":{"recipeId":"page:recipes:client-portal:django:public-profiles"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:client-portal:laravel:public-profiles","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Aclient-portal%3Alaravel%3Apublic-profiles","origin":"api","parameters":{"recipeId":"page:recipes:client-portal:laravel:public-profiles"},"requiresAuthentication":false,"requiresApproval":false}]}