{"catalogRevision":"cat_f13ab9a494120b5e","nodeId":"pattern:private-document-library","label":"Private document library","facet":"pattern","nodeType":"atom","canonicalPath":"/discover/pattern/private-document-library","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:object-storage-patterns","label":"Object storage patterns","canonicalPath":"/discover/pattern/object-storage-patterns","kind":"group"},{"id":"pattern:private-document-library","label":"Private document library","canonicalPath":"/discover/pattern/private-document-library","kind":"atom"}],"parents":{"items":[{"id":"pattern:object-storage-patterns","label":"Object storage patterns","canonicalPath":"/discover/pattern/object-storage-patterns","kind":"group"}],"total":1,"offset":0,"limit":100},"children":{"items":[],"total":0,"offset":0,"limit":50},"recipes":{"items":[{"id":"page:recipes:crm:next-js:private-attachments","label":"Host crm with Next.js: private attachments","canonicalPath":"/recipes/crm/next-js/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:django:private-attachments","label":"Host crm with Django: private attachments","canonicalPath":"/recipes/crm/django/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:fastapi:private-attachments","label":"Host crm with FastAPI: private attachments","canonicalPath":"/recipes/crm/fastapi/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:flask:private-attachments","label":"Host crm with Flask: private attachments","canonicalPath":"/recipes/crm/flask/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:laravel:private-attachments","label":"Host crm with Laravel: private attachments","canonicalPath":"/recipes/crm/laravel/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:rails:private-attachments","label":"Host crm with Rails: private attachments","canonicalPath":"/recipes/crm/rails/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:spring-boot:private-attachments","label":"Host crm with Spring Boot: private attachments","canonicalPath":"/recipes/crm/spring-boot/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:quarkus:private-attachments","label":"Host crm with Quarkus: private attachments","canonicalPath":"/recipes/crm/quarkus/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:asp-net-core:private-attachments","label":"Host crm with ASP.NET Core: private attachments","canonicalPath":"/recipes/crm/asp-net-core/private-attachments","kind":"recipe"},{"id":"page:recipes:crm:phoenix:private-attachments","label":"Host crm with Phoenix: private attachments","canonicalPath":"/recipes/crm/phoenix/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:next-js:private-attachments","label":"Host project tracker with Next.js: private attachments","canonicalPath":"/recipes/project-tracker/next-js/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:django:private-attachments","label":"Host project tracker with Django: private attachments","canonicalPath":"/recipes/project-tracker/django/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:fastapi:private-attachments","label":"Host project tracker with FastAPI: private attachments","canonicalPath":"/recipes/project-tracker/fastapi/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:flask:private-attachments","label":"Host project tracker with Flask: private attachments","canonicalPath":"/recipes/project-tracker/flask/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:laravel:private-attachments","label":"Host project tracker with Laravel: private attachments","canonicalPath":"/recipes/project-tracker/laravel/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:rails:private-attachments","label":"Host project tracker with Rails: private attachments","canonicalPath":"/recipes/project-tracker/rails/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:spring-boot:private-attachments","label":"Host project tracker with Spring Boot: private attachments","canonicalPath":"/recipes/project-tracker/spring-boot/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:quarkus:private-attachments","label":"Host project tracker with Quarkus: private attachments","canonicalPath":"/recipes/project-tracker/quarkus/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:asp-net-core:private-attachments","label":"Host project tracker with ASP.NET Core: private attachments","canonicalPath":"/recipes/project-tracker/asp-net-core/private-attachments","kind":"recipe"},{"id":"page:recipes:project-tracker:phoenix:private-attachments","label":"Host project tracker with Phoenix: private attachments","canonicalPath":"/recipes/project-tracker/phoenix/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:next-js:private-attachments","label":"Host inventory manager with Next.js: private attachments","canonicalPath":"/recipes/inventory-manager/next-js/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:django:private-attachments","label":"Host inventory manager with Django: private attachments","canonicalPath":"/recipes/inventory-manager/django/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:fastapi:private-attachments","label":"Host inventory manager with FastAPI: private attachments","canonicalPath":"/recipes/inventory-manager/fastapi/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:flask:private-attachments","label":"Host inventory manager with Flask: private attachments","canonicalPath":"/recipes/inventory-manager/flask/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:laravel:private-attachments","label":"Host inventory manager with Laravel: private attachments","canonicalPath":"/recipes/inventory-manager/laravel/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:rails:private-attachments","label":"Host inventory manager with Rails: private attachments","canonicalPath":"/recipes/inventory-manager/rails/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:spring-boot:private-attachments","label":"Host inventory manager with Spring Boot: private attachments","canonicalPath":"/recipes/inventory-manager/spring-boot/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:quarkus:private-attachments","label":"Host inventory manager with Quarkus: private attachments","canonicalPath":"/recipes/inventory-manager/quarkus/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:asp-net-core:private-attachments","label":"Host inventory manager with ASP.NET Core: private attachments","canonicalPath":"/recipes/inventory-manager/asp-net-core/private-attachments","kind":"recipe"},{"id":"page:recipes:inventory-manager:phoenix:private-attachments","label":"Host inventory manager with Phoenix: private attachments","canonicalPath":"/recipes/inventory-manager/phoenix/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:next-js:private-attachments","label":"Host help desk with Next.js: private attachments","canonicalPath":"/recipes/help-desk/next-js/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:django:private-attachments","label":"Host help desk with Django: private attachments","canonicalPath":"/recipes/help-desk/django/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:fastapi:private-attachments","label":"Host help desk with FastAPI: private attachments","canonicalPath":"/recipes/help-desk/fastapi/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:flask:private-attachments","label":"Host help desk with Flask: private attachments","canonicalPath":"/recipes/help-desk/flask/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:laravel:private-attachments","label":"Host help desk with Laravel: private attachments","canonicalPath":"/recipes/help-desk/laravel/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:rails:private-attachments","label":"Host help desk with Rails: private attachments","canonicalPath":"/recipes/help-desk/rails/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:spring-boot:private-attachments","label":"Host help desk with Spring Boot: private attachments","canonicalPath":"/recipes/help-desk/spring-boot/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:quarkus:private-attachments","label":"Host help desk with Quarkus: private attachments","canonicalPath":"/recipes/help-desk/quarkus/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:asp-net-core:private-attachments","label":"Host help desk with ASP.NET Core: private attachments","canonicalPath":"/recipes/help-desk/asp-net-core/private-attachments","kind":"recipe"},{"id":"page:recipes:help-desk:phoenix:private-attachments","label":"Host help desk with Phoenix: private attachments","canonicalPath":"/recipes/help-desk/phoenix/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:next-js:private-attachments","label":"Host recruiting tracker with Next.js: private attachments","canonicalPath":"/recipes/recruiting-tracker/next-js/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:django:private-attachments","label":"Host recruiting tracker with Django: private attachments","canonicalPath":"/recipes/recruiting-tracker/django/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:fastapi:private-attachments","label":"Host recruiting tracker with FastAPI: private attachments","canonicalPath":"/recipes/recruiting-tracker/fastapi/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:flask:private-attachments","label":"Host recruiting tracker with Flask: private attachments","canonicalPath":"/recipes/recruiting-tracker/flask/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:laravel:private-attachments","label":"Host recruiting tracker with Laravel: private attachments","canonicalPath":"/recipes/recruiting-tracker/laravel/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:rails:private-attachments","label":"Host recruiting tracker with Rails: private attachments","canonicalPath":"/recipes/recruiting-tracker/rails/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:spring-boot:private-attachments","label":"Host recruiting tracker with Spring Boot: private attachments","canonicalPath":"/recipes/recruiting-tracker/spring-boot/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:quarkus:private-attachments","label":"Host recruiting tracker with Quarkus: private attachments","canonicalPath":"/recipes/recruiting-tracker/quarkus/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:asp-net-core:private-attachments","label":"Host recruiting tracker with ASP.NET Core: private attachments","canonicalPath":"/recipes/recruiting-tracker/asp-net-core/private-attachments","kind":"recipe"},{"id":"page:recipes:recruiting-tracker:phoenix:private-attachments","label":"Host recruiting tracker with Phoenix: private attachments","canonicalPath":"/recipes/recruiting-tracker/phoenix/private-attachments","kind":"recipe"}],"total":150,"offset":0,"limit":50},"related":[],"requiredBy":{"items":[],"total":0,"offset":0,"limit":50},"publishedRecipeCount":150,"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":"Private document library"}},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:crm:next-js:private-attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Acrm%3Anext-js%3Aprivate-attachments","origin":"api","parameters":{"recipeId":"page:recipes:crm:next-js:private-attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:crm:django:private-attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Acrm%3Adjango%3Aprivate-attachments","origin":"api","parameters":{"recipeId":"page:recipes:crm:django:private-attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:crm:fastapi:private-attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Acrm%3Afastapi%3Aprivate-attachments","origin":"api","parameters":{"recipeId":"page:recipes:crm:fastapi:private-attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:crm:flask:private-attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Acrm%3Aflask%3Aprivate-attachments","origin":"api","parameters":{"recipeId":"page:recipes:crm:flask:private-attachments"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:crm:laravel:private-attachments","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Acrm%3Alaravel%3Aprivate-attachments","origin":"api","parameters":{"recipeId":"page:recipes:crm:laravel:private-attachments"},"requiresAuthentication":false,"requiresApproval":false}]}