{"openapi":"4.0.0-candidate","info":{"title":"Saasuluk API (Cloudflare)","version":"0.1.0"},"paths":{"category":{"requests":{"listCategory":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"required":["name","slug"],"additionalProperties":false}}}},"summary":"List Category","tags":["Category"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"createCategory":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"required":["name","slug"],"additionalProperties":false}}},"summary":"Create Category","tags":["Category"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"required":["name","slug"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}}}},"category/{id}":{"requests":{"getCategory":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"required":["name","slug"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Category by id","tags":["Category"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"updateCategory":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"required":["name","slug"],"additionalProperties":false}}},"summary":"Update Category","tags":["Category"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},"required":["name","slug"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}},"deleteCategory":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Category","tags":["Category"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":18}],"estimateMicroUsd":118},"x-suluk-access":{"requires":"admin"}}}},"product":{"requests":{"listProduct":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"categoryId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"imageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["name","slug"],"additionalProperties":false}}}},"summary":"List Product","tags":["Product"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":10}],"estimateMicroUsd":10},"x-suluk-access":{"requires":"anyone"}},"createProduct":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"categoryId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"imageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["name","slug"],"additionalProperties":false}}},"summary":"Create Product","tags":["Product"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"categoryId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"imageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["name","slug"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":45}],"estimateMicroUsd":145},"x-suluk-access":{"requires":"admin"}}}},"product/{id}":{"requests":{"getProduct":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"categoryId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"imageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["name","slug"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Product by id","tags":["Product"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":10}],"estimateMicroUsd":10},"x-suluk-access":{"requires":"anyone"}},"updateProduct":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"categoryId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"imageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["name","slug"],"additionalProperties":false}}},"summary":"Update Product","tags":["Product"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"categoryId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"imageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["name","slug"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":45}],"estimateMicroUsd":145},"x-suluk-access":{"requires":"admin"}},"deleteProduct":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Product","tags":["Product"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":27}],"estimateMicroUsd":127},"x-suluk-access":{"requires":"admin"}}}},"variant":{"requests":{"listVariant":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"inventory":{"type":"integer","minimum":0,"maximum":1000000}},"required":["productId","title"],"additionalProperties":false}}}},"summary":"List Variant","tags":["Variant"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"createVariant":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"inventory":{"type":"integer","minimum":0,"maximum":1000000}},"required":["productId","title"],"additionalProperties":false}}},"summary":"Create Variant","tags":["Variant"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"inventory":{"type":"integer","minimum":0,"maximum":1000000}},"required":["productId","title"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}}}},"variant/{id}":{"requests":{"getVariant":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"inventory":{"type":"integer","minimum":0,"maximum":1000000}},"required":["productId","title"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Variant by id","tags":["Variant"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"updateVariant":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"inventory":{"type":"integer","minimum":0,"maximum":1000000}},"required":["productId","title"],"additionalProperties":false}}},"summary":"Update Variant","tags":["Variant"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"inventory":{"type":"integer","minimum":0,"maximum":1000000}},"required":["productId","title"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}},"deleteVariant":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Variant","tags":["Variant"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":18}],"estimateMicroUsd":118},"x-suluk-access":{"requires":"admin"}}}},"discountCode":{"requests":{"listDiscountCode":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}}}},"summary":"List DiscountCode","tags":["DiscountCode"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"admin"}},"createDiscountCode":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}}},"summary":"Create DiscountCode","tags":["DiscountCode"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}}}},"discountCode/{id}":{"requests":{"getDiscountCode":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get DiscountCode by id","tags":["DiscountCode"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"admin"}},"updateDiscountCode":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}}},"summary":"Update DiscountCode","tags":["DiscountCode"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}},"deleteDiscountCode":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete DiscountCode","tags":["DiscountCode"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":18}],"estimateMicroUsd":118},"x-suluk-access":{"requires":"admin"}}}},"cart":{"requests":{"listCart":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","converted","abandoned"]}},"additionalProperties":false}}}},"summary":"List Cart","tags":["Cart"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":10}],"estimateMicroUsd":10},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"createCart":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","converted","abandoned"]}},"additionalProperties":false}}},"summary":"Create Cart","tags":["Cart"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","converted","abandoned"]}},"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":35}],"estimateMicroUsd":135},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"cart/{id}":{"requests":{"getCart":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","converted","abandoned"]}},"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Cart by id","tags":["Cart"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":10}],"estimateMicroUsd":10},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"updateCart":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","converted","abandoned"]}},"additionalProperties":false}}},"summary":"Update Cart","tags":["Cart"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","converted","abandoned"]}},"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":35}],"estimateMicroUsd":135},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"deleteCart":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Cart","tags":["Cart"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":21}],"estimateMicroUsd":121},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"order":{"requests":{"listOrder":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"totalCents":{"type":"integer","minimum":0,"maximum":100000000000},"status":{"type":"string","enum":["pending","paid","shipped","cancelled"]},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"stripePaymentIntentId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}}}},"summary":"List Order","tags":["Order"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":12}],"estimateMicroUsd":12},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"createOrder":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"totalCents":{"type":"integer","minimum":0,"maximum":100000000000},"status":{"type":"string","enum":["pending","paid","shipped","cancelled"]},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"stripePaymentIntentId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}}},"summary":"Create Order","tags":["Order"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"totalCents":{"type":"integer","minimum":0,"maximum":100000000000},"status":{"type":"string","enum":["pending","paid","shipped","cancelled"]},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"stripePaymentIntentId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":60}],"estimateMicroUsd":160},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"order/{id}":{"requests":{"getOrder":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"totalCents":{"type":"integer","minimum":0,"maximum":100000000000},"status":{"type":"string","enum":["pending","paid","shipped","cancelled"]},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"stripePaymentIntentId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Order by id","tags":["Order"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":12}],"estimateMicroUsd":12},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"updateOrder":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"totalCents":{"type":"integer","minimum":0,"maximum":100000000000},"status":{"type":"string","enum":["pending","paid","shipped","cancelled"]},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"stripePaymentIntentId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}}},"summary":"Update Order","tags":["Order"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"items":{"type":"string","maxLength":100000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"totalCents":{"type":"integer","minimum":0,"maximum":100000000000},"status":{"type":"string","enum":["pending","paid","shipped","cancelled"]},"discountCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"stripePaymentIntentId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":60}],"estimateMicroUsd":160},"x-suluk-access":{"requires":"admin"}},"deleteOrder":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Order","tags":["Order"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":36}],"estimateMicroUsd":136},"x-suluk-access":{"requires":"admin"}}}},"review":{"requests":{"listReview":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","published"]},"helpfulCount":{"type":"integer","minimum":0,"maximum":1000000000},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId","title"],"additionalProperties":false}}}},"summary":"List Review","tags":["Review"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"createReview":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","published"]},"helpfulCount":{"type":"integer","minimum":0,"maximum":1000000000},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId","title"],"additionalProperties":false}}},"summary":"Create Review","tags":["Review"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","published"]},"helpfulCount":{"type":"integer","minimum":0,"maximum":1000000000},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId","title"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":40}],"estimateMicroUsd":140},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"review/{id}":{"requests":{"getReview":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","published"]},"helpfulCount":{"type":"integer","minimum":0,"maximum":1000000000},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId","title"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Review by id","tags":["Review"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"updateReview":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","published"]},"helpfulCount":{"type":"integer","minimum":0,"maximum":1000000000},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId","title"],"additionalProperties":false}}},"summary":"Update Review","tags":["Review"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["pending","published"]},"helpfulCount":{"type":"integer","minimum":0,"maximum":1000000000},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId","title"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":40}],"estimateMicroUsd":140},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"deleteReview":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Review","tags":["Review"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":24}],"estimateMicroUsd":124},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"wishlistItem":{"requests":{"listWishlistItem":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"variantId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"addedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId"],"additionalProperties":false}}}},"summary":"List WishlistItem","tags":["WishlistItem"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"createWishlistItem":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"variantId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"addedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId"],"additionalProperties":false}}},"summary":"Create WishlistItem","tags":["WishlistItem"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"variantId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"addedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":25}],"estimateMicroUsd":125},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"wishlistItem/{id}":{"requests":{"getWishlistItem":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"variantId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"addedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get WishlistItem by id","tags":["WishlistItem"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"updateWishlistItem":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"variantId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"addedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId"],"additionalProperties":false}}},"summary":"Update WishlistItem","tags":["WishlistItem"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"variantId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"addedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["productId"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":25}],"estimateMicroUsd":125},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"deleteWishlistItem":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete WishlistItem","tags":["WishlistItem"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":15}],"estimateMicroUsd":115},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"post":{"requests":{"listPost":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"excerpt":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"publishedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"coverImageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["title","slug"],"additionalProperties":false}}}},"summary":"List Post","tags":["Post"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"createPost":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"excerpt":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"publishedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"coverImageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["title","slug"],"additionalProperties":false}}},"summary":"Create Post","tags":["Post"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"excerpt":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"publishedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"coverImageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["title","slug"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":45}],"estimateMicroUsd":145},"x-suluk-access":{"requires":"admin"}}}},"post/{id}":{"requests":{"getPost":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"excerpt":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"publishedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"coverImageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["title","slug"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Post by id","tags":["Post"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"anyone"}},"updatePost":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"excerpt":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"publishedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"coverImageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["title","slug"],"additionalProperties":false}}},"summary":"Update Post","tags":["Post"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"slug":{"type":"string","maxLength":120,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"excerpt":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"body":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"publishedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"coverImageUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]}},"required":["title","slug"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":45}],"estimateMicroUsd":145},"x-suluk-access":{"requires":"admin"}},"deletePost":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Post","tags":["Post"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":27}],"estimateMicroUsd":127},"x-suluk-access":{"requires":"admin"}}}},"faq":{"requests":{"listFaq":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"answer":{"type":"string","maxLength":2000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"sortOrder":{"type":"integer","minimum":0,"maximum":100000},"isActive":{"type":"boolean"}},"required":["question","answer"],"additionalProperties":false}}}},"summary":"List Faq","tags":["Faq"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"anyone"}},"createFaq":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"answer":{"type":"string","maxLength":2000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"sortOrder":{"type":"integer","minimum":0,"maximum":100000},"isActive":{"type":"boolean"}},"required":["question","answer"],"additionalProperties":false}}},"summary":"Create Faq","tags":["Faq"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"answer":{"type":"string","maxLength":2000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"sortOrder":{"type":"integer","minimum":0,"maximum":100000},"isActive":{"type":"boolean"}},"required":["question","answer"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":25}],"estimateMicroUsd":125},"x-suluk-access":{"requires":"admin"}}}},"faq/{id}":{"requests":{"getFaq":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"answer":{"type":"string","maxLength":2000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"sortOrder":{"type":"integer","minimum":0,"maximum":100000},"isActive":{"type":"boolean"}},"required":["question","answer"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Faq by id","tags":["Faq"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"anyone"}},"updateFaq":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"answer":{"type":"string","maxLength":2000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"sortOrder":{"type":"integer","minimum":0,"maximum":100000},"isActive":{"type":"boolean"}},"required":["question","answer"],"additionalProperties":false}}},"summary":"Update Faq","tags":["Faq"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"answer":{"type":"string","maxLength":2000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"sortOrder":{"type":"integer","minimum":0,"maximum":100000},"isActive":{"type":"boolean"}},"required":["question","answer"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":25}],"estimateMicroUsd":125},"x-suluk-access":{"requires":"admin"}},"deleteFaq":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Faq","tags":["Faq"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":15}],"estimateMicroUsd":115},"x-suluk-access":{"requires":"admin"}}}},"newsletterSubscriber":{"requests":{"listNewsletterSubscriber":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subscribedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["email"],"additionalProperties":false}}}},"summary":"List NewsletterSubscriber","tags":["NewsletterSubscriber"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"admin"}},"createNewsletterSubscriber":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subscribedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["email"],"additionalProperties":false}}},"summary":"Create NewsletterSubscriber","tags":["NewsletterSubscriber"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subscribedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["email"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":20}],"estimateMicroUsd":120},"x-suluk-access":{"requires":"anyone"}}}},"newsletterSubscriber/{id}":{"requests":{"getNewsletterSubscriber":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subscribedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["email"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get NewsletterSubscriber by id","tags":["NewsletterSubscriber"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"admin"}},"updateNewsletterSubscriber":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subscribedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["email"],"additionalProperties":false}}},"summary":"Update NewsletterSubscriber","tags":["NewsletterSubscriber"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subscribedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["email"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":20}],"estimateMicroUsd":120},"x-suluk-access":{"requires":"admin"}},"deleteNewsletterSubscriber":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete NewsletterSubscriber","tags":["NewsletterSubscriber"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":15}],"estimateMicroUsd":115},"x-suluk-access":{"requires":"admin"}}}},"contactSubmission":{"requests":{"listContactSubmission":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subject":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"message":{"type":"string","maxLength":5000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","email","subject","message"],"additionalProperties":false}}}},"summary":"List ContactSubmission","tags":["ContactSubmission"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"admin"}},"createContactSubmission":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subject":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"message":{"type":"string","maxLength":5000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","email","subject","message"],"additionalProperties":false}}},"summary":"Create ContactSubmission","tags":["ContactSubmission"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subject":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"message":{"type":"string","maxLength":5000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","email","subject","message"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":20}],"estimateMicroUsd":120},"x-suluk-access":{"requires":"anyone"}}}},"contactSubmission/{id}":{"requests":{"getContactSubmission":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subject":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"message":{"type":"string","maxLength":5000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","email","subject","message"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get ContactSubmission by id","tags":["ContactSubmission"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"admin"}},"updateContactSubmission":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subject":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"message":{"type":"string","maxLength":5000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","email","subject","message"],"additionalProperties":false}}},"summary":"Update ContactSubmission","tags":["ContactSubmission"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subject":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"message":{"type":"string","maxLength":5000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","email","subject","message"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":20}],"estimateMicroUsd":120},"x-suluk-access":{"requires":"admin"}},"deleteContactSubmission":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete ContactSubmission","tags":["ContactSubmission"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":15}],"estimateMicroUsd":115},"x-suluk-access":{"requires":"admin"}}}},"media":{"requests":{"listMedia":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string","format":"uri"},"alt":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["url","alt"],"additionalProperties":false}}}},"summary":"List Media","tags":["Media"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"anyone"}},"createMedia":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string","format":"uri"},"alt":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["url","alt"],"additionalProperties":false}}},"summary":"Create Media","tags":["Media"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string","format":"uri"},"alt":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["url","alt"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":25}],"estimateMicroUsd":125},"x-suluk-access":{"requires":"admin"}}}},"media/{id}":{"requests":{"getMedia":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string","format":"uri"},"alt":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["url","alt"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Media by id","tags":["Media"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":6}],"estimateMicroUsd":6},"x-suluk-access":{"requires":"anyone"}},"updateMedia":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string","format":"uri"},"alt":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["url","alt"],"additionalProperties":false}}},"summary":"Update Media","tags":["Media"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string","format":"uri"},"alt":{"type":"string","maxLength":300,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["url","alt"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":25}],"estimateMicroUsd":125},"x-suluk-access":{"requires":"admin"}},"deleteMedia":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Media","tags":["Media"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":15}],"estimateMicroUsd":115},"x-suluk-access":{"requires":"admin"}}}},"apiToken":{"requests":{"listApiToken":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"prefix":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"hashedKey":{"type":"string","maxLength":128,"pattern":"^[a-f0-9]+$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","prefix","hashedKey"],"additionalProperties":false}}}},"summary":"List ApiToken","tags":["ApiToken"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"createApiToken":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"prefix":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"hashedKey":{"type":"string","maxLength":128,"pattern":"^[a-f0-9]+$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","prefix","hashedKey"],"additionalProperties":false}}},"summary":"Create ApiToken","tags":["ApiToken"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"prefix":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"hashedKey":{"type":"string","maxLength":128,"pattern":"^[a-f0-9]+$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","prefix","hashedKey"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"apiToken/{id}":{"requests":{"getApiToken":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"prefix":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"hashedKey":{"type":"string","maxLength":128,"pattern":"^[a-f0-9]+$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","prefix","hashedKey"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get ApiToken by id","tags":["ApiToken"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"updateApiToken":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"prefix":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"hashedKey":{"type":"string","maxLength":128,"pattern":"^[a-f0-9]+$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","prefix","hashedKey"],"additionalProperties":false}}},"summary":"Update ApiToken","tags":["ApiToken"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"prefix":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"hashedKey":{"type":"string","maxLength":128,"pattern":"^[a-f0-9]+$"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["name","prefix","hashedKey"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"deleteApiToken":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete ApiToken","tags":["ApiToken"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":18}],"estimateMicroUsd":118},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"billingAccount":{"requests":{"listBillingAccount":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"principal":{"type":"string","maxLength":128,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"stripeCustomerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lastReportedMicroUsd":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReportedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["principal"],"additionalProperties":false}}}},"summary":"List BillingAccount","tags":["BillingAccount"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"createBillingAccount":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"principal":{"type":"string","maxLength":128,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"stripeCustomerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lastReportedMicroUsd":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReportedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["principal"],"additionalProperties":false}}},"summary":"Create BillingAccount","tags":["BillingAccount"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"principal":{"type":"string","maxLength":128,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"stripeCustomerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lastReportedMicroUsd":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReportedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["principal"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}}}},"billingAccount/{id}":{"requests":{"getBillingAccount":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"principal":{"type":"string","maxLength":128,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"stripeCustomerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lastReportedMicroUsd":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReportedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["principal"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get BillingAccount by id","tags":["BillingAccount"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"updateBillingAccount":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"principal":{"type":"string","maxLength":128,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"stripeCustomerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lastReportedMicroUsd":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReportedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["principal"],"additionalProperties":false}}},"summary":"Update BillingAccount","tags":["BillingAccount"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"principal":{"type":"string","maxLength":128,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"stripeCustomerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lastReportedMicroUsd":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastReportedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["principal"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130},"x-suluk-access":{"requires":"admin"}},"deleteBillingAccount":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete BillingAccount","tags":["BillingAccount"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":18}],"estimateMicroUsd":118},"x-suluk-access":{"requires":"admin"}}}},"project":{"requests":{"listProject":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"ownerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]}},"required":["name"],"additionalProperties":false}}}},"summary":"List Project","tags":["Project"],"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":12}],"estimateMicroUsd":12},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"createProject":{"method":"post","responses":{"201":{"status":201,"description":"created","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"ownerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]}},"required":["name"],"additionalProperties":false}}},"summary":"Create Project","tags":["Project"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"ownerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]}},"required":["name"],"additionalProperties":false},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":40}],"estimateMicroUsd":140},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"project/{id}":{"requests":{"getProject":{"method":"get","responses":{"200":{"status":200,"description":"ok","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"ownerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]}},"required":["name"],"additionalProperties":false}},"404":{"status":404,"description":"not found"}},"summary":"Get Project by id","tags":["Project"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":12}],"estimateMicroUsd":12},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"updateProject":{"method":"patch","responses":{"200":{"status":200,"description":"updated","contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"ownerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]}},"required":["name"],"additionalProperties":false}}},"summary":"Update Project","tags":["Project"],"contentType":"application/json","contentSchema":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"ownerId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]}},"required":["name"],"additionalProperties":false},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":40}],"estimateMicroUsd":140},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"deleteProject":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"}},"summary":"Delete Project","tags":["Project"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":24}],"estimateMicroUsd":124},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"checkout/order":{"requests":{"checkout":{"method":"post","summary":"Create an order from a cart (apply discount, total)","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"cartId":{"type":"integer","minimum":1,"maximum":1000000000000},"items":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":false,"properties":{"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"qty":{"type":"integer","minimum":1,"maximum":1000},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000}}}},"discountCode":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"}}},"responses":{"ok":{"status":201,"description":"Create an order from a cart (apply discount, total)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":80}],"estimateMicroUsd":180},"x-suluk-access":{"requires":"anyone"}}}},"discount/validate":{"requests":{"validateDiscount":{"method":"post","summary":"Validate a discount code","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"},"subtotalCents":{"type":"integer","minimum":0,"maximum":100000000000}},"required":["code"]},"responses":{"ok":{"status":200,"description":"Validate a discount code","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":10}],"estimateMicroUsd":10},"x-suluk-access":{"requires":"anyone"}}}},"search":{"requests":{"search":{"method":"get","summary":"Search products + blog posts","tags":["Operations"],"parameterSchema":{"query":{"type":"object","additionalProperties":false,"properties":{"q":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}}}},"responses":{"ok":{"status":200,"description":"Search products + blog posts","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":14}],"estimateMicroUsd":14},"x-suluk-access":{"requires":"anyone"}}}},"review/{id}/helpful":{"requests":{"markReviewHelpful":{"method":"post","summary":"Mark a review helpful (+1)","tags":["Operations"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"responses":{"ok":{"status":200,"description":"Mark a review helpful (+1)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":20}],"estimateMicroUsd":120},"x-suluk-access":{"requires":"authenticated"}}}},"analytics/summary":{"requests":{"analyticsSummary":{"method":"get","summary":"Store summary (orders, revenue, customers)","tags":["Operations"],"responses":{"ok":{"status":200,"description":"Store summary (orders, revenue, customers)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":20}],"estimateMicroUsd":20},"x-suluk-access":{"requires":"admin"}}}},"analytics/revenue":{"requests":{"analyticsRevenue":{"method":"get","summary":"Revenue per day (last 30d)","tags":["Operations"],"responses":{"ok":{"status":200,"description":"Revenue per day (last 30d)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":20}],"estimateMicroUsd":20},"x-suluk-access":{"requires":"admin"}}}},"analytics/top-products":{"requests":{"analyticsTopProducts":{"method":"get","summary":"Best-selling products","tags":["Operations"],"responses":{"ok":{"status":200,"description":"Best-selling products","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":24}],"estimateMicroUsd":24},"x-suluk-access":{"requires":"admin"}}}},"recommendations/{productId}":{"requests":{"recommendRelated":{"method":"get","summary":"Related products","tags":["Operations"],"parameterSchema":{"path":{"type":"object","properties":{"productId":{"type":"string","maxLength":16,"pattern":"^[0-9]+$"}},"required":["productId"],"additionalProperties":false}},"responses":{"ok":{"status":200,"description":"Related products","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":16}],"estimateMicroUsd":16},"x-suluk-access":{"requires":"anyone"}}}},"newsletter/subscribe":{"requests":{"subscribeNewsletter":{"method":"post","summary":"Subscribe to the newsletter (idempotent)","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"email":{"type":"string","format":"email","maxLength":254}},"required":["email"]},"responses":{"ok":{"status":201,"description":"Subscribe to the newsletter (idempotent)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":20}],"estimateMicroUsd":120},"x-suluk-access":{"requires":"anyone"}}}},"avatar":{"requests":{"generateAvatar":{"method":"get","summary":"Deterministic identicon SVG","tags":["Operations"],"parameterSchema":{"query":{"type":"object","additionalProperties":false,"properties":{"seed":{"type":"string","maxLength":100,"pattern":"^[\\w .@-]{0,100}$"}}}},"responses":{"ok":{"status":200,"description":"Deterministic identicon SVG","contentType":"image/svg+xml","contentSchema":{"type":"string"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":2}],"estimateMicroUsd":2},"x-suluk-access":{"requires":"anyone"}}}},"tokens/create":{"requests":{"createToken":{"method":"post","summary":"Create an API token (returns the secret ONCE)","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":80,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}},"required":["name"]},"responses":{"ok":{"status":201,"description":"Create an API token (returns the secret ONCE)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":30}],"estimateMicroUsd":130}}}},"tokens/{id}/revoke":{"requests":{"revokeToken":{"method":"post","summary":"Revoke an API token","tags":["Operations"],"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"responses":{"ok":{"status":200,"description":"Revoke an API token","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":20}],"estimateMicroUsd":120},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}},"checkout/pay":{"requests":{"payCheckout":{"method":"post","summary":"Create a pending order + a Stripe Checkout Session (returns the hosted URL)","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"items":{"type":"array","maxItems":200,"items":{"type":"object","additionalProperties":false,"properties":{"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"qty":{"type":"integer","minimum":1,"maximum":1000}}}},"discountCode":{"type":"string","maxLength":40,"pattern":"^[A-Z0-9][A-Z0-9_-]*$"}}},"responses":{"ok":{"status":200,"description":"Create a pending order + a Stripe Checkout Session (returns the hosted URL)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":90}],"estimateMicroUsd":190},"x-suluk-access":{"requires":"anyone"}}}},"checkout/confirm":{"requests":{"confirmCheckout":{"method":"post","summary":"Confirm payment by retrieving the Stripe session; mark the order paid","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"orderId":{"type":"integer","minimum":1,"maximum":1000000000000},"sessionId":{"type":"string","maxLength":255,"pattern":"^[A-Za-z0-9_]+$"}},"required":["orderId","sessionId"]},"responses":{"ok":{"status":200,"description":"Confirm payment by retrieving the Stripe session; mark the order paid","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":30}],"estimateMicroUsd":30},"x-suluk-access":{"requires":"anyone"}}}},"billing/connect":{"requests":{"connectBilling":{"method":"post","summary":"Start usage-based billing: a Stripe customer + a metered subscription","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"email":{"type":"string","format":"email","maxLength":254}}},"responses":{"ok":{"status":200,"description":"Start usage-based billing: a Stripe customer + a metered subscription","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":60}],"estimateMicroUsd":160},"x-suluk-access":{"requires":"authenticated"}}}},"billing/report":{"requests":{"reportUsage":{"method":"post","summary":"Report your accrued @suluk/cost usage to the Stripe Billing Meter","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false},"responses":{"ok":{"status":200,"description":"Report your accrued @suluk/cost usage to the Stripe Billing Meter","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":40}],"estimateMicroUsd":140},"x-suluk-access":{"requires":"authenticated","scope":"owner"}}}}},"components":{"securitySchemes":{"sessionCookie":{"type":"apiKey","in":"cookie","name":"better-auth.session_token"},"bearerAuth":{"type":"http","scheme":"bearer"}}}}