{
  "openapi" : "3.0.3",
  "info" : {
    "description" : "HTTP request & response testing service: echo endpoints, status codes, auth, cookies, redirects, streams and images.",
    "title" : "HttpNex",
    "version" : "1.0.0"
  },
  "servers" : [ {
    "url" : "https://httpnex.devboxly.com"
  } ],
  "tags" : [ {
    "description" : "GET, POST, PUT, PATCH and DELETE endpoints that echo your request back.",
    "name" : "HTTP Methods"
  }, {
    "description" : "One endpoint that accepts any method and any path and echoes it all back.",
    "name" : "Anything"
  }, {
    "description" : "See your request headers, your public IP address and your User-Agent.",
    "name" : "Request Inspection"
  }, {
    "description" : "Return any status code – or a random one from a weighted list.",
    "name" : "Status Code Endpoint"
  }, {
    "description" : "Sample JSON, XML, HTML, UTF-8 text and a robots.txt-denied page.",
    "name" : "Response Formats"
  }, {
    "description" : "Responses compressed with gzip or deflate, whatever you ask for.",
    "name" : "Compression"
  }, {
    "description" : "Set any response header, test ETags, Last-Modified and Cache-Control.",
    "name" : "Headers & Caching"
  }, {
    "description" : "HTTP Basic, hidden Basic, Bearer token and Digest authentication.",
    "name" : "Authentication"
  }, {
    "description" : "Set, read and delete cookies to test your client's cookie jar.",
    "name" : "Cookies"
  }, {
    "description" : "UUIDs, Base64 decoding, random bytes, byte streams and link pages.",
    "name" : "Dynamic Data"
  }, {
    "description" : "Slow responses, dripped bytes, JSON line streams and Range requests.",
    "name" : "Streams, Delays & Ranges"
  }, {
    "description" : "Redirect chains (relative or absolute) and a redirect to any URL.",
    "name" : "Redirects"
  }, {
    "description" : "Sample images in PNG, JPEG, WebP and SVG, with Accept negotiation.",
    "name" : "Images"
  } ],
  "paths" : {
    "/get" : {
      "get" : {
        "tags" : [ "HTTP Methods" ],
        "summary" : "The request's query arguments, headers, origin and URL.",
        "operationId" : "get_get",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "description" : "Any query argument – add as many as you like",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/post" : {
      "post" : {
        "tags" : [ "HTTP Methods" ],
        "summary" : "Echoes a POST request, including its body, JSON, form fields and files.",
        "operationId" : "post_post",
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/put" : {
      "put" : {
        "tags" : [ "HTTP Methods" ],
        "summary" : "Echoes a PUT request, including its body.",
        "operationId" : "put_put",
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/patch" : {
      "patch" : {
        "tags" : [ "HTTP Methods" ],
        "summary" : "Echoes a PATCH request, including its body.",
        "operationId" : "patch_patch",
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/delete" : {
      "delete" : {
        "tags" : [ "HTTP Methods" ],
        "summary" : "Echoes a DELETE request (a body is allowed).",
        "operationId" : "delete_delete",
        "parameters" : [ {
          "name" : "id",
          "in" : "query",
          "required" : false,
          "description" : "Any query argument",
          "schema" : {
            "type" : "string",
            "example" : "42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/anything" : {
      "get" : {
        "tags" : [ "Anything" ],
        "summary" : "Echoes any request: method, args, headers, body, JSON, form, files, origin and URL.",
        "operationId" : "anything_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "post" : {
        "tags" : [ "Anything" ],
        "summary" : "Echoes any request: method, args, headers, body, JSON, form, files, origin and URL.",
        "operationId" : "anything_post",
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "put" : {
        "tags" : [ "Anything" ],
        "summary" : "Echoes any request: method, args, headers, body, JSON, form, files, origin and URL.",
        "operationId" : "anything_put",
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "patch" : {
        "tags" : [ "Anything" ],
        "summary" : "Echoes any request: method, args, headers, body, JSON, form, files, origin and URL.",
        "operationId" : "anything_patch",
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "delete" : {
        "tags" : [ "Anything" ],
        "summary" : "Echoes any request: method, args, headers, body, JSON, form, files, origin and URL.",
        "operationId" : "anything_delete",
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "head" : {
        "tags" : [ "Anything" ],
        "summary" : "Echoes any request: method, args, headers, body, JSON, form, files, origin and URL.",
        "operationId" : "anything_head",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "options" : {
        "tags" : [ "Anything" ],
        "summary" : "Echoes any request: method, args, headers, body, JSON, form, files, origin and URL.",
        "operationId" : "anything_options",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/anything/{anything}" : {
      "get" : {
        "tags" : [ "Anything" ],
        "summary" : "The same for every path below /anything.",
        "operationId" : "anything_path_get",
        "parameters" : [ {
          "name" : "anything",
          "in" : "path",
          "required" : true,
          "description" : "Any path, slashes allowed",
          "schema" : {
            "type" : "string",
            "example" : "orders/42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "post" : {
        "tags" : [ "Anything" ],
        "summary" : "The same for every path below /anything.",
        "operationId" : "anything_path_post",
        "parameters" : [ {
          "name" : "anything",
          "in" : "path",
          "required" : true,
          "description" : "Any path, slashes allowed",
          "schema" : {
            "type" : "string",
            "example" : "orders/42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "put" : {
        "tags" : [ "Anything" ],
        "summary" : "The same for every path below /anything.",
        "operationId" : "anything_path_put",
        "parameters" : [ {
          "name" : "anything",
          "in" : "path",
          "required" : true,
          "description" : "Any path, slashes allowed",
          "schema" : {
            "type" : "string",
            "example" : "orders/42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "patch" : {
        "tags" : [ "Anything" ],
        "summary" : "The same for every path below /anything.",
        "operationId" : "anything_path_patch",
        "parameters" : [ {
          "name" : "anything",
          "in" : "path",
          "required" : true,
          "description" : "Any path, slashes allowed",
          "schema" : {
            "type" : "string",
            "example" : "orders/42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "delete" : {
        "tags" : [ "Anything" ],
        "summary" : "The same for every path below /anything.",
        "operationId" : "anything_path_delete",
        "parameters" : [ {
          "name" : "anything",
          "in" : "path",
          "required" : true,
          "description" : "Any path, slashes allowed",
          "schema" : {
            "type" : "string",
            "example" : "orders/42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "head" : {
        "tags" : [ "Anything" ],
        "summary" : "The same for every path below /anything.",
        "operationId" : "anything_path_head",
        "parameters" : [ {
          "name" : "anything",
          "in" : "path",
          "required" : true,
          "description" : "Any path, slashes allowed",
          "schema" : {
            "type" : "string",
            "example" : "orders/42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "options" : {
        "tags" : [ "Anything" ],
        "summary" : "The same for every path below /anything.",
        "operationId" : "anything_path_options",
        "parameters" : [ {
          "name" : "anything",
          "in" : "path",
          "required" : true,
          "description" : "Any path, slashes allowed",
          "schema" : {
            "type" : "string",
            "example" : "orders/42"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/headers" : {
      "get" : {
        "tags" : [ "Request Inspection" ],
        "summary" : "The request's headers.",
        "operationId" : "headers_get",
        "parameters" : [ {
          "name" : "show_env",
          "in" : "query",
          "required" : false,
          "description" : "1 = also show proxy headers (X-Forwarded-For…)",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/ip" : {
      "get" : {
        "tags" : [ "Request Inspection" ],
        "summary" : "The requester's IP address.",
        "operationId" : "ip_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/user-agent" : {
      "get" : {
        "tags" : [ "Request Inspection" ],
        "summary" : "The request's User-Agent header.",
        "operationId" : "user_agent_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/status/{codes}" : {
      "get" : {
        "tags" : [ "Status Code Endpoint" ],
        "summary" : "Returns the given status code, or a random one of a weighted list.",
        "operationId" : "status_get",
        "parameters" : [ {
          "name" : "codes",
          "in" : "path",
          "required" : true,
          "description" : "One code (404), a list (200,500) or weighted (200:0.9,503:0.1)",
          "schema" : {
            "type" : "string",
            "example" : "418"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "post" : {
        "tags" : [ "Status Code Endpoint" ],
        "summary" : "Returns the given status code, or a random one of a weighted list.",
        "operationId" : "status_post",
        "parameters" : [ {
          "name" : "codes",
          "in" : "path",
          "required" : true,
          "description" : "One code (404), a list (200,500) or weighted (200:0.9,503:0.1)",
          "schema" : {
            "type" : "string",
            "example" : "418"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "put" : {
        "tags" : [ "Status Code Endpoint" ],
        "summary" : "Returns the given status code, or a random one of a weighted list.",
        "operationId" : "status_put",
        "parameters" : [ {
          "name" : "codes",
          "in" : "path",
          "required" : true,
          "description" : "One code (404), a list (200,500) or weighted (200:0.9,503:0.1)",
          "schema" : {
            "type" : "string",
            "example" : "418"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "patch" : {
        "tags" : [ "Status Code Endpoint" ],
        "summary" : "Returns the given status code, or a random one of a weighted list.",
        "operationId" : "status_patch",
        "parameters" : [ {
          "name" : "codes",
          "in" : "path",
          "required" : true,
          "description" : "One code (404), a list (200,500) or weighted (200:0.9,503:0.1)",
          "schema" : {
            "type" : "string",
            "example" : "418"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "delete" : {
        "tags" : [ "Status Code Endpoint" ],
        "summary" : "Returns the given status code, or a random one of a weighted list.",
        "operationId" : "status_delete",
        "parameters" : [ {
          "name" : "codes",
          "in" : "path",
          "required" : true,
          "description" : "One code (404), a list (200,500) or weighted (200:0.9,503:0.1)",
          "schema" : {
            "type" : "string",
            "example" : "418"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/json" : {
      "get" : {
        "tags" : [ "Response Formats" ],
        "summary" : "A sample JSON document.",
        "operationId" : "json_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/xml" : {
      "get" : {
        "tags" : [ "Response Formats" ],
        "summary" : "A sample XML document.",
        "operationId" : "xml_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/html" : {
      "get" : {
        "tags" : [ "Response Formats" ],
        "summary" : "A sample HTML page.",
        "operationId" : "html_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/encoding/utf8" : {
      "get" : {
        "tags" : [ "Response Formats" ],
        "summary" : "A UTF-8 encoded page with text in many scripts.",
        "operationId" : "utf8_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/deny" : {
      "get" : {
        "tags" : [ "Response Formats" ],
        "summary" : "A page that robots.txt tells crawlers not to fetch.",
        "operationId" : "deny_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/robots.txt" : {
      "get" : {
        "tags" : [ "Response Formats" ],
        "summary" : "This site's robots.txt rules.",
        "operationId" : "robots_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/gzip" : {
      "get" : {
        "tags" : [ "Compression" ],
        "summary" : "A gzip-encoded JSON response.",
        "operationId" : "gzip_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/deflate" : {
      "get" : {
        "tags" : [ "Compression" ],
        "summary" : "A deflate-encoded JSON response.",
        "operationId" : "deflate_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/response-headers" : {
      "get" : {
        "tags" : [ "Headers & Caching" ],
        "summary" : "Sends back the response headers given in the query string.",
        "operationId" : "response_headers_get",
        "parameters" : [ {
          "name" : "X-Powered-By",
          "in" : "query",
          "required" : false,
          "description" : "Header name = value",
          "schema" : {
            "type" : "string",
            "example" : "HttpNex"
          }
        }, {
          "name" : "Cache-Control",
          "in" : "query",
          "required" : false,
          "description" : "Another header",
          "schema" : {
            "type" : "string",
            "example" : "no-store"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "post" : {
        "tags" : [ "Headers & Caching" ],
        "summary" : "Sends back the response headers given in the query string.",
        "operationId" : "response_headers_post",
        "parameters" : [ {
          "name" : "X-Powered-By",
          "in" : "query",
          "required" : false,
          "description" : "Header name = value",
          "schema" : {
            "type" : "string",
            "example" : "HttpNex"
          }
        }, {
          "name" : "Cache-Control",
          "in" : "query",
          "required" : false,
          "description" : "Another header",
          "schema" : {
            "type" : "string",
            "example" : "no-store"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/cache" : {
      "get" : {
        "tags" : [ "Headers & Caching" ],
        "summary" : "304 Not Modified when If-Modified-Since or If-None-Match is sent, else 200.",
        "operationId" : "cache_get",
        "parameters" : [ {
          "name" : "If-None-Match",
          "in" : "header",
          "required" : false,
          "description" : "Any value – gives 304",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "If-Modified-Since",
          "in" : "header",
          "required" : false,
          "description" : "Any date – gives 304",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/cache/{value}" : {
      "get" : {
        "tags" : [ "Headers & Caching" ],
        "summary" : "Sets Cache-Control: public, max-age={value}.",
        "operationId" : "cache_n_get",
        "parameters" : [ {
          "name" : "value",
          "in" : "path",
          "required" : true,
          "description" : "Seconds",
          "schema" : {
            "type" : "string",
            "example" : "60"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/etag/{etag}" : {
      "get" : {
        "tags" : [ "Headers & Caching" ],
        "summary" : "Answers If-None-Match with 304 and a failing If-Match with 412.",
        "operationId" : "etag_get",
        "parameters" : [ {
          "name" : "etag",
          "in" : "path",
          "required" : true,
          "description" : "The ETag this resource has",
          "schema" : {
            "type" : "string",
            "example" : "v1"
          }
        }, {
          "name" : "If-None-Match",
          "in" : "header",
          "required" : false,
          "description" : "Matching ETag → 304",
          "schema" : {
            "type" : "string",
            "example" : "\"v1\""
          }
        }, {
          "name" : "If-Match",
          "in" : "header",
          "required" : false,
          "description" : "Different ETag → 412",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/basic-auth/{user}/{passwd}" : {
      "get" : {
        "tags" : [ "Authentication" ],
        "summary" : "Challenges with HTTP Basic auth; only these credentials pass.",
        "operationId" : "basic_auth_get",
        "parameters" : [ {
          "name" : "user",
          "in" : "path",
          "required" : true,
          "description" : "Expected user name",
          "schema" : {
            "type" : "string",
            "example" : "user"
          }
        }, {
          "name" : "passwd",
          "in" : "path",
          "required" : true,
          "description" : "Expected password",
          "schema" : {
            "type" : "string",
            "example" : "passwd"
          }
        } ],
        "security" : [ {
          "basicAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/hidden-basic-auth/{user}/{passwd}" : {
      "get" : {
        "tags" : [ "Authentication" ],
        "summary" : "Like Basic auth, but answers 404 instead of 401 (no browser prompt).",
        "operationId" : "hidden_basic_auth_get",
        "parameters" : [ {
          "name" : "user",
          "in" : "path",
          "required" : true,
          "description" : "Expected user name",
          "schema" : {
            "type" : "string",
            "example" : "user"
          }
        }, {
          "name" : "passwd",
          "in" : "path",
          "required" : true,
          "description" : "Expected password",
          "schema" : {
            "type" : "string",
            "example" : "passwd"
          }
        } ],
        "security" : [ {
          "basicAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/bearer" : {
      "get" : {
        "tags" : [ "Authentication" ],
        "summary" : "Accepts any Authorization: Bearer token, else 401.",
        "operationId" : "bearer_get",
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/digest-auth/{qop}/{user}/{passwd}/{algorithm}" : {
      "get" : {
        "tags" : [ "Authentication" ],
        "summary" : "HTTP Digest auth (RFC 7616). Your browser asks for the user name and password.",
        "operationId" : "digest_auth_get",
        "parameters" : [ {
          "name" : "qop",
          "in" : "path",
          "required" : true,
          "description" : "auth or auth-int",
          "schema" : {
            "type" : "string",
            "example" : "auth"
          }
        }, {
          "name" : "user",
          "in" : "path",
          "required" : true,
          "description" : "Expected user name",
          "schema" : {
            "type" : "string",
            "example" : "user"
          }
        }, {
          "name" : "passwd",
          "in" : "path",
          "required" : true,
          "description" : "Expected password",
          "schema" : {
            "type" : "string",
            "example" : "passwd"
          }
        }, {
          "name" : "algorithm",
          "in" : "path",
          "required" : true,
          "description" : "MD5, SHA-256 or SHA-512 (browsers support MD5 best)",
          "schema" : {
            "type" : "string",
            "example" : "MD5"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/cookies" : {
      "get" : {
        "tags" : [ "Cookies" ],
        "summary" : "The cookies the client sent.",
        "operationId" : "cookies_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/cookies/set" : {
      "get" : {
        "tags" : [ "Cookies" ],
        "summary" : "Sets the cookies given in the query string and redirects to /cookies.",
        "operationId" : "cookies_set_get",
        "parameters" : [ {
          "name" : "flavor",
          "in" : "query",
          "required" : false,
          "description" : "Cookie name = value",
          "schema" : {
            "type" : "string",
            "example" : "oatmeal"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/cookies/set/{name}/{value}" : {
      "get" : {
        "tags" : [ "Cookies" ],
        "summary" : "Sets one cookie and redirects to /cookies.",
        "operationId" : "cookies_set_path_get",
        "parameters" : [ {
          "name" : "name",
          "in" : "path",
          "required" : true,
          "description" : "Cookie name",
          "schema" : {
            "type" : "string",
            "example" : "theme"
          }
        }, {
          "name" : "value",
          "in" : "path",
          "required" : true,
          "description" : "Cookie value",
          "schema" : {
            "type" : "string",
            "example" : "dark"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/cookies/delete" : {
      "get" : {
        "tags" : [ "Cookies" ],
        "summary" : "Deletes the cookies named in the query string and redirects to /cookies.",
        "operationId" : "cookies_delete_get",
        "parameters" : [ {
          "name" : "flavor",
          "in" : "query",
          "required" : false,
          "description" : "Name of a cookie to delete",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/uuid" : {
      "get" : {
        "tags" : [ "Dynamic Data" ],
        "summary" : "A new random UUID v4.",
        "operationId" : "uuid_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/base64/{value}" : {
      "get" : {
        "tags" : [ "Dynamic Data" ],
        "summary" : "Decodes a URL-safe Base64 value.",
        "operationId" : "base64_get",
        "parameters" : [ {
          "name" : "value",
          "in" : "path",
          "required" : true,
          "description" : "Base64 (URL-safe) text",
          "schema" : {
            "type" : "string",
            "example" : "SHR0cE5leCBkZWNvZGVkIHRoaXMh"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/bytes/{n}" : {
      "get" : {
        "tags" : [ "Dynamic Data" ],
        "summary" : "n random bytes (max 102,400).",
        "operationId" : "bytes_get",
        "parameters" : [ {
          "name" : "n",
          "in" : "path",
          "required" : true,
          "description" : "Number of bytes",
          "schema" : {
            "type" : "string",
            "example" : "64"
          }
        }, {
          "name" : "seed",
          "in" : "query",
          "required" : false,
          "description" : "Optional seed for repeatable bytes",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/stream-bytes/{n}" : {
      "get" : {
        "tags" : [ "Dynamic Data" ],
        "summary" : "n random bytes sent in chunks (chunked transfer encoding).",
        "operationId" : "stream_bytes_get",
        "parameters" : [ {
          "name" : "n",
          "in" : "path",
          "required" : true,
          "description" : "Number of bytes",
          "schema" : {
            "type" : "string",
            "example" : "1024"
          }
        }, {
          "name" : "chunk_size",
          "in" : "query",
          "required" : false,
          "description" : "Bytes per chunk",
          "schema" : {
            "type" : "string",
            "example" : "128"
          }
        }, {
          "name" : "seed",
          "in" : "query",
          "required" : false,
          "description" : "Optional seed",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/links/{n}/{offset}" : {
      "get" : {
        "tags" : [ "Dynamic Data" ],
        "summary" : "An HTML page with n links, the offset-th one not linked.",
        "operationId" : "links_get",
        "parameters" : [ {
          "name" : "n",
          "in" : "path",
          "required" : true,
          "description" : "Number of links (max 200)",
          "schema" : {
            "type" : "string",
            "example" : "10"
          }
        }, {
          "name" : "offset",
          "in" : "path",
          "required" : true,
          "description" : "This page's number",
          "schema" : {
            "type" : "string",
            "example" : "0"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/delay/{delay}" : {
      "get" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "Waits the given seconds (max 10), then echoes the request.",
        "operationId" : "delay_get",
        "parameters" : [ {
          "name" : "delay",
          "in" : "path",
          "required" : true,
          "description" : "Seconds, decimals allowed",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "post" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "Waits the given seconds (max 10), then echoes the request.",
        "operationId" : "delay_post",
        "parameters" : [ {
          "name" : "delay",
          "in" : "path",
          "required" : true,
          "description" : "Seconds, decimals allowed",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "put" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "Waits the given seconds (max 10), then echoes the request.",
        "operationId" : "delay_put",
        "parameters" : [ {
          "name" : "delay",
          "in" : "path",
          "required" : true,
          "description" : "Seconds, decimals allowed",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "patch" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "Waits the given seconds (max 10), then echoes the request.",
        "operationId" : "delay_patch",
        "parameters" : [ {
          "name" : "delay",
          "in" : "path",
          "required" : true,
          "description" : "Seconds, decimals allowed",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "delete" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "Waits the given seconds (max 10), then echoes the request.",
        "operationId" : "delay_delete",
        "parameters" : [ {
          "name" : "delay",
          "in" : "path",
          "required" : true,
          "description" : "Seconds, decimals allowed",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/drip" : {
      "get" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "Sends numbytes bytes spread over duration seconds.",
        "operationId" : "drip_get",
        "parameters" : [ {
          "name" : "duration",
          "in" : "query",
          "required" : false,
          "description" : "Seconds to spread the bytes over",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        }, {
          "name" : "numbytes",
          "in" : "query",
          "required" : false,
          "description" : "Number of bytes",
          "schema" : {
            "type" : "string",
            "example" : "10"
          }
        }, {
          "name" : "code",
          "in" : "query",
          "required" : false,
          "description" : "Status code",
          "schema" : {
            "type" : "string",
            "example" : "200"
          }
        }, {
          "name" : "delay",
          "in" : "query",
          "required" : false,
          "description" : "Seconds before the first byte",
          "schema" : {
            "type" : "string",
            "example" : "0"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/stream/{n}" : {
      "get" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "Streams n JSON lines (max 100), one per request echo.",
        "operationId" : "stream_get",
        "parameters" : [ {
          "name" : "n",
          "in" : "path",
          "required" : true,
          "description" : "Number of lines",
          "schema" : {
            "type" : "string",
            "example" : "5"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/range/{numbytes}" : {
      "get" : {
        "tags" : [ "Streams, Delays & Ranges" ],
        "summary" : "numbytes bytes with Range support (206 Partial Content).",
        "operationId" : "range_get",
        "parameters" : [ {
          "name" : "numbytes",
          "in" : "path",
          "required" : true,
          "description" : "Size (max 102,400)",
          "schema" : {
            "type" : "string",
            "example" : "26"
          }
        }, {
          "name" : "Range",
          "in" : "header",
          "required" : false,
          "description" : "Optional byte range",
          "schema" : {
            "type" : "string",
            "example" : "bytes=0-9"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/redirect/{n}" : {
      "get" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects n times (302), then lands on /get.",
        "operationId" : "redirect_get",
        "parameters" : [ {
          "name" : "n",
          "in" : "path",
          "required" : true,
          "description" : "Number of redirects (max 30)",
          "schema" : {
            "type" : "string",
            "example" : "3"
          }
        }, {
          "name" : "absolute",
          "in" : "query",
          "required" : false,
          "description" : "true = absolute Location URLs",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/relative-redirect/{n}" : {
      "get" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects n times with relative Location headers.",
        "operationId" : "relative_redirect_get",
        "parameters" : [ {
          "name" : "n",
          "in" : "path",
          "required" : true,
          "description" : "Number of redirects",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/absolute-redirect/{n}" : {
      "get" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects n times with absolute Location URLs.",
        "operationId" : "absolute_redirect_get",
        "parameters" : [ {
          "name" : "n",
          "in" : "path",
          "required" : true,
          "description" : "Number of redirects",
          "schema" : {
            "type" : "string",
            "example" : "2"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/redirect-to" : {
      "get" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects to the given URL with the given status code (default 302).",
        "operationId" : "redirect_to_get",
        "parameters" : [ {
          "name" : "url",
          "in" : "query",
          "required" : false,
          "description" : "Target URL",
          "schema" : {
            "type" : "string",
            "example" : "/get?from=redirect-to"
          }
        }, {
          "name" : "status_code",
          "in" : "query",
          "required" : false,
          "description" : "301, 302, 303, 307 or 308",
          "schema" : {
            "type" : "string",
            "example" : "307"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "post" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects to the given URL with the given status code (default 302).",
        "operationId" : "redirect_to_post",
        "parameters" : [ {
          "name" : "url",
          "in" : "query",
          "required" : false,
          "description" : "Target URL",
          "schema" : {
            "type" : "string",
            "example" : "/get?from=redirect-to"
          }
        }, {
          "name" : "status_code",
          "in" : "query",
          "required" : false,
          "description" : "301, 302, 303, 307 or 308",
          "schema" : {
            "type" : "string",
            "example" : "307"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "put" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects to the given URL with the given status code (default 302).",
        "operationId" : "redirect_to_put",
        "parameters" : [ {
          "name" : "url",
          "in" : "query",
          "required" : false,
          "description" : "Target URL",
          "schema" : {
            "type" : "string",
            "example" : "/get?from=redirect-to"
          }
        }, {
          "name" : "status_code",
          "in" : "query",
          "required" : false,
          "description" : "301, 302, 303, 307 or 308",
          "schema" : {
            "type" : "string",
            "example" : "307"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "patch" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects to the given URL with the given status code (default 302).",
        "operationId" : "redirect_to_patch",
        "parameters" : [ {
          "name" : "url",
          "in" : "query",
          "required" : false,
          "description" : "Target URL",
          "schema" : {
            "type" : "string",
            "example" : "/get?from=redirect-to"
          }
        }, {
          "name" : "status_code",
          "in" : "query",
          "required" : false,
          "description" : "301, 302, 303, 307 or 308",
          "schema" : {
            "type" : "string",
            "example" : "307"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      },
      "delete" : {
        "tags" : [ "Redirects" ],
        "summary" : "Redirects to the given URL with the given status code (default 302).",
        "operationId" : "redirect_to_delete",
        "parameters" : [ {
          "name" : "url",
          "in" : "query",
          "required" : false,
          "description" : "Target URL",
          "schema" : {
            "type" : "string",
            "example" : "/get?from=redirect-to"
          }
        }, {
          "name" : "status_code",
          "in" : "query",
          "required" : false,
          "description" : "301, 302, 303, 307 or 308",
          "schema" : {
            "type" : "string",
            "example" : "307"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/image" : {
      "get" : {
        "tags" : [ "Images" ],
        "summary" : "An image in the format your Accept header asks for.",
        "operationId" : "image_get",
        "parameters" : [ {
          "name" : "Accept",
          "in" : "header",
          "required" : false,
          "description" : "image/webp, image/svg+xml, image/jpeg or image/png",
          "schema" : {
            "type" : "string",
            "example" : "image/svg+xml"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/image/png" : {
      "get" : {
        "tags" : [ "Images" ],
        "summary" : "A PNG image.",
        "operationId" : "image_png_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/image/jpeg" : {
      "get" : {
        "tags" : [ "Images" ],
        "summary" : "A JPEG image.",
        "operationId" : "image_jpeg_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/image/webp" : {
      "get" : {
        "tags" : [ "Images" ],
        "summary" : "A WebP image.",
        "operationId" : "image_webp_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    },
    "/image/svg" : {
      "get" : {
        "tags" : [ "Images" ],
        "summary" : "An SVG image.",
        "operationId" : "image_svg_get",
        "responses" : {
          "200" : {
            "description" : "Success"
          }
        }
      }
    }
  },
  "components" : {
    "securitySchemes" : {
      "basicAuth" : {
        "type" : "http",
        "scheme" : "basic"
      },
      "bearerAuth" : {
        "type" : "http",
        "scheme" : "bearer"
      }
    }
  }
}
