Observed behaviour
The parser for ISO8601 is overly restrictive - it only allows "Z" as the zone designator but not "+00:00". While I can understand not wanting to support iso8601 timestamp in non-UTC timezones due to added complexity, it would be good to at least support both ways of specifying that the timestamp is in UTC that ISO8601 allows (since it's just a matter of expanding the regex for the zone designator part to be
(Z|\+00:00) rather than just Z). Especially since some programming languages may choose to output ISO8601 timestamps with +00:00 rather than Z (as is the case in Python's datetime.datetime.isoformat(), for example).
Also, limitations of what can be parsed should be documented.Reproduction steps
- Make an API request to any endpoint requring ISO8601 timestamp with a "+00:00" instead of "Z" use as the zone designator, e.g. "2026-09-07T18:33:12.120000+00:00"
- See "The provided value is in an invalid format" error returned by the API.
PATCH /guilds/{guild.id}/members/{member.id}
{"communication_disabled_until":"2026-09-07T18:33:12.120000+00:00"}
{
"code" : "INVALID_FORM_BODY" ,
"message" : "Invalid form body." ,
"errors" : [
{
"path" : "communication_disabled_until" ,
"message" : "The provided value is in an invalid format." ,
"code" : "INVALID_FORMAT"
}
]
}Build information
This is an API issue, so not relevant.
Platform
API
Evidence
Everything relevant has already been presented above.
4 comments
Comment by @Jackenmen
communication_disabled_untilfield so it's possible that the issue is limited only to that endpoint. At the very least, I found that thePOST /channels/{channel.id}/messagesendpoint is more lenient and allows use of "+00:00".Comment by @massmarketconsumer-arch
z.iso.datetime({offset: true})inGuildRequestSchemas.tsandUserRequestSchemas.ts) and the Gateway parser (parse_iso8601_to_unix_msinfluxer_gateway/src/utils/utils.erl) to support UTC offset designators (+00:00/-00:00). All test suites pass. May I please be approved to submit the pull request?Comment by Hampus
Comment by @massmarketconsumer-arch