{
    "openapi": "3.1.0",
    "info": {
        "title": "Utilorax Developer API",
        "version": "1.0.0",
        "summary": "203 JSON endpoints for everyday developer utilities.",
        "description": "A free JSON API for everyday utilities: hashing and encoding, unit conversion, text transforms, calculators, generators, date and number helpers, web lookups, and real file conversion for PDFs, images and documents.\n\nNo account is needed to try it — unauthenticated requests get 10 a day. A free key raises that to 500 a month. Every response is JSON of the shape `{\"ok\": true, \"result\": …}`, and errors are `{\"ok\": false, \"error\": \"…\"}` with a 4xx or 5xx status.\n\nCORS is open, so the API can be called straight from a browser.",
        "contact": {
            "name": "Utilorax",
            "url": "https://utilorax.com/api",
            "email": "support@utilorax.com"
        },
        "license": {
            "name": "Free to use",
            "url": "https://utilorax.com/terms"
        }
    },
    "servers": [
        {
            "url": "https://utilorax.com",
            "description": "Production"
        }
    ],
    "externalDocs": {
        "description": "Full documentation",
        "url": "https://utilorax.com/api"
    },
    "tags": [
        {
            "name": "convert",
            "description": "Convert values between units across 14 measurement families — length, weight, temperature, volume, data, speed and more."
        },
        {
            "name": "dev",
            "description": "The everyday developer toolbox: hashing, Base64, URL encoding, JSON tools, CSV to JSON, UUIDs and JWT decoding."
        },
        {
            "name": "text",
            "description": "Transform and analyse text: change case, slugify, count words, reverse, sort lines, de-duplicate, find and replace."
        },
        {
            "name": "calc",
            "description": "Common calculations as clean JSON: BMI, BMR, percentages, tip, discount, VAT, interest, loan payments and age."
        },
        {
            "name": "web",
            "description": "Inspect any URL or domain: HTTP status, headers, meta tags, Open Graph, DNS records, IP, page size and more."
        },
        {
            "name": "generate",
            "description": "Generate useful things on demand: strong passwords, UUIDs, lorem ipsum, colours, random numbers, QR codes and barcodes."
        },
        {
            "name": "encode",
            "description": "Encode and decode between formats: hexadecimal, binary, Morse code, ROT13, HTML entities and Unicode escapes."
        },
        {
            "name": "datetime",
            "description": "Work with dates and times: Unix timestamps, timezone conversion, date differences, adding intervals and week numbers."
        },
        {
            "name": "number",
            "description": "Convert numbers between bases (binary, octal, decimal, hex), to and from Roman numerals, and into words."
        },
        {
            "name": "file",
            "description": "Convert and process real files with a multipart upload — PDF, images, spreadsheets and Word. Send a POST with files[] and get the converted file back."
        }
    ],
    "components": {
        "securitySchemes": {
            "ApiKeyAuth": {
                "type": "apiKey",
                "in": "header",
                "name": "X-API-Key",
                "description": "Optional. Without a key you get 10 requests a day; a free key gives 500 a month."
            }
        },
        "schemas": {
            "Success": {
                "type": "object",
                "required": [
                    "ok"
                ],
                "properties": {
                    "ok": {
                        "type": "boolean",
                        "const": true
                    },
                    "result": {
                        "description": "The operation result. Shape depends on the endpoint."
                    },
                    "quota": {
                        "type": "object",
                        "properties": {
                            "tier": {
                                "type": "string"
                            },
                            "plan": {
                                "type": "string"
                            },
                            "limit": {
                                "type": "integer"
                            },
                            "remaining": {
                                "type": "integer"
                            },
                            "period": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "Error": {
                "type": "object",
                "required": [
                    "ok",
                    "error"
                ],
                "properties": {
                    "ok": {
                        "type": "boolean",
                        "const": false
                    },
                    "error": {
                        "type": "string"
                    }
                }
            }
        }
    },
    "security": [
        {
            "ApiKeyAuth": []
        }
    ],
    "paths": {
        "/api/v1/convert/categories": {
            "get": {
                "tags": [
                    "convert"
                ],
                "summary": "List all unit categories and their units",
                "description": "List all unit categories and their units.",
                "operationId": "convertCategoriesGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/convert/categories"
                }
            }
        },
        "/api/v1/convert/{category}": {
            "get": {
                "tags": [
                    "convert"
                ],
                "summary": "Convert a value between two units",
                "description": "Convert a value between two units. Categories: length, weight, temperature, volume, area, speed, data, time, pressure, energy, angle, power, frequency, force.",
                "operationId": "convertCategoryGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "category",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "Source unit slug, e.g. meters",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "description": "Target unit slug, e.g. feet",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "The number to convert",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/convert/length?from=meters&to=feet&value=10"
                }
            }
        },
        "/api/v1/convert/currency": {
            "get": {
                "tags": [
                    "convert"
                ],
                "summary": "Convert money between currencies using live exchange rates",
                "description": "Convert money between currencies using live exchange rates.",
                "operationId": "convertCurrencyGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "ISO code, e.g. USD",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "description": "ISO code, e.g. EUR",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "Amount",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/convert/currency?from=USD&to=EUR&value=100"
                }
            }
        },
        "/api/v1/dev/hash": {
            "get": {
                "tags": [
                    "dev"
                ],
                "summary": "Hash text with a chosen algorithm",
                "description": "Hash text with a chosen algorithm.",
                "operationId": "devHashGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "text",
                        "in": "query",
                        "required": true,
                        "description": "Text to hash",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "algo",
                        "in": "query",
                        "required": false,
                        "description": "md5, sha1, sha256 (default), sha512, sha384, sha224, crc32b, ripemd160",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/hash?text=hello&algo=sha256"
                }
            }
        },
        "/api/v1/dev/hash-all": {
            "get": {
                "tags": [
                    "dev"
                ],
                "summary": "Return MD5, SHA-1, SHA-256, SHA-512 and CRC32 at once",
                "description": "Return MD5, SHA-1, SHA-256, SHA-512 and CRC32 at once.",
                "operationId": "devHashAllGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "text",
                        "in": "query",
                        "required": true,
                        "description": "Text to hash",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/hash-all?text=hello"
                }
            }
        },
        "/api/v1/dev/hmac": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Compute an HMAC signature",
                "description": "Compute an HMAC signature.",
                "operationId": "devHmacPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Message"
                                    },
                                    "key": {
                                        "type": "string",
                                        "description": "Secret key"
                                    },
                                    "algo": {
                                        "type": "string",
                                        "description": "Algorithm (default sha256)"
                                    }
                                },
                                "required": [
                                    "text",
                                    "key"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/hmac?text=Hello+World+from+Utilorax&key=secret-key&algo=sha256"
                }
            }
        },
        "/api/v1/dev/bcrypt": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Hash a password with bcrypt",
                "description": "Hash a password with bcrypt.",
                "operationId": "devBcryptPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Password"
                                    },
                                    "cost": {
                                        "type": "string",
                                        "description": "Cost factor 4-15 (default 10)"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/bcrypt?text=my-password&cost=10"
                }
            }
        },
        "/api/v1/dev/uuid": {
            "get": {
                "tags": [
                    "dev"
                ],
                "summary": "Generate random UUID v4 values",
                "description": "Generate random UUID v4 values.",
                "operationId": "devUuidGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "count",
                        "in": "query",
                        "required": false,
                        "description": "How many (1-100, default 1)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/uuid?count=3"
                }
            }
        },
        "/api/v1/dev/base64": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Encode or decode Base64",
                "description": "Encode or decode Base64.",
                "operationId": "devBase64Post",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/base64?text=Hello+World+from+Utilorax&mode=encode"
                }
            }
        },
        "/api/v1/dev/url-encode": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Percent-encode or decode a URL component",
                "description": "Percent-encode or decode a URL component.",
                "operationId": "devUrlEncodePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/url-encode?text=a+b%26c%3Dd&mode=encode"
                }
            }
        },
        "/api/v1/dev/json-validate": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Check whether a string is valid JSON",
                "description": "Check whether a string is valid JSON.",
                "operationId": "devJsonValidatePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "json": {
                                        "type": "string",
                                        "description": "JSON string"
                                    }
                                },
                                "required": [
                                    "json"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/json-validate?json=%7B%22name%22%3A%22Utilorax%22%2C%22free%22%3Atrue%2C%22tools%22%3A496%7D"
                }
            }
        },
        "/api/v1/dev/json-minify": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Minify JSON (also validates it)",
                "description": "Minify JSON (also validates it).",
                "operationId": "devJsonMinifyPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "json": {
                                        "type": "string",
                                        "description": "JSON string"
                                    }
                                },
                                "required": [
                                    "json"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/json-minify?json=%7B%22name%22%3A%22Utilorax%22%2C%22free%22%3Atrue%2C%22tools%22%3A496%7D"
                }
            }
        },
        "/api/v1/dev/json-format": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Pretty-print JSON with 2-space indentation",
                "description": "Pretty-print JSON with 2-space indentation.",
                "operationId": "devJsonFormatPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "json": {
                                        "type": "string",
                                        "description": "JSON string"
                                    }
                                },
                                "required": [
                                    "json"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/json-format?json=%7B%22name%22%3A%22Utilorax%22%2C%22free%22%3Atrue%2C%22tools%22%3A496%7D"
                }
            }
        },
        "/api/v1/dev/json-to-typescript": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Generate TypeScript interfaces from a JSON sample",
                "description": "Generate TypeScript interfaces from a JSON sample.",
                "operationId": "devJsonToTypescriptPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "json": {
                                        "type": "string",
                                        "description": "JSON string"
                                    }
                                },
                                "required": [
                                    "json"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/json-to-typescript?json=%7B%22name%22%3A%22Utilorax%22%2C%22free%22%3Atrue%2C%22tools%22%3A496%7D"
                }
            }
        },
        "/api/v1/dev/csv-to-json": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Convert CSV text to a JSON array of objects",
                "description": "Convert CSV text to a JSON array of objects.",
                "operationId": "devCsvToJsonPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "csv": {
                                        "type": "string",
                                        "description": "CSV text (first row = header)"
                                    },
                                    "delimiter": {
                                        "type": "string",
                                        "description": "Field delimiter (default ,)"
                                    }
                                },
                                "required": [
                                    "csv"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/csv-to-json?csv=name%2Ccity%0AAda%2CLondon%0AAlan%2CCambridge&delimiter=%2C"
                }
            }
        },
        "/api/v1/dev/jwt-decode": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Decode a JWT header and payload (no signature check)",
                "description": "Decode a JWT header and payload (no signature check).",
                "operationId": "devJwtDecodePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "description": "The JWT string"
                                    }
                                },
                                "required": [
                                    "token"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/jwt-decode?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
                }
            }
        },
        "/api/v1/dev/argon2": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Hash a password with Argon2id",
                "description": "Hash a password with Argon2id.",
                "operationId": "devArgon2Post",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Password"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/argon2?text=my-password"
                }
            }
        },
        "/api/v1/dev/password-verify": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Check a password against a bcrypt/Argon2 hash",
                "description": "Check a password against a bcrypt/Argon2 hash.",
                "operationId": "devPasswordVerifyPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Password"
                                    },
                                    "hash": {
                                        "type": "string",
                                        "description": "The stored hash"
                                    }
                                },
                                "required": [
                                    "text",
                                    "hash"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/password-verify?text=my-password&hash=%242y%2410%24N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy"
                }
            }
        },
        "/api/v1/dev/ntlm": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Compute an NTLM hash",
                "description": "Compute an NTLM hash.",
                "operationId": "devNtlmPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Password"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/ntlm?text=my-password"
                }
            }
        },
        "/api/v1/dev/mysql": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Compute a MySQL PASSWORD() hash",
                "description": "Compute a MySQL PASSWORD() hash.",
                "operationId": "devMysqlPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Password"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/mysql?text=my-password"
                }
            }
        },
        "/api/v1/dev/markdown-to-html": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Convert Markdown to HTML",
                "description": "Convert Markdown to HTML.",
                "operationId": "devMarkdownToHtmlPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Markdown"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/markdown-to-html?text=%23+Utilorax%0A%0AA+%2A%2Afree%2A%2A+developer+API."
                }
            }
        },
        "/api/v1/dev/xml-to-json": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Convert XML to JSON",
                "description": "Convert XML to JSON.",
                "operationId": "devXmlToJsonPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "xml": {
                                        "type": "string",
                                        "description": "XML string"
                                    }
                                },
                                "required": [
                                    "xml"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/xml-to-json?xml=%3Cnote%3E%3Cto%3EAda%3C%2Fto%3E%3Cbody%3EHello%3C%2Fbody%3E%3C%2Fnote%3E"
                }
            }
        },
        "/api/v1/dev/regex-test": {
            "post": {
                "tags": [
                    "dev"
                ],
                "summary": "Test a regular expression against text",
                "description": "Test a regular expression against text.",
                "operationId": "devRegexTestPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "pattern": {
                                        "type": "string",
                                        "description": "Delimited pattern, e.g. /ab+c/i"
                                    },
                                    "text": {
                                        "type": "string",
                                        "description": "Subject text"
                                    }
                                },
                                "required": [
                                    "pattern",
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/regex-test?pattern=%2F%5Ba-z%5D%2B%40%5Ba-z%5D%2B%5C.%5Ba-z%5D%7B2%2C%7D%2Fi&text=write+to+ada%40example.com+today"
                }
            }
        },
        "/api/v1/dev/color-palette": {
            "get": {
                "tags": [
                    "dev"
                ],
                "summary": "Generate light/dark shades from a colour",
                "description": "Generate light/dark shades from a colour.",
                "operationId": "devColorPaletteGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "A HEX colour like #4f7cff",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/dev/color-palette?value=%234f7cff"
                }
            }
        },
        "/api/v1/text/case": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Change text case",
                "description": "Change text case.",
                "operationId": "textCasePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "upper, lower, title, sentence, camel, pascal, snake, kebab"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/case?text=Hello+World+from+Utilorax&mode=upper"
                }
            }
        },
        "/api/v1/text/slugify": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Turn text into a clean URL slug",
                "description": "Turn text into a clean URL slug.",
                "operationId": "textSlugifyPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/slugify?text=Hello+World+from+Utilorax%21"
                }
            }
        },
        "/api/v1/text/word-count": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Count words, characters, sentences, lines and reading time",
                "description": "Count words, characters, sentences, lines and reading time.",
                "operationId": "textWordCountPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/word-count?text=Hello+World+from+Utilorax"
                }
            }
        },
        "/api/v1/text/reverse": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Reverse text by characters, words or lines",
                "description": "Reverse text by characters, words or lines.",
                "operationId": "textReversePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "by": {
                                        "type": "string",
                                        "description": "characters (default), words or lines"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/reverse?text=Hello+World+from+Utilorax&by=characters"
                }
            }
        },
        "/api/v1/text/sort-lines": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Sort lines alphabetically",
                "description": "Sort lines alphabetically.",
                "operationId": "textSortLinesPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "order": {
                                        "type": "string",
                                        "description": "asc (default) or desc"
                                    },
                                    "case_insensitive": {
                                        "type": "string",
                                        "description": "1 to ignore case"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/sort-lines?text=banana%0Aapple%0Acherry&order=asc"
                }
            }
        },
        "/api/v1/text/dedupe": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Remove duplicate lines",
                "description": "Remove duplicate lines.",
                "operationId": "textDedupePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/dedupe?text=apple%0Abanana%0Aapple%0Acherry"
                }
            }
        },
        "/api/v1/text/remove-empty": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Remove blank lines",
                "description": "Remove blank lines.",
                "operationId": "textRemoveEmptyPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/remove-empty?text=one%0A%0Atwo%0A%0A%0Athree"
                }
            }
        },
        "/api/v1/text/trim": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Trim leading/trailing whitespace from every line",
                "description": "Trim leading/trailing whitespace from every line.",
                "operationId": "textTrimPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/trim?text=++padded+line++%0A+++another+++"
                }
            }
        },
        "/api/v1/text/find-replace": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Find and replace text",
                "description": "Find and replace text.",
                "operationId": "textFindReplacePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "find": {
                                        "type": "string",
                                        "description": "Text to find"
                                    },
                                    "replace": {
                                        "type": "string",
                                        "description": "Replacement (default empty)"
                                    }
                                },
                                "required": [
                                    "text",
                                    "find"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/find-replace?text=Hello+World+from+Utilorax&find=World&replace=Everyone"
                }
            }
        },
        "/api/v1/text/extract-emails": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Extract all email addresses from text",
                "description": "Extract all email addresses from text.",
                "operationId": "textExtractEmailsPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/extract-emails?text=Contact+ada%40example.com+or+alan%40example.org+for+details."
                }
            }
        },
        "/api/v1/text/extract-urls": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Extract all URLs from text",
                "description": "Extract all URLs from text.",
                "operationId": "textExtractUrlsPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/extract-urls?text=See+https%3A%2F%2Futilorax.com+and+https%3A%2F%2Futilorax.com%2Fapi+for+more."
                }
            }
        },
        "/api/v1/text/strip-html": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Remove HTML tags, leaving plain text",
                "description": "Remove HTML tags, leaving plain text.",
                "operationId": "textStripHtmlPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "HTML input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/strip-html?text=%3Cp%3EHello+%3Cstrong%3EWorld%3C%2Fstrong%3E%3C%2Fp%3E"
                }
            }
        },
        "/api/v1/text/add-line-numbers": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Prefix each line with a number",
                "description": "Prefix each line with a number.",
                "operationId": "textAddLineNumbersPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "start": {
                                        "type": "string",
                                        "description": "Starting number (default 1)"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/add-line-numbers?text=first%0Asecond%0Athird&start=1"
                }
            }
        },
        "/api/v1/text/remove-line-breaks": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Join lines into one, replacing breaks",
                "description": "Join lines into one, replacing breaks.",
                "operationId": "textRemoveLineBreaksPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "separator": {
                                        "type": "string",
                                        "description": "Replacement (default space)"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/remove-line-breaks?text=first%0Asecond%0Athird&separator=+"
                }
            }
        },
        "/api/v1/text/repeat": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Repeat text N times",
                "description": "Repeat text N times.",
                "operationId": "textRepeatPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "times": {
                                        "type": "string",
                                        "description": "How many (default 2)"
                                    },
                                    "separator": {
                                        "type": "string",
                                        "description": "Between copies (default newline)"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/repeat?text=Utilorax&times=3&separator=%2C+"
                }
            }
        },
        "/api/v1/text/count-occurrences": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Count how many times a substring appears",
                "description": "Count how many times a substring appears.",
                "operationId": "textCountOccurrencesPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "find": {
                                        "type": "string",
                                        "description": "Substring to count"
                                    }
                                },
                                "required": [
                                    "text",
                                    "find"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/count-occurrences?text=the+cat+sat+on+the+mat+with+the+hat&find=the"
                }
            }
        },
        "/api/v1/text/word-frequency": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "Count how often each word appears, most frequent first",
                "description": "Count how often each word appears, most frequent first.",
                "operationId": "textWordFrequencyPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "limit": {
                                        "type": "string",
                                        "description": "Top N words (default 50)"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/word-frequency?text=the+cat+sat+on+the+mat+with+the+hat&limit=5"
                }
            }
        },
        "/api/v1/text/unique-words": {
            "post": {
                "tags": [
                    "text"
                ],
                "summary": "List the distinct words in the text",
                "description": "List the distinct words in the text.",
                "operationId": "textUniqueWordsPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/text/unique-words?text=the+cat+sat+on+the+mat+with+the+cat"
                }
            }
        },
        "/api/v1/calc/bmi": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Body Mass Index from weight and height",
                "description": "Body Mass Index from weight and height.",
                "operationId": "calcBmiGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "weight",
                        "in": "query",
                        "required": true,
                        "description": "Weight in kg",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "height",
                        "in": "query",
                        "required": true,
                        "description": "Height in cm",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/bmi?weight=70&height=175"
                }
            }
        },
        "/api/v1/calc/bmr": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Basal Metabolic Rate (Mifflin-St Jeor)",
                "description": "Basal Metabolic Rate (Mifflin-St Jeor).",
                "operationId": "calcBmrGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "weight",
                        "in": "query",
                        "required": true,
                        "description": "kg",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "height",
                        "in": "query",
                        "required": true,
                        "description": "cm",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "age",
                        "in": "query",
                        "required": true,
                        "description": "years",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "description": "male (default) or female",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/bmr?weight=70&height=175&age=30&gender=male"
                }
            }
        },
        "/api/v1/calc/percentage": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "What is P% of a value",
                "description": "What is P% of a value.",
                "operationId": "calcPercentageGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "percent",
                        "in": "query",
                        "required": true,
                        "description": "P",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "The number",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/percentage?percent=15&value=200"
                }
            }
        },
        "/api/v1/calc/percentage-of": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "A is what percent of B",
                "description": "A is what percent of B.",
                "operationId": "calcPercentageOfGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "a",
                        "in": "query",
                        "required": true,
                        "description": "Part",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "b",
                        "in": "query",
                        "required": true,
                        "description": "Whole",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/percentage-of?a=25&b=200"
                }
            }
        },
        "/api/v1/calc/percentage-change": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Percentage change from one value to another",
                "description": "Percentage change from one value to another.",
                "operationId": "calcPercentageChangeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "Original",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "description": "New",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/percentage-change?from=100&to=125"
                }
            }
        },
        "/api/v1/calc/tip": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Tip and split a bill",
                "description": "Tip and split a bill.",
                "operationId": "calcTipGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "bill",
                        "in": "query",
                        "required": true,
                        "description": "Bill amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tip_percent",
                        "in": "query",
                        "required": true,
                        "description": "Tip %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "people",
                        "in": "query",
                        "required": false,
                        "description": "Split between N people (default 1)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/tip?bill=80&tip_percent=15&people=4"
                }
            }
        },
        "/api/v1/calc/discount": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Sale price after a discount",
                "description": "Sale price after a discount.",
                "operationId": "calcDiscountGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "price",
                        "in": "query",
                        "required": true,
                        "description": "Original price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "discount_percent",
                        "in": "query",
                        "required": true,
                        "description": "Discount %",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/discount?price=120&discount_percent=25"
                }
            }
        },
        "/api/v1/calc/vat": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Add or remove VAT / sales tax",
                "description": "Add or remove VAT / sales tax.",
                "operationId": "calcVatGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "amount",
                        "in": "query",
                        "required": true,
                        "description": "Amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Tax rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mode",
                        "in": "query",
                        "required": false,
                        "description": "add (default) or remove",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/vat?amount=100&rate=20&mode=add"
                }
            }
        },
        "/api/v1/calc/simple-interest": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Simple interest",
                "description": "Simple interest.",
                "operationId": "calcSimpleInterestGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "principal",
                        "in": "query",
                        "required": true,
                        "description": "Principal",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "Time in years",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/simple-interest?principal=1000&rate=5&years=3"
                }
            }
        },
        "/api/v1/calc/compound-interest": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Compound interest",
                "description": "Compound interest.",
                "operationId": "calcCompoundInterestGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "principal",
                        "in": "query",
                        "required": true,
                        "description": "Principal",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "Years",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "compounds_per_year",
                        "in": "query",
                        "required": false,
                        "description": "Compounds/year (default 1)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/compound-interest?principal=1000&rate=5&years=3&compounds_per_year=12"
                }
            }
        },
        "/api/v1/calc/loan": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Monthly loan payment (EMI)",
                "description": "Monthly loan payment (EMI).",
                "operationId": "calcLoanGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "principal",
                        "in": "query",
                        "required": true,
                        "description": "Loan amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "annual_rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual interest %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "months",
                        "in": "query",
                        "required": true,
                        "description": "Term in months",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/loan?principal=20000&annual_rate=7.5&months=60"
                }
            }
        },
        "/api/v1/calc/age": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Age from a birthdate",
                "description": "Age from a birthdate.",
                "operationId": "calcAgeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "birthdate",
                        "in": "query",
                        "required": true,
                        "description": "YYYY-MM-DD",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "at",
                        "in": "query",
                        "required": false,
                        "description": "Date to measure at (default today)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/age?birthdate=1996-05-20"
                }
            }
        },
        "/api/v1/calc/average": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Mean, median, min, max and sum of numbers",
                "description": "Mean, median, min, max and sum of numbers.",
                "operationId": "calcAverageGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "numbers",
                        "in": "query",
                        "required": true,
                        "description": "Comma or space separated numbers",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/average?numbers=4,8,15,16,23,42"
                }
            }
        },
        "/api/v1/calc/standard-deviation": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Mean, variance and standard deviation — both the population and the sample figure, because \"standard deviatio…",
                "description": "Mean, variance and standard deviation — both the population and the sample figure, because \"standard deviation\" alone is ambiguous.",
                "operationId": "calcStandardDeviationGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "numbers",
                        "in": "query",
                        "required": true,
                        "description": "Comma or space separated numbers (at least two)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/standard-deviation?numbers=2,4,4,4,5,5,7,9"
                }
            }
        },
        "/api/v1/calc/quadratic": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Solve ax² + bx + c = 0 — real or complex roots, discriminant and vertex",
                "description": "Solve ax² + bx + c = 0 — real or complex roots, discriminant and vertex.",
                "operationId": "calcQuadraticGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "a",
                        "in": "query",
                        "required": true,
                        "description": "Coefficient of x² (cannot be 0)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "b",
                        "in": "query",
                        "required": true,
                        "description": "Coefficient of x",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "c",
                        "in": "query",
                        "required": true,
                        "description": "Constant term",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/quadratic?a=1&b=-3&c=2"
                }
            }
        },
        "/api/v1/calc/tdee": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Daily calorie burn (TDEE) from Mifflin-St Jeor BMR and an activity level",
                "description": "Daily calorie burn (TDEE) from Mifflin-St Jeor BMR and an activity level.",
                "operationId": "calcTdeeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "weight",
                        "in": "query",
                        "required": true,
                        "description": "Weight in kg",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "height",
                        "in": "query",
                        "required": true,
                        "description": "Height in cm",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "age",
                        "in": "query",
                        "required": true,
                        "description": "Age in years",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "description": "male (default) or female",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "activity",
                        "in": "query",
                        "required": false,
                        "description": "sedentary, light, moderate (default), active or very-active",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/tdee?weight=70&height=175&age=30&gender=male&activity=moderate"
                }
            }
        },
        "/api/v1/calc/ideal-weight": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Ideal body weight by the Devine, Robinson and Miller formulas — all three, since they disagree",
                "description": "Ideal body weight by the Devine, Robinson and Miller formulas — all three, since they disagree.",
                "operationId": "calcIdealWeightGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "height",
                        "in": "query",
                        "required": true,
                        "description": "Height in cm",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "description": "male (default) or female",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/ideal-weight?height=180&gender=male"
                }
            }
        },
        "/api/v1/calc/body-fat": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Body fat percentage by the US Navy circumference method",
                "description": "Body fat percentage by the US Navy circumference method.",
                "operationId": "calcBodyFatGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "height",
                        "in": "query",
                        "required": true,
                        "description": "Height in cm",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "neck",
                        "in": "query",
                        "required": true,
                        "description": "Neck circumference in cm",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "waist",
                        "in": "query",
                        "required": true,
                        "description": "Waist circumference in cm",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "hip",
                        "in": "query",
                        "required": false,
                        "description": "Hip circumference in cm — required for female",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "gender",
                        "in": "query",
                        "required": false,
                        "description": "male (default) or female",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/body-fat?height=180&neck=38&waist=85&gender=male"
                }
            }
        },
        "/api/v1/calc/future-value": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "What a lump sum plus monthly deposits grows into, with the interest earned split out",
                "description": "What a lump sum plus monthly deposits grows into, with the interest earned split out.",
                "operationId": "calcFutureValueGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual interest rate as a percentage",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "How many years",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "present_value",
                        "in": "query",
                        "required": false,
                        "description": "Starting amount (default 0)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "monthly",
                        "in": "query",
                        "required": false,
                        "description": "Monthly deposit (default 0)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/future-value?present_value=1000&monthly=100&rate=6&years=10"
                }
            }
        },
        "/api/v1/calc/roi": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Return on investment, plus the annualised rate when you pass years",
                "description": "Return on investment, plus the annualised rate when you pass years.",
                "operationId": "calcRoiGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "cost",
                        "in": "query",
                        "required": true,
                        "description": "What it cost",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "return",
                        "in": "query",
                        "required": true,
                        "description": "What it returned",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": false,
                        "description": "Holding period, for the annualised figure",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/roi?cost=1000&return=1500&years=3"
                }
            }
        },
        "/api/v1/calc/margin": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Profit, margin and markup from a cost and a selling price — margin and markup are not the same number",
                "description": "Profit, margin and markup from a cost and a selling price — margin and markup are not the same number.",
                "operationId": "calcMarginGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "cost",
                        "in": "query",
                        "required": true,
                        "description": "Cost price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "price",
                        "in": "query",
                        "required": true,
                        "description": "Selling price",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/margin?cost=60&price=100"
                }
            }
        },
        "/api/v1/calc/salary": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Convert between hourly and annual pay, with the daily, weekly and monthly figures",
                "description": "Convert between hourly and annual pay, with the daily, weekly and monthly figures.",
                "operationId": "calcSalaryGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "hourly",
                        "in": "query",
                        "required": false,
                        "description": "Hourly rate — pass this or annual",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "annual",
                        "in": "query",
                        "required": false,
                        "description": "Annual salary — pass this or hourly",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "hours_per_week",
                        "in": "query",
                        "required": false,
                        "description": "Default 40",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "weeks_per_year",
                        "in": "query",
                        "required": false,
                        "description": "Default 52",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/salary?hourly=25"
                }
            }
        },
        "/api/v1/calc/fuel-cost": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Fuel used and what a trip costs",
                "description": "Fuel used and what a trip costs. Unit-agnostic: km with km/l, or miles with mpg.",
                "operationId": "calcFuelCostGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "distance",
                        "in": "query",
                        "required": true,
                        "description": "Trip distance",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "efficiency",
                        "in": "query",
                        "required": true,
                        "description": "Distance per unit of fuel",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "price",
                        "in": "query",
                        "required": true,
                        "description": "Price per unit of fuel",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/fuel-cost?distance=300&efficiency=15&price=250"
                }
            }
        },
        "/api/v1/calc/speed": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Solve for whichever of speed, distance or time you leave out — pass any two",
                "description": "Solve for whichever of speed, distance or time you leave out — pass any two.",
                "operationId": "calcSpeedGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "distance",
                        "in": "query",
                        "required": false,
                        "description": "Distance",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "time",
                        "in": "query",
                        "required": false,
                        "description": "Time",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "speed",
                        "in": "query",
                        "required": false,
                        "description": "Speed",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/speed?distance=120&time=2"
                }
            }
        },
        "/api/v1/calc/pace": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Running pace per km or mile, formatted, plus speed per hour",
                "description": "Running pace per km or mile, formatted, plus speed per hour.",
                "operationId": "calcPaceGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "distance",
                        "in": "query",
                        "required": true,
                        "description": "Distance covered",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "minutes",
                        "in": "query",
                        "required": true,
                        "description": "Time taken, in minutes",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/pace?distance=10&minutes=50"
                }
            }
        },
        "/api/v1/web/http-status": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "HTTP status code and redirect chain for a URL",
                "description": "HTTP status code and redirect chain for a URL.",
                "operationId": "webHttpStatusGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "description": "The URL",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/http-status?url=https://example.com"
                }
            }
        },
        "/api/v1/web/http-headers": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "Response headers for a URL",
                "description": "Response headers for a URL.",
                "operationId": "webHttpHeadersGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "description": "The URL",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/http-headers?url=https://example.com"
                }
            }
        },
        "/api/v1/web/meta-tags": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "Title, description and meta tags of a page",
                "description": "Title, description and meta tags of a page.",
                "operationId": "webMetaTagsGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "description": "The URL",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/meta-tags?url=https://example.com"
                }
            }
        },
        "/api/v1/web/open-graph": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "Open Graph tags of a page",
                "description": "Open Graph tags of a page.",
                "operationId": "webOpenGraphGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "description": "The URL",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/open-graph?url=https://example.com"
                }
            }
        },
        "/api/v1/web/dns": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "DNS records for a domain",
                "description": "DNS records for a domain.",
                "operationId": "webDnsGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": true,
                        "description": "The domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/dns?domain=example.com"
                }
            }
        },
        "/api/v1/web/ip": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "Resolve a domain to its IP address",
                "description": "Resolve a domain to its IP address.",
                "operationId": "webIpGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": true,
                        "description": "The domain",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/ip?domain=example.com"
                }
            }
        },
        "/api/v1/web/page-size": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "Download size of a page",
                "description": "Download size of a page.",
                "operationId": "webPageSizeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "description": "The URL",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/page-size?url=https://example.com"
                }
            }
        },
        "/api/v1/web/wordpress": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "Detect whether a site runs WordPress",
                "description": "Detect whether a site runs WordPress.",
                "operationId": "webWordpressGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "description": "The URL",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/wordpress?url=https://example.com"
                }
            }
        },
        "/api/v1/web/youtube": {
            "get": {
                "tags": [
                    "web"
                ],
                "summary": "Title, channel and thumbnail of a YouTube video",
                "description": "Title, channel and thumbnail of a YouTube video.",
                "operationId": "webYoutubeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "url",
                        "in": "query",
                        "required": true,
                        "description": "Video URL or ID",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/web/youtube?url=dQw4w9WgXcQ"
                }
            }
        },
        "/api/v1/generate/password": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Generate a strong random password",
                "description": "Generate a strong random password.",
                "operationId": "generatePasswordGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "length",
                        "in": "query",
                        "required": false,
                        "description": "4-128 (default 16)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "upper",
                        "in": "query",
                        "required": false,
                        "description": "0 to exclude uppercase",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "numbers",
                        "in": "query",
                        "required": false,
                        "description": "0 to exclude digits",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "symbols",
                        "in": "query",
                        "required": false,
                        "description": "0 to exclude symbols",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/password?length=20"
                }
            }
        },
        "/api/v1/generate/uuid": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Generate UUID v4 values",
                "description": "Generate UUID v4 values.",
                "operationId": "generateUuidGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "count",
                        "in": "query",
                        "required": false,
                        "description": "1-100 (default 1)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/uuid?count=5"
                }
            }
        },
        "/api/v1/generate/lorem": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Generate lorem ipsum placeholder text",
                "description": "Generate lorem ipsum placeholder text.",
                "operationId": "generateLoremGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "paragraphs",
                        "in": "query",
                        "required": false,
                        "description": "1-20 (default 3)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/lorem?paragraphs=2"
                }
            }
        },
        "/api/v1/generate/color": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Convert a colour between HEX and RGB",
                "description": "Convert a colour between HEX and RGB.",
                "operationId": "generateColorGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "A HEX like #4f7cff or RGB like 79,124,255",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/color?value=%234f7cff"
                }
            }
        },
        "/api/v1/generate/random-number": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Generate random numbers in a range",
                "description": "Generate random numbers in a range.",
                "operationId": "generateRandomNumberGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "min",
                        "in": "query",
                        "required": false,
                        "description": "Minimum (default 1)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "max",
                        "in": "query",
                        "required": false,
                        "description": "Maximum (default 100)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "count",
                        "in": "query",
                        "required": false,
                        "description": "How many (default 1)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/random-number?min=1&max=6&count=2"
                }
            }
        },
        "/api/v1/generate/qr": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Build a QR-code image URL for any text",
                "description": "Build a QR-code image URL for any text.",
                "operationId": "generateQrGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "text",
                        "in": "query",
                        "required": true,
                        "description": "The text or URL",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "required": false,
                        "description": "Pixels 64-1000 (default 300)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/qr?text=https://utilorax.com"
                }
            }
        },
        "/api/v1/generate/barcode": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Build a barcode image URL",
                "description": "Build a barcode image URL.",
                "operationId": "generateBarcodeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "text",
                        "in": "query",
                        "required": true,
                        "description": "The value",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "required": false,
                        "description": "code128 (default), ean13, upc, code39…",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/barcode?text=012345678905&type=code128"
                }
            }
        },
        "/api/v1/generate/random-string": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Generate a random string",
                "description": "Generate a random string.",
                "operationId": "generateRandomStringGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "length",
                        "in": "query",
                        "required": false,
                        "description": "1-512 (default 32)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "charset",
                        "in": "query",
                        "required": false,
                        "description": "alphanumeric (default), alpha, numeric, hex",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/random-string?length=24"
                }
            }
        },
        "/api/v1/generate/token": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Generate a secure hex token",
                "description": "Generate a secure hex token.",
                "operationId": "generateTokenGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "bytes",
                        "in": "query",
                        "required": false,
                        "description": "Entropy bytes 8-128 (default 32)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/token?bytes=32"
                }
            }
        },
        "/api/v1/generate/hsl": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Convert a HEX colour to HSL",
                "description": "Convert a HEX colour to HSL.",
                "operationId": "generateHslGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "A HEX colour like #4f7cff",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/hsl?value=%234f7cff"
                }
            }
        },
        "/api/v1/generate/gradient": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Build a CSS linear-gradient",
                "description": "Build a CSS linear-gradient.",
                "operationId": "generateGradientGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": false,
                        "description": "Start HEX (default 4f7cff)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": false,
                        "description": "End HEX (default 7c5cff)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "angle",
                        "in": "query",
                        "required": false,
                        "description": "Degrees (default 90)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/gradient?from=4f7cff&to=12b886"
                }
            }
        },
        "/api/v1/generate/mac-address": {
            "get": {
                "tags": [
                    "generate"
                ],
                "summary": "Generate a random MAC address",
                "description": "Generate a random MAC address.",
                "operationId": "generateMacAddressGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "separator",
                        "in": "query",
                        "required": false,
                        "description": ": (default) or -",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/generate/mac-address"
                }
            }
        },
        "/api/v1/encode/hex": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Encode or decode hexadecimal",
                "description": "Encode or decode hexadecimal.",
                "operationId": "encodeHexPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/hex?text=Hello+World+from+Utilorax&mode=encode"
                }
            }
        },
        "/api/v1/encode/binary": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Encode or decode binary (8-bit)",
                "description": "Encode or decode binary (8-bit).",
                "operationId": "encodeBinaryPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/binary?text=Hi&mode=encode"
                }
            }
        },
        "/api/v1/encode/rot13": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Apply the ROT13 cipher",
                "description": "Apply the ROT13 cipher.",
                "operationId": "encodeRot13Post",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/rot13?text=Hello+World+from+Utilorax"
                }
            }
        },
        "/api/v1/encode/morse": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Encode or decode Morse code",
                "description": "Encode or decode Morse code.",
                "operationId": "encodeMorsePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/morse?text=SOS&mode=encode"
                }
            }
        },
        "/api/v1/encode/html-entities": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Encode or decode HTML entities",
                "description": "Encode or decode HTML entities.",
                "operationId": "encodeHtmlEntitiesPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/html-entities?text=%3Ca+href%3D%22x%22%3ETom+%26+Jerry%3C%2Fa%3E&mode=encode"
                }
            }
        },
        "/api/v1/encode/unicode-escape": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Encode or decode \\uXXXX Unicode escapes",
                "description": "Encode or decode \\uXXXX Unicode escapes.",
                "operationId": "encodeUnicodeEscapePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/unicode-escape?text=caf%C3%A9+%E2%98%95&mode=encode"
                }
            }
        },
        "/api/v1/encode/base32": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Encode or decode Base32 (RFC 4648)",
                "description": "Encode or decode Base32 (RFC 4648).",
                "operationId": "encodeBase32Post",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "Input"
                                    },
                                    "mode": {
                                        "type": "string",
                                        "description": "encode (default) or decode"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/base32?text=Hello+World+from+Utilorax&mode=encode"
                }
            }
        },
        "/api/v1/encode/url-parse": {
            "post": {
                "tags": [
                    "encode"
                ],
                "summary": "Break a URL into its parts (scheme, host, path, query…)",
                "description": "Break a URL into its parts (scheme, host, path, query…).",
                "operationId": "encodeUrlParsePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "description": "The URL"
                                    }
                                },
                                "required": [
                                    "text"
                                ]
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/encode/url-parse?text=https%3A%2F%2Futilorax.com%2Fapi%2Fv1%2Fcalc%2Fbmi%3Fweight%3D70%26height%3D175%23result"
                }
            }
        },
        "/api/v1/datetime/now": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Current time as Unix, ISO and UTC",
                "description": "Current time as Unix, ISO and UTC.",
                "operationId": "datetimeNowGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/now"
                }
            }
        },
        "/api/v1/datetime/to-timestamp": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Convert a date string to a Unix timestamp",
                "description": "Convert a date string to a Unix timestamp.",
                "operationId": "datetimeToTimestampGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": true,
                        "description": "Any date string, e.g. 2026-07-21",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/to-timestamp?date=2026-07-21"
                }
            }
        },
        "/api/v1/datetime/from-timestamp": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Convert a Unix timestamp to a date",
                "description": "Convert a Unix timestamp to a date.",
                "operationId": "datetimeFromTimestampGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "timestamp",
                        "in": "query",
                        "required": true,
                        "description": "Unix seconds",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "timezone",
                        "in": "query",
                        "required": false,
                        "description": "e.g. Europe/London (default UTC)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/from-timestamp?timestamp=1784200000"
                }
            }
        },
        "/api/v1/datetime/timezone": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Convert a time between timezones",
                "description": "Convert a time between timezones.",
                "operationId": "datetimeTimezoneGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "Date/time (default now)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "e.g. UTC",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "description": "e.g. Asia/Karachi",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/timezone?from=UTC&to=Asia/Karachi"
                }
            }
        },
        "/api/v1/datetime/diff": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Difference between two dates",
                "description": "Difference between two dates.",
                "operationId": "datetimeDiffGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "Start date",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "description": "End date",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/diff?from=2026-01-01&to=2026-07-21"
                }
            }
        },
        "/api/v1/datetime/add": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Add or subtract an interval from a date",
                "description": "Add or subtract an interval from a date.",
                "operationId": "datetimeAddGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "Base date (default now)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "add",
                        "in": "query",
                        "required": true,
                        "description": "e.g. \"5 days\", \"-2 months\"",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/add?date=2026-07-21&add=10%20days"
                }
            }
        },
        "/api/v1/datetime/week-number": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "ISO week number for a date",
                "description": "ISO week number for a date.",
                "operationId": "datetimeWeekNumberGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "Date (default today)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/week-number?date=2026-07-21"
                }
            }
        },
        "/api/v1/datetime/is-leap-year": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Whether a year is a leap year",
                "description": "Whether a year is a leap year.",
                "operationId": "datetimeIsLeapYearGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "year",
                        "in": "query",
                        "required": true,
                        "description": "The year",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/is-leap-year?year=2028"
                }
            }
        },
        "/api/v1/datetime/days-in-month": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "Number of days in a month",
                "description": "Number of days in a month.",
                "operationId": "datetimeDaysInMonthGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "year",
                        "in": "query",
                        "required": true,
                        "description": "Year",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "month",
                        "in": "query",
                        "required": true,
                        "description": "Month 1-12",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/days-in-month?year=2026&month=2"
                }
            }
        },
        "/api/v1/datetime/day-of-week": {
            "get": {
                "tags": [
                    "datetime"
                ],
                "summary": "The weekday for a date",
                "description": "The weekday for a date.",
                "operationId": "datetimeDayOfWeekGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": true,
                        "description": "The date",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/datetime/day-of-week?date=2026-07-21"
                }
            }
        },
        "/api/v1/number/base-convert": {
            "get": {
                "tags": [
                    "number"
                ],
                "summary": "Convert a number between bases (2-36)",
                "description": "Convert a number between bases (2-36).",
                "operationId": "numberBaseConvertGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "The number",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "required": true,
                        "description": "From base, e.g. 10",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "required": true,
                        "description": "To base, e.g. 2",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/number/base-convert?value=255&from=10&to=16"
                }
            }
        },
        "/api/v1/number/roman": {
            "get": {
                "tags": [
                    "number"
                ],
                "summary": "Convert to or from Roman numerals",
                "description": "Convert to or from Roman numerals.",
                "operationId": "numberRomanGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "A number (1-3999) or a Roman numeral",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mode",
                        "in": "query",
                        "required": false,
                        "description": "to-roman (default) or from-roman",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/number/roman?value=2026"
                }
            }
        },
        "/api/v1/number/to-words": {
            "get": {
                "tags": [
                    "number"
                ],
                "summary": "Spell a number out in English words",
                "description": "Spell a number out in English words.",
                "operationId": "numberToWordsGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "The number",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/number/to-words?value=1234"
                }
            }
        },
        "/api/v1/number/factorial": {
            "get": {
                "tags": [
                    "number"
                ],
                "summary": "Factorial of a number (0-170)",
                "description": "Factorial of a number (0-170).",
                "operationId": "numberFactorialGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "Integer 0-170",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/number/factorial?value=10"
                }
            }
        },
        "/api/v1/number/fibonacci": {
            "get": {
                "tags": [
                    "number"
                ],
                "summary": "First N Fibonacci numbers",
                "description": "First N Fibonacci numbers.",
                "operationId": "numberFibonacciGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "How many (1-1000)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/number/fibonacci?value=12"
                }
            }
        },
        "/api/v1/number/is-prime": {
            "get": {
                "tags": [
                    "number"
                ],
                "summary": "Check whether a number is prime",
                "description": "Check whether a number is prime.",
                "operationId": "numberIsPrimeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "value",
                        "in": "query",
                        "required": true,
                        "description": "The number",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/number/is-prime?value=97"
                }
            }
        },
        "/api/v1/number/gcd-lcm": {
            "get": {
                "tags": [
                    "number"
                ],
                "summary": "Greatest common divisor and least common multiple",
                "description": "Greatest common divisor and least common multiple.",
                "operationId": "numberGcdLcmGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "a",
                        "in": "query",
                        "required": true,
                        "description": "First number",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "b",
                        "in": "query",
                        "required": true,
                        "description": "Second number",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/number/gcd-lcm?a=12&b=18"
                }
            }
        },
        "/api/v1/calc/mortgage": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Monthly mortgage payment from price, deposit, rate and term",
                "description": "Monthly mortgage payment from price, deposit, rate and term.",
                "operationId": "calcMortgageGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "price",
                        "in": "query",
                        "required": true,
                        "description": "Property price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "down_payment",
                        "in": "query",
                        "required": false,
                        "description": "Deposit (default 0)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual interest rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "Term in years",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/mortgage?price=300000&down_payment=60000&rate=6&years=30"
                }
            }
        },
        "/api/v1/calc/cagr": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Compound annual growth rate between two values",
                "description": "Compound annual growth rate between two values.",
                "operationId": "calcCagrGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "start",
                        "in": "query",
                        "required": true,
                        "description": "Starting value",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "end",
                        "in": "query",
                        "required": true,
                        "description": "Ending value",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "Number of years",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/cagr?start=1000&end=2000&years=5"
                }
            }
        },
        "/api/v1/calc/savings-goal": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Monthly deposit needed to reach a savings target",
                "description": "Monthly deposit needed to reach a savings target.",
                "operationId": "calcSavingsGoalGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "goal",
                        "in": "query",
                        "required": true,
                        "description": "Target amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual interest rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "months",
                        "in": "query",
                        "required": true,
                        "description": "Months to save",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/savings-goal?goal=10000&rate=6&months=24"
                }
            }
        },
        "/api/v1/calc/sip": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Future value of a fixed monthly investment",
                "description": "Future value of a fixed monthly investment.",
                "operationId": "calcSipGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "monthly",
                        "in": "query",
                        "required": true,
                        "description": "Monthly contribution",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Expected annual return %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "Years invested",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/sip?monthly=5000&rate=12&years=10"
                }
            }
        },
        "/api/v1/calc/inflation": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "What an amount will cost after inflation",
                "description": "What an amount will cost after inflation.",
                "operationId": "calcInflationGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "amount",
                        "in": "query",
                        "required": true,
                        "description": "Amount today",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual inflation %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "Years ahead",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/inflation?amount=1000&rate=5&years=10"
                }
            }
        },
        "/api/v1/calc/break-even": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Units needed to cover fixed costs",
                "description": "Units needed to cover fixed costs.",
                "operationId": "calcBreakEvenGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "fixed_costs",
                        "in": "query",
                        "required": true,
                        "description": "Total fixed costs",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "price",
                        "in": "query",
                        "required": true,
                        "description": "Price per unit",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "variable_cost",
                        "in": "query",
                        "required": true,
                        "description": "Variable cost per unit",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/break-even?fixed_costs=10000&price=50&variable_cost=30"
                }
            }
        },
        "/api/v1/calc/markup": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Selling price and margin from cost plus a markup",
                "description": "Selling price and margin from cost plus a markup.",
                "operationId": "calcMarkupGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "cost",
                        "in": "query",
                        "required": true,
                        "description": "Unit cost",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "markup_percent",
                        "in": "query",
                        "required": true,
                        "description": "Markup %",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/markup?cost=100&markup_percent=50"
                }
            }
        },
        "/api/v1/calc/rule-of-72": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Years for money to double, triple or quadruple",
                "description": "Years for money to double, triple or quadruple.",
                "operationId": "calcRuleOf72Get",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual return %",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/rule-of-72?rate=8"
                }
            }
        },
        "/api/v1/calc/apy": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Annual percentage yield from a nominal rate",
                "description": "Annual percentage yield from a nominal rate.",
                "operationId": "calcApyGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Nominal annual rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "compounds_per_year",
                        "in": "query",
                        "required": false,
                        "description": "Compounding periods (default 12)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/apy?rate=5&compounds_per_year=12"
                }
            }
        },
        "/api/v1/calc/cd": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Maturity value of a fixed deposit",
                "description": "Maturity value of a fixed deposit.",
                "operationId": "calcCdGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "principal",
                        "in": "query",
                        "required": true,
                        "description": "Deposit amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Annual rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "years",
                        "in": "query",
                        "required": true,
                        "description": "Term in years",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "compounds_per_year",
                        "in": "query",
                        "required": false,
                        "description": "Compounding periods (default 12)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/cd?principal=10000&rate=4&years=5&compounds_per_year=4"
                }
            }
        },
        "/api/v1/calc/cpm": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Cost per thousand impressions",
                "description": "Cost per thousand impressions.",
                "operationId": "calcCpmGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "cost",
                        "in": "query",
                        "required": true,
                        "description": "Total spend",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "impressions",
                        "in": "query",
                        "required": true,
                        "description": "Impressions delivered",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/cpm?cost=500&impressions=250000"
                }
            }
        },
        "/api/v1/calc/gst": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Add or remove GST from an amount",
                "description": "Add or remove GST from an amount.",
                "operationId": "calcGstGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "amount",
                        "in": "query",
                        "required": true,
                        "description": "Amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "GST rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mode",
                        "in": "query",
                        "required": false,
                        "description": "add or remove (default add)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/gst?amount=1000&rate=18&mode=add"
                }
            }
        },
        "/api/v1/calc/sales-tax": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Add or remove sales tax from an amount",
                "description": "Add or remove sales tax from an amount.",
                "operationId": "calcSalesTaxGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "amount",
                        "in": "query",
                        "required": true,
                        "description": "Amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Tax rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mode",
                        "in": "query",
                        "required": false,
                        "description": "add or remove (default add)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/sales-tax?amount=200&rate=7.5&mode=add"
                }
            }
        },
        "/api/v1/calc/debt-to-income": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Debt-to-income ratio and how lenders read it",
                "description": "Debt-to-income ratio and how lenders read it.",
                "operationId": "calcDebtToIncomeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "monthly_debt",
                        "in": "query",
                        "required": true,
                        "description": "Total monthly debt payments",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "monthly_income",
                        "in": "query",
                        "required": true,
                        "description": "Gross monthly income",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/debt-to-income?monthly_debt=1500&monthly_income=5000"
                }
            }
        },
        "/api/v1/calc/down-payment": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Deposit amount and the loan left over",
                "description": "Deposit amount and the loan left over.",
                "operationId": "calcDownPaymentGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "price",
                        "in": "query",
                        "required": true,
                        "description": "Purchase price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "percent",
                        "in": "query",
                        "required": true,
                        "description": "Deposit %",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/down-payment?price=250000&percent=20"
                }
            }
        },
        "/api/v1/calc/property-tax": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Annual and monthly property tax",
                "description": "Annual and monthly property tax.",
                "operationId": "calcPropertyTaxGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "assessed_value",
                        "in": "query",
                        "required": true,
                        "description": "Assessed value",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Tax rate %",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/property-tax?assessed_value=300000&rate=1.2"
                }
            }
        },
        "/api/v1/calc/overtime-pay": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Regular plus overtime pay for a period",
                "description": "Regular plus overtime pay for a period.",
                "operationId": "calcOvertimePayGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "hourly_rate",
                        "in": "query",
                        "required": true,
                        "description": "Base hourly rate",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "regular_hours",
                        "in": "query",
                        "required": true,
                        "description": "Regular hours",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "overtime_hours",
                        "in": "query",
                        "required": false,
                        "description": "Overtime hours (default 0)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "multiplier",
                        "in": "query",
                        "required": false,
                        "description": "Overtime multiplier (default 1.5)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/overtime-pay?hourly_rate=20&regular_hours=40&overtime_hours=10"
                }
            }
        },
        "/api/v1/calc/take-home-pay": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Net pay after tax and deductions",
                "description": "Net pay after tax and deductions.",
                "operationId": "calcTakeHomePayGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "gross",
                        "in": "query",
                        "required": true,
                        "description": "Gross pay",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tax_rate",
                        "in": "query",
                        "required": true,
                        "description": "Tax rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "deductions",
                        "in": "query",
                        "required": false,
                        "description": "Other deductions (default 0)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/take-home-pay?gross=5000&tax_rate=25&deductions=200"
                }
            }
        },
        "/api/v1/calc/payment-fee": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Processor fee and what you actually receive",
                "description": "Processor fee and what you actually receive.",
                "operationId": "calcPaymentFeeGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "amount",
                        "in": "query",
                        "required": true,
                        "description": "Transaction amount",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate_percent",
                        "in": "query",
                        "required": false,
                        "description": "Percentage fee (default 2.9)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "fixed_fee",
                        "in": "query",
                        "required": false,
                        "description": "Fixed fee (default 0.30)",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/payment-fee?amount=100&rate_percent=2.9&fixed_fee=0.30"
                }
            }
        },
        "/api/v1/calc/net-worth": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Assets minus liabilities, with a debt ratio",
                "description": "Assets minus liabilities, with a debt ratio.",
                "operationId": "calcNetWorthGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "assets",
                        "in": "query",
                        "required": true,
                        "description": "Total assets",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "liabilities",
                        "in": "query",
                        "required": true,
                        "description": "Total liabilities",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/net-worth?assets=500000&liabilities=150000"
                }
            }
        },
        "/api/v1/calc/capital-gains-tax": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Gain and tax on a disposal",
                "description": "Gain and tax on a disposal.",
                "operationId": "calcCapitalGainsTaxGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "sale_price",
                        "in": "query",
                        "required": true,
                        "description": "Sale price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "purchase_price",
                        "in": "query",
                        "required": true,
                        "description": "Purchase price",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "fees",
                        "in": "query",
                        "required": false,
                        "description": "Costs of sale (default 0)",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rate",
                        "in": "query",
                        "required": true,
                        "description": "Tax rate %",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/capital-gains-tax?sale_price=50000&purchase_price=30000&fees=1000&rate=15"
                }
            }
        },
        "/api/v1/calc/refinance": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "How long until refinancing pays for itself",
                "description": "How long until refinancing pays for itself.",
                "operationId": "calcRefinanceGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "closing_costs",
                        "in": "query",
                        "required": true,
                        "description": "Closing costs",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "monthly_saving",
                        "in": "query",
                        "required": true,
                        "description": "Monthly saving after refinancing",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/refinance?closing_costs=4800&monthly_saving=200"
                }
            }
        },
        "/api/v1/calc/adsense": {
            "get": {
                "tags": [
                    "calc"
                ],
                "summary": "Estimated ad earnings and RPM",
                "description": "Estimated ad earnings and RPM.",
                "operationId": "calcAdsenseGet",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "pageviews",
                        "in": "query",
                        "required": true,
                        "description": "Monthly pageviews",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "ctr",
                        "in": "query",
                        "required": true,
                        "description": "Click-through rate %",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "cpc",
                        "in": "query",
                        "required": true,
                        "description": "Cost per click",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "externalDocs": {
                    "description": "Runnable example",
                    "url": "https://utilorax.com/api/v1/calc/adsense?pageviews=100000&ctr=1.5&cpc=0.40"
                }
            }
        },
        "/api/v1/file/image-info": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Read an image and return its dimensions, format and EXIF metadata as JSON",
                "description": "Read an image and return its dimensions, format and EXIF metadata as JSON.",
                "operationId": "fileImageInfoPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/merge-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Combine several PDF files into one document",
                "description": "Combine several PDF files into one document.",
                "operationId": "fileMergePdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/jpg-to-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Turn your JPG or PNG images into a single PDF",
                "description": "Turn your JPG or PNG images into a single PDF.",
                "operationId": "fileJpgToPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/csv-to-excel": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert a CSV file into a proper Excel (.xlsx) workbook",
                "description": "Convert a CSV file into a proper Excel (.xlsx) workbook.",
                "operationId": "fileCsvToExcelPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/excel-to-csv": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert an Excel workbook into a plain CSV file",
                "description": "Convert an Excel workbook into a plain CSV file.",
                "operationId": "fileExcelToCsvPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/excel-to-json": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Turn a spreadsheet into structured JSON (first row as keys)",
                "description": "Turn a spreadsheet into structured JSON (first row as keys).",
                "operationId": "fileExcelToJsonPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/text-to-word": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Paste text and download a ready-to-edit Word (.docx) file",
                "description": "Paste text and download a ready-to-edit Word (.docx) file.",
                "operationId": "fileTextToWordPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/compress-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Reduce a PDF’s file size while keeping it readable",
                "description": "Reduce a PDF’s file size while keeping it readable.",
                "operationId": "fileCompressPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/split-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Split a PDF into separate files — every page, or custom ranges",
                "description": "Split a PDF into separate files — every page, or custom ranges.",
                "operationId": "fileSplitPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/pdf-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert each page of a PDF into a JPG image",
                "description": "Convert each page of a PDF into a JPG image.",
                "operationId": "filePdfToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/protect-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Add a password so only the right people can open your PDF",
                "description": "Add a password so only the right people can open your PDF.",
                "operationId": "fileProtectPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/unlock-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Remove the password and restrictions from a PDF you own",
                "description": "Remove the password and restrictions from a PDF you own.",
                "operationId": "fileUnlockPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/pdf-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert each page of a PDF into a lossless PNG image",
                "description": "Convert each page of a PDF into a lossless PNG image.",
                "operationId": "filePdfToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/heic-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert iPhone HEIC photos into universal JPG images",
                "description": "Convert iPhone HEIC photos into universal JPG images.",
                "operationId": "fileHeicToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/jpg-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert JPG images to lossless PNG format",
                "description": "Convert JPG images to lossless PNG format.",
                "operationId": "fileJpgToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/png-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert PNG images to smaller JPG files",
                "description": "Convert PNG images to smaller JPG files.",
                "operationId": "filePngToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/webp-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert WebP images into universal JPG files",
                "description": "Convert WebP images into universal JPG files.",
                "operationId": "fileWebpToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-to-webp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert JPG and PNG images to lightweight WebP for faster sites",
                "description": "Convert JPG and PNG images to lightweight WebP for faster sites.",
                "operationId": "fileImageToWebpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/compress-image": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Shrink JPG, PNG and WebP images to a smaller file size",
                "description": "Shrink JPG, PNG and WebP images to a smaller file size.",
                "operationId": "fileCompressImagePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/compress-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Make JPG images smaller while keeping good quality — you control the amount",
                "description": "Make JPG images smaller while keeping good quality — you control the amount.",
                "operationId": "fileCompressJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/compress-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Make PNG images smaller while keeping good quality — you control the amount",
                "description": "Make PNG images smaller while keeping good quality — you control the amount.",
                "operationId": "fileCompressPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/compress-webp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Make WebP images smaller while keeping good quality — you control the amount",
                "description": "Make WebP images smaller while keeping good quality — you control the amount.",
                "operationId": "fileCompressWebpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/sign-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Draw your signature and stamp it onto your PDF",
                "description": "Draw your signature and stamp it onto your PDF.",
                "operationId": "fileSignPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/rotate-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Rotate every page of a PDF to the correct orientation",
                "description": "Rotate every page of a PDF to the correct orientation.",
                "operationId": "fileRotatePdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/remove-pages": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Delete specific pages or ranges from a PDF",
                "description": "Delete specific pages or ranges from a PDF.",
                "operationId": "fileRemovePagesPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/extract-pages": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Pull specific pages or ranges out into a new PDF",
                "description": "Pull specific pages or ranges out into a new PDF.",
                "operationId": "fileExtractPagesPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/add-page-numbers": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Stamp page numbers onto every page of a PDF",
                "description": "Stamp page numbers onto every page of a PDF.",
                "operationId": "fileAddPageNumbersPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/watermark-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Stamp a diagonal text watermark across every page",
                "description": "Stamp a diagonal text watermark across every page.",
                "operationId": "fileWatermarkPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/repair-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Rebuild a corrupt or damaged PDF so it opens again",
                "description": "Rebuild a corrupt or damaged PDF so it opens again.",
                "operationId": "fileRepairPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/favicon-generator": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Turn any image into a complete favicon package — favicon.ico, every PNG size, Apple touch icons and a web man…",
                "description": "Turn any image into a complete favicon package — favicon.ico, every PNG size, Apple touch icons and a web manifest.",
                "operationId": "fileFaviconGeneratorPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-converter": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert images between PNG, JPG, WebP, AVIF, GIF, BMP, TIFF and more — you pick the output format",
                "description": "Convert images between PNG, JPG, WebP, AVIF, GIF, BMP, TIFF and more — you pick the output format.",
                "operationId": "fileImageConverterPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/webp-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert WebP images to PNG, keeping full transparency",
                "description": "Convert WebP images to PNG, keeping full transparency.",
                "operationId": "fileWebpToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/png-to-webp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert PNG images to smaller WebP files, keeping transparency",
                "description": "Convert PNG images to smaller WebP files, keeping transparency.",
                "operationId": "filePngToWebpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/jpg-to-webp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert JPG photos to smaller WebP files for the web",
                "description": "Convert JPG photos to smaller WebP files for the web.",
                "operationId": "fileJpgToWebpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/ico-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert an .ico favicon to a PNG, taking its largest image",
                "description": "Convert an .ico favicon to a PNG, taking its largest image.",
                "operationId": "fileIcoToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/avif-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert AVIF images to JPG online, free",
                "description": "Convert AVIF images to JPG online, free. Batch supported.",
                "operationId": "fileAvifToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/avif-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert AVIF images to PNG online, free",
                "description": "Convert AVIF images to PNG online, free. Batch supported.",
                "operationId": "fileAvifToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/avif-to-webp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert AVIF images to WebP online, free",
                "description": "Convert AVIF images to WebP online, free. Batch supported.",
                "operationId": "fileAvifToWebpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/png-to-avif": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert PNG images to AVIF online, free",
                "description": "Convert PNG images to AVIF online, free. Batch supported.",
                "operationId": "filePngToAvifPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/jpg-to-avif": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert JPG images to AVIF online, free",
                "description": "Convert JPG images to AVIF online, free. Batch supported.",
                "operationId": "fileJpgToAvifPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/webp-to-avif": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert WebP images to AVIF online, free",
                "description": "Convert WebP images to AVIF online, free. Batch supported.",
                "operationId": "fileWebpToAvifPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/heic-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert HEIC images to PNG online, free",
                "description": "Convert HEIC images to PNG online, free. Batch supported.",
                "operationId": "fileHeicToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/heic-to-webp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert HEIC images to WebP online, free",
                "description": "Convert HEIC images to WebP online, free. Batch supported.",
                "operationId": "fileHeicToWebpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/gif-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert GIF images to PNG online, free",
                "description": "Convert GIF images to PNG online, free. Batch supported.",
                "operationId": "fileGifToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/gif-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert GIF images to JPG online, free",
                "description": "Convert GIF images to JPG online, free. Batch supported.",
                "operationId": "fileGifToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/bmp-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert BMP images to JPG online, free",
                "description": "Convert BMP images to JPG online, free. Batch supported.",
                "operationId": "fileBmpToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/bmp-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert BMP images to PNG online, free",
                "description": "Convert BMP images to PNG online, free. Batch supported.",
                "operationId": "fileBmpToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/tiff-to-jpg": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert TIFF images to JPG online, free",
                "description": "Convert TIFF images to JPG online, free. Batch supported.",
                "operationId": "fileTiffToJpgPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/tiff-to-png": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert TIFF images to PNG online, free",
                "description": "Convert TIFF images to PNG online, free. Batch supported.",
                "operationId": "fileTiffToPngPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/png-to-tiff": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert PNG images to TIFF online, free",
                "description": "Convert PNG images to TIFF online, free. Batch supported.",
                "operationId": "filePngToTiffPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/jpg-to-tiff": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert JPG images to TIFF online, free",
                "description": "Convert JPG images to TIFF online, free. Batch supported.",
                "operationId": "fileJpgToTiffPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/png-to-bmp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert PNG images to BMP online, free",
                "description": "Convert PNG images to BMP online, free. Batch supported.",
                "operationId": "filePngToBmpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/jpg-to-bmp": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert JPG images to BMP online, free",
                "description": "Convert JPG images to BMP online, free. Batch supported.",
                "operationId": "fileJpgToBmpPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/html-to-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Paste HTML and download a clean, print-ready PDF — styling, tables and images included",
                "description": "Paste HTML and download a clean, print-ready PDF — styling, tables and images included.",
                "operationId": "fileHtmlToPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/markdown-to-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Paste Markdown and download a beautifully formatted PDF — headings, lists, tables and code included",
                "description": "Paste Markdown and download a beautifully formatted PDF — headings, lists, tables and code included.",
                "operationId": "fileMarkdownToPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/text-to-pdf": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Paste plain text and download a clean PDF that keeps your line breaks and spacing",
                "description": "Paste plain text and download a clean PDF that keeps your line breaks and spacing.",
                "operationId": "fileTextToPdfPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/pdf-to-text": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Pull the text out of a PDF and download it as a clean .txt file",
                "description": "Pull the text out of a PDF and download it as a clean .txt file.",
                "operationId": "filePdfToTextPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/pdf-to-markdown": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Extract a PDF's text as clean Markdown, with headings and lists preserved",
                "description": "Extract a PDF's text as clean Markdown, with headings and lists preserved.",
                "operationId": "filePdfToMarkdownPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-resize": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Resize an image to exact dimensions (pad, stretch or crop to fill)",
                "description": "Resize an image to exact dimensions (pad, stretch or crop to fill).",
                "operationId": "fileImageResizePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-crop": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Cut a rectangle out of an image",
                "description": "Cut a rectangle out of an image.",
                "operationId": "fileImageCropPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-rotate": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Rotate an image by any angle",
                "description": "Rotate an image by any angle.",
                "operationId": "fileImageRotatePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-flip": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Mirror an image horizontally, vertically or both",
                "description": "Mirror an image horizontally, vertically or both.",
                "operationId": "fileImageFlipPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-thumbnail": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Make a square thumbnail, cropped to fill",
                "description": "Make a square thumbnail, cropped to fill.",
                "operationId": "fileImageThumbnailPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-grayscale": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Convert an image to greyscale",
                "description": "Convert an image to greyscale.",
                "operationId": "fileImageGrayscalePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-blur": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Apply a Gaussian blur",
                "description": "Apply a Gaussian blur.",
                "operationId": "fileImageBlurPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/image-strip": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Remove EXIF, GPS and colour-profile metadata",
                "description": "Remove EXIF, GPS and colour-profile metadata.",
                "operationId": "fileImageStripPost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/file/zip-create": {
            "post": {
                "tags": [
                    "file"
                ],
                "summary": "Bundle any uploaded files into a single ZIP archive",
                "description": "Bundle any uploaded files into a single ZIP archive.",
                "operationId": "fileZipCreatePost",
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Success"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Missing or invalid parameters",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Quota exhausted. See the X-RateLimit-Remaining header.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "files"
                                ],
                                "properties": {
                                    "files": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "binary"
                                        },
                                        "description": "One or more files to process."
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}