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

    What RouteFusion currently holds for an entity (entity query).

    The address/country field names here are RouteFusion's READ names and differ from the WRITE names on EntityUpdateInput: address1business_address1, citybusiness_city, state_province_regionbusiness_state_province_region, postal_codebusiness_postal_code, countrybusiness_country. Every field is nullable — RF returns null for anything it never received.

    interface RouteFusionEntity {
        address1: string | null;
        address2: string | null;
        business_name: string | null;
        business_type: string | null;
        city: string | null;
        contact_first_name: string | null;
        contact_last_name: string | null;
        country: string | null;
        email: string | null;
        id: string | null;
        incorporation_date: string | null;
        phone: string | null;
        phone_country: string | null;
        postal_code: string | null;
        state: string | null;
        state_province_region: string | null;
        tax_number: string | null;
        website_url: string | null;
    }
    Index
    address1: string | null
    address2: string | null
    business_name: string | null
    business_type: string | null
    city: string | null
    contact_first_name: string | null
    contact_last_name: string | null
    country: string | null
    email: string | null
    id: string | null
    incorporation_date: string | null
    phone: string | null
    phone_country: string | null
    postal_code: string | null
    state: string | null

    RouteFusion's KYB lifecycle state — the SAME value the entity webhook carries as state, readable on demand. Confirmed against live introspection (__type(name:"Entity")): a plain String, not a GraphQL enum, so there is no member list to exhaust and routeFusionEntityOutcome must fail closed on an unrecognized value.

    Reading it is what makes the KYB mirror self-healing. The webhook is EDGE-triggered — RouteFusion fires on a transition and offers no replay — so a verdict that lands while the subscription is absent, or whose delivery exhausts its retries, is unrecoverable through that channel. This field is level-triggered: it answers "what is true now", which is what a reconcile needs.

    state_province_region: string | null
    tax_number: string | null
    website_url: string | null