Problem
An RFC 9457 problem detail. This is the document carried by application/problem+json and application/problem+xml.
The five members §3.1 defines are named properties here. Anything else becomes a §3.2 extension member. It lives in Problem.extensions, and both codecs place it as a sibling of the standard members, not inside an extensions key.
Extension names are checked against RESERVED_MEMBERS alone, since reusing one of those five would produce a document with a duplicate key. §3.2 also suggests starting with a letter, using only [A-Za-z0-9_], and staying at least three characters long. That guidance is a SHOULD a valid document can ignore, so it stays documented here instead of enforced.
See also
Constructors
Types
Properties
the §3.2 extension members, keyed by member name.
the HTTP status code the origin server generated. §3.1 treats this as advisory only. Generators must make it agree with the real response status, but §5 still allows the two to diverge once an intermediary rewrites a response without touching its body, so consumers should key off the real status. §3.1 fixes what this member means without saying which values are legal, so this stays unchecked too.
URI reference identifying the problem type. §3.1 treats this as the primary identifier of what went wrong, ahead of Problem.title. An absent type means ABOUT_BLANK, which is why this has a default value instead of being nullable. Use an absolute URI where you can. A relative one resolves against the document's base URI, so its meaning shifts depending on where the document was fetched.