propraven

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 16, 2026 License: MIT Imports: 22 Imported by: 0

README

propraven-go

The Go SDK for PropRaven — national property intelligence over 230M+ U.S. parcels.

Generated from the OpenAPI 3.1 spec via Stainless. Webhook signature verification is hand-maintained alongside the generated code.

go get github.com/jdw2111/propraven-go@latest

Quickstart

package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/jdw2111/propraven-go"
    "github.com/jdw2111/propraven-go/option"
)

func main() {
    client := propraven.NewClient(
        option.WithAPIKey(os.Getenv("PROPRAVEN_API_KEY")),
    )

    ctx := context.Background()

    parcel, err := client.V1.Parcels.Get(ctx, "06037:1234-567-890")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%+v\n", parcel.ParcelID)
}

PROPRAVEN_API_KEY and PROPRAVEN_BASE_URL are also read from the environment automatically by NewClient.

API surface

All endpoints sit under client.V1.*:

  • client.V1.Parcels.Get(ctx, id) — single parcel
  • client.V1.Parcels.GetOwner(ctx, id) — current owner
  • client.V1.Parcels.GetPermits(ctx, id, params) — permits on a parcel
  • client.V1.Parcels.GetDeeds(ctx, id, params) — recorded deeds
  • client.V1.Search.Parcels(ctx, params) — geo + filter search
  • client.V1.Owners.Get(ctx, entityID) — consolidated owner entity
  • client.V1.Owners.GetPortfolio(ctx, entityID, params) — owner's parcels
  • client.V1.Deals.Absentee(ctx, params) / .Flips(ctx, params) — deal sourcing
  • client.V1.Market.GetCounty(ctx, params) — county-level stats
  • client.V1.Webhooks.NewEndpoint(ctx, body) / ListEndpoints(ctx) / DisableEndpoint(ctx, id) / GetDeliveries(ctx, id)
  • client.V1.Account.Usage(ctx) — your API key's usage + quota
  • client.V1.GetCoverage(ctx, params) — state/county data coverage

Full reference: pkg.go.dev/github.com/jdw2111/propraven-go.

Webhook verification

propraven.VerifyWebhook does constant-time HMAC-SHA256 verification with a 5-minute replay window. Use it in your inbound handler:

import "github.com/jdw2111/propraven-go"

func webhookHandler(w http.ResponseWriter, r *http.Request) {
    body, _ := io.ReadAll(r.Body)
    sig := r.Header.Get("X-PropRaven-Signature")

    if err := propraven.VerifyWebhook(sig, body, os.Getenv("PROPRAVEN_WEBHOOK_SECRET")); err != nil {
        http.Error(w, "invalid signature", http.StatusUnauthorized)
        return
    }
    // Process the event…
    w.WriteHeader(http.StatusOK)
}

Tune the replay window with propraven.VerifyWebhookOptions{MaxClockSkew: ...}.

Error handling

Non-2xx responses unwrap to *propraven.Error:

parcel, err := client.V1.Parcels.Get(ctx, "missing")
if err != nil {
    var pe *propraven.Error
    if errors.As(err, &pe) {
        log.Printf("status=%d request_id=%s", pe.StatusCode, pe.Header.Get("X-Request-Id"))
    }
}

The client retries on 429 and idempotent 5xx by default. Disable via option.WithMaxRetries(0).

Options

client := propraven.NewClient(
    option.WithAPIKey(os.Getenv("PROPRAVEN_API_KEY")),
    option.WithBaseURL("https://api.propraven.com"),
    option.WithMaxRetries(3),
    option.WithRequestTimeout(60 * time.Second),
    option.WithHeader("X-Trace-Id", "..."),
)

Versioning

This SDK follows the version of the underlying OpenAPI spec; minor versions add resources without breaking existing signatures, and v1.0 freezes the surface. Track the changelog for spec changes.

License

MIT — see LICENSE.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bool added in v0.2.0

func Bool(b bool) param.Opt[bool]

func BoolPtr added in v0.2.0

func BoolPtr(v bool) *bool

func DefaultClientOptions added in v0.2.0

func DefaultClientOptions() []option.RequestOption

DefaultClientOptions read from the environment (PROPRAVEN_API_KEY, PROPRAVEN_BASE_URL). This should be used to initialize new clients.

func File added in v0.2.0

func File(rdr io.Reader, filename string, contentType string) file

func Float added in v0.2.0

func Float(f float64) param.Opt[float64]

func FloatPtr added in v0.2.0

func FloatPtr(v float64) *float64

func Int added in v0.2.0

func Int(i int64) param.Opt[int64]

func IntPtr added in v0.2.0

func IntPtr(v int64) *int64

func Opt added in v0.2.0

func Opt[T comparable](v T) param.Opt[T]

func Ptr added in v0.2.0

func Ptr[T any](v T) *T

func String added in v0.2.0

func String(s string) param.Opt[string]

func StringPtr added in v0.2.0

func StringPtr(v string) *string

func Time added in v0.2.0

func Time(t time.Time) param.Opt[time.Time]

func TimePtr added in v0.2.0

func TimePtr(v time.Time) *time.Time

func VerifyWebhook

func VerifyWebhook(signatureHeader string, rawBody []byte, secret string, opts ...VerifyWebhookOptions) error

VerifyWebhook authenticates an inbound webhook payload.

signatureHeader: raw value of the X-PropRaven-Signature header, formatted
    as "t=<unix_ms>,v1=<hex_hmac>".
rawBody: unmodified request body bytes.
secret: the webhook secret returned at endpoint creation time
    (CreatedWebhookSecret on V1WebhookNewEndpointResponse).

Returns nil on success and an error describing the mismatch on failure. Performs constant-time signature comparison and enforces a 5-minute replay window by default. Override via VerifyWebhookOptions.

Types

type AffordabilityRow added in v0.2.0

