SDK · TypeScript

PropRaven TypeScript SDK

Isomorphic typed client for the PropRaven API. Generated from OpenAPI 3.1 via Stainless, published to npm with SLSA provenance via GitHub Actions OIDC.

Install

npm install @propraven/sdk
# or pnpm add @propraven/sdk
# or yarn add @propraven/sdk

Node 18+, modern browsers, Deno, Cloudflare Workers, Bun. ESM + CJS dual export.

Quickstart

import Propraven from "@propraven/sdk";

const client = new Propraven({
  apiKey: process.env.PROPRAVEN_API_KEY!,
});

// Single parcel
const parcel = await client.v1.parcels.retrieve("37183:0012345");
console.log(parcel.owner_name, parcel.assessed_value);

// Owner pierce
const portfolio = await client.v1.owners.retrievePortfolioSummary("BLACKROCK FUND ADVISORS");

// Coverage stats
const cov = await client.v1.retrieveCoverage();
console.log(`${cov.total_parcels.toLocaleString()} parcels across ${cov.states_covered} states`);

Webhook signature verification

Works in Node, Edge, Workers, Deno — uses Web Crypto, no Node-specific deps.

import { verifyWebhook, WebhookVerificationError } from "@propraven/sdk";

// In your route handler — pass the RAW body, not parsed JSON
export async function POST(request: Request) {
  const rawBody = await request.text();
  const sig = request.headers.get("X-PropRaven-Signature") ?? "";

  try {
    await verifyWebhook({
      secret: process.env.PROPRAVEN_WEBHOOK_SECRET!,
      signatureHeader: sig,
      payload: rawBody,
    });
  } catch (e) {
    if (e instanceof WebhookVerificationError)
      return new Response("Forbidden", { status: 401 });
    throw e;
  }

  const event = JSON.parse(rawBody);
  // process event...
}

Provenance

Every published version has an SLSA provenance attestation. Verify any install:

npm install @propraven/sdk
npm audit signatures

Resources