Hello community. We are exposing an API, method GET with some URL query parameters. Some of these parameters have special characters in their name (Name in request). For example, Employee[Code]. When we open the documentation, everything looks good and the URL parameters with the special char have the encoded format (Employee%5BCode%5D). The problem is that these inputs are always empty. I added the GetRawURL to the logic and the values are indeed being sent (Employee%5BCode%5D=ABC), however the input remains empty. I don't know if this is a problem OutSystems has while decoding the parameter or if it is something else. Has anyone had this issue?
Note: I was able to get the values by doing a workaround using the getRawURL, indexes etc. But we would like to do this without this workaround.
Also, we cannot change the parameter's name or send it in the header. This is a WS that will replace an older one (in another technology) and our client's request is that this has to be done exactly the same way, so their clients don't have to integrate again.
Thank you!
Hi Filipa,How you did the work around ? in the onBeforeRequest?
Hi @Filipa Matos ,
This is a known and expected limitation in OutSystems when exposing REST APIs. OutSystems does not bind REST input parameters whose names contain special characters like [ and ], even though they are correctly URL‑encoded and visible in GetRawURL.
Root cause:
OutSystems REST input binding only supports parameter names that are valid OutSystems identifiers, which means:
Even when encoded (%5B, %5D), OutSystems does not match them to inputs. Since OutSystems does not allow special characters in variable naming.
GetRawUrl still works because it
But,
Solution:
Option 1: Change the parameter name (best practice)
Option 2: Pass complex parameters in the body if you need structured data: { "Employee": { "Code": "ABC" } }
Option 3: Manually parse the query string
As a workaround only:
Hope this helps,
Cheers,
Saugat