All modules:
The RFC 9457 model and the JSON codec. This is the only module a library or an application needs in order to build and read problem documents. The others add a wire format or a framework integration.
Ktor server integration: respond with a problem document, and turn thrown exceptions into problem documents through StatusPages.
Ktor Client integration: turn a recognized application/problem+json error response into the same io.github.ilyankin.rfc9457.ProblemException that application code throws on the server side and problem-details-ktor answers.
Ktor Client integration for the Appendix B XML form: turn a recognized application/problem+xml error response into the same io.github.ilyankin.rfc9457.ProblemException that application code throws on the server side and problem-details-ktor answers.
Teaches Ktor's OpenAPI generator to describe the problem responses a problem-details-ktor application actually produces: application/problem+json bodies, an RFC 9457 schema that admits extension members as siblings, and the status codes a problemDetails { } catalog answers.
Documents application/problem+xml responses in an OpenAPI document, alongside the JSON ones problem-details-ktor-openapi writes. One function; the schemas, the response primitives and the Appendix B constants all live in modules this one depends on.
Ktor RequestValidation plugin integration: maps RequestValidationException to a Problem carrying an errors[] extension array with JSON Pointer (RFC 6901) references — the multi-field validation pattern RFC 9457 itself recommends.
Registers the application/problem+xml codec with Ktor's ContentNegotiation. One function and one converter; everything else lives in problem-details-ktor and problem-details-xml, both of which this module depends on.
The application/problem+xml codec — RFC 9457 Appendix B, byte-exact against the example the RFC publishes, in both directions.