{"openapi":"4.0.0-candidate","info":{"title":"The Card Pyramid 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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Category","tags":["Category"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"longDescription":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"compareAtCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"downloadUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"featured":{"type":"boolean"},"requiresShipping":{"type":"boolean"},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lowStockAlerted":{"type":"boolean"}},"required":["name","slug"],"additionalProperties":false}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Product","tags":["Product"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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"}]},"longDescription":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"compareAtCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"downloadUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"featured":{"type":"boolean"},"requiresShipping":{"type":"boolean"},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lowStockAlerted":{"type":"boolean"}},"required":["name","slug"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"longDescription":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"compareAtCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"downloadUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"featured":{"type":"boolean"},"requiresShipping":{"type":"boolean"},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lowStockAlerted":{"type":"boolean"}},"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"}]},"longDescription":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"compareAtCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"downloadUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"featured":{"type":"boolean"},"requiresShipping":{"type":"boolean"},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lowStockAlerted":{"type":"boolean"}},"required":["name","slug"],"additionalProperties":false}},"404":{"status":404,"description":"not found"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"longDescription":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"compareAtCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"downloadUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"featured":{"type":"boolean"},"requiresShipping":{"type":"boolean"},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lowStockAlerted":{"type":"boolean"}},"required":["name","slug"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"longDescription":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"compareAtCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"downloadUrl":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"featured":{"type":"boolean"},"requiresShipping":{"type":"boolean"},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"lowStockAlerted":{"type":"boolean"}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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]*$"},"options":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"priceCentsEnabled":{"type":"boolean"},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"lowStockAlerted":{"type":"boolean"}},"required":["productId","title"],"additionalProperties":false}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Variant","tags":["Variant"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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]*$"},"options":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"priceCentsEnabled":{"type":"boolean"},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"lowStockAlerted":{"type":"boolean"}},"required":["productId","title"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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]*$"},"options":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"priceCentsEnabled":{"type":"boolean"},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"lowStockAlerted":{"type":"boolean"}},"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]*$"},"options":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"priceCentsEnabled":{"type":"boolean"},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"lowStockAlerted":{"type":"boolean"}},"required":["productId","title"],"additionalProperties":false}},"404":{"status":404,"description":"not found"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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]*$"},"options":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"priceCentsEnabled":{"type":"boolean"},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"lowStockAlerted":{"type":"boolean"}},"required":["productId","title"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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]*$"},"options":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"images":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":1000000000},"priceCentsEnabled":{"type":"boolean"},"inventory":{"type":"integer","minimum":0,"maximum":1000000},"lowStockAlerted":{"type":"boolean"}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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_-]*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"minSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxDiscountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUsesPerCustomer":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appliesToProductIds":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"startsAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List DiscountCode","tags":["DiscountCode"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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_-]*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"minSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxDiscountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUsesPerCustomer":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appliesToProductIds":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"startsAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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_-]*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"minSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxDiscountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUsesPerCustomer":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appliesToProductIds":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"startsAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"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_-]*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"minSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxDiscountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUsesPerCustomer":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appliesToProductIds":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"startsAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}},"404":{"status":404,"description":"not found"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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_-]*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"minSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxDiscountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUsesPerCustomer":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appliesToProductIds":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"startsAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["code"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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_-]*$"},"description":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":0,"maximum":1000000000},"minSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxDiscountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUsesPerCustomer":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appliesToProductIds":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"startsAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":0,"maximum":1000000000},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Cart","tags":["Cart"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"customerEmail":{"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]*$"},"shippingAddress":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"carrier":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"trackingNumber":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"shippingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingMethod":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"recoveryEmailedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Order","tags":["Order"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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"}]},"customerEmail":{"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]*$"},"shippingAddress":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"carrier":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"trackingNumber":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"shippingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingMethod":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"recoveryEmailedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"customerEmail":{"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]*$"},"shippingAddress":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"carrier":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"trackingNumber":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"shippingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingMethod":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"recoveryEmailedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"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"}]},"customerEmail":{"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]*$"},"shippingAddress":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"carrier":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"trackingNumber":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"shippingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingMethod":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"recoveryEmailedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}},"404":{"status":404,"description":"not found"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"customerEmail":{"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]*$"},"shippingAddress":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"carrier":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"trackingNumber":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"shippingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingMethod":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"recoveryEmailedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"customerEmail":{"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]*$"},"shippingAddress":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"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"}]},"carrier":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"trackingNumber":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"shippingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingMethod":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"recoveryEmailedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"verifiedPurchase":{"type":"boolean"},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Review","tags":["Review"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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"}]},"verifiedPurchase":{"type":"boolean"},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"verifiedPurchase":{"type":"boolean"},"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"}]},"verifiedPurchase":{"type":"boolean"},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"verifiedPurchase":{"type":"boolean"},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}]},"verifiedPurchase":{"type":"boolean"},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List WishlistItem","tags":["WishlistItem"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"}}}},"address":{"requests":{"listAddress":{"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"}]},"name":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"line1":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"city":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"country":{"type":"string","maxLength":2,"pattern":"^[A-Za-z]{2}$"},"isDefault":{"type":"boolean"}},"required":["line1","city"],"additionalProperties":false}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Address","tags":["Address"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"x-suluk-access":{"requires":"authenticated","scope":"owner"}},"createAddress":{"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"}]},"name":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"line1":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"city":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"country":{"type":"string","maxLength":2,"pattern":"^[A-Za-z]{2}$"},"isDefault":{"type":"boolean"}},"required":["line1","city"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"Create Address","tags":["Address"],"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"}]},"name":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"line1":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"city":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"country":{"type":"string","maxLength":2,"pattern":"^[A-Za-z]{2}$"},"isDefault":{"type":"boolean"}},"required":["line1","city"],"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"}}}},"address/{id}":{"requests":{"getAddress":{"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"}]},"name":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"line1":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"city":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"country":{"type":"string","maxLength":2,"pattern":"^[A-Za-z]{2}$"},"isDefault":{"type":"boolean"}},"required":["line1","city"],"additionalProperties":false}},"404":{"status":404,"description":"not found"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"Get Address by id","tags":["Address"],"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"}},"updateAddress":{"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"}]},"name":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"line1":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"city":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"country":{"type":"string","maxLength":2,"pattern":"^[A-Za-z]{2}$"},"isDefault":{"type":"boolean"}},"required":["line1","city"],"additionalProperties":false}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"Update Address","tags":["Address"],"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"}]},"name":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"line1":{"type":"string","maxLength":200,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"city":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},{"type":"null"}]},"country":{"type":"string","maxLength":2,"pattern":"^[A-Za-z]{2}$"},"isDefault":{"type":"boolean"}},"required":["line1","city"],"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"}},"deleteAddress":{"method":"delete","responses":{"204":{"status":204,"description":"deleted"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"Delete Address","tags":["Address"],"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Post","tags":["Post"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Faq","tags":["Faq"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List NewsletterSubscriber","tags":["NewsletterSubscriber"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List ContactSubmission","tags":["ContactSubmission"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Media","tags":["Media"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List ApiToken","tags":["ApiToken"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List BillingAccount","tags":["BillingAccount"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"summary":"List Project","tags":["Project"],"parameterSchema":{"query":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"perPage":{"type":"integer","minimum":1,"maximum":9007199254740991},"sort":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"},"order":{"type":"string","enum":["asc","desc"]},"q":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"additionalProperties":false}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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}},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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"},"500":{"status":500,"description":"Internal server error","contentType":"application/problem+json","contentSchema":{"$ref":"#/components/schemas/ProblemDetails"}}},"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},"variantId":{"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_-]*$"},"email":{"type":"string","format":"email","maxLength":254},"shippingMethod":{"type":"string","maxLength":40,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"shippingAddress":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line1":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"city":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"postalCode":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"country":{"type":"string","maxLength":56,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}},"required":["name","line1","city","postalCode","country"]}}},"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"}}}},"review/submit":{"requests":{"submitReview":{"method":"post","summary":"Submit a product review — auto-flags verified-purchase when the reviewer has a paid order for the product","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"productId":{"type":"integer","minimum":1,"maximum":1000000000000},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"body":{"type":"string","maxLength":5000,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]*$"}},"required":["productId","rating"]},"responses":{"ok":{"status":201,"description":"Submit a product review — auto-flags verified-purchase when the reviewer has a paid order for the product","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"compute","basis":"per-call","microUsd":100},{"source":"db-write","basis":"per-call","microUsd":25}],"estimateMicroUsd":125}}}},"order/{id}/status":{"requests":{"setOrderStatus":{"method":"post","summary":"Admin: advance an order's fulfillment status (paid/shipped/cancelled) + record tracking; emails the buyer on shipped/cancelled","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"carrier":{"type":"string","maxLength":60,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"trackingNumber":{"type":"string","maxLength":80,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}},"required":["status"]},"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":"Admin: advance an order's fulfillment status (paid/shipped/cancelled) + record tracking; emails the buyer on shipped/cancelled","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},"x-suluk-access":{"requires":"admin"}}}},"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"}}}},"contact/submit":{"requests":{"submitContact":{"method":"post","summary":"Submit the contact form (persists + notifies the store owner)","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"email":{"type":"string","format":"email","maxLength":254},"subject":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"message":{"type":"string","maxLength":4000,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}},"required":["name","email","subject","message"]},"responses":{"ok":{"status":201,"description":"Submit the contact form (persists + notifies the store owner)","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"}}}},"product/{id}/notify-stock":{"requests":{"subscribeStock":{"method":"post","summary":"Join a sold-out product's back-in-stock waitlist","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false,"properties":{"email":{"type":"string","format":"email","maxLength":254}},"required":["email"]},"parameterSchema":{"path":{"type":"object","properties":{"id":{"type":"string","maxLength":1024,"pattern":"^[^\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f]*$"}},"required":["id"],"additionalProperties":false}},"responses":{"ok":{"status":201,"description":"Join a sold-out product's back-in-stock waitlist","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"}}}},"order/{id}/invoice":{"requests":{"orderInvoice":{"method":"get","summary":"Printable HTML invoice for an order (owner or admin)","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":"Printable HTML invoice for an order (owner or admin)","contentType":"text/html","contentSchema":{"type":"string"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":12}],"estimateMicroUsd":12},"x-suluk-access":{"requires":"authenticated"}}}},"newsletter/unsubscribe":{"requests":{"unsubscribeNewsletter":{"method":"get","summary":"Unsubscribe from the newsletter via a tokenized one-click link","tags":["Operations"],"parameterSchema":{"query":{"type":"object","additionalProperties":false,"properties":{"t":{"type":"string","maxLength":400,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}}}},"responses":{"ok":{"status":200,"description":"Unsubscribe from the newsletter via a tokenized one-click link","contentType":"text/html","contentSchema":{"type":"string"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":8}],"estimateMicroUsd":8},"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},"x-suluk-access":{"requires":"authenticated"}}}},"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},"variantId":{"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_-]*$"},"email":{"type":"string","format":"email","maxLength":254},"shippingMethod":{"type":"string","maxLength":40,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"shippingAddress":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line1":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"city":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"postalCode":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"country":{"type":"string","maxLength":56,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}},"required":["name","line1","city","postalCode","country"]}}},"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/quote":{"requests":{"quoteCheckout":{"method":"post","summary":"Quote the live order total — subtotal − discount + shipping + tax (via the pluggable @suluk/stripe adapters)","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},"variantId":{"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_-]*$"},"shippingMethod":{"type":"string","maxLength":40,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"shippingAddress":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":120,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line1":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"line2":{"type":"string","maxLength":160,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"city":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"state":{"type":"string","maxLength":100,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"postalCode":{"type":"string","maxLength":20,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"},"country":{"type":"string","maxLength":56,"pattern":"^[^<>\\u0000-\\u001f\\u007f]*$"}},"required":["name","line1","city","postalCode","country"]}}},"responses":{"ok":{"status":200,"description":"Quote the live order total — subtotal − discount + shipping + tax (via the pluggable @suluk/stripe adapters)","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":12}],"estimateMicroUsd":12},"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"}}}},"billing/portal":{"requests":{"openBillingPortal":{"method":"post","summary":"Open the Stripe customer billing portal (manage saved cards + invoices)","tags":["Operations"],"contentType":"application/json","contentSchema":{"type":"object","additionalProperties":false},"responses":{"ok":{"status":200,"description":"Open the Stripe customer billing portal (manage saved cards + invoices)","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"}}}},"account/export":{"requests":{"exportAccount":{"method":"get","summary":"Export all your account data (GDPR) — orders, wishlist, reviews, token metadata — as a downloadable JSON","tags":["Operations"],"responses":{"ok":{"status":200,"description":"Export all your account data (GDPR) — orders, wishlist, reviews, token metadata — as a downloadable JSON","contentType":"application/json","contentSchema":{"type":"object"}}},"x-suluk-cost":{"components":[{"source":"db-read","basis":"per-call","microUsd":20}],"estimateMicroUsd":20},"x-suluk-access":{"requires":"authenticated"}}}}},"components":{"schemas":{"ProblemDetails":{"type":"object","title":"ProblemDetails","description":"RFC-9457 Problem Details (application/problem+json).","properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri-reference"},"errors":{"type":"object","additionalProperties":true},"error":{"type":"string","deprecated":true}},"required":["type","title","status"]},"Category":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"additionalProperties":false},"Product":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"slug":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"longDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"compareAtCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"categoryId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"inventory":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"anyOf":[{"type":"string"},{"type":"null"}]},"featured":{"type":"boolean"},"requiresShipping":{"type":"boolean"},"status":{"type":"string","enum":["draft","published"]},"stripePriceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"lowStockAlerted":{"type":"boolean"}},"required":["id","name","slug","description","longDescription","priceCents","compareAtCents","downloadUrl","categoryId","inventory","imageUrl","images","featured","requiresShipping","status","stripePriceId","lowStockAlerted"],"additionalProperties":false},"Variant":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"options":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"anyOf":[{"type":"string"},{"type":"null"}]},"priceCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"priceCentsEnabled":{"type":"boolean"},"inventory":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lowStockAlerted":{"type":"boolean"}},"required":["id","productId","title","options","images","priceCents","priceCentsEnabled","inventory","lowStockAlerted"],"additionalProperties":false},"DiscountCode":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"code":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"discountType":{"type":"string","enum":["percent","fixed"]},"discountValue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"minSubtotalCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxDiscountCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUses":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxUsesPerCustomer":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"appliesToProductIds":{"anyOf":[{"type":"string"},{"type":"null"}]},"startsAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isActive":{"type":"boolean"},"currentUses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","code","description","discountType","discountValue","minSubtotalCents","maxDiscountCents","maxUses","maxUsesPerCustomer","appliesToProductIds","startsAt","isActive","currentUses","expiresAt"],"additionalProperties":false},"Cart":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string"},{"type":"null"}]},"items":{"type":"string"},"discountCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["active","converted","abandoned"]}},"required":["id","customerId","items","discountCode","status"],"additionalProperties":false},"Order":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string"},{"type":"null"}]},"customerEmail":{"anyOf":[{"type":"string"},{"type":"null"}]},"items":{"type":"string"},"shippingAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"totalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["pending","paid","shipped","cancelled"]},"discountCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"stripePaymentIntentId":{"anyOf":[{"type":"string"},{"type":"null"}]},"carrier":{"anyOf":[{"type":"string"},{"type":"null"}]},"trackingNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"shippingCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"taxCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"shippingMethod":{"anyOf":[{"type":"string"},{"type":"null"}]},"recoveryEmailedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","customerId","customerEmail","items","shippingAddress","totalCents","status","discountCode","stripePaymentIntentId","carrier","trackingNumber","shippingCents","taxCents","shippingMethod","recoveryEmailedAt","createdAt"],"additionalProperties":false},"Review":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"productId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string"},{"type":"null"}]},"rating":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"body":{"anyOf":[{"type":"string"},{"type":"null"}]},"verifiedPurchase":{"type":"boolean"},"status":{"type":"string","enum":["pending","published"]},"helpfulCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","productId","customerId","rating","title","body","verifiedPurchase","status","helpfulCount","createdAt"],"additionalProperties":false},"WishlistItem":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string"},{"type":"null"}]},"productId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"variantId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"addedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","customerId","productId","variantId","addedAt"],"additionalProperties":false},"Address":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"customerId":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"line1":{"type":"string"},"line2":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"type":"string"},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"type":"string"},"isDefault":{"type":"boolean"}},"required":["id","customerId","name","line1","line2","city","state","postalCode","country","isDefault"],"additionalProperties":false},"Post":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"title":{"type":"string"},"slug":{"type":"string"},"excerpt":{"anyOf":[{"type":"string"},{"type":"null"}]},"body":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["draft","published"]},"publishedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}]},"coverImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","title","slug","excerpt","body","status","publishedAt","authorId","coverImageUrl"],"additionalProperties":false},"Faq":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"question":{"type":"string"},"answer":{"type":"string"},"sortOrder":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isActive":{"type":"boolean"}},"required":["id","question","answer","sortOrder","isActive"],"additionalProperties":false},"NewsletterSubscriber":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"email":{"type":"string"},"subscribedAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","email","subscribedAt"],"additionalProperties":false},"ContactSubmission":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"email":{"type":"string"},"subject":{"type":"string"},"message":{"type":"string"},"createdAt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","name","email","subject","message","createdAt"],"additionalProperties":false},"Media":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"url":{"type":"string"},"alt":{"type":"string"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","url","alt","width","height"],"additionalProperties":false},"ApiToken":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"prefix":{"type":"string"},"hashedKey":{"type":"string"},"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":["id","userId","name","prefix","hashedKey","createdAt","lastUsedAt","revokedAt"],"additionalProperties":false},"BillingAccount":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"principal":{"type":"string"},"stripeCustomerId":{"anyOf":[{"type":"string"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string"},{"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":["id","principal","stripeCustomerId","subscriptionId","lastReportedMicroUsd","lastReportedAt","createdAt"],"additionalProperties":false},"Project":{"type":"object","properties":{"id":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"name":{"type":"string"},"ownerId":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["active","archived"]}},"required":["id","name","ownerId","status"],"additionalProperties":false}},"securitySchemes":{"sessionCookie":{"type":"apiKey","in":"cookie","name":"better-auth.session_token"},"bearerAuth":{"type":"http","scheme":"bearer"}}}}