type AffordabilityRow struct {
	// Any of "AFFORDABLE", "MODERATE", "EXPENSIVE", "VERY_EXPENSIVE".
	AffordabilityRating    AffordabilityRowAffordabilityRating `json:"affordability_rating"`
	CountyFips             string                              `json:"county_fips"`
	CountyName             string                              `json:"county_name" api:"nullable"`
	MedianHouseholdIncome  float64                             `json:"median_household_income" api:"nullable"`
	MedianSalePrice        float64                             `json:"median_sale_price" api:"nullable"`
	MonthlyPaymentEstimate float64                             `json:"monthly_payment_estimate" api:"nullable"`
	PctIncomeForHousing    float64                             `json:"pct_income_for_housing" api:"nullable"`
	PriceToIncomeRatio     float64                             `json:"price_to_income_ratio" api:"nullable"`
	StateFips              string                              `json:"state_fips"`
	Year                   int64                               `json:"year"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AffordabilityRating    respjson.Field
		CountyFips             respjson.Field
		CountyName             respjson.Field
		MedianHouseholdIncome  respjson.Field
		MedianSalePrice        respjson.Field
		MonthlyPaymentEstimate respjson.Field
		PctIncomeForHousing    respjson.Field
		PriceToIncomeRatio     respjson.Field
		StateFips              respjson.Field
		Year                   respjson.Field
		ExtraFields            map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (AffordabilityRow) RawJSON added in v0.2.0

func (r AffordabilityRow) RawJSON() string

Returns the unmodified JSON received from the API

func (*AffordabilityRow) UnmarshalJSON added in v0.2.0

func (r *AffordabilityRow) UnmarshalJSON(data []byte) error

type AffordabilityRowAffordabilityRating added in v0.2.0

type AffordabilityRowAffordabilityRating string
const (
	AffordabilityRowAffordabilityRatingAffordable    AffordabilityRowAffordabilityRating = "AFFORDABLE"
	AffordabilityRowAffordabilityRatingModerate      AffordabilityRowAffordabilityRating = "MODERATE"
	AffordabilityRowAffordabilityRatingExpensive     AffordabilityRowAffordabilityRating = "EXPENSIVE"
	AffordabilityRowAffordabilityRatingVeryExpensive AffordabilityRowAffordabilityRating = "VERY_EXPENSIVE"
)

type Client

type Client struct {

	// Data coverage statistics.
	V1 V1Service
	// contains filtered or unexported fields
}

Client creates a struct with services and top level methods that help with interacting with the propraven API. You should not instantiate this client directly, and instead use the NewClient method instead.

func NewClient

func NewClient(opts ...option.RequestOption) (r Client)

NewClient generates a new client with the default option read from the environment (PROPRAVEN_API_KEY, PROPRAVEN_BASE_URL). The option passed in as arguments are applied after these default arguments, and all option will be passed down to the services and requests that this client makes.

func (*Client) Delete added in v0.2.0

func (r *Client) Delete(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error

Delete makes a DELETE request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.

func (*Client) Execute added in v0.2.0

func (r *Client) Execute(ctx context.Context, method string, path string, params any, res any, opts ...option.RequestOption) error

Execute makes a request with the given context, method, URL, request params, response, and request options. This is useful for hitting undocumented endpoints while retaining the base URL, auth, retries, and other options from the client.

If a byte slice or an io.Reader is supplied to params, it will be used as-is for the request body.

The params is by default serialized into the body using encoding/json. If your type implements a MarshalJSON function, it will be used instead to serialize the request. If a URLQuery method is implemented, the returned url.Values will be used as query strings to the url.

If your params struct uses param.Field, you must provide either [MarshalJSON], [URLQuery], and/or [MarshalForm] functions. It is undefined behavior to use a struct uses param.Field without specifying how it is serialized.

Any "…Params" object defined in this library can be used as the request argument. Note that 'path' arguments will not be forwarded into the url.

The response body will be deserialized into the res variable, depending on its type:

  • A pointer to a *http.Response is populated by the raw response.
  • A pointer to a byte array will be populated with the contents of the request body.
  • A pointer to any other type uses this library's default JSON decoding, which respects UnmarshalJSON if it is defined on the type.
  • A nil value will not read the response body.

For even greater flexibility, see option.WithResponseInto and option.WithResponseBodyInto.

func (*Client) Get added in v0.2.0

func (r *Client) Get(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error

Get makes a GET request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.

func (*Client) Patch added in v0.2.0

func (r *Client) Patch(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error

Patch makes a PATCH request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.

func (*Client) Post added in v0.2.0

func (r *Client) Post(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error

Post makes a POST request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.

func (*Client) Put added in v0.2.0

func (r *Client) Put(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error

Put makes a PUT request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.

type Deed

type Deed struct {
	DeedType       string    `json:"deed_type" api:"nullable"`
	DocumentNumber string    `json:"document_number"`
	GranteeName    string    `json:"grantee_name"`
	GrantorName    string    `json:"grantor_name"`
	RecordingDate  time.Time `json:"recording_date" format:"date"`
	SaleDate       time.Time `json:"sale_date" api:"nullable" format:"date"`
	SalePrice      float64   `json:"sale_price" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		DeedType       respjson.Field
		DocumentNumber respjson.Field
		GranteeName    respjson.Field
		GrantorName    respjson.Field
		RecordingDate  respjson.Field
		SaleDate       respjson.Field
		SalePrice      respjson.Field
		ExtraFields    map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (Deed) RawJSON added in v0.2.0

func (r Deed) RawJSON() string

Returns the unmodified JSON received from the API

func (*Deed) UnmarshalJSON added in v0.2.0

func (r *Deed) UnmarshalJSON(data []byte) error

type Error

type Error = apierror.Error

type Owner

type Owner struct {
	// Any of "individual", "corporation", "llc", "trust", "government", "other".
	EntityType         OwnerEntityType `json:"entity_type"`
	OwnerName          string          `json:"owner_name"`
	PropertyCount      int64           `json:"property_count"`
	States             []string        `json:"states"`
	TotalAssessedValue float64         `json:"total_assessed_value"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		EntityType         respjson.Field
		OwnerName          respjson.Field
		PropertyCount      respjson.Field
		States             respjson.Field
		TotalAssessedValue respjson.Field
		ExtraFields        map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (Owner) RawJSON added in v0.2.0

func (r Owner) RawJSON() string

Returns the unmodified JSON received from the API

func (*Owner) UnmarshalJSON added in v0.2.0

func (r *Owner) UnmarshalJSON(data []byte) error

type OwnerEntityType added in v0.2.0

type OwnerEntityType string
const (
	OwnerEntityTypeIndividual  OwnerEntityType = "individual"
	OwnerEntityTypeCorporation OwnerEntityType = "corporation"
	OwnerEntityTypeLlc         OwnerEntityType = "llc"
	OwnerEntityTypeTrust       OwnerEntityType = "trust"
	OwnerEntityTypeGovernment  OwnerEntityType = "government"
	OwnerEntityTypeOther       OwnerEntityType = "other"
)

type Parcel

type Parcel struct {
	AbsenteeOwner bool    `json:"absentee_owner"`
	Acreage       float64 `json:"acreage" api:"nullable"`
	Address       string  `json:"address"`
	AssessedValue float64 `json:"assessed_value" api:"nullable"`
	City          string  `json:"city"`
	// 5-digit county FIPS code.
	CountyFips string `json:"county_fips"`
	CountyName string `json:"county_name"`
	// Crime score from 0 (low) to 100 (high).
	CrimeScore float64 `json:"crime_score" api:"nullable"`
	// Composite deal opportunity score from 0 to 100.
	DealScore        float64   `json:"deal_score" api:"nullable"`
	ImprovementValue float64   `json:"improvement_value" api:"nullable"`
	LandUse          string    `json:"land_use" api:"nullable"`
	LandValue        float64   `json:"land_value" api:"nullable"`
	LastSaleDate     time.Time `json:"last_sale_date" api:"nullable" format:"date"`
	LastSalePrice    float64   `json:"last_sale_price" api:"nullable"`
	Latitude         float64   `json:"latitude" api:"nullable"`
	Longitude        float64   `json:"longitude" api:"nullable"`
	MailingAddress   string    `json:"mailing_address" api:"nullable"`
	MarketValue      float64   `json:"market_value" api:"nullable"`
	OwnerName        string    `json:"owner_name"`
	// Any of "individual", "corporation", "llc", "trust", "government", "other".
	OwnerType ParcelOwnerType `json:"owner_type"`
	// County-assigned parcel identifier.
	ParcelID  string `json:"parcel_id"`
	StateAbbr string `json:"state_abbr"`
	StateFips string `json:"state_fips"`
	YearBuilt int64  `json:"year_built" api:"nullable"`
	Zip       string `json:"zip"`
	Zoning    string `json:"zoning" api:"nullable"`
	// Any of "residential", "commercial", "industrial", "agricultural", "mixed",
	// "other".
	ZoningCategory ParcelZoningCategory `json:"zoning_category" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AbsenteeOwner    respjson.Field
		Acreage          respjson.Field
		Address          respjson.Field
		AssessedValue    respjson.Field
		City             respjson.Field
		CountyFips       respjson.Field
		CountyName       respjson.Field
		CrimeScore       respjson.Field
		DealScore        respjson.Field
		ImprovementValue respjson.Field
		LandUse          respjson.Field
		LandValue        respjson.Field
		LastSaleDate     respjson.Field
		LastSalePrice    respjson.Field
		Latitude         respjson.Field
		Longitude        respjson.Field
		MailingAddress   respjson.Field
		MarketValue      respjson.Field
		OwnerName        respjson.Field
		OwnerType        respjson.Field
		ParcelID         respjson.Field
		StateAbbr        respjson.Field
		StateFips        respjson.Field
		YearBuilt        respjson.Field
		Zip              respjson.Field
		Zoning           respjson.Field
		ZoningCategory   respjson.Field
		ExtraFields      map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (Parcel) RawJSON added in v0.2.0

func (r Parcel) RawJSON() string

Returns the unmodified JSON received from the API

func (*Parcel) UnmarshalJSON added in v0.2.0

func (r *Parcel) UnmarshalJSON(data []byte) error

type ParcelOwnerType added in v0.2.0

type ParcelOwnerType string
const (
	ParcelOwnerTypeIndividual  ParcelOwnerType = "individual"
	ParcelOwnerTypeCorporation ParcelOwnerType = "corporation"
	ParcelOwnerTypeLlc         ParcelOwnerType = "llc"
	ParcelOwnerTypeTrust       ParcelOwnerType = "trust"
	ParcelOwnerTypeGovernment  ParcelOwnerType = "government"
	ParcelOwnerTypeOther       ParcelOwnerType = "other"
)

type ParcelZoningCategory added in v0.2.0

type ParcelZoningCategory string
const (
	ParcelZoningCategoryResidential  ParcelZoningCategory = "residential"
	ParcelZoningCategoryCommercial   ParcelZoningCategory = "commercial"
	ParcelZoningCategoryIndustrial   ParcelZoningCategory = "industrial"
	ParcelZoningCategoryAgricultural ParcelZoningCategory = "agricultural"
	ParcelZoningCategoryMixed        ParcelZoningCategory = "mixed"
	ParcelZoningCategoryOther        ParcelZoningCategory = "other"
)

type Permit

type Permit struct {
	Contractor    string    `json:"contractor" api:"nullable"`
	Description   string    `json:"description"`
	EstimatedCost float64   `json:"estimated_cost" api:"nullable"`
	IssuedDate    time.Time `json:"issued_date" api:"nullable" format:"date"`
	PermitNumber  string    `json:"permit_number"`
	// Any of "issued", "pending", "approved", "expired", "completed", "denied".
	Status PermitStatus `json:"status"`
	Type   string       `json:"type"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Contractor    respjson.Field
		Description   respjson.Field
		EstimatedCost respjson.Field
		IssuedDate    respjson.Field
		PermitNumber  respjson.Field
		Status        respjson.Field
		Type          respjson.Field
		ExtraFields   map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (Permit) RawJSON added in v0.2.0

func (r Permit) RawJSON() string

Returns the unmodified JSON received from the API

func (*Permit) UnmarshalJSON added in v0.2.0

func (r *Permit) UnmarshalJSON(data []byte) error

type PermitStatus added in v0.2.0

type PermitStatus string
const (
	PermitStatusIssued    PermitStatus = "issued"
	PermitStatusPending   PermitStatus = "pending"
	PermitStatusApproved  PermitStatus = "approved"
	PermitStatusExpired   PermitStatus = "expired"
	PermitStatusCompleted PermitStatus = "completed"
	PermitStatusDenied    PermitStatus = "denied"
)

type RiskAssessment added in v0.2.0

type RiskAssessment struct {
	AirQuality RiskAssessmentAirQuality `json:"air_quality"`
	Crime      RiskAssessmentCrime      `json:"crime"`
	FloodZone  RiskAssessmentFloodZone  `json:"flood_zone"`
	Wildfire   RiskAssessmentWildfire   `json:"wildfire"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AirQuality  respjson.Field
		Crime       respjson.Field
		FloodZone   respjson.Field
		Wildfire    respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (RiskAssessment) RawJSON added in v0.2.0

func (r RiskAssessment) RawJSON() string

Returns the unmodified JSON received from the API

func (*RiskAssessment) UnmarshalJSON added in v0.2.0

func (r *RiskAssessment) UnmarshalJSON(data []byte) error

type RiskAssessmentAirQuality added in v0.2.0

type RiskAssessmentAirQuality struct {
	// Any of "good", "moderate", "unhealthy_sensitive", "unhealthy", "very_unhealthy",
	// "hazardous".
	Category string `json:"category" api:"nullable"`
	// Median Air Quality Index value.
	MedianAqi float64 `json:"median_aqi" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Category    respjson.Field
		MedianAqi   respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (RiskAssessmentAirQuality) RawJSON added in v0.2.0

func (r RiskAssessmentAirQuality) RawJSON() string

Returns the unmodified JSON received from the API

func (*RiskAssessmentAirQuality) UnmarshalJSON added in v0.2.0

func (r *RiskAssessmentAirQuality) UnmarshalJSON(data []byte) error

type RiskAssessmentCrime added in v0.2.0

type RiskAssessmentCrime struct {
	// Crime score from 0 (low) to 100 (high).
	Score float64 `json:"score" api:"nullable"`
	// Any of "very_low", "low", "moderate", "high", "very_high".
	Tier string `json:"tier" api:"nullable"`
	// Any of "decreasing", "stable", "increasing".
	Trend string `json:"trend" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Score       respjson.Field
		Tier        respjson.Field
		Trend       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (RiskAssessmentCrime) RawJSON added in v0.2.0

func (r RiskAssessmentCrime) RawJSON() string

Returns the unmodified JSON received from the API

func (*RiskAssessmentCrime) UnmarshalJSON added in v0.2.0

func (r *RiskAssessmentCrime) UnmarshalJSON(data []byte) error

type RiskAssessmentFloodZone added in v0.2.0

type RiskAssessmentFloodZone struct {
	Description  string `json:"description" api:"nullable"`
	InFloodplain bool   `json:"in_floodplain"`
	// FEMA flood zone designation.
	Zone string `json:"zone" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Description  respjson.Field
		InFloodplain respjson.Field
		Zone         respjson.Field
		ExtraFields  map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (RiskAssessmentFloodZone) RawJSON added in v0.2.0

func (r RiskAssessmentFloodZone) RawJSON() string

Returns the unmodified JSON received from the API

func (*RiskAssessmentFloodZone) UnmarshalJSON added in v0.2.0

func (r *RiskAssessmentFloodZone) UnmarshalJSON(data []byte) error

type RiskAssessmentWildfire added in v0.2.0

type RiskAssessmentWildfire struct {
	// Annual burn probability as a decimal.
	BurnProbability float64 `json:"burn_probability" api:"nullable"`
	// Any of "low", "moderate", "high", "very_high", "extreme".
	RiskClass string `json:"risk_class" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		BurnProbability respjson.Field
		RiskClass       respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (RiskAssessmentWildfire) RawJSON added in v0.2.0

func (r RiskAssessmentWildfire) RawJSON() string

Returns the unmodified JSON received from the API

func (*RiskAssessmentWildfire) UnmarshalJSON added in v0.2.0

func (r *RiskAssessmentWildfire) UnmarshalJSON(data []byte) error

type V1AccountGetUsageResponse added in v0.2.0

type V1AccountGetUsageResponse struct {
	// Plan allotment for the current period.
	CallsIncluded  int64 `json:"calls_included"`
	CallsRemaining int64 `json:"calls_remaining"`
	CallsUsed      int64 `json:"calls_used"`
	// Whether further calls will be hard-rejected vs allowed-and-billed.
	HardCapped bool                               `json:"hard_capped"`
	Period     V1AccountGetUsageResponsePeriod    `json:"period"`
	RateLimit  V1AccountGetUsageResponseRateLimit `json:"rate_limit"`
	// Any of "free", "starter", "pro", "scale", "api_100k".
	Tier V1AccountGetUsageResponseTier `json:"tier"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		CallsIncluded  respjson.Field
		CallsRemaining respjson.Field
		CallsUsed      respjson.Field
		HardCapped     respjson.Field
		Period         respjson.Field
		RateLimit      respjson.Field
		Tier           respjson.Field
		ExtraFields    map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1AccountGetUsageResponse) RawJSON added in v0.2.0

func (r V1AccountGetUsageResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1AccountGetUsageResponse) UnmarshalJSON added in v0.2.0

func (r *V1AccountGetUsageResponse) UnmarshalJSON(data []byte) error

type V1AccountGetUsageResponsePeriod added in v0.2.0

type V1AccountGetUsageResponsePeriod struct {
	End   time.Time `json:"end" format:"date-time"`
	Label string    `json:"label"`
	Start time.Time `json:"start" format:"date-time"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		End         respjson.Field
		Label       respjson.Field
		Start       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1AccountGetUsageResponsePeriod) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1AccountGetUsageResponsePeriod) UnmarshalJSON added in v0.2.0

func (r *V1AccountGetUsageResponsePeriod) UnmarshalJSON(data []byte) error

type V1AccountGetUsageResponseRateLimit added in v0.2.0

type V1AccountGetUsageResponseRateLimit struct {
	PerDay    int64 `json:"per_day"`
	PerMinute int64 `json:"per_minute"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		PerDay      respjson.Field
		PerMinute   respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1AccountGetUsageResponseRateLimit) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1AccountGetUsageResponseRateLimit) UnmarshalJSON added in v0.2.0

func (r *V1AccountGetUsageResponseRateLimit) UnmarshalJSON(data []byte) error

type V1AccountGetUsageResponseTier added in v0.2.0

type V1AccountGetUsageResponseTier string
const (
	V1AccountGetUsageResponseTierFree    V1AccountGetUsageResponseTier = "free"
	V1AccountGetUsageResponseTierStarter V1AccountGetUsageResponseTier = "starter"
	V1AccountGetUsageResponseTierPro     V1AccountGetUsageResponseTier = "pro"
	V1AccountGetUsageResponseTierScale   V1AccountGetUsageResponseTier = "scale"
	V1AccountGetUsageResponseTierAPI100k V1AccountGetUsageResponseTier = "api_100k"
)

type V1AccountService added in v0.2.0

type V1AccountService struct {
	// contains filtered or unexported fields
}

Account-scoped usage, quota, and key-level reporting.

V1AccountService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1AccountService method instead.

func NewV1AccountService added in v0.2.0

func NewV1AccountService(opts ...option.RequestOption) (r V1AccountService)

NewV1AccountService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1AccountService) GetUsage added in v0.2.0

func (r *V1AccountService) GetUsage(ctx context.Context, opts ...option.RequestOption) (res *V1AccountGetUsageResponse, err error)

Returns the calling key's current-period API usage, included allotment, remaining calls, configured per-minute and per-day rate limits, and the hard-cap status. Per-user (all of a user's API keys roll up to the same monthly counter, since they share a Stripe subscription).

type V1DealFindAbsenteeOwnersParams added in v0.2.0

type V1DealFindAbsenteeOwnersParams struct {
	// Filter by county FIPS code.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	Limit      param.Opt[int64]  `query:"limit,omitzero" json:"-"`
	// Minimum assessed value.
	MinValue param.Opt[float64] `query:"min_value,omitzero" json:"-"`
	Offset   param.Opt[int64]   `query:"offset,omitzero" json:"-"`
	// Only return owners whose mailing address is in a different state.
	OutOfState param.Opt[bool] `query:"out_of_state,omitzero" json:"-"`
	// Filter by state FIPS code.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealFindAbsenteeOwnersParams) URLQuery added in v0.2.0

func (r V1DealFindAbsenteeOwnersParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealFindAbsenteeOwnersParams's query parameters as `url.Values`.

type V1DealFindAbsenteeOwnersResponse added in v0.2.0

type V1DealFindAbsenteeOwnersResponse struct {
	Data   []Parcel `json:"data"`
	Limit  int64    `json:"limit"`
	Offset int64    `json:"offset"`
	Total  int64    `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindAbsenteeOwnersResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindAbsenteeOwnersResponse) UnmarshalJSON added in v0.2.0

func (r *V1DealFindAbsenteeOwnersResponse) UnmarshalJSON(data []byte) error

type V1DealFindEntityOwnedParcelsParams added in v0.2.0

type V1DealFindEntityOwnedParcelsParams struct {
	// 5-digit county FIPS filter.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum assessed value, USD.
	MinValue param.Opt[int64] `query:"min_value,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// Owner-name substring search.
	Search param.Opt[string] `query:"search,omitzero" json:"-"`
	// 2-digit state FIPS filter.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// If true, returns aggregated entity rankings with summary stats instead of
	// per-parcel rows.
	Top param.Opt[bool] `query:"top,omitzero" json:"-"`
	// Zoning substring filter.
	Zoning param.Opt[string] `query:"zoning,omitzero" json:"-"`
	// Filter by entity classification.
	//
	// Any of "LLC", "CORP", "TRUST", "LP", "LTD", "ASSOCIATION", "OTHER_ENTITY".
	EntityType V1DealFindEntityOwnedParcelsParamsEntityType `query:"entity_type,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealFindEntityOwnedParcelsParams) URLQuery added in v0.2.0

func (r V1DealFindEntityOwnedParcelsParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealFindEntityOwnedParcelsParams's query parameters as `url.Values`.

type V1DealFindEntityOwnedParcelsParamsEntityType added in v0.2.0

type V1DealFindEntityOwnedParcelsParamsEntityType string

Filter by entity classification.

const (
	V1DealFindEntityOwnedParcelsParamsEntityTypeLlc         V1DealFindEntityOwnedParcelsParamsEntityType = "LLC"
	V1DealFindEntityOwnedParcelsParamsEntityTypeCorp        V1DealFindEntityOwnedParcelsParamsEntityType = "CORP"
	V1DealFindEntityOwnedParcelsParamsEntityTypeTrust       V1DealFindEntityOwnedParcelsParamsEntityType = "TRUST"
	V1DealFindEntityOwnedParcelsParamsEntityTypeLp          V1DealFindEntityOwnedParcelsParamsEntityType = "LP"
	V1DealFindEntityOwnedParcelsParamsEntityTypeLtd         V1DealFindEntityOwnedParcelsParamsEntityType = "LTD"
	V1DealFindEntityOwnedParcelsParamsEntityTypeAssociation V1DealFindEntityOwnedParcelsParamsEntityType = "ASSOCIATION"
	V1DealFindEntityOwnedParcelsParamsEntityTypeOtherEntity V1DealFindEntityOwnedParcelsParamsEntityType = "OTHER_ENTITY"
)

type V1DealFindEntityOwnedParcelsResponseObject added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseObject struct {
	Data   []V1DealFindEntityOwnedParcelsResponseObjectData `json:"data"`
	Limit  int64                                            `json:"limit"`
	Offset int64                                            `json:"offset"`
	Total  int64                                            `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindEntityOwnedParcelsResponseObject) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindEntityOwnedParcelsResponseObject) UnmarshalJSON added in v0.2.0

func (r *V1DealFindEntityOwnedParcelsResponseObject) UnmarshalJSON(data []byte) error

type V1DealFindEntityOwnedParcelsResponseObject2 added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseObject2 struct {
	Data    []V1DealFindEntityOwnedParcelsResponseObject2Data  `json:"data"`
	Limit   int64                                              `json:"limit"`
	Offset  int64                                              `json:"offset"`
	Summary V1DealFindEntityOwnedParcelsResponseObject2Summary `json:"summary"`
	Total   int64                                              `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Summary     respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindEntityOwnedParcelsResponseObject2) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindEntityOwnedParcelsResponseObject2) UnmarshalJSON added in v0.2.0

func (r *V1DealFindEntityOwnedParcelsResponseObject2) UnmarshalJSON(data []byte) error

type V1DealFindEntityOwnedParcelsResponseObject2Data added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseObject2Data struct {
	EntityType  string   `json:"entity_type"`
	OwnerName   string   `json:"owner_name"`
	ParcelCount int64    `json:"parcel_count"`
	StatesArr   []string `json:"states_arr"`
	TotalValue  float64  `json:"total_value" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		EntityType  respjson.Field
		OwnerName   respjson.Field
		ParcelCount respjson.Field
		StatesArr   respjson.Field
		TotalValue  respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindEntityOwnedParcelsResponseObject2Data) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindEntityOwnedParcelsResponseObject2Data) UnmarshalJSON added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseObject2Summary added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseObject2Summary struct {
	CorpCount     int64 `json:"corp_count"`
	LlcCount      int64 `json:"llc_count"`
	LpCount       int64 `json:"lp_count"`
	TotalEntities int64 `json:"total_entities"`
	TotalParcels  int64 `json:"total_parcels"`
	TrustCount    int64 `json:"trust_count"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		CorpCount     respjson.Field
		LlcCount      respjson.Field
		LpCount       respjson.Field
		TotalEntities respjson.Field
		TotalParcels  respjson.Field
		TrustCount    respjson.Field
		ExtraFields   map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindEntityOwnedParcelsResponseObject2Summary) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindEntityOwnedParcelsResponseObject2Summary) UnmarshalJSON added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseObjectData added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseObjectData struct {
	Address    string `json:"address" api:"nullable"`
	City       string `json:"city" api:"nullable"`
	CountyFips string `json:"county_fips"`
	// Any of "LLC", "CORP", "TRUST", "LP", "LTD", "ASSOCIATION", "OTHER_ENTITY".
	EntityType         string  `json:"entity_type"`
	OwnerName          string  `json:"owner_name"`
	ParcelID           string  `json:"parcel_id"`
	State              string  `json:"state" api:"nullable"`
	StateFips          string  `json:"state_fips"`
	TotalAssessedValue float64 `json:"total_assessed_value" api:"nullable"`
	Zip                string  `json:"zip" api:"nullable"`
	Zoning             string  `json:"zoning" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Address            respjson.Field
		City               respjson.Field
		CountyFips         respjson.Field
		EntityType         respjson.Field
		OwnerName          respjson.Field
		ParcelID           respjson.Field
		State              respjson.Field
		StateFips          respjson.Field
		TotalAssessedValue respjson.Field
		Zip                respjson.Field
		Zoning             respjson.Field
		ExtraFields        map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindEntityOwnedParcelsResponseObjectData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindEntityOwnedParcelsResponseObjectData) UnmarshalJSON added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseUnion added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseUnion struct {
	// This field is a union of [[]V1DealFindEntityOwnedParcelsResponseObjectData],
	// [[]V1DealFindEntityOwnedParcelsResponseObject2Data]
	Data   V1DealFindEntityOwnedParcelsResponseUnionData `json:"data"`
	Limit  int64                                         `json:"limit"`
	Offset int64                                         `json:"offset"`
	Total  int64                                         `json:"total"`
	// This field is from variant [V1DealFindEntityOwnedParcelsResponseObject2].
	Summary V1DealFindEntityOwnedParcelsResponseObject2Summary `json:"summary"`
	JSON    struct {
		Data    respjson.Field
		Limit   respjson.Field
		Offset  respjson.Field
		Total   respjson.Field
		Summary respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

V1DealFindEntityOwnedParcelsResponseUnion contains all possible properties and values from V1DealFindEntityOwnedParcelsResponseObject, V1DealFindEntityOwnedParcelsResponseObject2.

Use the methods beginning with 'As' to cast the union to one of its variants.

func (V1DealFindEntityOwnedParcelsResponseUnion) AsV1DealFindEntityOwnedParcelsResponseObject added in v0.2.0

func (u V1DealFindEntityOwnedParcelsResponseUnion) AsV1DealFindEntityOwnedParcelsResponseObject() (v V1DealFindEntityOwnedParcelsResponseObject)

func (V1DealFindEntityOwnedParcelsResponseUnion) AsV1DealFindEntityOwnedParcelsResponseObject2 added in v0.2.0

func (u V1DealFindEntityOwnedParcelsResponseUnion) AsV1DealFindEntityOwnedParcelsResponseObject2() (v V1DealFindEntityOwnedParcelsResponseObject2)

func (V1DealFindEntityOwnedParcelsResponseUnion) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindEntityOwnedParcelsResponseUnion) UnmarshalJSON added in v0.2.0

func (r *V1DealFindEntityOwnedParcelsResponseUnion) UnmarshalJSON(data []byte) error

type V1DealFindEntityOwnedParcelsResponseUnionData added in v0.2.0

type V1DealFindEntityOwnedParcelsResponseUnionData struct {
	// This field will be present if the value is a
	// [[]V1DealFindEntityOwnedParcelsResponseObjectData] instead of an object.
	OfV1DealFindEntityOwnedParcelsResponseObjectData []V1DealFindEntityOwnedParcelsResponseObjectData `json:",inline"`
	// This field will be present if the value is a
	// [[]V1DealFindEntityOwnedParcelsResponseObject2Data] instead of an object.
	OfV1DealFindEntityOwnedParcelsResponseObject2Data []V1DealFindEntityOwnedParcelsResponseObject2Data `json:",inline"`
	JSON                                              struct {
		OfV1DealFindEntityOwnedParcelsResponseObjectData  respjson.Field
		OfV1DealFindEntityOwnedParcelsResponseObject2Data respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

V1DealFindEntityOwnedParcelsResponseUnionData is an implicit subunion of V1DealFindEntityOwnedParcelsResponseUnion. V1DealFindEntityOwnedParcelsResponseUnionData provides convenient access to the sub-properties of the union.

For type safety it is recommended to directly use a variant of the V1DealFindEntityOwnedParcelsResponseUnion.

If the underlying value is not a json object, one of the following properties will be valid: OfV1DealFindEntityOwnedParcelsResponseObjectData OfV1DealFindEntityOwnedParcelsResponseObject2Data]

func (*V1DealFindEntityOwnedParcelsResponseUnionData) UnmarshalJSON added in v0.2.0

func (r *V1DealFindEntityOwnedParcelsResponseUnionData) UnmarshalJSON(data []byte) error

type V1DealFindFlipsParams added in v0.2.0

type V1DealFindFlipsParams struct {
	// Filter by county FIPS code.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	Limit      param.Opt[int64]  `query:"limit,omitzero" json:"-"`
	// Minimum estimated profit.
	MinProfit param.Opt[float64] `query:"min_profit,omitzero" json:"-"`
	Offset    param.Opt[int64]   `query:"offset,omitzero" json:"-"`
	// Filter by state FIPS code.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// Filter by flip speed tier (quick: <6mo, standard: 6-12mo, long: 12-24mo).
	//
	// Any of "quick", "standard", "long".
	FlipTier V1DealFindFlipsParamsFlipTier `query:"flip_tier,omitzero" json:"-"`
	// Set to 'flippers' to return a ranked list of top flippers instead of individual
	// flips.
	//
	// Any of "flippers".
	View V1DealFindFlipsParamsView `query:"view,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealFindFlipsParams) URLQuery added in v0.2.0

func (r V1DealFindFlipsParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealFindFlipsParams's query parameters as `url.Values`.

type V1DealFindFlipsParamsFlipTier added in v0.2.0

type V1DealFindFlipsParamsFlipTier string

Filter by flip speed tier (quick: <6mo, standard: 6-12mo, long: 12-24mo).

const (
	V1DealFindFlipsParamsFlipTierQuick    V1DealFindFlipsParamsFlipTier = "quick"
	V1DealFindFlipsParamsFlipTierStandard V1DealFindFlipsParamsFlipTier = "standard"
	V1DealFindFlipsParamsFlipTierLong     V1DealFindFlipsParamsFlipTier = "long"
)

type V1DealFindFlipsParamsView added in v0.2.0

type V1DealFindFlipsParamsView string

Set to 'flippers' to return a ranked list of top flippers instead of individual flips.

const (
	V1DealFindFlipsParamsViewFlippers V1DealFindFlipsParamsView = "flippers"
)

type V1DealFindFlipsResponse added in v0.2.0

type V1DealFindFlipsResponse struct {
	Data   []V1DealFindFlipsResponseData `json:"data"`
	Limit  int64                         `json:"limit"`
	Offset int64                         `json:"offset"`
	Total  int64                         `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindFlipsResponse) RawJSON added in v0.2.0

func (r V1DealFindFlipsResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1DealFindFlipsResponse) UnmarshalJSON added in v0.2.0

func (r *V1DealFindFlipsResponse) UnmarshalJSON(data []byte) error

type V1DealFindFlipsResponseData added in v0.2.0

type V1DealFindFlipsResponseData struct {
	Address    string    `json:"address"`
	BuyDate    time.Time `json:"buy_date" format:"date"`
	BuyPrice   float64   `json:"buy_price"`
	BuyerName  string    `json:"buyer_name"`
	CountyFips string    `json:"county_fips"`
	// Any of "quick", "standard", "long".
	FlipTier   string    `json:"flip_tier"`
	HoldDays   int64     `json:"hold_days"`
	ParcelID   string    `json:"parcel_id"`
	Profit     float64   `json:"profit"`
	SellDate   time.Time `json:"sell_date" format:"date"`
	SellPrice  float64   `json:"sell_price"`
	SellerName string    `json:"seller_name"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Address     respjson.Field
		BuyDate     respjson.Field
		BuyPrice    respjson.Field
		BuyerName   respjson.Field
		CountyFips  respjson.Field
		FlipTier    respjson.Field
		HoldDays    respjson.Field
		ParcelID    respjson.Field
		Profit      respjson.Field
		SellDate    respjson.Field
		SellPrice   respjson.Field
		SellerName  respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindFlipsResponseData) RawJSON added in v0.2.0

func (r V1DealFindFlipsResponseData) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1DealFindFlipsResponseData) UnmarshalJSON added in v0.2.0

func (r *V1DealFindFlipsResponseData) UnmarshalJSON(data []byte) error

type V1DealFindHighLandRatioParams added in v0.2.0

type V1DealFindHighLandRatioParams struct {
	// 5-digit county FIPS filter.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum land/improvement ratio.
	MinRatio param.Opt[float64] `query:"min_ratio,omitzero" json:"-"`
	// Minimum land assessed value, USD.
	MinValue param.Opt[int64] `query:"min_value,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// 2-digit state FIPS filter.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// Zoning substring filter.
	Zoning param.Opt[string] `query:"zoning,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealFindHighLandRatioParams) URLQuery added in v0.2.0

func (r V1DealFindHighLandRatioParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealFindHighLandRatioParams's query parameters as `url.Values`.

type V1DealFindHighLandRatioResponse added in v0.2.0

type V1DealFindHighLandRatioResponse struct {
	Data   []V1DealFindHighLandRatioResponseData `json:"data"`
	Limit  int64                                 `json:"limit"`
	Offset int64                                 `json:"offset"`
	Total  int64                                 `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindHighLandRatioResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindHighLandRatioResponse) UnmarshalJSON added in v0.2.0

func (r *V1DealFindHighLandRatioResponse) UnmarshalJSON(data []byte) error

type V1DealFindHighLandRatioResponseData added in v0.2.0

type V1DealFindHighLandRatioResponseData struct {
	Address                  string  `json:"address" api:"nullable"`
	City                     string  `json:"city" api:"nullable"`
	CountyFips               string  `json:"county_fips"`
	ImprovementAssessedValue float64 `json:"improvement_assessed_value" api:"nullable"`
	LandAssessedValue        float64 `json:"land_assessed_value" api:"nullable"`
	// land / improvement, higher = more redevelopment potential.
	LandImprovementRatio float64 `json:"land_improvement_ratio"`
	OwnerName            string  `json:"owner_name" api:"nullable"`
	ParcelID             string  `json:"parcel_id"`
	State                string  `json:"state" api:"nullable"`
	StateFips            string  `json:"state_fips"`
	TotalAssessedValue   float64 `json:"total_assessed_value" api:"nullable"`
	Zoning               string  `json:"zoning" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Address                  respjson.Field
		City                     respjson.Field
		CountyFips               respjson.Field
		ImprovementAssessedValue respjson.Field
		LandAssessedValue        respjson.Field
		LandImprovementRatio     respjson.Field
		OwnerName                respjson.Field
		ParcelID                 respjson.Field
		State                    respjson.Field
		StateFips                respjson.Field
		TotalAssessedValue       respjson.Field
		Zoning                   respjson.Field
		ExtraFields              map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindHighLandRatioResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindHighLandRatioResponseData) UnmarshalJSON added in v0.2.0

func (r *V1DealFindHighLandRatioResponseData) UnmarshalJSON(data []byte) error

type V1DealFindLongHoldParcelsParams added in v0.2.0

type V1DealFindLongHoldParcelsParams struct {
	// 5-digit county FIPS filter.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum assessed value, USD.
	MinValue param.Opt[int64] `query:"min_value,omitzero" json:"-"`
	// Minimum years held.
	MinYears param.Opt[int64] `query:"min_years,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// 2-digit state FIPS filter.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// Filter by hold-period tier.
	//
	// Any of "10-15yr", "15-20yr", "20-30yr", "30yr+".
	HoldTier V1DealFindLongHoldParcelsParamsHoldTier `query:"hold_tier,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealFindLongHoldParcelsParams) URLQuery added in v0.2.0

func (r V1DealFindLongHoldParcelsParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealFindLongHoldParcelsParams's query parameters as `url.Values`.

type V1DealFindLongHoldParcelsParamsHoldTier added in v0.2.0

type V1DealFindLongHoldParcelsParamsHoldTier string

Filter by hold-period tier.

const (
	V1DealFindLongHoldParcelsParamsHoldTier10_15yr V1DealFindLongHoldParcelsParamsHoldTier = "10-15yr"
	V1DealFindLongHoldParcelsParamsHoldTier15_20yr V1DealFindLongHoldParcelsParamsHoldTier = "15-20yr"
	V1DealFindLongHoldParcelsParamsHoldTier20_30yr V1DealFindLongHoldParcelsParamsHoldTier = "20-30yr"
	V1DealFindLongHoldParcelsParamsHoldTier30yr    V1DealFindLongHoldParcelsParamsHoldTier = "30yr+"
)

type V1DealFindLongHoldParcelsResponse added in v0.2.0

type V1DealFindLongHoldParcelsResponse struct {
	Data   []V1DealFindLongHoldParcelsResponseData `json:"data"`
	Limit  int64                                   `json:"limit"`
	Offset int64                                   `json:"offset"`
	Total  int64                                   `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindLongHoldParcelsResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindLongHoldParcelsResponse) UnmarshalJSON added in v0.2.0

func (r *V1DealFindLongHoldParcelsResponse) UnmarshalJSON(data []byte) error

type V1DealFindLongHoldParcelsResponseData added in v0.2.0

type V1DealFindLongHoldParcelsResponseData struct {
	Address    string `json:"address" api:"nullable"`
	City       string `json:"city" api:"nullable"`
	CountyFips string `json:"county_fips"`
	// Any of "10-15yr", "15-20yr", "20-30yr", "30yr+".
	HoldTier           string    `json:"hold_tier"`
	LastSaleDate       time.Time `json:"last_sale_date" format:"date"`
	OwnerName          string    `json:"owner_name" api:"nullable"`
	ParcelID           string    `json:"parcel_id"`
	State              string    `json:"state" api:"nullable"`
	StateFips          string    `json:"state_fips"`
	TotalAssessedValue float64   `json:"total_assessed_value" api:"nullable"`
	YearsHeld          float64   `json:"years_held"`
	Zip                string    `json:"zip" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Address            respjson.Field
		City               respjson.Field
		CountyFips         respjson.Field
		HoldTier           respjson.Field
		LastSaleDate       respjson.Field
		OwnerName          respjson.Field
		ParcelID           respjson.Field
		State              respjson.Field
		StateFips          respjson.Field
		TotalAssessedValue respjson.Field
		YearsHeld          respjson.Field
		Zip                respjson.Field
		ExtraFields        map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindLongHoldParcelsResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindLongHoldParcelsResponseData) UnmarshalJSON added in v0.2.0

func (r *V1DealFindLongHoldParcelsResponseData) UnmarshalJSON(data []byte) error

type V1DealFindPortfolioOwnersParams added in v0.2.0

type V1DealFindPortfolioOwnersParams struct {
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum properties owned.
	MinProperties param.Opt[int64] `query:"min_properties,omitzero" json:"-"`
	// Minimum total portfolio assessed value, USD.
	MinValue param.Opt[int64] `query:"min_value,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// Owner name substring search.
	Search param.Opt[string] `query:"search,omitzero" json:"-"`
	// 2-letter owner mailing state filter.
	State param.Opt[string] `query:"state,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealFindPortfolioOwnersParams) URLQuery added in v0.2.0

func (r V1DealFindPortfolioOwnersParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealFindPortfolioOwnersParams's query parameters as `url.Values`.

type V1DealFindPortfolioOwnersResponse added in v0.2.0

type V1DealFindPortfolioOwnersResponse struct {
	Data   []V1DealFindPortfolioOwnersResponseData `json:"data"`
	Limit  int64                                   `json:"limit"`
	Offset int64                                   `json:"offset"`
	Total  int64                                   `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindPortfolioOwnersResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindPortfolioOwnersResponse) UnmarshalJSON added in v0.2.0

func (r *V1DealFindPortfolioOwnersResponse) UnmarshalJSON(data []byte) error

type V1DealFindPortfolioOwnersResponseData added in v0.2.0

type V1DealFindPortfolioOwnersResponseData struct {
	AvgAssessedValue    float64 `json:"avg_assessed_value" api:"nullable"`
	CountyCount         int64   `json:"county_count"`
	OwnerNameNormalized string  `json:"owner_name_normalized"`
	OwnerState          string  `json:"owner_state" api:"nullable"`
	// National rank, 1 = largest portfolio.
	PortfolioRank      int64   `json:"portfolio_rank"`
	PropertyCount      int64   `json:"property_count"`
	StateCount         int64   `json:"state_count"`
	StatesList         string  `json:"states_list" api:"nullable"`
	TotalAcreage       float64 `json:"total_acreage" api:"nullable"`
	TotalAssessedValue float64 `json:"total_assessed_value" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgAssessedValue    respjson.Field
		CountyCount         respjson.Field
		OwnerNameNormalized respjson.Field
		OwnerState          respjson.Field
		PortfolioRank       respjson.Field
		PropertyCount       respjson.Field
		StateCount          respjson.Field
		StatesList          respjson.Field
		TotalAcreage        respjson.Field
		TotalAssessedValue  respjson.Field
		ExtraFields         map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealFindPortfolioOwnersResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealFindPortfolioOwnersResponseData) UnmarshalJSON added in v0.2.0

func (r *V1DealFindPortfolioOwnersResponseData) UnmarshalJSON(data []byte) error

type V1DealGetMarketSummaryParams added in v0.2.0

type V1DealGetMarketSummaryParams struct {
	// 5-digit county FIPS filter.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// 2-digit state FIPS filter.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// Year filter.
	Year param.Opt[string] `query:"year,omitzero" json:"-"`
	// Affordability-rating filter (only meaningful with view=affordability).
	//
	// Any of "AFFORDABLE", "MODERATE", "EXPENSIVE", "VERY_EXPENSIVE".
	Rating V1DealGetMarketSummaryParamsRating `query:"rating,omitzero" json:"-"`
	// Switch to the affordability-index dataset.
	//
	// Any of "affordability".
	View V1DealGetMarketSummaryParamsView `query:"view,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealGetMarketSummaryParams) URLQuery added in v0.2.0

func (r V1DealGetMarketSummaryParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealGetMarketSummaryParams's query parameters as `url.Values`.

type V1DealGetMarketSummaryParamsRating added in v0.2.0

type V1DealGetMarketSummaryParamsRating string

Affordability-rating filter (only meaningful with view=affordability).

const (
	V1DealGetMarketSummaryParamsRatingAffordable    V1DealGetMarketSummaryParamsRating = "AFFORDABLE"
	V1DealGetMarketSummaryParamsRatingModerate      V1DealGetMarketSummaryParamsRating = "MODERATE"
	V1DealGetMarketSummaryParamsRatingExpensive     V1DealGetMarketSummaryParamsRating = "EXPENSIVE"
	V1DealGetMarketSummaryParamsRatingVeryExpensive V1DealGetMarketSummaryParamsRating = "VERY_EXPENSIVE"
)

type V1DealGetMarketSummaryParamsView added in v0.2.0

type V1DealGetMarketSummaryParamsView string

Switch to the affordability-index dataset.

const (
	V1DealGetMarketSummaryParamsViewAffordability V1DealGetMarketSummaryParamsView = "affordability"
)

type V1DealGetMarketSummaryResponseObject added in v0.2.0

type V1DealGetMarketSummaryResponseObject struct {
	Data   []V1DealGetMarketSummaryResponseObjectData `json:"data"`
	Limit  int64                                      `json:"limit"`
	Offset int64                                      `json:"offset"`
	Total  int64                                      `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealGetMarketSummaryResponseObject) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealGetMarketSummaryResponseObject) UnmarshalJSON added in v0.2.0

func (r *V1DealGetMarketSummaryResponseObject) UnmarshalJSON(data []byte) error

type V1DealGetMarketSummaryResponseObject2 added in v0.2.0

type V1DealGetMarketSummaryResponseObject2 struct {
	Data   []AffordabilityRow `json:"data"`
	Limit  int64              `json:"limit"`
	Offset int64              `json:"offset"`
	Total  int64              `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealGetMarketSummaryResponseObject2) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealGetMarketSummaryResponseObject2) UnmarshalJSON added in v0.2.0

func (r *V1DealGetMarketSummaryResponseObject2) UnmarshalJSON(data []byte) error

type V1DealGetMarketSummaryResponseObjectData added in v0.2.0

type V1DealGetMarketSummaryResponseObjectData struct {
	AvgSalePrice    float64 `json:"avg_sale_price" api:"nullable"`
	CountyFips      string  `json:"county_fips"`
	CountyName      string  `json:"county_name" api:"nullable"`
	MedianSalePrice float64 `json:"median_sale_price" api:"nullable"`
	SaleCount       int64   `json:"sale_count"`
	StateFips       string  `json:"state_fips"`
	Year            int64   `json:"year"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgSalePrice    respjson.Field
		CountyFips      respjson.Field
		CountyName      respjson.Field
		MedianSalePrice respjson.Field
		SaleCount       respjson.Field
		StateFips       respjson.Field
		Year            respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealGetMarketSummaryResponseObjectData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealGetMarketSummaryResponseObjectData) UnmarshalJSON added in v0.2.0

func (r *V1DealGetMarketSummaryResponseObjectData) UnmarshalJSON(data []byte) error

type V1DealGetMarketSummaryResponseUnion added in v0.2.0

type V1DealGetMarketSummaryResponseUnion struct {
	// This field is a union of [[]V1DealGetMarketSummaryResponseObjectData],
	// [[]AffordabilityRow]
	Data   V1DealGetMarketSummaryResponseUnionData `json:"data"`
	Limit  int64                                   `json:"limit"`
	Offset int64                                   `json:"offset"`
	Total  int64                                   `json:"total"`
	JSON   struct {
		Data   respjson.Field
		Limit  respjson.Field
		Offset respjson.Field
		Total  respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

V1DealGetMarketSummaryResponseUnion contains all possible properties and values from V1DealGetMarketSummaryResponseObject, V1DealGetMarketSummaryResponseObject2.

Use the methods beginning with 'As' to cast the union to one of its variants.

func (V1DealGetMarketSummaryResponseUnion) AsV1DealGetMarketSummaryResponseObject added in v0.2.0

func (u V1DealGetMarketSummaryResponseUnion) AsV1DealGetMarketSummaryResponseObject() (v V1DealGetMarketSummaryResponseObject)

func (V1DealGetMarketSummaryResponseUnion) AsV1DealGetMarketSummaryResponseObject2 added in v0.2.0

func (u V1DealGetMarketSummaryResponseUnion) AsV1DealGetMarketSummaryResponseObject2() (v V1DealGetMarketSummaryResponseObject2)

func (V1DealGetMarketSummaryResponseUnion) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealGetMarketSummaryResponseUnion) UnmarshalJSON added in v0.2.0

func (r *V1DealGetMarketSummaryResponseUnion) UnmarshalJSON(data []byte) error

type V1DealGetMarketSummaryResponseUnionData added in v0.2.0

type V1DealGetMarketSummaryResponseUnionData struct {
	// This field will be present if the value is a
	// [[]V1DealGetMarketSummaryResponseObjectData] instead of an object.
	OfV1DealGetMarketSummaryResponseObjectData []V1DealGetMarketSummaryResponseObjectData `json:",inline"`
	// This field will be present if the value is a [[]AffordabilityRow] instead of an
	// object.
	OfAffordabilityRowArray []AffordabilityRow `json:",inline"`
	JSON                    struct {
		OfV1DealGetMarketSummaryResponseObjectData respjson.Field
		OfAffordabilityRowArray                    respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

V1DealGetMarketSummaryResponseUnionData is an implicit subunion of V1DealGetMarketSummaryResponseUnion. V1DealGetMarketSummaryResponseUnionData provides convenient access to the sub-properties of the union.

For type safety it is recommended to directly use a variant of the V1DealGetMarketSummaryResponseUnion.

If the underlying value is not a json object, one of the following properties will be valid: OfV1DealGetMarketSummaryResponseObjectData OfAffordabilityRowArray]

func (*V1DealGetMarketSummaryResponseUnionData) UnmarshalJSON added in v0.2.0

func (r *V1DealGetMarketSummaryResponseUnionData) UnmarshalJSON(data []byte) error

type V1DealSearchContractorsParams added in v0.2.0

type V1DealSearchContractorsParams struct {
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum permit count to include.
	MinPermits param.Opt[int64] `query:"min_permits,omitzero" json:"-"`
	// Minimum total declared permit value, USD.
	MinValue param.Opt[int64] `query:"min_value,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// Contractor name search (case-insensitive substring).
	Search param.Opt[string] `query:"search,omitzero" json:"-"`
	// 2-letter state filter.
	State param.Opt[string] `query:"state,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealSearchContractorsParams) URLQuery added in v0.2.0

func (r V1DealSearchContractorsParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealSearchContractorsParams's query parameters as `url.Values`.

type V1DealSearchContractorsResponse added in v0.2.0

type V1DealSearchContractorsResponse struct {
	Data   []V1DealSearchContractorsResponseData `json:"data"`
	Limit  int64                                 `json:"limit"`
	Offset int64                                 `json:"offset"`
	Total  int64                                 `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealSearchContractorsResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealSearchContractorsResponse) UnmarshalJSON added in v0.2.0

func (r *V1DealSearchContractorsResponse) UnmarshalJSON(data []byte) error

type V1DealSearchContractorsResponseData added in v0.2.0

type V1DealSearchContractorsResponseData struct {
	ActiveYears              float64 `json:"active_years" api:"nullable"`
	AvgPermitValue           float64 `json:"avg_permit_value"`
	ContractorLicense        string  `json:"contractor_license" api:"nullable"`
	ContractorNameNormalized string  `json:"contractor_name_normalized"`
	// National rank, 1 = highest activity.
	ContractorRank    int64     `json:"contractor_rank"`
	CountyCount       int64     `json:"county_count"`
	FirstPermitDate   time.Time `json:"first_permit_date" format:"date"`
	JurisdictionCount int64     `json:"jurisdiction_count"`
	LastPermitDate    time.Time `json:"last_permit_date" format:"date"`
	PermitCount       int64     `json:"permit_count"`
	StateCount        int64     `json:"state_count"`
	// Comma-delimited 2-letter state codes.
	StatesList       string   `json:"states_list" api:"nullable"`
	TopPermitTypes   []string `json:"top_permit_types"`
	TotalPermitValue float64  `json:"total_permit_value"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		ActiveYears              respjson.Field
		AvgPermitValue           respjson.Field
		ContractorLicense        respjson.Field
		ContractorNameNormalized respjson.Field
		ContractorRank           respjson.Field
		CountyCount              respjson.Field
		FirstPermitDate          respjson.Field
		JurisdictionCount        respjson.Field
		LastPermitDate           respjson.Field
		PermitCount              respjson.Field
		StateCount               respjson.Field
		StatesList               respjson.Field
		TopPermitTypes           respjson.Field
		TotalPermitValue         respjson.Field
		ExtraFields              map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealSearchContractorsResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealSearchContractorsResponseData) UnmarshalJSON added in v0.2.0

func (r *V1DealSearchContractorsResponseData) UnmarshalJSON(data []byte) error

type V1DealSearchLendersParams added in v0.2.0

type V1DealSearchLendersParams struct {
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum mortgage count.
	MinMortgages param.Opt[int64] `query:"min_mortgages,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// Lender name substring search.
	Search param.Opt[string] `query:"search,omitzero" json:"-"`
	// 2-letter state filter.
	State param.Opt[string] `query:"state,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1DealSearchLendersParams) URLQuery added in v0.2.0

func (r V1DealSearchLendersParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1DealSearchLendersParams's query parameters as `url.Values`.

type V1DealSearchLendersResponse added in v0.2.0

type V1DealSearchLendersResponse struct {
	Data   []V1DealSearchLendersResponseData `json:"data"`
	Limit  int64                             `json:"limit"`
	Offset int64                             `json:"offset"`
	Total  int64                             `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealSearchLendersResponse) RawJSON added in v0.2.0

func (r V1DealSearchLendersResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1DealSearchLendersResponse) UnmarshalJSON added in v0.2.0

func (r *V1DealSearchLendersResponse) UnmarshalJSON(data []byte) error

type V1DealSearchLendersResponseData added in v0.2.0

type V1DealSearchLendersResponseData struct {
	AvgMortgageAmount    float64   `json:"avg_mortgage_amount" api:"nullable"`
	CountyCount          int64     `json:"county_count"`
	FirstMortgageDate    time.Time `json:"first_mortgage_date" format:"date"`
	LastMortgageDate     time.Time `json:"last_mortgage_date" format:"date"`
	LenderNameNormalized string    `json:"lender_name_normalized"`
	// National rank, 1 = highest volume.
	LenderRank           int64   `json:"lender_rank"`
	MedianMortgageAmount float64 `json:"median_mortgage_amount" api:"nullable"`
	MortgageCount        int64   `json:"mortgage_count"`
	StateCount           int64   `json:"state_count"`
	StatesList           string  `json:"states_list" api:"nullable"`
	TotalMortgageVolume  float64 `json:"total_mortgage_volume" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgMortgageAmount    respjson.Field
		CountyCount          respjson.Field
		FirstMortgageDate    respjson.Field
		LastMortgageDate     respjson.Field
		LenderNameNormalized respjson.Field
		LenderRank           respjson.Field
		MedianMortgageAmount respjson.Field
		MortgageCount        respjson.Field
		StateCount           respjson.Field
		StatesList           respjson.Field
		TotalMortgageVolume  respjson.Field
		ExtraFields          map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1DealSearchLendersResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1DealSearchLendersResponseData) UnmarshalJSON added in v0.2.0

func (r *V1DealSearchLendersResponseData) UnmarshalJSON(data []byte) error

type V1DealService added in v0.2.0

type V1DealService struct {
	// contains filtered or unexported fields
}

Deal sourcing: absentee owners, property flips.

V1DealService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1DealService method instead.

func NewV1DealService added in v0.2.0

func NewV1DealService(opts ...option.RequestOption) (r V1DealService)

NewV1DealService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1DealService) FindAbsenteeOwners added in v0.2.0

Retrieve parcels owned by absentee owners, useful for off-market deal sourcing.

func (*V1DealService) FindEntityOwnedParcels added in v0.2.0

Returns parcels owned by legal entities identified from owner-name pattern matching across 221M+ parcels. Pass `top=true` to get aggregated entity rankings instead of per-parcel rows. One of `county_fips`, `state_fips`, `search`, or `top` is required.

func (*V1DealService) FindFlips added in v0.2.0

Retrieve recently flipped properties. Use ?view=flippers to get a ranked list of top flippers instead.

func (*V1DealService) FindHighLandRatio added in v0.2.0

Returns parcels where land value significantly exceeds improvement value — a signal for redevelopment, teardown, or assemblage opportunities. `county_fips` or `state_fips` is required.

func (*V1DealService) FindLongHoldParcels added in v0.2.0

Returns parcels not sold in `min_years` or more. Long-hold owners are often motivated sellers — estate planning, deferred maintenance, life changes. `county_fips` or `state_fips` is required.

func (*V1DealService) FindPortfolioOwners added in v0.2.0

Returns portfolio owners ranked by property count and total assessed value. Useful for finding institutional buyers, small landlords, or specific investor families.

func (*V1DealService) GetMarketSummary added in v0.2.0

Default: returns county/quarter transaction summaries. Pass `view=affordability` to retrieve the home-affordability index instead (price-to-income ratios + rating).

func (*V1DealService) SearchContractors added in v0.2.0

Returns contractor profiles aggregated from 45M+ building permits. Each profile includes permit count, jurisdictions worked, total declared permit value, and activity dates. Use to identify active contractors in a market or find a specific contractor by name.

func (*V1DealService) SearchLenders added in v0.2.0

Returns lender profiles aggregated from deed/mortgage transactions. Includes mortgage count, total volume, geographic spread, and a national rank.

type V1GetCoverageParams added in v0.2.0

type V1GetCoverageParams struct {
	// State FIPS code or abbreviation to filter coverage to a specific state and
	// return county-level breakdown.
	State param.Opt[string] `query:"state,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1GetCoverageParams) URLQuery added in v0.2.0

func (r V1GetCoverageParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1GetCoverageParams's query parameters as `url.Values`.

type V1GetCoverageResponse added in v0.2.0

type V1GetCoverageResponse struct {
	Data          []V1GetCoverageResponseData `json:"data"`
	StatesCovered int64                       `json:"states_covered"`
	TotalParcels  int64                       `json:"total_parcels"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data          respjson.Field
		StatesCovered respjson.Field
		TotalParcels  respjson.Field
		ExtraFields   map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1GetCoverageResponse) RawJSON added in v0.2.0

func (r V1GetCoverageResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1GetCoverageResponse) UnmarshalJSON added in v0.2.0

func (r *V1GetCoverageResponse) UnmarshalJSON(data []byte) error

type V1GetCoverageResponseData added in v0.2.0

type V1GetCoverageResponseData struct {
	CountyFips  string  `json:"county_fips" api:"nullable"`
	CountyName  string  `json:"county_name" api:"nullable"`
	GeocodedPct float64 `json:"geocoded_pct"`
	OwnerPct    float64 `json:"owner_pct"`
	ParcelCount int64   `json:"parcel_count"`
	StateFips   string  `json:"state_fips"`
	StateName   string  `json:"state_name"`
	ValuePct    float64 `json:"value_pct"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		CountyFips  respjson.Field
		CountyName  respjson.Field
		GeocodedPct respjson.Field
		OwnerPct    respjson.Field
		ParcelCount respjson.Field
		StateFips   respjson.Field
		StateName   respjson.Field
		ValuePct    respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1GetCoverageResponseData) RawJSON added in v0.2.0

func (r V1GetCoverageResponseData) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1GetCoverageResponseData) UnmarshalJSON added in v0.2.0

func (r *V1GetCoverageResponseData) UnmarshalJSON(data []byte) error

type V1MarketCountyGetDetailResponse added in v0.2.0

type V1MarketCountyGetDetailResponse struct {
	Affordability []AffordabilityRow                           `json:"affordability"`
	FlipSummary   V1MarketCountyGetDetailResponseFlipSummary   `json:"flip_summary"`
	MarketStats   []V1MarketCountyGetDetailResponseMarketStat  `json:"market_stats"`
	ParcelSummary V1MarketCountyGetDetailResponseParcelSummary `json:"parcel_summary"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Affordability respjson.Field
		FlipSummary   respjson.Field
		MarketStats   respjson.Field
		ParcelSummary respjson.Field
		ExtraFields   map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketCountyGetDetailResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketCountyGetDetailResponse) UnmarshalJSON added in v0.2.0

func (r *V1MarketCountyGetDetailResponse) UnmarshalJSON(data []byte) error

type V1MarketCountyGetDetailResponseFlipSummary added in v0.2.0

type V1MarketCountyGetDetailResponseFlipSummary struct {
	AvgHoldDays float64 `json:"avg_hold_days" api:"nullable"`
	AvgRoi      float64 `json:"avg_roi" api:"nullable"`
	FlipCount   int64   `json:"flip_count"`
	TotalProfit float64 `json:"total_profit" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgHoldDays respjson.Field
		AvgRoi      respjson.Field
		FlipCount   respjson.Field
		TotalProfit respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketCountyGetDetailResponseFlipSummary) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketCountyGetDetailResponseFlipSummary) UnmarshalJSON added in v0.2.0

func (r *V1MarketCountyGetDetailResponseFlipSummary) UnmarshalJSON(data []byte) error

type V1MarketCountyGetDetailResponseMarketStat added in v0.2.0

type V1MarketCountyGetDetailResponseMarketStat struct {
	// Average days on market.
	AvgDom          float64 `json:"avg_dom" api:"nullable"`
	AvgSalePrice    float64 `json:"avg_sale_price" api:"nullable"`
	CountyFips      string  `json:"county_fips"`
	MedianSalePrice float64 `json:"median_sale_price" api:"nullable"`
	PriceYoyPct     float64 `json:"price_yoy_pct" api:"nullable"`
	Quarter         string  `json:"quarter"`
	SaleCount       int64   `json:"sale_count"`
	StateFips       string  `json:"state_fips"`
	TotalVolume     float64 `json:"total_volume" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgDom          respjson.Field
		AvgSalePrice    respjson.Field
		CountyFips      respjson.Field
		MedianSalePrice respjson.Field
		PriceYoyPct     respjson.Field
		Quarter         respjson.Field
		SaleCount       respjson.Field
		StateFips       respjson.Field
		TotalVolume     respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketCountyGetDetailResponseMarketStat) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketCountyGetDetailResponseMarketStat) UnmarshalJSON added in v0.2.0

func (r *V1MarketCountyGetDetailResponseMarketStat) UnmarshalJSON(data []byte) error

type V1MarketCountyGetDetailResponseParcelSummary added in v0.2.0

type V1MarketCountyGetDetailResponseParcelSummary struct {
	AvgAssessedValue float64 `json:"avg_assessed_value" api:"nullable"`
	ParcelCount      int64   `json:"parcel_count"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgAssessedValue respjson.Field
		ParcelCount      respjson.Field
		ExtraFields      map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketCountyGetDetailResponseParcelSummary) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketCountyGetDetailResponseParcelSummary) UnmarshalJSON added in v0.2.0

func (r *V1MarketCountyGetDetailResponseParcelSummary) UnmarshalJSON(data []byte) error

type V1MarketCountyGetStatisticsParams added in v0.2.0

type V1MarketCountyGetStatisticsParams struct {
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum number of sales in the period to include a county.
	MinSales param.Opt[int64] `query:"min_sales,omitzero" json:"-"`
	Offset   param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// Specific quarter to retrieve (e.g., 2025Q4). Defaults to latest available.
	Quarter param.Opt[string] `query:"quarter,omitzero" json:"-"`
	// Filter by state FIPS code.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// Any of "asc", "desc".
	Order V1MarketCountyGetStatisticsParamsOrder `query:"order,omitzero" json:"-"`
	// Sort field.
	//
	// Any of "sale_count", "median_price", "yoy_change", "county_name".
	Sort V1MarketCountyGetStatisticsParamsSort `query:"sort,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1MarketCountyGetStatisticsParams) URLQuery added in v0.2.0

func (r V1MarketCountyGetStatisticsParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1MarketCountyGetStatisticsParams's query parameters as `url.Values`.

type V1MarketCountyGetStatisticsParamsOrder added in v0.2.0

type V1MarketCountyGetStatisticsParamsOrder string
const (
	V1MarketCountyGetStatisticsParamsOrderAsc  V1MarketCountyGetStatisticsParamsOrder = "asc"
	V1MarketCountyGetStatisticsParamsOrderDesc V1MarketCountyGetStatisticsParamsOrder = "desc"
)

type V1MarketCountyGetStatisticsParamsSort added in v0.2.0

type V1MarketCountyGetStatisticsParamsSort string

Sort field.

const (
	V1MarketCountyGetStatisticsParamsSortSaleCount   V1MarketCountyGetStatisticsParamsSort = "sale_count"
	V1MarketCountyGetStatisticsParamsSortMedianPrice V1MarketCountyGetStatisticsParamsSort = "median_price"
	V1MarketCountyGetStatisticsParamsSortYoyChange   V1MarketCountyGetStatisticsParamsSort = "yoy_change"
	V1MarketCountyGetStatisticsParamsSortCountyName  V1MarketCountyGetStatisticsParamsSort = "county_name"
)

type V1MarketCountyGetStatisticsResponse added in v0.2.0

type V1MarketCountyGetStatisticsResponse struct {
	Data   []V1MarketCountyGetStatisticsResponseData `json:"data"`
	Limit  int64                                     `json:"limit"`
	Offset int64                                     `json:"offset"`
	Total  int64                                     `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketCountyGetStatisticsResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketCountyGetStatisticsResponse) UnmarshalJSON added in v0.2.0

func (r *V1MarketCountyGetStatisticsResponse) UnmarshalJSON(data []byte) error

type V1MarketCountyGetStatisticsResponseData added in v0.2.0

type V1MarketCountyGetStatisticsResponseData struct {
	AvgDaysOnMarket int64   `json:"avg_days_on_market"`
	AvgPrice        float64 `json:"avg_price"`
	CountyFips      string  `json:"county_fips"`
	CountyName      string  `json:"county_name"`
	MedianPrice     float64 `json:"median_price"`
	Quarter         string  `json:"quarter"`
	SaleCount       int64   `json:"sale_count"`
	StateAbbr       string  `json:"state_abbr"`
	StateFips       string  `json:"state_fips"`
	// Year-over-year median price change as a decimal (e.g., 0.05 = 5%).
	YoyChange float64 `json:"yoy_change"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgDaysOnMarket respjson.Field
		AvgPrice        respjson.Field
		CountyFips      respjson.Field
		CountyName      respjson.Field
		MedianPrice     respjson.Field
		Quarter         respjson.Field
		SaleCount       respjson.Field
		StateAbbr       respjson.Field
		StateFips       respjson.Field
		YoyChange       respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketCountyGetStatisticsResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketCountyGetStatisticsResponseData) UnmarshalJSON added in v0.2.0

func (r *V1MarketCountyGetStatisticsResponseData) UnmarshalJSON(data []byte) error

type V1MarketCountyService added in v0.2.0

type V1MarketCountyService struct {
	// contains filtered or unexported fields
}

County-level market statistics and trends.

V1MarketCountyService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1MarketCountyService method instead.

func NewV1MarketCountyService added in v0.2.0

func NewV1MarketCountyService(opts ...option.RequestOption) (r V1MarketCountyService)

NewV1MarketCountyService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1MarketCountyService) GetDetail added in v0.2.0

Returns the full county profile: quarterly market stats (sale count, median price, YoY change, days on market), affordability index by year, parcel summary (count, avg assessed value), and flip activity. Use for county-detail dashboards.

func (*V1MarketCountyService) GetStatistics added in v0.2.0

Retrieve real estate market statistics aggregated at the county level, including sale counts, median prices, and year-over-year changes.

type V1MarketGetFlipActivityParams added in v0.2.0

type V1MarketGetFlipActivityParams struct {
	// Page size, max 500.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Pagination offset.
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// 2-digit state FIPS filter.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1MarketGetFlipActivityParams) URLQuery added in v0.2.0

func (r V1MarketGetFlipActivityParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1MarketGetFlipActivityParams's query parameters as `url.Values`.

type V1MarketGetFlipActivityResponse added in v0.2.0

type V1MarketGetFlipActivityResponse struct {
	Data   []V1MarketGetFlipActivityResponseData `json:"data"`
	Limit  int64                                 `json:"limit"`
	Offset int64                                 `json:"offset"`
	Total  int64                                 `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketGetFlipActivityResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketGetFlipActivityResponse) UnmarshalJSON added in v0.2.0

func (r *V1MarketGetFlipActivityResponse) UnmarshalJSON(data []byte) error

type V1MarketGetFlipActivityResponseData added in v0.2.0

type V1MarketGetFlipActivityResponseData struct {
	AvgHoldDays float64 `json:"avg_hold_days" api:"nullable"`
	// Average profit percentage (e.g. 0.18 = 18%).
	AvgRoi      float64 `json:"avg_roi" api:"nullable"`
	CountyFips  string  `json:"county_fips"`
	FlipCount   int64   `json:"flip_count"`
	TotalProfit float64 `json:"total_profit" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgHoldDays respjson.Field
		AvgRoi      respjson.Field
		CountyFips  respjson.Field
		FlipCount   respjson.Field
		TotalProfit respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketGetFlipActivityResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketGetFlipActivityResponseData) UnmarshalJSON added in v0.2.0

func (r *V1MarketGetFlipActivityResponseData) UnmarshalJSON(data []byte) error

type V1MarketGetTrendsParams added in v0.2.0

type V1MarketGetTrendsParams struct {
	// Comma-separated list of county FIPS codes.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	// State FIPS code. Used if county_fips is not provided.
	StateFips param.Opt[string] `query:"state_fips,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1MarketGetTrendsParams) URLQuery added in v0.2.0

func (r V1MarketGetTrendsParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1MarketGetTrendsParams's query parameters as `url.Values`.

type V1MarketGetTrendsResponse added in v0.2.0

type V1MarketGetTrendsResponse struct {
	Data []V1MarketGetTrendsResponseData `json:"data"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketGetTrendsResponse) RawJSON added in v0.2.0

func (r V1MarketGetTrendsResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1MarketGetTrendsResponse) UnmarshalJSON added in v0.2.0

func (r *V1MarketGetTrendsResponse) UnmarshalJSON(data []byte) error

type V1MarketGetTrendsResponseData added in v0.2.0

type V1MarketGetTrendsResponseData struct {
	CountyFips string                                 `json:"county_fips"`
	CountyName string                                 `json:"county_name"`
	Quarters   []V1MarketGetTrendsResponseDataQuarter `json:"quarters"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		CountyFips  respjson.Field
		CountyName  respjson.Field
		Quarters    respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketGetTrendsResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketGetTrendsResponseData) UnmarshalJSON added in v0.2.0

func (r *V1MarketGetTrendsResponseData) UnmarshalJSON(data []byte) error

type V1MarketGetTrendsResponseDataQuarter added in v0.2.0

type V1MarketGetTrendsResponseDataQuarter struct {
	AvgPrice    float64 `json:"avg_price"`
	MedianPrice float64 `json:"median_price"`
	Quarter     string  `json:"quarter"`
	SaleCount   int64   `json:"sale_count"`
	YoyChange   float64 `json:"yoy_change"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgPrice    respjson.Field
		MedianPrice respjson.Field
		Quarter     respjson.Field
		SaleCount   respjson.Field
		YoyChange   respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1MarketGetTrendsResponseDataQuarter) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1MarketGetTrendsResponseDataQuarter) UnmarshalJSON added in v0.2.0

func (r *V1MarketGetTrendsResponseDataQuarter) UnmarshalJSON(data []byte) error

type V1MarketService added in v0.2.0

type V1MarketService struct {

	// County-level market statistics and trends.
	Counties V1MarketCountyService
	// contains filtered or unexported fields
}

County-level market statistics and trends.

V1MarketService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1MarketService method instead.

func NewV1MarketService added in v0.2.0

func NewV1MarketService(opts ...option.RequestOption) (r V1MarketService)

NewV1MarketService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1MarketService) GetFlipActivity added in v0.2.0

Aggregated flip activity per county: count, average ROI, average hold days, total profit. Use for surfacing the hottest flip markets. Differs from /api/v1/deals/flips which returns the underlying transactions.

func (*V1MarketService) GetTrends added in v0.2.0

Retrieve quarterly time series of market metrics for one or more counties or a state.

type V1OwnerGetPortfolioSummaryResponse added in v0.2.0

type V1OwnerGetPortfolioSummaryResponse struct {
	// Any of "individual", "corporation", "llc", "trust", "government", "other".
	EntityType V1OwnerGetPortfolioSummaryResponseEntityType `json:"entity_type"`
	OwnerName  string                                       `json:"owner_name"`
	Properties []Parcel                                     `json:"properties"`
	Summary    V1OwnerGetPortfolioSummaryResponseSummary    `json:"summary"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		EntityType  respjson.Field
		OwnerName   respjson.Field
		Properties  respjson.Field
		Summary     respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1OwnerGetPortfolioSummaryResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1OwnerGetPortfolioSummaryResponse) UnmarshalJSON added in v0.2.0

func (r *V1OwnerGetPortfolioSummaryResponse) UnmarshalJSON(data []byte) error

type V1OwnerGetPortfolioSummaryResponseEntityType added in v0.2.0

type V1OwnerGetPortfolioSummaryResponseEntityType string
const (
	V1OwnerGetPortfolioSummaryResponseEntityTypeIndividual  V1OwnerGetPortfolioSummaryResponseEntityType = "individual"
	V1OwnerGetPortfolioSummaryResponseEntityTypeCorporation V1OwnerGetPortfolioSummaryResponseEntityType = "corporation"
	V1OwnerGetPortfolioSummaryResponseEntityTypeLlc         V1OwnerGetPortfolioSummaryResponseEntityType = "llc"
	V1OwnerGetPortfolioSummaryResponseEntityTypeTrust       V1OwnerGetPortfolioSummaryResponseEntityType = "trust"
	V1OwnerGetPortfolioSummaryResponseEntityTypeGovernment  V1OwnerGetPortfolioSummaryResponseEntityType = "government"
	V1OwnerGetPortfolioSummaryResponseEntityTypeOther       V1OwnerGetPortfolioSummaryResponseEntityType = "other"
)

type V1OwnerGetPortfolioSummaryResponseSummary added in v0.2.0

type V1OwnerGetPortfolioSummaryResponseSummary struct {
	AvgAssessedValue   float64          `json:"avg_assessed_value"`
	Counties           int64            `json:"counties"`
	PropertyCount      int64            `json:"property_count"`
	States             []string         `json:"states"`
	TotalAssessedValue float64          `json:"total_assessed_value"`
	ZoningBreakdown    map[string]int64 `json:"zoning_breakdown"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		AvgAssessedValue   respjson.Field
		Counties           respjson.Field
		PropertyCount      respjson.Field
		States             respjson.Field
		TotalAssessedValue respjson.Field
		ZoningBreakdown    respjson.Field
		ExtraFields        map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1OwnerGetPortfolioSummaryResponseSummary) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1OwnerGetPortfolioSummaryResponseSummary) UnmarshalJSON added in v0.2.0

func (r *V1OwnerGetPortfolioSummaryResponseSummary) UnmarshalJSON(data []byte) error

type V1OwnerGetPropertiesParams added in v0.2.0

type V1OwnerGetPropertiesParams struct {
	Limit  param.Opt[int64] `query:"limit,omitzero" json:"-"`
	Offset param.Opt[int64] `query:"offset,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1OwnerGetPropertiesParams) URLQuery added in v0.2.0

func (r V1OwnerGetPropertiesParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1OwnerGetPropertiesParams's query parameters as `url.Values`.

type V1OwnerGetPropertiesResponse added in v0.2.0

type V1OwnerGetPropertiesResponse struct {
	Data   []Parcel `json:"data"`
	Limit  int64    `json:"limit"`
	Offset int64    `json:"offset"`
	Total  int64    `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1OwnerGetPropertiesResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1OwnerGetPropertiesResponse) UnmarshalJSON added in v0.2.0

func (r *V1OwnerGetPropertiesResponse) UnmarshalJSON(data []byte) error

type V1OwnerGetTransactionsResponse added in v0.2.0

type V1OwnerGetTransactionsResponse struct {
	Count int64                                `json:"count"`
	Data  []V1OwnerGetTransactionsResponseData `json:"data"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Count       respjson.Field
		Data        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1OwnerGetTransactionsResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1OwnerGetTransactionsResponse) UnmarshalJSON added in v0.2.0

func (r *V1OwnerGetTransactionsResponse) UnmarshalJSON(data []byte) error

type V1OwnerGetTransactionsResponseData added in v0.2.0

type V1OwnerGetTransactionsResponseData struct {
	DocumentNumber string `json:"document_number"`
	// Recorded document type (Warranty Deed, Quit Claim, etc.).
	DocumentType    string    `json:"document_type" api:"nullable"`
	GranteeName     string    `json:"grantee_name" api:"nullable"`
	GrantorName     string    `json:"grantor_name" api:"nullable"`
	PropertyAddress string    `json:"property_address" api:"nullable"`
	RecordingDate   time.Time `json:"recording_date" format:"date"`
	SaleDate        time.Time `json:"sale_date" format:"date"`
	// USD. Null when state is non-disclosure.
	SalePrice float64 `json:"sale_price" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		DocumentNumber  respjson.Field
		DocumentType    respjson.Field
		GranteeName     respjson.Field
		GrantorName     respjson.Field
		PropertyAddress respjson.Field
		RecordingDate   respjson.Field
		SaleDate        respjson.Field
		SalePrice       respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1OwnerGetTransactionsResponseData) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1OwnerGetTransactionsResponseData) UnmarshalJSON added in v0.2.0

func (r *V1OwnerGetTransactionsResponseData) UnmarshalJSON(data []byte) error

type V1OwnerSearchOwnersParams added in v0.2.0

type V1OwnerSearchOwnersParams struct {
	// Search query for owner name.
	Q     string           `query:"q" api:"required" json:"-"`
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Minimum number of properties owned.
	MinProperties param.Opt[int64] `query:"min_properties,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1OwnerSearchOwnersParams) URLQuery added in v0.2.0

func (r V1OwnerSearchOwnersParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1OwnerSearchOwnersParams's query parameters as `url.Values`.

type V1OwnerSearchOwnersResponse added in v0.2.0

type V1OwnerSearchOwnersResponse struct {
	Data []Owner `json:"data"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1OwnerSearchOwnersResponse) RawJSON added in v0.2.0

func (r V1OwnerSearchOwnersResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1OwnerSearchOwnersResponse) UnmarshalJSON added in v0.2.0

func (r *V1OwnerSearchOwnersResponse) UnmarshalJSON(data []byte) error

type V1OwnerService added in v0.2.0

type V1OwnerService struct {
	// contains filtered or unexported fields
}

Owner search, profiles, and portfolios.

V1OwnerService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1OwnerService method instead.

func NewV1OwnerService added in v0.2.0

func NewV1OwnerService(opts ...option.RequestOption) (r V1OwnerService)

NewV1OwnerService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1OwnerService) GetPortfolioSummary added in v0.2.0

func (r *V1OwnerService) GetPortfolioSummary(ctx context.Context, name string, opts ...option.RequestOption) (res *V1OwnerGetPortfolioSummaryResponse, err error)

Retrieve an owner's portfolio with aggregated summary statistics and property breakdown.

func (*V1OwnerService) GetProfile added in v0.2.0

func (r *V1OwnerService) GetProfile(ctx context.Context, name string, opts ...option.RequestOption) (res *Owner, err error)

Retrieve a specific owner profile by name, including property count, total assessed value, entity type, and states.

func (*V1OwnerService) GetProperties added in v0.2.0

Retrieve the list of properties owned by a specific owner.

func (*V1OwnerService) GetTransactions added in v0.2.0

func (r *V1OwnerService) GetTransactions(ctx context.Context, name string, opts ...option.RequestOption) (res *V1OwnerGetTransactionsResponse, err error)

Returns up to 100 most-recent deed events where the named owner is either grantor or grantee. Useful for building an owner's transaction timeline across their portfolio.

func (*V1OwnerService) SearchOwners added in v0.2.0

Search for property owners by name. Returns owner profiles with property counts and portfolio values.

type V1ParcelGetDeedsResponse added in v0.2.0

type V1ParcelGetDeedsResponse struct {
	Data []Deed `json:"data"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetDeedsResponse) RawJSON added in v0.2.0

func (r V1ParcelGetDeedsResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1ParcelGetDeedsResponse) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetDeedsResponse) UnmarshalJSON(data []byte) error

type V1ParcelGetGeojsonParams added in v0.2.0

type V1ParcelGetGeojsonParams struct {
	// Bounding box `west,south,east,north`.
	Bbox string `query:"bbox" api:"required" json:"-"`
	// Map zoom level. Below 14 returns an empty collection.
	Zoom int64 `query:"zoom" api:"required" json:"-"`
	// contains filtered or unexported fields
}

func (V1ParcelGetGeojsonParams) URLQuery added in v0.2.0

func (r V1ParcelGetGeojsonParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1ParcelGetGeojsonParams's query parameters as `url.Values`.

type V1ParcelGetGeojsonResponse added in v0.2.0

type V1ParcelGetGeojsonResponse struct {
	Features []V1ParcelGetGeojsonResponseFeature `json:"features"`
	// Any of "FeatureCollection".
	Type V1ParcelGetGeojsonResponseType `json:"type"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Features    respjson.Field
		Type        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

GeoJSON FeatureCollection of parcel polygons. Each feature's properties carry the basic parcel summary for popup rendering.

func (V1ParcelGetGeojsonResponse) RawJSON added in v0.2.0

func (r V1ParcelGetGeojsonResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1ParcelGetGeojsonResponse) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetGeojsonResponse) UnmarshalJSON(data []byte) error

type V1ParcelGetGeojsonResponseFeature added in v0.2.0

type V1ParcelGetGeojsonResponseFeature struct {
	Geometry   V1ParcelGetGeojsonResponseFeatureGeometry   `json:"geometry"`
	Properties V1ParcelGetGeojsonResponseFeatureProperties `json:"properties"`
	// Any of "Feature".
	Type string `json:"type"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Geometry    respjson.Field
		Properties  respjson.Field
		Type        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetGeojsonResponseFeature) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetGeojsonResponseFeature) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetGeojsonResponseFeature) UnmarshalJSON(data []byte) error

type V1ParcelGetGeojsonResponseFeatureGeometry added in v0.2.0

type V1ParcelGetGeojsonResponseFeatureGeometry struct {
	// GeoJSON polygon coordinate rings: outer ring first, then any inner rings.
	Coordinates [][][]float64 `json:"coordinates"`
	// Any of "Polygon".
	Type string `json:"type"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Coordinates respjson.Field
		Type        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetGeojsonResponseFeatureGeometry) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetGeojsonResponseFeatureGeometry) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetGeojsonResponseFeatureGeometry) UnmarshalJSON(data []byte) error

type V1ParcelGetGeojsonResponseFeatureProperties added in v0.2.0

type V1ParcelGetGeojsonResponseFeatureProperties struct {
	Address            string  `json:"address" api:"nullable"`
	City               string  `json:"city" api:"nullable"`
	CountyFips         string  `json:"county_fips"`
	Latitude           float64 `json:"latitude"`
	Longitude          float64 `json:"longitude"`
	OwnerName          string  `json:"owner_name" api:"nullable"`
	ParcelID           string  `json:"parcel_id"`
	PropertyType       string  `json:"property_type" api:"nullable"`
	State              string  `json:"state" api:"nullable"`
	TotalAssessedValue float64 `json:"total_assessed_value" api:"nullable"`
	YearBuilt          int64   `json:"year_built" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Address            respjson.Field
		City               respjson.Field
		CountyFips         respjson.Field
		Latitude           respjson.Field
		Longitude          respjson.Field
		OwnerName          respjson.Field
		ParcelID           respjson.Field
		PropertyType       respjson.Field
		State              respjson.Field
		TotalAssessedValue respjson.Field
		YearBuilt          respjson.Field
		ExtraFields        map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetGeojsonResponseFeatureProperties) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetGeojsonResponseFeatureProperties) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetGeojsonResponseFeatureProperties) UnmarshalJSON(data []byte) error

type V1ParcelGetGeojsonResponseType added in v0.2.0

type V1ParcelGetGeojsonResponseType string
const (
	V1ParcelGetGeojsonResponseTypeFeatureCollection V1ParcelGetGeojsonResponseType = "FeatureCollection"
)

type V1ParcelGetOwnerResponse added in v0.2.0

type V1ParcelGetOwnerResponse struct {
	// Any of "individual", "corporation", "llc", "trust", "government", "other".
	EntityType       V1ParcelGetOwnerResponseEntityType       `json:"entity_type"`
	MailingAddress   string                                   `json:"mailing_address"`
	OwnerName        string                                   `json:"owner_name"`
	PortfolioSummary V1ParcelGetOwnerResponsePortfolioSummary `json:"portfolio_summary"`
	Properties       []Parcel                                 `json:"properties"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		EntityType       respjson.Field
		MailingAddress   respjson.Field
		OwnerName        respjson.Field
		PortfolioSummary respjson.Field
		Properties       respjson.Field
		ExtraFields      map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetOwnerResponse) RawJSON added in v0.2.0

func (r V1ParcelGetOwnerResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1ParcelGetOwnerResponse) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetOwnerResponse) UnmarshalJSON(data []byte) error

type V1ParcelGetOwnerResponseEntityType added in v0.2.0

type V1ParcelGetOwnerResponseEntityType string
const (
	V1ParcelGetOwnerResponseEntityTypeIndividual  V1ParcelGetOwnerResponseEntityType = "individual"
	V1ParcelGetOwnerResponseEntityTypeCorporation V1ParcelGetOwnerResponseEntityType = "corporation"
	V1ParcelGetOwnerResponseEntityTypeLlc         V1ParcelGetOwnerResponseEntityType = "llc"
	V1ParcelGetOwnerResponseEntityTypeTrust       V1ParcelGetOwnerResponseEntityType = "trust"
	V1ParcelGetOwnerResponseEntityTypeGovernment  V1ParcelGetOwnerResponseEntityType = "government"
	V1ParcelGetOwnerResponseEntityTypeOther       V1ParcelGetOwnerResponseEntityType = "other"
)

type V1ParcelGetOwnerResponsePortfolioSummary added in v0.2.0

type V1ParcelGetOwnerResponsePortfolioSummary struct {
	PropertyCount      int64    `json:"property_count"`
	States             []string `json:"states"`
	TotalAssessedValue float64  `json:"total_assessed_value"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		PropertyCount      respjson.Field
		States             respjson.Field
		TotalAssessedValue respjson.Field
		ExtraFields        map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetOwnerResponsePortfolioSummary) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetOwnerResponsePortfolioSummary) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetOwnerResponsePortfolioSummary) UnmarshalJSON(data []byte) error

type V1ParcelGetPermitsResponse added in v0.2.0

type V1ParcelGetPermitsResponse struct {
	Data []Permit `json:"data"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetPermitsResponse) RawJSON added in v0.2.0

func (r V1ParcelGetPermitsResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1ParcelGetPermitsResponse) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetPermitsResponse) UnmarshalJSON(data []byte) error

type V1ParcelGetReportParams added in v0.2.0

type V1ParcelGetReportParams struct {
	// 5-digit county FIPS. Strongly recommended when passing a county-local id.
	CountyFips param.Opt[string] `query:"county_fips,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1ParcelGetReportParams) URLQuery added in v0.2.0

func (r V1ParcelGetReportParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1ParcelGetReportParams's query parameters as `url.Values`.

type V1ParcelGetReportResponse added in v0.2.0

type V1ParcelGetReportResponse struct {
	ComparableSales []V1ParcelGetReportResponseComparableSale `json:"comparable_sales"`
	Deeds           []Deed                                    `json:"deeds"`
	Parcel          Parcel                                    `json:"parcel"`
	Permits         []Permit                                  `json:"permits"`
	Risk            RiskAssessment                            `json:"risk"`
	UccLiens        []V1ParcelGetReportResponseUccLien        `json:"ucc_liens"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		ComparableSales respjson.Field
		Deeds           respjson.Field
		Parcel          respjson.Field
		Permits         respjson.Field
		Risk            respjson.Field
		UccLiens        respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

Comprehensive parcel report — every PropRaven data point joined per parcel. Subsections are populated on a best-effort basis; missing data is omitted rather than nulled.

func (V1ParcelGetReportResponse) RawJSON added in v0.2.0

func (r V1ParcelGetReportResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1ParcelGetReportResponse) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetReportResponse) UnmarshalJSON(data []byte) error

type V1ParcelGetReportResponseComparableSale added in v0.2.0

type V1ParcelGetReportResponseComparableSale struct {
	CompBaths       float64   `json:"comp_baths" api:"nullable"`
	CompBeds        int64     `json:"comp_beds" api:"nullable"`
	CompParcelID    string    `json:"comp_parcel_id"`
	CompSaleDate    time.Time `json:"comp_sale_date" format:"date"`
	CompSalePrice   float64   `json:"comp_sale_price" api:"nullable"`
	CompSqft        int64     `json:"comp_sqft" api:"nullable"`
	DistanceMiles   float64   `json:"distance_miles" api:"nullable"`
	SimilarityScore float64   `json:"similarity_score"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		CompBaths       respjson.Field
		CompBeds        respjson.Field
		CompParcelID    respjson.Field
		CompSaleDate    respjson.Field
		CompSalePrice   respjson.Field
		CompSqft        respjson.Field
		DistanceMiles   respjson.Field
		SimilarityScore respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetReportResponseComparableSale) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetReportResponseComparableSale) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetReportResponseComparableSale) UnmarshalJSON(data []byte) error

type V1ParcelGetReportResponseUccLien added in v0.2.0

type V1ParcelGetReportResponseUccLien struct {
	DebtorName      string    `json:"debtor_name" api:"nullable"`
	FilingDate      time.Time `json:"filing_date" format:"date"`
	FilingID        string    `json:"filing_id"`
	FilingStatus    string    `json:"filing_status" api:"nullable"`
	LapseDate       time.Time `json:"lapse_date" format:"date"`
	MatchConfidence float64   `json:"match_confidence"`
	MatchMethod     string    `json:"match_method" api:"nullable"`
	SecuredParty    string    `json:"secured_party" api:"nullable"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		DebtorName      respjson.Field
		FilingDate      respjson.Field
		FilingID        respjson.Field
		FilingStatus    respjson.Field
		LapseDate       respjson.Field
		MatchConfidence respjson.Field
		MatchMethod     respjson.Field
		SecuredParty    respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetReportResponseUccLien) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetReportResponseUccLien) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetReportResponseUccLien) UnmarshalJSON(data []byte) error

type V1ParcelGetTrafficHistoryParams added in v0.2.0

type V1ParcelGetTrafficHistoryParams struct {
	// Latitude.
	Lat float64 `query:"lat" api:"required" json:"-"`
	// Longitude.
	Lng float64 `query:"lng" api:"required" json:"-"`
	// contains filtered or unexported fields
}

func (V1ParcelGetTrafficHistoryParams) URLQuery added in v0.2.0

func (r V1ParcelGetTrafficHistoryParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1ParcelGetTrafficHistoryParams's query parameters as `url.Values`.

type V1ParcelGetTrafficHistoryResponse added in v0.2.0

type V1ParcelGetTrafficHistoryResponse struct {
	// Year-keyed historical counts (newest last).
	History []V1ParcelGetTrafficHistoryResponseHistory `json:"history"`
	Station V1ParcelGetTrafficHistoryResponseStation   `json:"station"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		History     respjson.Field
		Station     respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetTrafficHistoryResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetTrafficHistoryResponse) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetTrafficHistoryResponse) UnmarshalJSON(data []byte) error

type V1ParcelGetTrafficHistoryResponseHistory added in v0.2.0

type V1ParcelGetTrafficHistoryResponseHistory struct {
	Aadt int64 `json:"aadt" api:"nullable"`
	Year int64 `json:"year"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Aadt        respjson.Field
		Year        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetTrafficHistoryResponseHistory) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetTrafficHistoryResponseHistory) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetTrafficHistoryResponseHistory) UnmarshalJSON(data []byte) error

type V1ParcelGetTrafficHistoryResponseStation added in v0.2.0

type V1ParcelGetTrafficHistoryResponseStation struct {
	ID string `json:"id"`
	// Most recent AADT count.
	AadtCurrent     int64   `json:"aadt_current" api:"nullable"`
	AadtYear        int64   `json:"aadt_year" api:"nullable"`
	Cagr3yr         float64 `json:"cagr_3yr" api:"nullable"`
	Cagr5yr         float64 `json:"cagr_5yr" api:"nullable"`
	Cagr7yr         float64 `json:"cagr_7yr" api:"nullable"`
	FunctionalClass string  `json:"functional_class" api:"nullable"`
	Latitude        float64 `json:"latitude"`
	Longitude       float64 `json:"longitude"`
	RouteName       string  `json:"route_name" api:"nullable"`
	StationID       string  `json:"station_id"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		ID              respjson.Field
		AadtCurrent     respjson.Field
		AadtYear        respjson.Field
		Cagr3yr         respjson.Field
		Cagr5yr         respjson.Field
		Cagr7yr         respjson.Field
		FunctionalClass respjson.Field
		Latitude        respjson.Field
		Longitude       respjson.Field
		RouteName       respjson.Field
		StationID       respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1ParcelGetTrafficHistoryResponseStation) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1ParcelGetTrafficHistoryResponseStation) UnmarshalJSON added in v0.2.0

func (r *V1ParcelGetTrafficHistoryResponseStation) UnmarshalJSON(data []byte) error

type V1ParcelService added in v0.2.0

type V1ParcelService struct {
	// contains filtered or unexported fields
}

Parcel lookup, owner details, permits, deeds, and risk data.

V1ParcelService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1ParcelService method instead.

func NewV1ParcelService added in v0.2.0

func NewV1ParcelService(opts ...option.RequestOption) (r V1ParcelService)

NewV1ParcelService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1ParcelService) Get added in v0.2.0

func (r *V1ParcelService) Get(ctx context.Context, id string, opts ...option.RequestOption) (res *Parcel, err error)

Retrieve a single parcel by its composite ID (county_fips:parcel_id).

func (*V1ParcelService) GetDeeds added in v0.2.0

func (r *V1ParcelService) GetDeeds(ctx context.Context, id string, opts ...option.RequestOption) (res *V1ParcelGetDeedsResponse, err error)

Retrieve deed transactions and transfer history for a parcel.

func (*V1ParcelService) GetGeojson added in v0.2.0

Returns parcel polygons inside a bounding box as a GeoJSON FeatureCollection. Only served at zoom ≥ 14 to limit data volume — coarser bbox returns an empty collection. Each feature's properties include parcel_id, county_fips, owner_name, assessed value, and basic attributes for rendering popups.

func (*V1ParcelService) GetOwner added in v0.2.0

func (r *V1ParcelService) GetOwner(ctx context.Context, id string, opts ...option.RequestOption) (res *V1ParcelGetOwnerResponse, err error)

Retrieve the owner of a parcel along with their portfolio summary and list of properties.

func (*V1ParcelService) GetPermits added in v0.2.0

func (r *V1ParcelService) GetPermits(ctx context.Context, id string, opts ...option.RequestOption) (res *V1ParcelGetPermitsResponse, err error)

Retrieve building and construction permits associated with a parcel.

func (*V1ParcelService) GetReport added in v0.2.0

Returns the full canonical parcel record plus every enrichment: UCC liens, comparable sales, owner portfolio context, permits, deeds, hazard composite. This is the single most data-dense endpoint per parcel — designed for due-diligence and underwriting workflows. Heavier than parcels/{id}; cache aggressively when serving UIs.

func (*V1ParcelService) GetRisks added in v0.2.0

func (r *V1ParcelService) GetRisks(ctx context.Context, id string, opts ...option.RequestOption) (res *RiskAssessment, err error)

Retrieve flood, wildfire, air quality, and crime risk data for a parcel.

func (*V1ParcelService) GetTrafficHistory added in v0.2.0

Finds the AADT (annual average daily traffic) station nearest to the given coordinates and returns its historical time series plus 3/5/7-year CAGRs. Useful for retail / CRE site selection. Search radius ~2 miles; returns empty data if no station is in range.

type V1SearchAutocompleteParams added in v0.2.0

type V1SearchAutocompleteParams struct {
	// Search prefix. Minimum 2 chars.
	Q string `query:"q" api:"required" json:"-"`
	// contains filtered or unexported fields
}

func (V1SearchAutocompleteParams) URLQuery added in v0.2.0

func (r V1SearchAutocompleteParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1SearchAutocompleteParams's query parameters as `url.Values`.

type V1SearchAutocompleteResponse added in v0.2.0

type V1SearchAutocompleteResponse struct {
	Addresses []V1SearchAutocompleteResponseAddress  `json:"addresses"`
	Locations []V1SearchAutocompleteResponseLocation `json:"locations"`
	Parcels   []V1SearchAutocompleteResponseParcel   `json:"parcels"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Addresses   respjson.Field
		Locations   respjson.Field
		Parcels     respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1SearchAutocompleteResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1SearchAutocompleteResponse) UnmarshalJSON added in v0.2.0

func (r *V1SearchAutocompleteResponse) UnmarshalJSON(data []byte) error

type V1SearchAutocompleteResponseAddress added in v0.2.0

type V1SearchAutocompleteResponseAddress struct {
	Lat  float64 `json:"lat"`
	Lng  float64 `json:"lng"`
	Name string  `json:"name"`
	// Any of "address".
	Type string `json:"type"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Lat         respjson.Field
		Lng         respjson.Field
		Name        respjson.Field
		Type        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

Mapbox-geocoded address suggestion. Use to disambiguate user input before calling /api/v1/lookup or /api/v1/parcels/{id}.

func (V1SearchAutocompleteResponseAddress) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1SearchAutocompleteResponseAddress) UnmarshalJSON added in v0.2.0

func (r *V1SearchAutocompleteResponseAddress) UnmarshalJSON(data []byte) error

type V1SearchAutocompleteResponseLocation added in v0.2.0

type V1SearchAutocompleteResponseLocation struct {
	City        string  `json:"city"`
	Lat         float64 `json:"lat"`
	Lng         float64 `json:"lng"`
	Name        string  `json:"name"`
	ParcelCount int64   `json:"parcel_count"`
	State       string  `json:"state"`
	// Any of "city".
	Type string `json:"type"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		City        respjson.Field
		Lat         respjson.Field
		Lng         respjson.Field
		Name        respjson.Field
		ParcelCount respjson.Field
		State       respjson.Field
		Type        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1SearchAutocompleteResponseLocation) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1SearchAutocompleteResponseLocation) UnmarshalJSON added in v0.2.0

func (r *V1SearchAutocompleteResponseLocation) UnmarshalJSON(data []byte) error

type V1SearchAutocompleteResponseParcel added in v0.2.0

type V1SearchAutocompleteResponseParcel struct {
	Address    string `json:"address" api:"nullable"`
	City       string `json:"city" api:"nullable"`
	CountyFips string `json:"county_fips"`
	ParcelID   string `json:"parcel_id"`
	State      string `json:"state" api:"nullable"`
	// Any of "parcel".
	Type string `json:"type"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Address     respjson.Field
		City        respjson.Field
		CountyFips  respjson.Field
		ParcelID    respjson.Field
		State       respjson.Field
		Type        respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1SearchAutocompleteResponseParcel) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1SearchAutocompleteResponseParcel) UnmarshalJSON added in v0.2.0

func (r *V1SearchAutocompleteResponseParcel) UnmarshalJSON(data []byte) error

type V1SearchExportResultsParams added in v0.2.0

type V1SearchExportResultsParams struct {
	// Bounding box: east longitude.
	East param.Opt[float64] `query:"east,omitzero" json:"-"`
	// Row cap. Hard max 10,000.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// Bounding box: north latitude.
	North param.Opt[float64] `query:"north,omitzero" json:"-"`
	// Bounding box: south latitude.
	South param.Opt[float64] `query:"south,omitzero" json:"-"`
	// Bounding box: west longitude.
	West param.Opt[float64] `query:"west,omitzero" json:"-"`
	// Comma-delimited zoning categories.
	ZoningCategories param.Opt[string] `query:"zoningCategories,omitzero" json:"-"`
	// Sort direction.
	//
	// Any of "asc", "desc".
	Order V1SearchExportResultsParamsOrder `query:"order,omitzero" json:"-"`
	// Sort column.
	//
	// Any of "address", "city", "state", "owner_name", "total_assessed_value",
	// "zoning", "year_built", "lot_size_acres", "ownership_type".
	Sort V1SearchExportResultsParamsSort `query:"sort,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1SearchExportResultsParams) URLQuery added in v0.2.0

func (r V1SearchExportResultsParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1SearchExportResultsParams's query parameters as `url.Values`.

type V1SearchExportResultsParamsOrder added in v0.2.0

type V1SearchExportResultsParamsOrder string

Sort direction.

const (
	V1SearchExportResultsParamsOrderAsc  V1SearchExportResultsParamsOrder = "asc"
	V1SearchExportResultsParamsOrderDesc V1SearchExportResultsParamsOrder = "desc"
)

type V1SearchExportResultsParamsSort added in v0.2.0

type V1SearchExportResultsParamsSort string

Sort column.

const (
	V1SearchExportResultsParamsSortAddress            V1SearchExportResultsParamsSort = "address"
	V1SearchExportResultsParamsSortCity               V1SearchExportResultsParamsSort = "city"
	V1SearchExportResultsParamsSortState              V1SearchExportResultsParamsSort = "state"
	V1SearchExportResultsParamsSortOwnerName          V1SearchExportResultsParamsSort = "owner_name"
	V1SearchExportResultsParamsSortTotalAssessedValue V1SearchExportResultsParamsSort = "total_assessed_value"
	V1SearchExportResultsParamsSortZoning             V1SearchExportResultsParamsSort = "zoning"
	V1SearchExportResultsParamsSortYearBuilt          V1SearchExportResultsParamsSort = "year_built"
	V1SearchExportResultsParamsSortLotSizeAcres       V1SearchExportResultsParamsSort = "lot_size_acres"
	V1SearchExportResultsParamsSortOwnershipType      V1SearchExportResultsParamsSort = "ownership_type"
)

type V1SearchFullSearchParams added in v0.2.0

type V1SearchFullSearchParams struct {
	// Search query. Min 2 chars.
	Q string `query:"q" api:"required" json:"-"`
	// City filter.
	City param.Opt[string] `query:"city,omitzero" json:"-"`
	// Page size, max 200.
	Limit param.Opt[int64] `query:"limit,omitzero" json:"-"`
	// 1-indexed page number.
	Page param.Opt[int64] `query:"page,omitzero" json:"-"`
	// 2-letter state filter.
	State param.Opt[string] `query:"state,omitzero" json:"-"`
	// Sort direction.
	//
	// Any of "asc", "desc".
	Dir V1SearchFullSearchParamsDir `query:"dir,omitzero" json:"-"`
	// Field to match against.
	//
	// Any of "all", "address", "owner_name", "city".
	Field V1SearchFullSearchParamsField `query:"field,omitzero" json:"-"`
	// Sort column.
	//
	// Any of "address", "city", "state", "owner_name", "total_value", "year_built".
	Sort V1SearchFullSearchParamsSort `query:"sort,omitzero" json:"-"`
	// contains filtered or unexported fields
}

func (V1SearchFullSearchParams) URLQuery added in v0.2.0

func (r V1SearchFullSearchParams) URLQuery() (v url.Values, err error)

URLQuery serializes V1SearchFullSearchParams's query parameters as `url.Values`.

type V1SearchFullSearchParamsDir added in v0.2.0

type V1SearchFullSearchParamsDir string

Sort direction.

const (
	V1SearchFullSearchParamsDirAsc  V1SearchFullSearchParamsDir = "asc"
	V1SearchFullSearchParamsDirDesc V1SearchFullSearchParamsDir = "desc"
)

type V1SearchFullSearchParamsField added in v0.2.0

type V1SearchFullSearchParamsField string

Field to match against.

const (
	V1SearchFullSearchParamsFieldAll       V1SearchFullSearchParamsField = "all"
	V1SearchFullSearchParamsFieldAddress   V1SearchFullSearchParamsField = "address"
	V1SearchFullSearchParamsFieldOwnerName V1SearchFullSearchParamsField = "owner_name"
	V1SearchFullSearchParamsFieldCity      V1SearchFullSearchParamsField = "city"
)

type V1SearchFullSearchParamsSort added in v0.2.0

type V1SearchFullSearchParamsSort string

Sort column.

const (
	V1SearchFullSearchParamsSortAddress    V1SearchFullSearchParamsSort = "address"
	V1SearchFullSearchParamsSortCity       V1SearchFullSearchParamsSort = "city"
	V1SearchFullSearchParamsSortState      V1SearchFullSearchParamsSort = "state"
	V1SearchFullSearchParamsSortOwnerName  V1SearchFullSearchParamsSort = "owner_name"
	V1SearchFullSearchParamsSortTotalValue V1SearchFullSearchParamsSort = "total_value"
	V1SearchFullSearchParamsSortYearBuilt  V1SearchFullSearchParamsSort = "year_built"
)

type V1SearchFullSearchResponse added in v0.2.0

type V1SearchFullSearchResponse struct {
	Page    int64    `json:"page"`
	Pages   int64    `json:"pages"`
	Results []Parcel `json:"results"`
	Total   int64    `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Page        respjson.Field
		Pages       respjson.Field
		Results     respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1SearchFullSearchResponse) RawJSON added in v0.2.0

func (r V1SearchFullSearchResponse) RawJSON() string

Returns the unmodified JSON received from the API

func (*V1SearchFullSearchResponse) UnmarshalJSON added in v0.2.0

func (r *V1SearchFullSearchResponse) UnmarshalJSON(data []byte) error

type V1SearchParcelSearchParams added in v0.2.0

type V1SearchParcelSearchParams struct {
	Bounds V1SearchParcelSearchParamsBounds `json:"bounds,omitzero" api:"required"`
	// Number of results to return.
	Limit param.Opt[int64] `json:"limit,omitzero"`
	// Number of results to skip for pagination.
	Offset  param.Opt[int64]                  `json:"offset,omitzero"`
	Filters V1SearchParcelSearchParamsFilters `json:"filters,omitzero"`
	// Any of "asc", "desc".
	Order V1SearchParcelSearchParamsOrder `json:"order,omitzero"`
	// Sort field.
	//
	// Any of "assessed_value", "sale_price", "acreage", "year_built", "deal_score".
	Sort V1SearchParcelSearchParamsSort `json:"sort,omitzero"`
	// contains filtered or unexported fields
}

func (V1SearchParcelSearchParams) MarshalJSON added in v0.2.0

func (r V1SearchParcelSearchParams) MarshalJSON() (data []byte, err error)

func (*V1SearchParcelSearchParams) UnmarshalJSON added in v0.2.0

func (r *V1SearchParcelSearchParams) UnmarshalJSON(data []byte) error

type V1SearchParcelSearchParamsBounds added in v0.2.0

type V1SearchParcelSearchParamsBounds struct {
	East  float64 `json:"east" api:"required"`
	North float64 `json:"north" api:"required"`
	South float64 `json:"south" api:"required"`
	West  float64 `json:"west" api:"required"`
	// contains filtered or unexported fields
}

The properties East, North, South, West are required.

func (V1SearchParcelSearchParamsBounds) MarshalJSON added in v0.2.0

func (r V1SearchParcelSearchParamsBounds) MarshalJSON() (data []byte, err error)

func (*V1SearchParcelSearchParamsBounds) UnmarshalJSON added in v0.2.0

func (r *V1SearchParcelSearchParamsBounds) UnmarshalJSON(data []byte) error

type V1SearchParcelSearchParamsFilters added in v0.2.0

type V1SearchParcelSearchParamsFilters struct {
	// Only return parcels with absentee owners.
	AbsenteeOnly param.Opt[bool] `json:"absenteeOnly,omitzero"`
	// Filter by acreage range.
	AcreageRange V1SearchParcelSearchParamsFiltersAcreageRange `json:"acreageRange,omitzero"`
	// Filter by owner entity type.
	//
	// Any of "individual", "corporation", "llc", "trust", "government", "other".
	OwnerTypes []string `json:"ownerTypes,omitzero"`
	// Filter by assessed value range.
	ValueRange V1SearchParcelSearchParamsFiltersValueRange `json:"valueRange,omitzero"`
	// Filter by year built range.
	YearBuiltRange V1SearchParcelSearchParamsFiltersYearBuiltRange `json:"yearBuiltRange,omitzero"`
	// Filter by zoning category (e.g., residential, commercial, industrial).
	ZoningCategories []string `json:"zoningCategories,omitzero"`
	// contains filtered or unexported fields
}

func (V1SearchParcelSearchParamsFilters) MarshalJSON added in v0.2.0

func (r V1SearchParcelSearchParamsFilters) MarshalJSON() (data []byte, err error)

func (*V1SearchParcelSearchParamsFilters) UnmarshalJSON added in v0.2.0

func (r *V1SearchParcelSearchParamsFilters) UnmarshalJSON(data []byte) error

type V1SearchParcelSearchParamsFiltersAcreageRange added in v0.2.0

type V1SearchParcelSearchParamsFiltersAcreageRange struct {
	Max param.Opt[float64] `json:"max,omitzero"`
	Min param.Opt[float64] `json:"min,omitzero"`
	// contains filtered or unexported fields
}

Filter by acreage range.

func (V1SearchParcelSearchParamsFiltersAcreageRange) MarshalJSON added in v0.2.0

func (r V1SearchParcelSearchParamsFiltersAcreageRange) MarshalJSON() (data []byte, err error)

func (*V1SearchParcelSearchParamsFiltersAcreageRange) UnmarshalJSON added in v0.2.0

func (r *V1SearchParcelSearchParamsFiltersAcreageRange) UnmarshalJSON(data []byte) error

type V1SearchParcelSearchParamsFiltersValueRange added in v0.2.0

type V1SearchParcelSearchParamsFiltersValueRange struct {
	Max param.Opt[float64] `json:"max,omitzero"`
	Min param.Opt[float64] `json:"min,omitzero"`
	// contains filtered or unexported fields
}

Filter by assessed value range.

func (V1SearchParcelSearchParamsFiltersValueRange) MarshalJSON added in v0.2.0

func (r V1SearchParcelSearchParamsFiltersValueRange) MarshalJSON() (data []byte, err error)

func (*V1SearchParcelSearchParamsFiltersValueRange) UnmarshalJSON added in v0.2.0

func (r *V1SearchParcelSearchParamsFiltersValueRange) UnmarshalJSON(data []byte) error

type V1SearchParcelSearchParamsFiltersYearBuiltRange added in v0.2.0

type V1SearchParcelSearchParamsFiltersYearBuiltRange struct {
	Max param.Opt[int64] `json:"max,omitzero"`
	Min param.Opt[int64] `json:"min,omitzero"`
	// contains filtered or unexported fields
}

Filter by year built range.

func (V1SearchParcelSearchParamsFiltersYearBuiltRange) MarshalJSON added in v0.2.0

func (r V1SearchParcelSearchParamsFiltersYearBuiltRange) MarshalJSON() (data []byte, err error)

func (*V1SearchParcelSearchParamsFiltersYearBuiltRange) UnmarshalJSON added in v0.2.0

type V1SearchParcelSearchParamsOrder added in v0.2.0

type V1SearchParcelSearchParamsOrder string
const (
	V1SearchParcelSearchParamsOrderAsc  V1SearchParcelSearchParamsOrder = "asc"
	V1SearchParcelSearchParamsOrderDesc V1SearchParcelSearchParamsOrder = "desc"
)

type V1SearchParcelSearchParamsSort added in v0.2.0

type V1SearchParcelSearchParamsSort string

Sort field.

const (
	V1SearchParcelSearchParamsSortAssessedValue V1SearchParcelSearchParamsSort = "assessed_value"
	V1SearchParcelSearchParamsSortSalePrice     V1SearchParcelSearchParamsSort = "sale_price"
	V1SearchParcelSearchParamsSortAcreage       V1SearchParcelSearchParamsSort = "acreage"
	V1SearchParcelSearchParamsSortYearBuilt     V1SearchParcelSearchParamsSort = "year_built"
	V1SearchParcelSearchParamsSortDealScore     V1SearchParcelSearchParamsSort = "deal_score"
)

type V1SearchParcelSearchResponse added in v0.2.0

type V1SearchParcelSearchResponse struct {
	Data   []Parcel `json:"data"`
	Limit  int64    `json:"limit"`
	Offset int64    `json:"offset"`
	Total  int64    `json:"total"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Data        respjson.Field
		Limit       respjson.Field
		Offset      respjson.Field
		Total       respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1SearchParcelSearchResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1SearchParcelSearchResponse) UnmarshalJSON added in v0.2.0

func (r *V1SearchParcelSearchResponse) UnmarshalJSON(data []byte) error

type V1SearchService added in v0.2.0

type V1SearchService struct {
	// contains filtered or unexported fields
}

Geographic and filtered parcel search.

V1SearchService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1SearchService method instead.

func NewV1SearchService added in v0.2.0

func NewV1SearchService(opts ...option.RequestOption) (r V1SearchService)

NewV1SearchService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1SearchService) Autocomplete added in v0.2.0

Fast prefix-matched autocomplete: returns cities/places, matching parcels, and Mapbox-geocoded addresses for the prefix. Three independent tiers run in parallel with per-tier timeouts so a slow DB query never blocks fast Mapbox results. Use for type-ahead UIs and address entry; for full-detail lookup use parcel lookup.

func (*V1SearchService) ExportResults added in v0.2.0

func (r *V1SearchService) ExportResults(ctx context.Context, query V1SearchExportResultsParams, opts ...option.RequestOption) (res *io.Reader, err error)

Returns up to 10,000 search-matched parcels as a CSV download. Accepts the same geographic + attribute filters as POST /api/v1/search. Designed for spreadsheet / Excel workflows; for programmatic ingestion, use the JSON search endpoint and paginate.

func (*V1SearchService) FullSearch added in v0.2.0

Paginated search across the parcel search index by free-text query (`q`) and optional field/state/city filters. Distinct from POST /api/v1/search which is geo-bounded; this endpoint is text-anchored and works without a bounding box. Returns 50/page by default, 200 max.

func (*V1SearchService) ParcelSearch added in v0.2.0

Search parcels within geographic bounds with optional filters, sorting, and pagination.

type V1Service added in v0.2.0

type V1Service struct {

	// Parcel lookup, owner details, permits, deeds, and risk data.
	Parcels V1ParcelService
	// Geographic and filtered parcel search.
	Search V1SearchService
	// Deal sourcing: absentee owners, property flips.
	Deals V1DealService
	// County-level market statistics and trends.
	Market V1MarketService
	// Owner search, profiles, and portfolios.
	Owners V1OwnerService
	// Webhook subscriptions and delivery history. Manage which events PropRaven pushes
	// to your endpoints.
	Webhooks V1WebhookService
	// Account-scoped usage, quota, and key-level reporting.
	Account V1AccountService
	// contains filtered or unexported fields
}

Data coverage statistics.

V1Service contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1Service method instead.

func NewV1Service added in v0.2.0

func NewV1Service(opts ...option.RequestOption) (r V1Service)

NewV1Service generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1Service) GetCoverage added in v0.2.0

func (r *V1Service) GetCoverage(ctx context.Context, query V1GetCoverageParams, opts ...option.RequestOption) (res *V1GetCoverageResponse, err error)

Retrieve parcel coverage statistics at the state or county level.

type V1WebhookDisableEndpointResponse added in v0.2.0

type V1WebhookDisableEndpointResponse struct {
	Deleted string `json:"deleted" format:"uuid"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Deleted     respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1WebhookDisableEndpointResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1WebhookDisableEndpointResponse) UnmarshalJSON added in v0.2.0

func (r *V1WebhookDisableEndpointResponse) UnmarshalJSON(data []byte) error

type V1WebhookGetDeliveriesResponse added in v0.2.0

type V1WebhookGetDeliveriesResponse struct {
	Deliveries []V1WebhookGetDeliveriesResponseDelivery `json:"deliveries"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Deliveries  respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1WebhookGetDeliveriesResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1WebhookGetDeliveriesResponse) UnmarshalJSON added in v0.2.0

func (r *V1WebhookGetDeliveriesResponse) UnmarshalJSON(data []byte) error

type V1WebhookGetDeliveriesResponseDelivery added in v0.2.0

type V1WebhookGetDeliveriesResponseDelivery struct {
	ID             string    `json:"id" format:"uuid"`
	Attempts       int64     `json:"attempts"`
	CreatedAt      time.Time `json:"created_at" format:"date-time"`
	DeadLetteredAt time.Time `json:"dead_lettered_at" format:"date-time"`
	// Deterministic event identifier — sha256(source || pk || event_type). Idempotent
	// re-deliveries share this.
	EventID         string    `json:"event_id"`
	EventOccurredAt time.Time `json:"event_occurred_at" format:"date-time"`
	// Any of "parcel.sold", "parcel.permit_filed", "parcel.owner_changed".
	EventType     string    `json:"event_type"`
	LastAttemptAt time.Time `json:"last_attempt_at" format:"date-time"`
	LastError     string    `json:"last_error" api:"nullable"`
	// Truncated to ~1KB.
	LastResponseBody   string    `json:"last_response_body" api:"nullable"`
	LastResponseStatus int64     `json:"last_response_status" api:"nullable"`
	NextAttemptAt      time.Time `json:"next_attempt_at" format:"date-time"`
	// Any of "pending", "in_flight", "succeeded", "failed", "dead_lettered".
	Status string `json:"status"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		ID                 respjson.Field
		Attempts           respjson.Field
		CreatedAt          respjson.Field
		DeadLetteredAt     respjson.Field
		EventID            respjson.Field
		EventOccurredAt    respjson.Field
		EventType          respjson.Field
		LastAttemptAt      respjson.Field
		LastError          respjson.Field
		LastResponseBody   respjson.Field
		LastResponseStatus respjson.Field
		NextAttemptAt      respjson.Field
		Status             respjson.Field
		ExtraFields        map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1WebhookGetDeliveriesResponseDelivery) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1WebhookGetDeliveriesResponseDelivery) UnmarshalJSON added in v0.2.0

func (r *V1WebhookGetDeliveriesResponseDelivery) UnmarshalJSON(data []byte) error

type V1WebhookListEndpointsResponse added in v0.2.0

type V1WebhookListEndpointsResponse struct {
	Quota V1WebhookListEndpointsResponseQuota `json:"quota"`
	// Any of "free", "starter", "pro", "scale", "api_100k".
	Tier     V1WebhookListEndpointsResponseTier `json:"tier"`
	Webhooks []Webhook                          `json:"webhooks"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Quota       respjson.Field
		Tier        respjson.Field
		Webhooks    respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1WebhookListEndpointsResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1WebhookListEndpointsResponse) UnmarshalJSON added in v0.2.0

func (r *V1WebhookListEndpointsResponse) UnmarshalJSON(data []byte) error

type V1WebhookListEndpointsResponseQuota added in v0.2.0

type V1WebhookListEndpointsResponseQuota struct {
	// Max simultaneous active webhook endpoints on this tier.
	MaxEndpoints int64 `json:"maxEndpoints"`
	// Max event deliveries per UTC day on this tier.
	MaxEventsPerDay int64 `json:"maxEventsPerDay"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		MaxEndpoints    respjson.Field
		MaxEventsPerDay respjson.Field
		ExtraFields     map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (V1WebhookListEndpointsResponseQuota) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1WebhookListEndpointsResponseQuota) UnmarshalJSON added in v0.2.0

func (r *V1WebhookListEndpointsResponseQuota) UnmarshalJSON(data []byte) error

type V1WebhookListEndpointsResponseTier added in v0.2.0

type V1WebhookListEndpointsResponseTier string
const (
	V1WebhookListEndpointsResponseTierFree    V1WebhookListEndpointsResponseTier = "free"
	V1WebhookListEndpointsResponseTierStarter V1WebhookListEndpointsResponseTier = "starter"
	V1WebhookListEndpointsResponseTierPro     V1WebhookListEndpointsResponseTier = "pro"
	V1WebhookListEndpointsResponseTierScale   V1WebhookListEndpointsResponseTier = "scale"
	V1WebhookListEndpointsResponseTierAPI100k V1WebhookListEndpointsResponseTier = "api_100k"
)

type V1WebhookNewEndpointParams added in v0.2.0

type V1WebhookNewEndpointParams struct {
	// Event types to subscribe to. NOTE: only parcel.sold is live in v1.0; others 501.
	//
	// Any of "parcel.sold", "parcel.permit_filed", "parcel.owner_changed".
	EventTypes []string `json:"event_types,omitzero" api:"required"`
	// Any of "parcel_ids", "state_fips", "county_fips".
	FilterKind V1WebhookNewEndpointParamsFilterKind `json:"filter_kind,omitzero" api:"required"`
	// Shape varies with filter_kind. parcel_ids: explicit list. state_fips: all
	// parcels in a state. county_fips: all parcels in a county within a state.
	FilterValue WebhookFilterUnionParam `json:"filter_value,omitzero" api:"required"`
	// Customer endpoint. https:// only.
	URL string `json:"url" api:"required" format:"uri"`
	// Optional human-readable label for your dashboard.
	Description param.Opt[string] `json:"description,omitzero"`
	// contains filtered or unexported fields
}

func (V1WebhookNewEndpointParams) MarshalJSON added in v0.2.0

func (r V1WebhookNewEndpointParams) MarshalJSON() (data []byte, err error)

func (*V1WebhookNewEndpointParams) UnmarshalJSON added in v0.2.0

func (r *V1WebhookNewEndpointParams) UnmarshalJSON(data []byte) error

type V1WebhookNewEndpointParamsFilterKind added in v0.2.0

type V1WebhookNewEndpointParamsFilterKind string
const (
	V1WebhookNewEndpointParamsFilterKindParcelIDs  V1WebhookNewEndpointParamsFilterKind = "parcel_ids"
	V1WebhookNewEndpointParamsFilterKindStateFips  V1WebhookNewEndpointParamsFilterKind = "state_fips"
	V1WebhookNewEndpointParamsFilterKindCountyFips V1WebhookNewEndpointParamsFilterKind = "county_fips"
)

type V1WebhookNewEndpointResponse added in v0.2.0

type V1WebhookNewEndpointResponse struct {
	// Signature-verification reminder.
	Hint string `json:"hint" api:"required"`
	// **Shown once.** Copy and store server-side immediately. Used to sign every
	// outgoing delivery.
	Secret string `json:"secret" api:"required"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		Hint        respjson.Field
		Secret      respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
	Webhook
}

func (V1WebhookNewEndpointResponse) RawJSON added in v0.2.0

Returns the unmodified JSON received from the API

func (*V1WebhookNewEndpointResponse) UnmarshalJSON added in v0.2.0

func (r *V1WebhookNewEndpointResponse) UnmarshalJSON(data []byte) error

type V1WebhookService added in v0.2.0

type V1WebhookService struct {
	// contains filtered or unexported fields
}

Webhook subscriptions and delivery history. Manage which events PropRaven pushes to your endpoints.

V1WebhookService contains methods and other services that help with interacting with the propraven API.

Note, unlike clients, this service does not read variables from the environment automatically. You should not instantiate this service directly, and instead use the NewV1WebhookService method instead.

func NewV1WebhookService added in v0.2.0

func NewV1WebhookService(opts ...option.RequestOption) (r V1WebhookService)

NewV1WebhookService generates a new service that applies the given options to each request. These options are applied after the parent client's options (if there is one), and before any request-specific options.

func (*V1WebhookService) DisableEndpoint added in v0.2.0

func (r *V1WebhookService) DisableEndpoint(ctx context.Context, id string, opts ...option.RequestOption) (res *V1WebhookDisableEndpointResponse, err error)

Marks the endpoint inactive. Delivery history is preserved. The endpoint can no longer receive new events but past deliveries remain queryable via the deliveries route.

func (*V1WebhookService) GetDeliveries added in v0.2.0

func (r *V1WebhookService) GetDeliveries(ctx context.Context, id string, opts ...option.RequestOption) (res *V1WebhookGetDeliveriesResponse, err error)

Returns the last 100 delivery attempts for an endpoint — useful for debugging signature mismatches, retry visibility, and dead-letter inspection.

func (*V1WebhookService) GetEndpoint added in v0.2.0

func (r *V1WebhookService) GetEndpoint(ctx context.Context, id string, opts ...option.RequestOption) (res *Webhook, err error)

Returns the full endpoint record (without the secret).

func (*V1WebhookService) ListEndpoints added in v0.2.0

func (r *V1WebhookService) ListEndpoints(ctx context.Context, opts ...option.RequestOption) (res *V1WebhookListEndpointsResponse, err error)

Returns all webhook endpoints for the calling account, plus the per-tier quota.

func (*V1WebhookService) NewEndpoint added in v0.2.0

Creates a new webhook subscription. The returned `secret` is shown ONCE — store it server-side and use it to verify every incoming delivery via the `X-PropRaven-Signature` header (HMAC-SHA256 over `<unix_ms>.<raw_body>`). Reject deliveries where `|now - t| > 5min`.

type VerifyWebhookOptions added in v0.2.0

type VerifyWebhookOptions struct {
	MaxClockSkew time.Duration
}

VerifyWebhookOptions configures VerifyWebhook. MaxClockSkew defaults to 5 minutes — matching the PropRaven dispatch retry window.

type Webhook

type Webhook struct {
	ID                  string    `json:"id" format:"uuid"`
	CreatedAt           time.Time `json:"created_at" format:"date-time"`
	DeliveriesAttempted int64     `json:"deliveries_attempted"`
	DeliveriesSucceeded int64     `json:"deliveries_succeeded"`
	Description         string    `json:"description"`
	DisabledAt          time.Time `json:"disabled_at" format:"date-time"`
	DisabledReason      string    `json:"disabled_reason" api:"nullable"`
	// Any of "parcel.sold", "parcel.permit_filed", "parcel.owner_changed".
	EventTypes []string `json:"event_types"`
	// Any of "parcel_ids", "state_fips", "county_fips".
	FilterKind WebhookFilterKind `json:"filter_kind"`
	// Shape varies with filter_kind. parcel_ids: explicit list. state_fips: all
	// parcels in a state. county_fips: all parcels in a county within a state.
	FilterValue    WebhookFilterUnion `json:"filter_value"`
	IsActive       bool               `json:"is_active"`
	LastDeliveryAt time.Time          `json:"last_delivery_at" format:"date-time"`
	LastSuccessAt  time.Time          `json:"last_success_at" format:"date-time"`
	// First 14 chars of the secret (whsec\_ + 8 hex). Use to identify the webhook in
	// your dashboard; full secret is shown only at create time.
	SecretPrefix string `json:"secret_prefix"`
	// Customer endpoint. Must be https://.
	URL string `json:"url" format:"uri"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		ID                  respjson.Field
		CreatedAt           respjson.Field
		DeliveriesAttempted respjson.Field
		DeliveriesSucceeded respjson.Field
		Description         respjson.Field
		DisabledAt          respjson.Field
		DisabledReason      respjson.Field
		EventTypes          respjson.Field
		FilterKind          respjson.Field
		FilterValue         respjson.Field
		IsActive            respjson.Field
		LastDeliveryAt      respjson.Field
		LastSuccessAt       respjson.Field
		SecretPrefix        respjson.Field
		URL                 respjson.Field
		ExtraFields         map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (Webhook) RawJSON added in v0.2.0

func (r Webhook) RawJSON() string

Returns the unmodified JSON received from the API

func (*Webhook) UnmarshalJSON added in v0.2.0

func (r *Webhook) UnmarshalJSON(data []byte) error

type WebhookFilterKind added in v0.2.0

type WebhookFilterKind string
const (
	WebhookFilterKindParcelIDs  WebhookFilterKind = "parcel_ids"
	WebhookFilterKindStateFips  WebhookFilterKind = "state_fips"
	WebhookFilterKindCountyFips WebhookFilterKind = "county_fips"
)

type WebhookFilterObject added in v0.2.0

type WebhookFilterObject struct {
	// 3-digit county FIPS (within the state) — subscribe to all parcels in this
	// county.
	CountyFips string `json:"county_fips" api:"required"`
	StateFips  string `json:"state_fips" api:"required"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		CountyFips  respjson.Field
		StateFips   respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (WebhookFilterObject) RawJSON added in v0.2.0

func (r WebhookFilterObject) RawJSON() string

Returns the unmodified JSON received from the API

func (*WebhookFilterObject) UnmarshalJSON added in v0.2.0

func (r *WebhookFilterObject) UnmarshalJSON(data []byte) error

type WebhookFilterObjectParam added in v0.2.0

type WebhookFilterObjectParam struct {
	// 3-digit county FIPS (within the state) — subscribe to all parcels in this
	// county.
	CountyFips string `json:"county_fips" api:"required"`
	StateFips  string `json:"state_fips" api:"required"`
	// contains filtered or unexported fields
}

The properties CountyFips, StateFips are required.

func (WebhookFilterObjectParam) MarshalJSON added in v0.2.0

func (r WebhookFilterObjectParam) MarshalJSON() (data []byte, err error)

func (*WebhookFilterObjectParam) UnmarshalJSON added in v0.2.0

func (r *WebhookFilterObjectParam) UnmarshalJSON(data []byte) error

type WebhookFilterParcelIDs added in v0.2.0

type WebhookFilterParcelIDs struct {
	// Composite parcel IDs to subscribe to. 1–1000 IDs.
	ParcelIDs []string `json:"parcel_ids" api:"required"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		ParcelIDs   respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (WebhookFilterParcelIDs) RawJSON added in v0.2.0

func (r WebhookFilterParcelIDs) RawJSON() string

Returns the unmodified JSON received from the API

func (*WebhookFilterParcelIDs) UnmarshalJSON added in v0.2.0

func (r *WebhookFilterParcelIDs) UnmarshalJSON(data []byte) error

type WebhookFilterParcelIDsParam added in v0.2.0

type WebhookFilterParcelIDsParam struct {
	// Composite parcel IDs to subscribe to. 1–1000 IDs.
	ParcelIDs []string `json:"parcel_ids,omitzero" api:"required"`
	// contains filtered or unexported fields
}

The property ParcelIDs is required.

func (WebhookFilterParcelIDsParam) MarshalJSON added in v0.2.0

func (r WebhookFilterParcelIDsParam) MarshalJSON() (data []byte, err error)

func (*WebhookFilterParcelIDsParam) UnmarshalJSON added in v0.2.0

func (r *WebhookFilterParcelIDsParam) UnmarshalJSON(data []byte) error

type WebhookFilterStateFips added in v0.2.0

type WebhookFilterStateFips struct {
	// 2-digit state FIPS — subscribe to all parcels in this state.
	StateFips string `json:"state_fips" api:"required"`
	// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
	JSON struct {
		StateFips   respjson.Field
		ExtraFields map[string]respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

func (WebhookFilterStateFips) RawJSON added in v0.2.0

func (r WebhookFilterStateFips) RawJSON() string

Returns the unmodified JSON received from the API

func (*WebhookFilterStateFips) UnmarshalJSON added in v0.2.0

func (r *WebhookFilterStateFips) UnmarshalJSON(data []byte) error

type WebhookFilterStateFipsParam added in v0.2.0

type WebhookFilterStateFipsParam struct {
	// 2-digit state FIPS — subscribe to all parcels in this state.
	StateFips string `json:"state_fips" api:"required"`
	// contains filtered or unexported fields
}

The property StateFips is required.

func (WebhookFilterStateFipsParam) MarshalJSON added in v0.2.0

func (r WebhookFilterStateFipsParam) MarshalJSON() (data []byte, err error)

func (*WebhookFilterStateFipsParam) UnmarshalJSON added in v0.2.0

func (r *WebhookFilterStateFipsParam) UnmarshalJSON(data []byte) error

type WebhookFilterUnion added in v0.2.0

type WebhookFilterUnion struct {
	// This field is from variant [WebhookFilterParcelIDs].
	ParcelIDs []string `json:"parcel_ids"`
	StateFips string   `json:"state_fips"`
	// This field is from variant [WebhookFilterObject].
	CountyFips string `json:"county_fips"`
	JSON       struct {
		ParcelIDs  respjson.Field
		StateFips  respjson.Field
		CountyFips respjson.Field
		// contains filtered or unexported fields
	} `json:"-"`
}

WebhookFilterUnion contains all possible properties and values from WebhookFilterParcelIDs, WebhookFilterStateFips, WebhookFilterObject.

Use the methods beginning with 'As' to cast the union to one of its variants.

func (WebhookFilterUnion) AsWebhookFilterObject added in v0.2.0

func (u WebhookFilterUnion) AsWebhookFilterObject() (v WebhookFilterObject)

func (WebhookFilterUnion) AsWebhookFilterParcelIDs added in v0.2.0

func (u WebhookFilterUnion) AsWebhookFilterParcelIDs() (v WebhookFilterParcelIDs)

func (WebhookFilterUnion) AsWebhookFilterStateFips added in v0.2.0

func (u WebhookFilterUnion) AsWebhookFilterStateFips() (v WebhookFilterStateFips)

func (WebhookFilterUnion) RawJSON added in v0.2.0

func (u WebhookFilterUnion) RawJSON() string

Returns the unmodified JSON received from the API

func (WebhookFilterUnion) ToParam added in v0.2.0

ToParam converts this WebhookFilterUnion to a WebhookFilterUnionParam.

Warning: the fields of the param type will not be present. ToParam should only be used at the last possible moment before sending a request. Test for this with WebhookFilterUnionParam.Overrides()

func (*WebhookFilterUnion) UnmarshalJSON added in v0.2.0

func (r *WebhookFilterUnion) UnmarshalJSON(data []byte) error

type WebhookFilterUnionParam added in v0.2.0

type WebhookFilterUnionParam struct {
	OfWebhookFilterParcelIDs *WebhookFilterParcelIDsParam `json:",omitzero,inline"`
	OfWebhookFilterStateFips *WebhookFilterStateFipsParam `json:",omitzero,inline"`
	OfWebhookFilterObject    *WebhookFilterObjectParam    `json:",omitzero,inline"`
	// contains filtered or unexported fields
}

Only one field can be non-zero.

Use param.IsOmitted to confirm if a field is set.

func WebhookFilterParamOfWebhookFilterObject added in v0.2.0

func WebhookFilterParamOfWebhookFilterObject(countyFips string, stateFips string) WebhookFilterUnionParam

func WebhookFilterParamOfWebhookFilterParcelIDs added in v0.2.0

func WebhookFilterParamOfWebhookFilterParcelIDs(parcelIDs []string) WebhookFilterUnionParam

func WebhookFilterParamOfWebhookFilterStateFips added in v0.2.0

func WebhookFilterParamOfWebhookFilterStateFips(stateFips string) WebhookFilterUnionParam

func (WebhookFilterUnionParam) MarshalJSON added in v0.2.0

func (u WebhookFilterUnionParam) MarshalJSON() ([]byte, error)

func (*WebhookFilterUnionParam) UnmarshalJSON added in v0.2.0

func (u *WebhookFilterUnionParam) UnmarshalJSON(data []byte) error

Directories

Path Synopsis
encoding/json
Package json implements encoding and decoding of JSON as defined in RFC 7159.
Package json implements encoding and decoding of JSON as defined in RFC 7159.
encoding/json/shims
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.22, and used by the Go 1.24 encoding/json package.
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.22, and used by the Go 1.24 encoding/json package.
packages
shared

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL