If it is optional it makes no sense for it to be blank. This is due to a clarification in the Matrix spec.
ruma-client-api contains serializable types for the requests and responses for each endpoint in the Matrix client API specification. These types can be shared by client and server code.