{"openapi":"3.1.0","info":{"title":"Typst Stationery API","version":"1.0.0"},"components":{"schemas":{}},"paths":{"/healthz":{"get":{"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["status","release"],"properties":{"status":{"type":"string"},"release":{"type":"string"}},"additionalProperties":false}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getHealthz"}},"/types":{"get":{"responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["type","description"],"properties":{"type":{"type":"string"},"description":{"type":"string"}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypes"}},"/types/hobonichi-planner":{"get":{"summary":"Describe hobonichi-planner","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesHobonichi-planner"}},"/types/hobonichi-planner/generate":{"post":{"summary":"Generate hobonichi-planner","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"year":{"default":2027,"minimum":1901,"maximum":2098,"type":"integer"},"months":{"default":[11,12],"minItems":1,"maxItems":12,"uniqueItems":true,"type":"array","items":{"minimum":1,"maximum":12,"type":"integer"}},"weekly":{"default":true,"type":"boolean"},"notes":{"default":2,"minimum":0,"maximum":24,"type":"integer"},"cover":{"default":true,"type":"boolean"}}}}}},"operationId":"postTypesHobonichi-plannerGenerate"}},"/types/hobonichi-weeks":{"get":{"summary":"Describe hobonichi-weeks","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesHobonichi-weeks"}},"/types/hobonichi-weeks/generate":{"post":{"summary":"Generate hobonichi-weeks","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"year":{"default":2027,"minimum":1901,"maximum":2098,"type":"integer"},"layout":{"default":"pages","anyOf":[{"const":"pages","type":"string"},{"const":"spreads","type":"string"},{"const":"sheets","type":"string"}]},"paper":{"default":"cream","anyOf":[{"const":"cream","type":"string"},{"const":"white","type":"string"}]},"sheet":{"default":"us-letter","anyOf":[{"const":"us-letter","type":"string"},{"const":"a4","type":"string"}]},"bleed":{"default":0,"minimum":0,"maximum":5,"type":"integer"},"numbers":{"default":false,"type":"boolean"},"memoPages":{"default":24,"minimum":0,"maximum":48,"type":"integer"}}}}}},"operationId":"postTypesHobonichi-weeksGenerate"}},"/types/book-journal":{"get":{"summary":"Describe book-journal","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesBook-journal"}},"/types/book-journal/generate":{"post":{"summary":"Generate book-journal","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"title":{"default":"Book Journal","maxLength":100,"type":"string"},"year":{"default":"20__","maxLength":20,"type":"string"},"goal":{"default":"","maxLength":30,"type":"string"},"owner":{"default":"","maxLength":100,"type":"string"},"edition":{"default":"expanded","anyOf":[{"const":"compact","type":"string"},{"const":"expanded","type":"string"}]},"extraNotes":{"default":4,"minimum":0,"maximum":24,"type":"integer"}}}}}},"operationId":"postTypesBook-journalGenerate"}},"/types/business-card":{"get":{"summary":"Describe business-card","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesBusiness-card"}},"/types/business-card/generate":{"post":{"summary":"Generate business-card","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"name":{"default":"Mara Ellison","maxLength":60,"type":"string"},"role":{"default":"Photography","maxLength":60,"type":"string"},"instagram":{"default":"@mara.ellison","maxLength":60,"type":"string"},"email":{"default":"hello@example.com","maxLength":100,"type":"string"},"website":{"default":"example.com/photos","maxLength":100,"type":"string"}}}}}},"operationId":"postTypesBusiness-cardGenerate"}},"/types/mini-zine":{"get":{"summary":"Describe mini-zine","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesMini-zine"}},"/types/mini-zine/generate":{"post":{"summary":"Generate mini-zine","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"paper":{"default":"letter","anyOf":[{"const":"letter","type":"string"},{"const":"a4","type":"string"}]},"mode":{"default":"print","anyOf":[{"const":"print","type":"string"},{"const":"proof","type":"string"},{"const":"preview","type":"string"}]},"guides":{"default":false,"type":"boolean"},"pages":{"default":[{"title":"Make a little book.","body":"Eight pages. One sheet. A pocket-sized collection."},{"title":"01 / Notice","body":"Collect one thing worth keeping: a photograph, a poem, a small observation."},{"title":"02 / Gather","body":"Choose a handful of images or short passages. A little book rewards a clear idea."},{"title":"03 / Arrange","body":"Put your eight pages in reading order. The template takes care of the print layout."},{"title":"04 / Print","body":"One side, landscape, actual size. Use the proof for your first fold."},{"title":"05 / Fold","body":"Crease all eight panels. Cut only the middle half of the horizontal centre crease."},{"title":"06 / Keep","body":"Push the folded sheet into a diamond, close the book and carry it somewhere."},{"title":"Your name here","body":"Title · edition · date. Contact or image credits. Edit this starter, or build the photo example in apps/mini-zine."}],"minItems":8,"maxItems":8,"type":"array","items":{"additionalProperties":false,"type":"object","required":["title","body"],"properties":{"title":{"maxLength":60,"type":"string"},"body":{"maxLength":400,"type":"string"}}}}}}}}},"operationId":"postTypesMini-zineGenerate"}},"/types/mini-magazine":{"get":{"summary":"Describe mini-magazine","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesMini-magazine"}},"/types/mini-magazine/generate":{"post":{"summary":"Generate mini-magazine","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"paper":{"default":"letter","anyOf":[{"const":"letter","type":"string"},{"const":"a4","type":"string"}]},"mode":{"default":"print","anyOf":[{"const":"print","type":"string"},{"const":"proof","type":"string"},{"const":"preview","type":"string"},{"const":"calibration","type":"string"}]},"guides":{"default":false,"type":"boolean"},"headings":{"default":["A pocket magazine","Inside this issue","A short opening","The first story","Look closely","Make a collection","A small interview","A quiet interlude","The middle spread","A second story","A field note","An image caption","Things to keep","Image credits","About this issue","Until next time"],"minItems":16,"maxItems":16,"type":"array","items":{"maxLength":60,"type":"string"}},"body":{"default":"Edit page {page} here. Add short text, photographs, diagrams or notes. Supply 4-32 pages in multiples of four. The print layout makes the leaves; full straight cuts separate them for folding, nesting and stapling.","maxLength":500,"description":"Body text for every page; {page} is replaced with the page number","type":"string"}}}}}},"operationId":"postTypesMini-magazineGenerate"}},"/types/christmas-card":{"get":{"summary":"Describe christmas-card","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesChristmas-card"}},"/types/christmas-card/generate":{"post":{"summary":"Generate christmas-card","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"year":{"default":2024,"minimum":1900,"maximum":2100,"type":"integer"},"location":{"default":"Vermont","maxLength":60,"type":"string"},"from":{"default":"The Smith Family","maxLength":80,"type":"string"},"greeting":{"default":"Dear Family and Friends,","maxLength":80,"type":"string"},"message":{"default":"May your holidays be filled with joy, peace, and wonderful memories.","maxLength":600,"type":"string"},"photoUrl":{"maxLength":2000,"type":"string"}}}}}},"operationId":"postTypesChristmas-cardGenerate"}},"/types/modern-recipe":{"get":{"summary":"Describe modern-recipe","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesModern-recipe"}},"/types/modern-recipe/generate":{"post":{"summary":"Generate modern-recipe","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"title":{"default":"Simple Berry Smoothie","maxLength":100,"type":"string"},"author":{"default":"Healthy Recipes Co.","maxLength":100,"type":"string"},"description":{"default":"A quick and easy way to get a boost of nutrients!","maxLength":200,"type":"string"},"servings":{"default":"1-2","maxLength":20,"type":"string"},"prepTime":{"default":"5 minutes","maxLength":30,"type":"string"},"cookTime":{"default":"N/A","maxLength":30,"type":"string"},"ingredients":{"default":[{"amount":"1 cup","item":"Mixed berries (fresh or frozen)"},{"amount":"1/2 cup","item":"Greek yogurt (or dairy-free alternative)"},{"amount":"1/4 cup","item":"Milk (any kind) or water"},{"amount":"1 tbsp","item":"Honey or maple syrup (optional, to taste)"},{"amount":"1/2","item":"Banana (optional, for creaminess)"}],"maxItems":20,"type":"array","items":{"additionalProperties":false,"type":"object","required":["amount","item"],"properties":{"amount":{"maxLength":40,"type":"string"},"item":{"maxLength":200,"type":"string"}}}},"steps":{"default":["Place all ingredients into a blender.","Blend on high speed until smooth and creamy.","Taste and adjust sweetness if necessary.","Pour into a glass and serve immediately."],"maxItems":20,"type":"array","items":{"maxLength":300,"type":"string"}},"nutrition":{"default":[{"name":"Calories","value":"350 kcal"},{"name":"Protein","value":"15g","dv":"30%"},{"name":"Fat","value":"10g","dv":"15%"},{"name":"Carbohydrates","value":"50g","dv":"17%"},{"name":"Fiber","value":"8g","dv":"32%"},{"name":"Sugars","value":"25g"}],"maxItems":20,"type":"array","items":{"additionalProperties":false,"type":"object","required":["name","value"],"properties":{"name":{"maxLength":40,"type":"string"},"value":{"maxLength":40,"type":"string"},"dv":{"maxLength":20,"type":"string"}}}}}}}}},"operationId":"postTypesModern-recipeGenerate"}},"/types/recipe-post":{"get":{"summary":"Describe recipe-post","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesRecipe-post"}},"/types/recipe-post/generate":{"post":{"summary":"Generate recipe-post","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"title":{"default":"Classic Margherita Pizza","maxLength":100,"type":"string"},"description":{"default":"Simple, fresh, and absolutely delicious","maxLength":200,"type":"string"},"prepTime":{"default":"20 mins","maxLength":30,"type":"string"},"cookTime":{"default":"12 mins","maxLength":30,"type":"string"},"serves":{"default":"2 pizzas","maxLength":30,"type":"string"},"ingredients":{"default":["Pizza dough (store-bought or homemade)","1 cup tomato sauce","8 oz fresh mozzarella","Fresh basil leaves","Extra virgin olive oil","Salt and pepper"],"maxItems":12,"type":"array","items":{"maxLength":100,"type":"string"}},"instructions":{"default":["Preheat oven to 475°F","Roll out dough to 12-inch circles","Spread sauce, leaving 1-inch border","Add torn mozzarella pieces","Bake 10-12 minutes until golden","Top with basil and drizzle oil"],"maxItems":12,"type":"array","items":{"maxLength":150,"type":"string"}},"credit":{"default":"The Pizza Kitchen","maxLength":60,"type":"string"},"handle":{"default":"@pizzakitchen","maxLength":60,"type":"string"}}}}}},"operationId":"postTypesRecipe-postGenerate"}},"/types/code-showcase":{"get":{"summary":"Describe code-showcase","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesCode-showcase"}},"/types/code-showcase/generate":{"post":{"summary":"Generate code-showcase","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"title":{"maxLength":80,"type":"string"},"language":{"default":"python","maxLength":30,"type":"string"},"author":{"default":"Code Examples","maxLength":60,"type":"string"},"handle":{"default":"@codeexamples","maxLength":60,"type":"string"},"samples":{"default":[{"title":"Binary Search","code":"def binary_search(arr, target):\n    left, right = 0, len(arr) - 1\n\n    while left <= right:\n        mid = (left + right) // 2\n\n        if arr[mid] == target:\n            return mid\n        elif arr[mid] < target:\n            left = mid + 1\n        else:\n            right = mid - 1\n\n    return -1","explanation":"Binary search divides the search space in half with each iteration, achieving O(log n) time complexity."},{"title":"List Comprehension","code":"# Standard approach\nnumbers = [1, 2, 3, 4, 5]\nsquares = []\nfor n in numbers:\n    squares.append(n ** 2)\n\n# List comprehension\nsquares = [n ** 2 for n in numbers]","explanation":"List comprehensions provide a concise way to create lists. The highlighted line shows the Pythonic one-liner equivalent.","highlightLines":[8]}],"minItems":1,"maxItems":8,"type":"array","items":{"additionalProperties":false,"type":"object","required":["title","code"],"properties":{"title":{"maxLength":80,"type":"string"},"code":{"maxLength":4000,"type":"string"},"explanation":{"maxLength":400,"type":"string"},"highlightLines":{"maxItems":50,"uniqueItems":true,"type":"array","items":{"minimum":1,"maximum":200,"type":"integer"}}}}}}}}}},"operationId":"postTypesCode-showcaseGenerate"}},"/types/photo-book":{"get":{"summary":"Describe photo-book","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesPhoto-book"}},"/types/photo-book/generate":{"post":{"summary":"Generate photo-book","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"format":{"default":"landscape","anyOf":[{"const":"landscape","type":"string"},{"const":"square","type":"string"}]},"theme":{"default":"gallery","anyOf":[{"const":"gallery","type":"string"},{"const":"cinema","type":"string"},{"const":"editorial","type":"string"}]},"title":{"default":"VARIANTS","maxLength":60,"type":"string"},"subtitle":{"default":"A photo book","maxLength":100,"type":"string"}}}}}},"operationId":"postTypesPhoto-bookGenerate"}},"/types/book-tracker":{"get":{"summary":"Describe book-tracker","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesBook-tracker"}},"/types/book-tracker/generate":{"post":{"summary":"Generate book-tracker","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"title":{"maxLength":100,"type":"string"},"habit":{"default":"Read","maxLength":30,"type":"string"},"dailyMinutesGoal":{"default":30,"minimum":1,"maximum":600,"type":"integer"},"monthlyGoal":{"additionalProperties":false,"type":"object","properties":{"books":{"maxLength":40,"type":"string"},"pages":{"maxLength":40,"type":"string"},"minutes":{"maxLength":40,"type":"string"}}}}}}}},"operationId":"postTypesBook-trackerGenerate"}},"/types/social-media-post":{"get":{"summary":"Describe social-media-post","responses":{"200":{"description":"Response for status 200","content":{"application/json":{"schema":{"type":"object","required":["type","description","schema"],"properties":{"type":{"type":"string"},"description":{"type":"string"},"schema":{}},"additionalProperties":false}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesSocial-media-post"}},"/types/social-media-post/generate":{"post":{"summary":"Generate social-media-post","responses":{"200":{"description":"Generated PDF","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Response for status 400","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"413":{"description":"Response for status 413","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"422":{"description":"Response for status 422","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"503":{"description":"Response for status 503","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object","properties":{"title":{"default":"Build with Purpose","maxLength":100,"type":"string"},"tag":{"default":"Manifesto","maxLength":40,"type":"string"},"paragraphs":{"default":["Every line of code should have a reason to exist.","We don't write software for the sake of writing software. We solve *real problems* for *real people*.","Good engineering is not about complexity.\nIt's about finding the *simplest solution* that works.","Test your assumptions.\nQuestion your methods.\nRefine your approach.","Ship early, iterate often, and always keep the user in mind."],"maxItems":8,"type":"array","items":{"maxLength":400,"type":"string"}},"date":{"maxLength":40,"type":"string"}}}}}},"operationId":"postTypesSocial-media-postGenerate"}},"/types/{type}":{"get":{"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"getTypesByType"}},"/types/{type}/generate":{"post":{"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}},"404":{"description":"Response for status 404","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}},"operationId":"postTypesByTypeGenerate"}},"/openapi.json":{"get":{"summary":"Generated OpenAPI specification","operationId":"getOpenapi.json","responses":{"200":{"description":"OpenAPI document","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}}}},"/docs":{"get":{"summary":"API documentation","operationId":"getDocs","responses":{"200":{"description":"HTML documentation","content":{"text/html":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}},"additionalProperties":false}}}}}}}}}