@cfxlabsinc/b2b-services
    Preparing search index...

    Outcome of parsing one wire email — drives the wire_email row's status.

    • RECEIVED — parsed; parsed holds the extracted wire fields.
    • IGNORED — not a wire email, or a bank we have no parser for. Expected.
    • UNPARSED — a wire email we should have parsed but could not. reason carries the parser's complaint for the alert.

    UNPARSED exists so an unparseable body is a stored, visible row instead of a thrown error. The failure is deterministic — re-reading the same bytes produces the same result — so throwing only re-queued the email forever while never recording that it arrived.

    interface WireEmailOutcome {
        parsed: WireEmailParsed | null;
        reason?: string;
        status: "IGNORED" | "RECEIVED" | "UNPARSED";
    }
    Index
    parsed: WireEmailParsed | null
    reason?: string
    status: "IGNORED" | "RECEIVED" | "UNPARSED"