- provide request info as a HAR file if
flat/collect-request-info
is enabled
- More helpful error message for misspelled type names in
Swagger schemas
- don't leak Authorization in FLAT::getRequestInfo()
- fixed a mixup of JSON DOM representation styles
set-env
now does not produce unnecessary quotes for numeric values- Problem in the
split()
function, if called with a string containing an ampersand - Send
Vary: Origin
response headers for non-preflight requests if CORS is enabled butOrigin
was not sent
- The
uuid3()
anduuid4()
functions - The
ldap-query()
function - LDAP TLS configuration and LDAP timeout
- The
scope-claim
andpost-check-flow
properties - Specifying the required token scope
- Merging directives into
php.ini
via environment variables
- Path parameters were not usable in error flows
FLAT_DEBUG_ALLOW_HEADER
to enable debugging using theDebug
request header, defaults tofalse
- The request option
force-cache-refresh
- The
ldap-lookup()
function - The
cacheHit
property in the upstream response information ($upstream
)
- Empty objects are no longer logged as empty arrays.
- The
json-to-csv()
function allowsnull
values in array entry objects.
The log
action can no longer override system log fields.
- Beta image now publicly available. More about Docker images…
- Warnings in debug log about invalid Swagger definitions
- Validation for the
assert
andset-env
test action configurations. - The
error
action - additional configuration options for the PHP-FPM process management
out-header
property for easy JWT forwarding
- Calls to the
content()
function affecting the result of thebody()
function
- Swagger
security
requirements can now also be specified at the path level. x-flat-proxy
to configure proxies without a flow- Enhanced
proxy-request
action withorigin
,query
,stripEndpoint
andaddPrefix
properties
- If a client URL path is below the API base path, does not match any defined route, and a path is defined which equals the API base path, so that a matching client URL path is the concatenation of the API base path with itself (e.g.
/api/api
if thebasePath
is/api
), the fallback flow is now properly executed. - Some PEM formatted keys could not be recognized during JWT processing.
- Multi-line values for environment variables are now supported.
- If the
definition
request option is given with either aproxy-request
action orx-flat-proxy
, the defaults for theexit-on-error
,validate-request
andvalidate-response
request options are changed totrue
.
- The
json-to-csv()
function - The FLAT revision is shown when FLAT is started and is available in
$env/FLAT_REVISION
- Enhanced
flat_access
log with new fields
- When testing multiple test files with
flat test
, each test now tests its own response. - Fatal errors when using certain combinations of
jwt-decode()
and<eval/>
- Environment variables are shown in the debug log if the debug topic is
env
- With activated upstream validation, a missing
definition
option or adefinition
value referencing a non-existant resource now results in a 500 response with a proper error message. - Swagger security scheme objects without
x-flat-jwt
are ignored for security checks.
set-response-headers
action now accepts the empty object{}
- Reading
swagger.yaml
is faster because of caching
- Validation for
application/x-www-form-urlencoded
encodedformData
parameters - The
proxy-request
action - The functions
verify-xmldsig()
anddecrypt-xml()
.
- Parameter handling of the functions
decrypt()
andcalc-signature()
.
- Padding scheme for
encrypt()
anddecrypt()
to RSAES-OAEP. - Relative paths in the
json-doc()
function are resolved relative to the flow file's path.
- The Swagger extension
x-flat-validate
is now also recognized belowpaths/<path>
andpaths/<path>/<operation>
. - The
force-cache-ttl
request option
- Only allow operations defined in OpenAPI version 2.0 to be used in the
swagger.yaml
- The default value for the
use-http-cache
request option is now false, even if no request options are configured. - Segmentation fault (or double free) when eval is used to assign nodes from a node-set variable to another variable
- The functions
apply-codecs()
,encrypt()
,decrypt()
,calc-signature()
andverify-signature()
- The function
file-exists()
- The
$error
variable is set andexit-on-error
/error flow
handling is triggered if a request error occurs - The
id
andencoding
properties in the JSON request configuration - More environment variables for system configuration and tuning
- If a path in
swagger.yaml
ends with/**
, this entry matches the given path as well as arbitrary paths below it.
- Swagger validation now gracefully accepts empty objects in the definition.
- Logging of template results for more flow actions
- Some alert messages were logged twice
- Evaluating an undefined or
null
variable, as a string, now returns the empty string instead of the stringnull
- Incorrect default content-type
text/xml
for request bodies - The
set-response-headers
action now replacesCache-Control
headers instead of merging them - The
serve
action now correctly handles whitespace and other URL-Encoded characters in the name of thefallback-doc
- Swagger definition supports
discriminator
, JSON schema$id
references and JSON schemapropertyNames
- The
array-reverse()
andsort()
,xml-parse()
andhtml-parse()
functions - Validation of the
request
,requests
andset-response-headers
action JSON bodies - The expected result in an
assert
action's assertion can now benull
- The
log
action, theget-log()
function
- The
report-only
validation modes - The
exit-on-error
,mock
andvalidate
request options also for XML-configured requests - Relative paths for e.g.
in
withcopy
inbackend-flows
- The
$error
variable containing error information for client request/response validation errors - The error flow, called if an error occurs, and referenced by
flow
inx-flat-error
in the swagger.yaml - The
exit-on-error
request option (for JSON-configured requests) to trigger the error flow - An additional parameter
algorithm
for thejwt-decode()
function to limit the acceptable signing algorithms. Mandatory for RSASSA based signatures - The
contains
andpattern
compare flags for theassert
action - The
flat test
Framework withassert
,test-request
,backend-flow
andset-env
actions - The
json-stringify()
andjson-parse()
functions
- The default
User-Agent
for upstream requests isFLAT
- Unless
terminate="false"
is set, theserve
action will terminate the flow - For the
request
action: values inheaders
may now also be numeric or boolean - If the signature cannot be created, the
jwt-encode()
function returns an empty string and an error message is logged - The
key
for thejwt-encode()
andjwt-decode()
functions must not be empty - HTML error page only if HTML is accepted; plain text otherwise
- Fatal error when creating requests with
null
query parameter - Fatal error when creating requests with invalid body source
- Requests are now rejected if upstream validation is enabled, but no
definition
option is configured or the given definition is not found - The results of the
split()
function can now be used as input forjoin()
orfit-serialize()