Revision history for TPSGI

0.001 2026-10-23 TEODESIAN
    - Initial Release
    - Route by an OpenAPI 3 document: a router exports %openapi in place of
      @routes, and a router that still has @routes dies as it loads.
      Templates take {name} and a final {name+}, the most concrete template
      wins, and parameters are validated and coerced by JSON::Validator.
      A path with a method that it has no route for is a 405, not a 400.
    - Every name in a request must be declared, or the request is a 400:
      each key of the query, and each field and file of the body, unless a
      body schema says additionalProperties.  An operation in CGI mode is
      not validated.
    - A callback finds the input of a request in $query->{input}: the query
      string, the body, the path and x-tpsgi-data.  The rest of the query is
      what tPSGI knows of the request, which the input cannot replace.  A
      router dies as it loads when an operation gives one name to two of
      them.
