parseProblemDetails

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

function · experimental

function parseProblemDetails<T extends ProblemDetailsExtensions = Record<string, never>>(input: unknown): ProblemDetails<T>

Parses a plain JSON value into a ProblemDetails.

Returns the standard members plus any extension members as a flat object. Standard members with invalid types are silently dropped per RFC 9457 §3.1. Does not throw on missing fields — the RFC makes all members optional. Extension member types provided via T are asserted at the type level only; values are not validated at runtime.

input: unknown

A JSON value to parse as problem details.

Returns

The parsed problem details.

Example: Parse from a plain object

import { parseProblemDetails } from "@ende/http/unstable-problem-details";
import { assertEquals } from "@ende/assert";

const problem = parseProblemDetails({
  type: "about:blank",
  status: 400,
  title: "Bad Request",
  balance: 30,
});
assertEquals(problem.status, 400);
assertEquals(problem.title, "Bad Request");

Source