ProblemDetails

import { ProblemDetails } from "jsr:@ende/http/unstable-problem-details";

type alias · experimental

type ProblemDetails<T extends ProblemDetailsExtensions = Record<string, never>> = { type?: string; status?: number; title?: string; detail?: string; instance?: string } & T

A Problem Details object as defined by RFC 9457.

Standard members are explicitly typed. Extension members are represented as a generic parameter intersected with the base type, so they appear as top-level properties in both the TypeScript type and the serialized JSON — matching the wire format exactly.

If T declares a property whose name matches one of the five standard members with an incompatible type, the intersection collapses that field to never.

Source