{"catalogRevision":"cat_f13ab9a494120b5e","nodeId":"pattern:durable-job-state","label":"Durable job state","facet":"pattern","nodeType":"atom","canonicalPath":"/discover/pattern/durable-job-state","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:postgres-patterns","label":"Postgres patterns","canonicalPath":"/discover/pattern/postgres-patterns","kind":"group"},{"id":"pattern:durable-job-state","label":"Durable job state","canonicalPath":"/discover/pattern/durable-job-state","kind":"atom"}],"parents":{"items":[{"id":"pattern:postgres-patterns","label":"Postgres patterns","canonicalPath":"/discover/pattern/postgres-patterns","kind":"group"}],"total":1,"offset":0,"limit":100},"children":{"items":[],"total":0,"offset":0,"limit":50},"recipes":{"items":[{"id":"page:recipes:rest-api:express:persistent-state","label":"Host rest api with Express: Postgres-backed state","canonicalPath":"/recipes/rest-api/express/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:fastify:persistent-state","label":"Host rest api with Fastify: Postgres-backed state","canonicalPath":"/recipes/rest-api/fastify/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:nestjs:persistent-state","label":"Host rest api with NestJS: Postgres-backed state","canonicalPath":"/recipes/rest-api/nestjs/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:hono:persistent-state","label":"Host rest api with Hono: Postgres-backed state","canonicalPath":"/recipes/rest-api/hono/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:fastapi:persistent-state","label":"Host rest api with FastAPI: Postgres-backed state","canonicalPath":"/recipes/rest-api/fastapi/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:flask:persistent-state","label":"Host rest api with Flask: Postgres-backed state","canonicalPath":"/recipes/rest-api/flask/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:starlette:persistent-state","label":"Host rest api with Starlette: Postgres-backed state","canonicalPath":"/recipes/rest-api/starlette/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:gin:persistent-state","label":"Host rest api with Gin: Postgres-backed state","canonicalPath":"/recipes/rest-api/gin/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:echo:persistent-state","label":"Host rest api with Echo: Postgres-backed state","canonicalPath":"/recipes/rest-api/echo/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:asp-net-core:persistent-state","label":"Host rest api with ASP.NET Core: Postgres-backed state","canonicalPath":"/recipes/rest-api/asp-net-core/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:axum:persistent-state","label":"Host rest api with Axum: Postgres-backed state","canonicalPath":"/recipes/rest-api/axum/persistent-state","kind":"recipe"},{"id":"page:recipes:rest-api:spring-boot:persistent-state","label":"Host rest api with Spring Boot: Postgres-backed state","canonicalPath":"/recipes/rest-api/spring-boot/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:express:persistent-state","label":"Host graphql api with Express: Postgres-backed state","canonicalPath":"/recipes/graphql-api/express/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:fastify:persistent-state","label":"Host graphql api with Fastify: Postgres-backed state","canonicalPath":"/recipes/graphql-api/fastify/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:nestjs:persistent-state","label":"Host graphql api with NestJS: Postgres-backed state","canonicalPath":"/recipes/graphql-api/nestjs/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:hono:persistent-state","label":"Host graphql api with Hono: Postgres-backed state","canonicalPath":"/recipes/graphql-api/hono/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:fastapi:persistent-state","label":"Host graphql api with FastAPI: Postgres-backed state","canonicalPath":"/recipes/graphql-api/fastapi/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:flask:persistent-state","label":"Host graphql api with Flask: Postgres-backed state","canonicalPath":"/recipes/graphql-api/flask/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:starlette:persistent-state","label":"Host graphql api with Starlette: Postgres-backed state","canonicalPath":"/recipes/graphql-api/starlette/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:gin:persistent-state","label":"Host graphql api with Gin: Postgres-backed state","canonicalPath":"/recipes/graphql-api/gin/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:echo:persistent-state","label":"Host graphql api with Echo: Postgres-backed state","canonicalPath":"/recipes/graphql-api/echo/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:asp-net-core:persistent-state","label":"Host graphql api with ASP.NET Core: Postgres-backed state","canonicalPath":"/recipes/graphql-api/asp-net-core/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:axum:persistent-state","label":"Host graphql api with Axum: Postgres-backed state","canonicalPath":"/recipes/graphql-api/axum/persistent-state","kind":"recipe"},{"id":"page:recipes:graphql-api:spring-boot:persistent-state","label":"Host graphql api with Spring Boot: Postgres-backed state","canonicalPath":"/recipes/graphql-api/spring-boot/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:express:persistent-state","label":"Host mobile backend with Express: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/express/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:fastify:persistent-state","label":"Host mobile backend with Fastify: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/fastify/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:nestjs:persistent-state","label":"Host mobile backend with NestJS: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/nestjs/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:hono:persistent-state","label":"Host mobile backend with Hono: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/hono/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:fastapi:persistent-state","label":"Host mobile backend with FastAPI: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/fastapi/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:flask:persistent-state","label":"Host mobile backend with Flask: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/flask/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:starlette:persistent-state","label":"Host mobile backend with Starlette: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/starlette/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:gin:persistent-state","label":"Host mobile backend with Gin: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/gin/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:echo:persistent-state","label":"Host mobile backend with Echo: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/echo/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:asp-net-core:persistent-state","label":"Host mobile backend with ASP.NET Core: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/asp-net-core/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:axum:persistent-state","label":"Host mobile backend with Axum: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/axum/persistent-state","kind":"recipe"},{"id":"page:recipes:mobile-backend:spring-boot:persistent-state","label":"Host mobile backend with Spring Boot: Postgres-backed state","canonicalPath":"/recipes/mobile-backend/spring-boot/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:express:persistent-state","label":"Host mcp server with Express: Postgres-backed state","canonicalPath":"/recipes/mcp-server/express/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:fastify:persistent-state","label":"Host mcp server with Fastify: Postgres-backed state","canonicalPath":"/recipes/mcp-server/fastify/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:nestjs:persistent-state","label":"Host mcp server with NestJS: Postgres-backed state","canonicalPath":"/recipes/mcp-server/nestjs/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:hono:persistent-state","label":"Host mcp server with Hono: Postgres-backed state","canonicalPath":"/recipes/mcp-server/hono/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:fastapi:persistent-state","label":"Host mcp server with FastAPI: Postgres-backed state","canonicalPath":"/recipes/mcp-server/fastapi/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:flask:persistent-state","label":"Host mcp server with Flask: Postgres-backed state","canonicalPath":"/recipes/mcp-server/flask/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:starlette:persistent-state","label":"Host mcp server with Starlette: Postgres-backed state","canonicalPath":"/recipes/mcp-server/starlette/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:gin:persistent-state","label":"Host mcp server with Gin: Postgres-backed state","canonicalPath":"/recipes/mcp-server/gin/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:echo:persistent-state","label":"Host mcp server with Echo: Postgres-backed state","canonicalPath":"/recipes/mcp-server/echo/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:asp-net-core:persistent-state","label":"Host mcp server with ASP.NET Core: Postgres-backed state","canonicalPath":"/recipes/mcp-server/asp-net-core/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:axum:persistent-state","label":"Host mcp server with Axum: Postgres-backed state","canonicalPath":"/recipes/mcp-server/axum/persistent-state","kind":"recipe"},{"id":"page:recipes:mcp-server:spring-boot:persistent-state","label":"Host mcp server with Spring Boot: Postgres-backed state","canonicalPath":"/recipes/mcp-server/spring-boot/persistent-state","kind":"recipe"},{"id":"page:recipes:ai-chat-application:express:persistent-state","label":"Host ai chat application with Express: Postgres-backed state","canonicalPath":"/recipes/ai-chat-application/express/persistent-state","kind":"recipe"},{"id":"page:recipes:ai-chat-application:fastify:persistent-state","label":"Host ai chat application with Fastify: Postgres-backed state","canonicalPath":"/recipes/ai-chat-application/fastify/persistent-state","kind":"recipe"}],"total":80,"offset":0,"limit":50},"related":[],"requiredBy":{"items":[],"total":0,"offset":0,"limit":50},"publishedRecipeCount":80,"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":"Durable job state"}},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:rest-api:express:persistent-state","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Arest-api%3Aexpress%3Apersistent-state","origin":"api","parameters":{"recipeId":"page:recipes:rest-api:express:persistent-state"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:rest-api:fastify:persistent-state","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Arest-api%3Afastify%3Apersistent-state","origin":"api","parameters":{"recipeId":"page:recipes:rest-api:fastify:persistent-state"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:rest-api:nestjs:persistent-state","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Arest-api%3Anestjs%3Apersistent-state","origin":"api","parameters":{"recipeId":"page:recipes:rest-api:nestjs:persistent-state"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:rest-api:hono:persistent-state","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Arest-api%3Ahono%3Apersistent-state","origin":"api","parameters":{"recipeId":"page:recipes:rest-api:hono:persistent-state"},"requiresAuthentication":false,"requiresApproval":false},{"actionId":"inspect:page:recipes:rest-api:fastapi:persistent-state","label":"Inspect the full recipe contract","operationId":"inspect_recipe","method":"GET","relativePath":"/v1/catalog/recipes/page%3Arecipes%3Arest-api%3Afastapi%3Apersistent-state","origin":"api","parameters":{"recipeId":"page:recipes:rest-api:fastapi:persistent-state"},"requiresAuthentication":false,"requiresApproval":false}]}